Kurs
Tanıtım: R ile Makine Öğrenimi
Makine öğrenimi, öğrenebilen algoritmaların tasarımını inceleyen bir bilgisayar bilimi dalıdır. Tipik makine öğrenimi görevleri, kavram öğrenme, fonksiyon öğrenme veya “tahmine dayalı modelleme”, kümeleme ve öngörücü örüntüler bulmayı içerir. Bu görevler, örneğin deneyimler veya talimatlar yoluyla gözlemlenen mevcut veriler üzerinden öğrenilir. Makine öğrenimi, deneyimi görevlere dahil etmenin zamanla öğrenmeyi iyileştireceğini umar. Nihai hedef, öğrenmeyi otomatik hale getirmek, böylece bizim gibi insanların artık müdahale etmesine gerek kalmamasıdır.
Bu kısa eğitim, R ile makine öğreniminin temellerini tanıtmayı amaçlar: daha spesifik olarak, R'yi “KNN” ya da k-en yakın komşular adıyla bilinen makine öğrenimi algoritmasıyla çalışmak için nasıl kullanacağınızı gösterecek.
Bir kursu takip etmekle ilgileniyorsanız, R ile Makine Öğrenimine Giriş veya DataCamp'in R ile Denetimsiz Öğrenme kursuna göz atmayı düşünebilirsiniz!
R ile k-En Yakın Komşular (KNN) Kullanımı
KNN ya da k-en yakın komşular algoritması, en basit makine öğrenimi algoritmalarından biridir ve yeni verilerin, saklanan ve etiketlenen örnekler temel alınarak sınıflandırıldığı örnek tabanlı öğrenmeye bir örnektir.
Daha özelde, saklanan veriler ile yeni örnek arasındaki uzaklık bir benzerlik ölçütü yoluyla hesaplanır. Bu benzerlik ölçütü genellikle Öklidyen mesafe, kosinüs benzerliği veya Manhattan mesafesi gibi bir uzaklık ölçüsüyle ifade edilir.
Başka bir deyişle, sisteme girdiğiniz her yeni veri noktası için, sistemde zaten bulunan verilere olan benzerlik hesaplanır.
Ardından bu benzerlik değeriyle tahmine dayalı modelleme yapılır. Tahmine dayalı modelleme, ya yeni örneğe bir etiket ya da sınıf atadığınız sınıflandırma ya da yeni örneğe bir değer atadığınız regresyon olabilir. Yeni örneği sınıflandırıp sınıflandırmayacağınız veya ona bir değer atayıp atamayacağınız elbette KNN ile modelinizi nasıl kurduğunuza bağlıdır.
k-en yakın komşu algoritması, yeni noktanın tüm saklı veri noktalarına olan uzaklığı hesaplandıktan sonra bu uzaklık değerlerinin sıralanması ve k en yakın komşunun belirlenmesi adımını ekler. Bu komşuların etiketleri toplanır ve sınıflandırma ya da regresyon için çoğunluk oyu veya ağırlıklı oy kullanılır.
Başka bir deyişle, önceden saklanan belirli bir veri noktasının skoru ne kadar yüksekse, yeni örneğin o komşunun sınıflandırmasını alması da o kadar olasıdır. Regresyon durumunda, yeni veri noktasına atanacak değer, onun k en yakın komşusunun ortalamasıdır.
Birinci Adım. Verinizi Edinin
Makine öğrenimi genellikle gözlemlenen verilerden başlar. Kendi veri setinizi alabilir veya bir başkasını bulmak için diğer kaynaklara göz atabilirsiniz.
R'nin Yerleşik Veri Setleri
Bu eğitim, makine öğrenimi alanında çok iyi bilinen Iris veri setini kullanır. Bu veri seti R'ye gömülüdür, bu yüzden konsolunuza aşağıdakini yazarak bu veri setine göz atabilirsiniz:
UC Irvine Makine Öğrenimi Deposu
Veri setini R'ye gömülü olan yerine indirmek isterseniz, UC Irvine Machine Learning Repository'ye gidip Iris veri setini aratabilirsiniz.
İpucu: Iris veri setinin yalnızca veri klasörüne bakmakla kalmayın, veri açıklaması sayfasına da göz atın!
Ardından, verileri yüklemek için şu komutu kullanın:
Komut, .csv yani “Virgülle Ayrılmış Değerler” dosyasını web sitesinden okur. header argümanı FALSE olarak ayarlanmıştır; bu, bu kaynaktaki Iris veri setinin veri öznitelik adlarını vermediği anlamına gelir.
Öznitelik adları yerine, head() gibi bir fonksiyonla iris özniteliğini incelerken “V1” veya “V2” gibi garip sütun adları görebilirsiniz. Bunlar rastgele atanır.
Veri setiyle çalışmayı basitleştirmek için sütun adlarını kendiniz belirlemek iyi bir fikirdir: bunu, bir nesnenin adlarını alan veya ayarlayan names() fonksiyonuyla yapabilirsiniz. Öznitelik adlarını, görünmesini istediğiniz şekilde birleştirin. Yukarıdaki kod parçasında Sepal.Length, Sepal.Width, Petal.Length, Petal.Width ve Species olarak listelemiş olacaksınız.
Bu adların durduk yere gelmediğini unutmayın: yukarıda bağlantısı verilen veri seti açıklamasına bakın; Genellikle tüm bu adları listelenmiş olarak görürsünüz.
İkinci Adım. Verinizi Tanıyın
Iris veri setini RStudio'ya yüklediğinize göre, verinizin neyle ilgili olduğuna dair kapsamlı bir anlayış edinmeye çalışmalısınız. Yalnızca verinize bakmak veya onun hakkında okumak işe başlamak için kesinlikle yeterli değildir!
Kolları sıvayıp veri setinizi keşfetmeniz ve görselleştirmeniz, hatta veri başınızı aşıyorsa ek alan bilgisi toplamanız gerekir.
Muhtemelen ihtiyaç duyduğunuz alan bilgisine zaten sahipsinizdir, ancak hatırlatma olarak, tüm çiçekler çanak yaprak (sepal) ve taç yaprak (petal) içerir. Çanak yapraklar, taç yaprakları çevreler ve genellikle yeşil ve yaprak gibidir; taç yapraklar ise tipik olarak renkli yapraklardır. İris çiçekleri için bu biraz farklıdır; bunu aşağıdaki resimde görebilirsiniz:

Veri Setine İlk Genel Bakış
Öncelikle, histogramlar veya kutu grafikleri gibi bazı grafikler oluşturarak veriniz hakkında bir fikir edinmeye çalışabilirsiniz. Ancak bu durumda, saçılım grafikleri neyle uğraştığınız konusunda size harika bir fikir verebilir: bir değişkenin diğeri tarafından ne ölçüde etkilendiğini görmek ilginç olabilir.
Başka bir deyişle, iki değişken arasında herhangi bir korelasyon olup olmadığını görmek istersiniz.
Örneğin ggvis paketi ile saçılım grafikleri oluşturabilirsiniz.
Not önce ggvis paketini yüklemeniz gerekir:
# Load in `ggvis`
library(ggvis)
# Iris scatter plot
iris %>% ggvis(~Sepal.Length, ~Sepal.Width, fill = ~Species) %>% layer_points()

Setosa iris çiçeklerinin çanak yaprak uzunluğu ile çanak yaprak genişliği arasında yüksek bir korelasyon olduğunu, Virginica ve Versicolor çiçekleri için ise korelasyonun biraz daha düşük olduğunu görürsünüz: veri noktaları grafiğe daha yayılmıştır ve Setosa çiçeklerinde gördüğünüz gibi bir küme oluşturmaz.
Taç yaprak uzunluğu ile taç yaprak genişliğini eşleyen saçılım grafiği benzer bir hikâye anlatır:
iris %>% ggvis(~Petal.Length, ~Petal.Width, fill = ~Species) %>% layer_points()

Bu grafiğin, Iris veri setine dahil edilen tüm farklı türler için taç yaprak uzunluğu ile taç yaprak genişliği arasında pozitif bir korelasyon gösterdiğini görürsünüz. Elbette, bundan gerçekten emin olmak isterseniz bu hipotezi biraz daha test etmeniz gerekebilir:
Üç türü birleştirdiğinizde korelasyonun, türlere ayrı ayrı baktığınız zamana kıyasla biraz daha güçlü olduğunu görürsünüz: genel korelasyon 0,96 iken Versicolor için bu 0,79'dur. Öte yandan Setosa ve Virginica'nın, sayıları yuvarladığınızda, taç yaprak uzunluğu ile genişliği arasında sırasıyla 0,31 ve 0,32 korelasyonları vardır.
İpucu: özellikle ggvis, grafikler veya histogramlar hakkında meraklı mısınız? histogram eğitimimize ve/veya ggvis kursuna göz atın.
Verilerin genel görselleştirilmiş bir özetinden sonra, aşağıdakini girerek veri setini de görüntüleyebilirsiniz
Ancak bu komutun sonucundan da göreceğiniz gibi, veri setinizi etraflıca incelemenin bu gerçekten en iyi yolu değildir: veri seti konsolda çok yer kaplar, bu da veriniz hakkında net bir fikir oluşturmanızı engeller. Bu nedenle, veri setini head(iris) veya str(iris) çalıştırarak incelemek daha iyi bir fikirdir.
Son komutun, bir faktör olan Species özniteliğinin üç seviyesini ve num veri türünü açıkça ayırt etmenize yardımcı olacağını unutmayın. Bu oldukça kullanışlıdır; çünkü birçok R makine öğrenimi sınıflandırıcısı, hedef özelliğin bir faktör olarak kodlanmasını gerektirir.
Faktör değişkenlerin R'de kategorik değişkenleri temsil ettiğini unutmayın. Bu nedenle sınırlı sayıda farklı değer alabilirler.
Species özniteliğine hızlı bir bakış, çiçek türlerinin 50-50-50 olarak bölündüğünü söyler. Öte yandan, Species özniteliğinin yüzdesel dağılımını kontrol etmek isterseniz, orantı tablosu isteyebilirsiniz:
Not round argümanı, ilk argümanın yani prop.table(table(iris$Species))*100 ifadesinin değerlerini, ondalık noktasından sonra bir basamak olacak şekilde belirtilen basamak sayısına yuvarlar. Bunu, digits argümanının değerini değiştirerek kolayca ayarlayabilirsiniz.
Verinizi Derinlemesine Anlama
Verinin bu yüksek seviyeli görünümünde kalmayalım! R size summary() fonksiyonu ile daha derine inme fırsatı verir. Bu, sayısal veri türleri için Iris veri setinin minimum değerini, birinci çeyreğini, medyanını, ortalamasını, üçüncü çeyreğini ve maksimum değerini verir. Sınıf değişkeni için ise faktör sayısı döndürülür:
Gördüğünüz gibi, özgün komuta c() fonksiyonu eklendi: petal width ve sepal width sütunları birleştirildi ve ardından Iris veri setinin yalnızca bu iki sütunu için özet istendi.
Üçüncü Adım. Bundan Sonra Nereye?
Verinizi iyi anladıktan sonra, veri setiniz için ilgili kullanım senaryolarına karar vermelisiniz. Başka bir deyişle, veri setinizin size ne öğretebileceğini veya verinizden ne öğrenebileceğinizi düşünürsünüz. Buradan hareketle, düşündüğünüz sonuçları elde etmek için veri setinize hangi tür algoritmaları uygulayabileceğinizi düşünebilirsiniz.
İpucu: Verinizle ne kadar aşina olursanız, belirli veri setiniz için kullanım senaryolarını değerlendirmek o kadar kolay olacaktır. Uygun makine algoritmasını bulmak için de aynı şey geçerlidir.
Bu eğitim için Iris veri seti, tahmine dayalı modellemeye bir örnek olan sınıflandırma amacıyla kullanılacaktır. Veri setinin son özniteliği olan Species, bu örnekte hedef değişken veya tahmin etmek istediğiniz değişken olacaktır.
Not KNN'i regresyon için kullanmak isterseniz, hedef değişken olarak sayısal sınıflardan birini de alabilirsiniz.
Dördüncü Adım. Çalışma Alanınızı Hazırlayın
Makine öğreniminde kullanılan algoritmaların çoğu varsayılan olarak R'ye dahil edilmemiştir. Makine öğrenimine başlamak istediğinizde, kullanmak istediğiniz paketleri büyük olasılıkla indirmeniz gerekecektir.
İpucu: Hangi öğrenme algoritmasını kullanabileceğinize dair bir fikriniz var ama hangi paketi istediğiniz ya da ihtiyaç duyduğunuz konusunda yok mu? R'de kullanılan tüm paketlerin oldukça eksiksiz bir genel görünümünü tam burada bulabilirsiniz.
KNN algoritmasını göstermek için bu eğitim class paketini kullanır:
Bu pakete henüz sahip değilseniz, aşağıdaki kod satırını yazarak hızlı ve kolay bir şekilde yükleyebilirsiniz:
install.packages("<package name>")
Unutmayın nerd ipucu: Bu pakete sahip olup olmadığınızdan emin değilseniz, öğrenmek için aşağıdaki komutu çalıştırabilirsiniz!
any(grepl("<name of your package>", installed.packages()))
Beşinci Adım. Verinizi Hazırlayın
Verinizi keşfedip çalışma alanınızı hazırladıktan sonra, nihayet önünüzdeki göreve geri dönebilirsiniz: bir makine öğrenimi modeli oluşturmak. Ancak bunu yapmadan önce, verinizi de hazırlamanız önemlidir. Aşağıdaki bölüm, bunu yapmanın iki yolunu özetlemektedir: verinizi (gerekirse) normalize ederek ve verinizi eğitim ve test setlerine ayırarak.
Normalize Etme
Veri hazırlığınızın bir parçası olarak, tutarlı olması için verinizi normalize etmeniz gerekebilir. Bu giriş niteliğindeki eğitim için, normalize etmenin KNN algoritmasının öğrenmesini kolaylaştırdığını hatırlamanız yeterlidir. Normalize etmenin iki türü vardır:
- örnek normalizasyonu, her bir örneğin ayrı ayrı ayarlanmasıyken
- özellik normalizasyonu, tüm örneklerde her bir özelliği aynı şekilde ayarladığınızı belirtir.
Peki veri setinizi ne zaman normalize etmeniz gerekir?
Kısaca: verinin tutarlı olmadığından şüphelendiğinizde.
Bunu, summary() fonksiyonunun sonuçlarına bakarak kolayca görebilirsiniz. Tüm (sayısal) özniteliklerin minimum ve maksimum değerlerine bakın. Bir özniteliğin geniş bir değer aralığına sahip olduğunu görürseniz, veri setinizi normalize etmeniz gerekecektir; çünkü bu, uzaklığın bu özellik tarafından baskın hale geleceği anlamına gelir.
Örneğin, veri setinizde yalnızca X ve Y olmak üzere iki öznitelik varsa, X'in değerleri 1'den 1000'e kadar değişirken Y'nin değerleri yalnızca 1'den 100'e kadar gidiyorsa, uzaklık fonksiyonu üzerindeki Y'nin etkisi genellikle X'in etkisi tarafından bastırılacaktır.
Normalize ettiğinizde, aslında tüm özelliklerin aralığını ayarlarsınız; böylece daha büyük aralıklara sahip değişkenler arasındaki mesafeler aşırı vurgulanmaz.
İpucu: summary(iris) sonucuna geri dönün ve normalizasyonun gerekli olup olmadığını anlamaya çalışın.
Iris veri setinin normalize edilmesine gerek yoktur: Sepal.Length özniteliği 4,3 ile 7,9 arasında değerler alır ve Sepal.Width 2 ile 4,4 arasında değerler içerirken, Petal.Length 1 ile 6,9 arasında ve Petal.Width 0,1 ile 2,5 arasında değişir. Tüm özniteliklerin tüm değerleri 0,1 ile 7,9 aralığındadır ve bunu kabul edilebilir sayabilirsiniz.
Yine de özellikle makine öğrenimine yeniyseniz, normalizasyonu ve etkisini incelemek iyi bir fikirdir. Örneğin, önce kendi normalize() fonksiyonunuzu oluşturarak özellik normalizasyonu yapabilirsiniz.
Daha sonra, lapply() fonksiyonu girdi olarak verdiğiniz veri setiyle aynı uzunlukta bir liste döndürdükten sonra, normalizasyon sonuçlarını as.data.frame() ile bir veri çerçevesine koyduğunuz başka bir komutta bu argümanı kullanabilirsiniz. Bu listenin her bir öğesi, normalize argümanının, giriş olarak verilen veri setine uygulanmasının sonucudur:
YourNormalizedDataSet <- as.data.frame(lapply(YourDataSet, normalize))
Bunu aşağıdaki DataCamp Light parçasında test edin!
Iris veri seti için, normalize argümanını Iris veri setinin dört sayısal özniteliğine (Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) uygulamış ve sonuçları bir veri çerçevesine koymuş olurdunuz.
İpucu: Normalizasyonun veri seti üzerindeki etkisini daha ayrıntılı göstermek için, aşağıdaki sonucu ikinci adımda verilen Iris veri setinin özet bilgisiyle karşılaştırın.
Eğitim ve Test Setleri
Modelinizin performansını daha sonra değerlendirmek için, veri setini ikiye bölmeniz gerekir: bir eğitim seti ve bir test seti.
İlki sistemi eğitmek için, ikincisi ise öğrenilmiş ya da eğitilmiş sistemi değerlendirmek için kullanılır. Uygulamada, veri setinizin test ve eğitim setlerine bölünmesi ayrık yapılır: en yaygın bölme seçeneği, orijinal veri setinizin 2/3'ünü eğitim seti olarak almak, kalan 1/3'ünü ise test seti olarak oluşturmaktır.
Veri setine son bir bakış, bölmeyi mevcut haliyle yaparsanız, eğitim sınıfının “Setosa” ve “Versicolor” türlerinin tümünü, ancak “Virginica” türünden hiçbirini içermeyeceğini öğretir. Bu nedenle model, veride üçüncü bir çiçek türünün varlığından haberdar olmayacağı için tüm bilinmeyen örnekleri ya “Setosa” ya da “Versicolor” olarak sınıflandıracaktır.
Kısacası, test seti için yanlış tahminler elde edersiniz.
Bu nedenle, eğitim modelinde her üç tür sınıfın da bulunduğundan emin olmanız gerekir. Dahası, üç türün örnek sayısı tahminlerinizde bir sınıfı diğerine kayırmamak için az çok eşit olmalıdır.
Eğitim ve test setlerinizi oluşturmak için önce bir seed (tohum) belirlersiniz. Bu, R'nin rastgele sayı üreteci için bir sayıdır. Seed belirlemenin en büyük avantajı, rastgele sayı üretecine aynı seed’i verdiğinizde her seferinde aynı rastgele sayı dizisini elde edebilmenizdir.
set.seed(1234)
Ardından, Iris veri setinizin karıştırıldığından ve eğitim ve test setlerinizde her bir türden eşit miktarda bulunduğundan emin olmak istersiniz.
sample() fonksiyonunu, Iris veri setinin satır sayısı olan 150 olarak ayarlanmış bir örneklem büyüklüğü almak için kullanırsınız. Yeniden örneklemeli (replacement ile) örnekleme yaparsınız: 2 elemanlı bir vektörden seçim yapar ve Iris veri setinin 150 satırına 1 veya 2 atarsınız. Elemanların atanması 0,67 ve 0,33 olasılık ağırlıklarına tabidir.
ind <- sample(2, nrow(iris), replace=TRUE, prob=c(0.67, 0.33))
Not replace argümanı TRUE olarak ayarlanmıştır: bu, belirli bir satıra 1 veya 2 atadığınız ve ardından 2'lik vektörü özgün durumuna sıfırladığınız anlamına gelir. Bu da veri setinizin sonraki satırları için her seferinde yeniden 1 veya 2 atayabileceğiniz anlamına gelir. 1 veya 2 seçme olasılığı, kalan öğeler arasındaki ağırlıklara orantılı olmamalıdır; bu yüzden olasılık ağırlıkları belirtirsiniz. Ayrıca, DataCamp Light parçasında görmeseniz de seed’in 1234 olarak ayarlanmış olduğunu unutmayın.
Unutmayın eğitim setinizin orijinal veri setinizin 2/3’ü olmasını istersiniz: bu yüzden 150 örnek satıra 1’i 0,67, 2’yi ise 0,33 olasılıkla atarsınız.
Ardından, eğitim ve test setlerinizi tanımlamak için ind değişkeninde saklanan örneklemeyi kullanabilirsiniz:
Not yukarıda belirtilen 2/3 ve 1/3 oranlarına ek olarak, eğitim ve test setlerini oluşturmak için tüm öznitelikleri dikkate almadığınıza dikkat edin. Özellikle yalnızca Sepal.Length, Sepal.Width, Petal.Length ve Petal.Width alınır. Bunun nedeni, aslında beşinci özniteliği, yani Species'i tahmin etmek istemenizdir: bu sizin hedef değişkeninizdir. Ancak KNN algoritmasına bunu dahil etmek istersiniz; aksi halde onun için hiçbir zaman bir tahmin olmayacaktır.
Bu nedenle sınıf etiketlerini faktör vektörlerinde saklamanız ve eğitim ile test setlerine bölmeniz gerekir:
Altıncı Adım. Gerçek KNN Modeli
Sınıflandırıcınızı Oluşturma
Tüm bu hazırlık adımlarından sonra, bilinen (eğitim) verilerinizin tamamının saklandığından emin oldunuz. Bu ana kadar gerçek bir model ya da öğrenme gerçekleştirilmedi. Şimdi, eğitim setinizin k en yakın komşusunu bulmak istiyorsunuz.
Bu iki adımı gerçekleştirmenin kolay bir yolu, Öklidyen mesafe ölçüsünü kullanarak yeni, bilinmeyen örneğinizin k en yakın komşusunu bulmak için knn() fonksiyonunu kullanmaktır. Burada k parametresi, sizin ayarladığınız bir değerdir.
Daha önce belirtildiği gibi, yeni örnekler çoğunluk oyu veya ağırlıklı oy kullanılarak sınıflandırılır. Sınıflandırma durumunda, en yüksek skora sahip veri noktası yarışı kazanır ve bilinmeyen örnek o kazanan veri noktasının etiketini alır. Eşit sayıda kazanan varsa, sınıflandırma rastgele yapılır.
Not: Oylama skorlarında beraberlikleri önlemek için k parametresi genellikle tek sayıdır.
Sınıflandırıcınızı oluşturmak için knn() fonksiyonunu alıp, tıpkı bu örnekte olduğu gibi bazı argümanlar eklersiniz:
knn() fonksiyonunu, eğitim seti, test seti, eğitim etiketleri ve bu algoritmayla bulmak istediğiniz komşu sayısını argüman olarak alacak şekilde iris_pred içine kaydedersiniz. Bu fonksiyonun sonucu, test verisinin her satırı için tahmin edilen sınıfları içeren bir faktör vektörüdür.
Not test etiketlerini eklemek istemezsiniz: bunlar, modelinizin örneklerinizin gerçek sınıflarını tahmin etmede iyi olup olmadığını görmek için kullanılacaktır!
Sonucu, yani iris_pred'i incelediğinizde, test verisinin her satırı için tahmin edilen sınıfları içeren faktör vektörünü geri aldığınızı görürsünüz.
Yedinci Adım. Modelinizin Değerlendirilmesi
Makine öğreniminde bir sonraki temel adım, modelinizin performansının değerlendirilmesidir. Başka bir deyişle, modelin tahminlerinin doğruluk derecesini analiz etmek istersiniz.
Daha soyut bir bakış için, iris_pred sonuçlarını daha önce tanımladığınız test etiketleriyle karşılaştırabilirsiniz:
Modelin, 29. satırda “Versicolor” tahmin edilip test etiketinin “Virginica” olduğu bir yanlış sınıflandırma dışında, makul derecede doğru tahminler yaptığını görürsünüz.
Bu, modelinizin performansına dair bir gösterge olsa da, analizinizde daha da derine inmek isteyebilirsiniz. Bu amaçla gmodels paketini içe aktarabilirsiniz:
install.packages("package name")
Ancak bu paketi zaten kurduysanız, yalnızca şunu girebilirsiniz
library(gmodels)
Daha sonra çapraz tablo ya da kontenjans tablosu oluşturabilirsiniz. Bu tür tablolar, iki değişken arasındaki ilişkiyi anlamak için sıklıkla kullanılır. Bu durumda, test verinizin sınıflarının, iris.testLabels içinde depolananların, modeliniz olan iris_pred ile nasıl ilişkili olduğunu anlamak istersiniz:
CrossTable(x = iris.testLabels, y = iris_pred, prop.chisq=FALSE)

Not son argüman olan prop.chisq, her bir hücrenin ki-kare katkısının dahil edilip edilmediğini belirtir. Ki-kare istatistiği, tek tek hücrelerin katkılarının toplamıdır ve gözlenen değerlerle beklenen değerler arasındaki farkın anlamlı olup olmadığına karar vermek için kullanılır.
Bu tablodan doğru ve yanlış tahminlerin sayısını çıkarabilirsiniz: test setinden bir örnek model tarafından Versicolor olarak etiketlenmişken, gerçekte Virginica türünden bir çiçektir. Bunu, iris.testLabels sütununda “Virginica” türünün ilk satırında görebilirsiniz. Diğer tüm durumlarda doğru tahminler yapılmıştır. Modelin performansının yeterince iyi olduğu ve modeli iyileştirmenize gerek olmadığı sonucuna varabilirsiniz!
R ile caret kullanarak Makine Öğrenimi
Önceki bölümlerde, R'de KNN algoritmasıyla denetimli öğrenmeye başladınız. Yukarıda görmemiş olabileceğiniz gibi, R'de makine öğrenimi gerçekten karmaşık hale gelebilir; çünkü çeşitli sözdizimlerine, farklı parametrelere sahip pek çok algoritma vardır. Belki de benimle aynı fikirde olursunuz: her algoritma için farklı paket adlarını hatırlamak oldukça zor olabilir veya her bir algoritma için sözdizimini uygulamak fazlaca zahmetli gelebilir.
İşte caret paketinin işe yaradığı yer burasıdır: “Classification and Regression Training”in kısaltmasıdır ve denetimli makine öğrenimi problemlerini çözmek için bilmeniz gereken her şeyi sunar: çok sayıda makine öğrenimi algoritması için tek tip bir arayüz sağlar. Python makine öğrenimine biraz aşinaysanız, scikit-learn ile benzerlikler görebilirsiniz!
Aşağıda, yukarıda özetlenen adımlardan geçeceksiniz; ancak bu kez, verinizi sınıflandırmak için caret'ten yararlanacaksınız. Yukarıda belirtilen adımları takip ettiyseniz, zaten çok iş yaptığınızı unutmayın: verinizi kavradınız, onu keşfettiniz, çalışma alanınızı hazırladınız vb. Şimdi caret ile verinizi ön işleme tabi tutma zamanı!
Daha önce yaptığınız gibi normalizasyonun etkisini inceleyebilirsiniz; ancak bunu eğitimin ilerleyen kısımlarında göreceksiniz.
Sırada ne olduğunu zaten biliyorsunuz! Veriyi eğitim ve test seti olarak ayıralım. Ancak bu durumda işleri biraz farklı ele alıyorsunuz: veriyi iris$Species içinde bulduğunuz etiketlere göre bölüyorsunuz. Ayrıca bu durumda oran, eğitim ve test setleri için 75-25 olarak ayarlanır.
Artık model eğitmeye hazırsınız! Ancak hatırlayacağınız üzere, caret çok sayıda algoritma içeren son derece kapsamlı bir projedir. Projeye hangi algoritmaların dahil olduğu konusunda şüpheniz varsa, hepsinin bir listesini alabilirsiniz. Aşağıdaki kod parçasının gösterdiği gibi names(getModelInfo()) çalıştırarak listeyi açın. Sonra bir algoritma seçin ve train() fonksiyonuyla bir model eğitin:
Bu aşamaya geldiğinizde başka modeller oluşturmak son derece basittir; method argümanını değiştirmeniz yeterlidir; tıpkı bu örnekte olduğu gibi:
model_cart <- train(iris.training[, 1:4], iris.training[, 5], method='rpart2')
Modelinizi eğittiğinize göre, şimdi az önce oluşturduğunuz test setinin etiketlerini tahmin etme ve modelin verinizde nasıl bir performans gösterdiğini değerlendirme zamanı:
Ek olarak, daha öncekiyle aynı testi yaparak, ölçekleme ve ortalama alma gibi ön işlemenin modeliniz üzerindeki etkisini incelemeyi deneyebilirsiniz. Aşağıdaki kod parçasını çalıştırın:
Büyük Veriye Geçiş
Tebrikler! Bu eğitimi tamamladınız!
Bu eğitim, esas olarak R'nin yardımıyla temel makine öğrenimi algoritması KNN'i gerçekleştirmeye odaklandı. Kullanılan Iris veri seti küçüktü ve genel bir bakış sunuyordu; Yalnızca adımların her birini kendiniz nasıl uygulayabileceğinizi görmekle kalmadınız, aynı zamanda makine öğreniminize ivme kazandırmak için caret'in sunduğu gibi tek tip bir arayüzden nasıl kolayca yararlanabileceğinizi de gördünüz.
Ancak çok daha fazlasını yapabilirsiniz!
Bu eğitimde sunulan temeller ve diğer makine öğrenimi algoritmalarıyla yeterince denemeler yaptıysanız, R ve veri analizi konusunda daha ileri gitmeyi ilginç bulabilirsiniz.

