R’de özellik seçimini ele alın: Rastgele Orman sınıflandırma algoritması etrafında oluşturulmuş bir sarmalayıcı olan Boruta algoritmasını ve uygulanışını keşfedin!
Özellik sayısı açısından yüksek boyutlu veriler, günümüzde makine öğrenimi problemlerinde giderek daha yaygın. Bu yüksek hacimli verilerden yararlı bilgi çıkarmak için gürültüyü veya yinelenen verileri azaltacak istatistiksel teknikler kullanmanız gerekir. Bunun nedeni, bir modeli eğitmek için elinizdeki her özelliği kullanmanızın çoğu zaman gerekmediğidir. Yalnızca birbiriyle ilişkili olmayan ve tekrarlı olmayan özellikleri besleyerek modelinizi iyileştirebilirsiniz. İşte burada özellik seçimi önemli bir rol oynar. Yalnızca modelinizi daha hızlı eğitmeye yardımcı olmakla kalmaz, aynı zamanda modelin karmaşıklığını azaltır, yorumlamayı kolaylaştırır ve performans ölçütünüz ister doğruluk, ister kesinlik, ister duyarlılık olsun, doğruluğu artırır.
Bu öğreticide aşağıdaki kavramları ele alacaksınız:
Önce özellik seçimi hakkında daha fazla bilgi edineceksiniz: Ne zaman kullanabileceğinizi ve modeliniz için en önemli özellikleri seçmek üzere hangi yöntemlerin mevcut olduğunu göreceksiniz!
Ardından Boruta algoritması ile tanışacaksınız. Orijinal özniteliklerin önemini, permütasyon kopyaları kullanılarak rastgele elde edilebilecek önemle karşılaştırıp, alakasız özellikleri kademeli olarak eleyerek ilgili özellikler için yukarıdan aşağıya bir arama yapmayı nasıl kullanabileceğinizi göreceksiniz.
Son olarak, algoritmayı çalıştırmak için kullanabileceğiniz Boruta paketi hakkında daha fazla bilgi edineceksiniz.
Özellik Seçimi
Genel olarak, verinin boyutluluğunu azaltmak istediğinizde Temel Bileşenler Analizi, Tekil Değer Ayrışımı vb. yöntemlerle karşılaşırsınız. O hâlde neden başka özellik seçimi yöntemlerine ihtiyaç duyduğunuzu sormanız doğal. Bu tekniklerin sorunu, denetimsiz özellik seçimi yöntemleri olmalarıdır: Örneğin, verideki varyansı kullanarak bileşenleri bulan PCA’yı ele alın. Bu teknikler, özellik değerleri ile hedef sınıf veya değerler arasındaki bilgiyi hesaba katmaz. Ayrıca, bu tür yöntemlerle ilişkili normallik gibi bazı varsayımlar vardır ve bunları uygulamaya başlamadan önce belli dönüşümler gerektirir. Bu kısıtlar her tür veri için geçerli değildir.
Genel olarak üç tür özellik seçimi yöntemi vardır:
Filtre Yöntemleri: Filtre yöntemleri genellikle bir ön işleme adımı olarak kullanılır. Özelliklerin seçimi herhangi bir makine öğrenimi algoritmasından bağımsızdır. Bunun yerine, özellikler, sonuç değişkeniyle olan korelasyonları için çeşitli istatistiksel testlerde aldıkları puanlara göre seçilir. Yaygın filtre yöntemleri arasında Korelasyon ölçütleri (Pearson, Spearman, Mesafe), Ki-kare testi, Anova, Fisher Skoru vb. bulunur.
Sarmalayıcı Yöntemler: Sarmalayıcı yöntemlerde, bir özellik alt kümesini kullanıp bunlarla bir model eğitirsiniz. Önceki modelden çıkardığınız sonuçlara dayanarak, alt kümeden özellik eklemeye veya çıkarmaya karar verirsiniz. İleriye Doğru Seçim, Geriye Doğru Eleme sarmalayıcı yöntemlere örnektir.
Gömülü Yöntemler: Kendi yerleşik özellik seçimi yöntemlerine sahip algoritmalardır. LASSO regresyonu buna bir örnektir.
Bu öğreticide R’de Boruta adlı bir paket aracılığıyla hazır bulunan sarmalayıcı yöntemlerden birini kullanacaksınız.
Boruta Algoritması
Boruta algoritması, rastgele orman sınıflandırma algoritması etrafında oluşturulmuş bir sarmalayıcıdır. Bir sonuç değişkeniyle ilişkili olarak, veri kümenizde bulunabilecek tüm önemli ve ilgi çekici özellikleri yakalamaya çalışır.
Önce veri kümesini çoğaltır ve her sütundaki değerleri karıştırır. Bu değerlere gölge özellikler denir. * Ardından, veri kümesi üzerinde Rastgele Orman Sınıflandırıcısı gibi bir sınıflandırıcıyı eğitir. Bunu yaparak, veri kümenizdeki her bir özellik için önem hakkında -Ortalama Doğruluk Azalması veya Ortalama Safsızlık Azalması yoluyla- bir fikir edinmiş olursunuz. Puan ne kadar yüksekse, o kadar iyi veya önemlidir.
Daha sonra algoritma, her gerçek özelliğiniz için daha yüksek öneme sahip olup olmadığını kontrol eder. Yani, özelliğin en iyi gölge özelliğinin maksimum Z-skorundan daha yüksek bir Z-skoru olup olmadığına bakar. Eğer öyleyse, bunu bir vektöre kaydeder. Bunlara isabet denir. Sonrasında bir başka yinelemeye devam eder. Önceden tanımlanmış sayıda yinelemeden sonra, bu isabetlerin bir tablosuyla sonlanırsınız. Unutmayın: Z-skoru, bir veri noktasının ortalamadan standart sapma cinsinden uzaklığıdır; daha fazla bilgi için buraya tıklayın.
Her yinelemede algoritma, özelliklerin karıştırılmış kopyalarının Z-skorlarını ve orijinal özelliklerin Z-skorlarını karşılaştırır; ikincisinin birinciden daha iyi performans gösterip göstermediğine bakar. Eğer gösteriyorsa, algoritma özelliği önemli olarak işaretler. Özünde algoritma, rastgele karıştırılmış kopyalarla karşılaştırarak bir özelliğin önemini doğrulamaya çalışır; bu da sağlamlığı artırır. Bu, bir özelliğin gölge özelliklere göre daha iyi performans gösterdiği sayıların basitçe binom dağılımla karşılaştırılmasıyla yapılır.
Bir özellik örneğin 15 yinelemede hiç isabet almadıysa, onu reddeder ve orijinal matrixten de çıkarırsınız. Belirli sayıda yinelemeden sonra -veya tüm özellikler onaylanmış ya da reddedilmişse- durursunuz.
R'de Boruta Algoritması
Boruta algoritmasını en yaygın bulunan veri kümelerinden birinde kullanalım: Banka Pazarlama verisi. Bu veri, bir Portekiz bankacılık kuruluşunun doğrudan pazarlama kampanyalarını (telefon aramaları) temsil eder. Sınıflandırma hedefi, müşterinin vadeli mevduata abone olup olmayacağını tahmin etmektir.
İpucu: Farklı özelliklerin ayrıntılı açıklamasını buradan incelemeyi unutmayın.
Veri kümenizdeki farklı özelliklerin ortak betimleyici istatistiklerini özetlemek için summary() işlevini kullanalım.
summary(read_file)## age job marital education ## Min. :19.00 Length:4521 Length:4521 Length:4521 ## 1st Qu.:33.00 Class :character Class :character Class :character ## Median :39.00 Mode :character Mode :character Mode :character ## Mean :41.17 ## 3rd Qu.:49.00 ## Max. :87.00 ## default balance housing loan ## Length:4521 Min. :-3313 Length:4521 Length:4521 ## Class :character 1st Qu.: 69 Class :character Class :character ## Mode :character Median : 444 Mode :character Mode :character ## Mean : 1423 ## 3rd Qu.: 1480 ## Max. :71188 ## contact day month duration ## Length:4521 Min. : 1.00 Length:4521 Min. : 4 ## Class :character 1st Qu.: 9.00 Class :character 1st Qu.: 104 ## Mode :character Median :16.00 Mode :character Median : 185 ## Mean :15.92 Mean : 264 ## 3rd Qu.:21.00 3rd Qu.: 329 ## Max. :31.00 Max. :3025 ## campaign pdays previous poutcome ## Min. : 1.000 Min. : -1.00 Min. : 0.0000 Length:4521 ## 1st Qu.: 1.000 1st Qu.: -1.00 1st Qu.: 0.0000 Class :character ## Median : 2.000 Median : -1.00 Median : 0.0000 Mode :character ## Mean : 2.794 Mean : 39.77 Mean : 0.5426 ## 3rd Qu.: 3.000 3rd Qu.: -1.00 3rd Qu.: 0.0000 ## Max. :50.000 Max. :871.00 Max. :25.0000 ## y ## Length:4521 ## Class :character ## Mode :character ## ## ## Altyapı:
summary() işlevi, ortalama, medyan, çeyrekler vb. gibi sürekli özellikler için merkezi eğilim ölçülerini verir. Veri kümenizde kategorik özellikler varsa, bu özelliklerin Sınıfını ve Modunu da görürsünüz.
Şimdi kategorik özellikleri factor veri tipine dönüştürelim:
Gölge özellikler oluşturmak için veri noktaları karıştırıldığından ve her biri için Z-skoru hesaplandığından, boruta paketini kullanmadan önce eksik veya boş değerleri ele almak önemlidir; aksi takdirde hata verir.
(Ne) yazık ki bu veri kümesinde ikisi de yok. Ancak eğitim amaçlı olarak veriye bazı NA’ler ekleyeceksiniz.
Veri kümenize eksik değerleri prodNA() işlevini kullanarak tohumlayalım. Bu işlevi missForest paketini kurarak kullanabilirsiniz.
Unutmayın ki, gerekirse eksik paketleri kurmak için install.packages() kullanabilirsiniz!
library(missForest)# Generate 5% missing values at random
bank.mis <- prodNA(read_file, noNA =0.05)Altyapı:
Yeni veri çerçevenizde imputasyonla oluşturulan NA sayısını almak için yine summary() işlevini çağırabilirsiniz, ancak gelin biraz daha yaratıcı olalım!
Verideki eksiklik durumunu aşağıdaki ggplot2 kodunu kullanarak görselleştirelim:
Grafikteki beyaz çizgiler, her özellikte eksik değerleri tohumladığınızı görsel olarak gösterir; ancak ggplot_missing işlevini yazmanın ne kadar zahmetli olduğuna dikkat ettiniz mi? Neyse ki bir sonraki bölümde kullanacağınız R’deki Amelia paketi, benzer bir grafiği çizmek için tek satırlık bir alternatif sunuyor:
Eksik değerleri ortalama, medyan veya mod (kategorik özellikler için) ile tamamlamak gibi çeşitli yollarla imputasyon yapabilirsiniz; ancak gelin eksik değerlerin imputasyonu için güçlü bir başka paketi, Amelia’yı kullanalım.
Amelia, m bootstrap örneklemi alır ve her örneklemde EMB (bootstrap’lı beklenti-maksimizasyon) algoritmasını uygular. m adet ortalama ve varyans tahmini farklı olacaktır. Son olarak, ilk tahmin kümesi birinci eksik değer kümesini regresyonla imputasyon için, ikinci tahmin kümesi ikinci küme için vb. kullanılır. Çoklu imputasyon yanlılığı azaltmaya ve verimliliği artırmaya yardımcı olur. Ayrıca çok çekirdekli CPU’lar kullanılarak paralel imputasyon özelliğiyle de etkinleştirilmiştir.
3 önemli parametresi vardır:
m: oluşturulacak imputasyonlu veri kümesi sayısı.
idvars: imputasyon yapmak istemediğiniz tüm kimlik değişkenlerini ve diğer değişkenleri burada tutun.
Boruta, bir veri kümesindeki özelliklerin önemine ilişkin bir karar verir. Birçoğu zaten önemli veya önemsiz olarak sınıflandırılmıştır; ancak bazılarının geçici (tentative) kategorisine atandığını görürsünüz.
Peki bu ne anlama geliyor?
Geçici özelliklerin önemi, en iyi gölge özelliklerinin önemine o kadar yakındır ki, varsayılan Rastgele Orman çalıştırma sayısında Boruta istenen güvenle karar veremez.
Peki bu durumda ne yapmalısınız?
Geçici özellikler kaldıysa maxRuns parametresini artırmayı düşünebilirsiniz. Ancak, not edin ki mtry ve ntree parametreleri için de değerler sağlayabilirsiniz; bunlar randomForest() işlevine iletilecektir. İlki, her bölünmede aday olarak rastgele örneklenen değişken sayısını belirtmenize olanak tanırken, ikincisi büyütmek istediğiniz ağaç sayısını belirtmek için kullanılır. Bu argümanlar belirtildiğinde, Rastgele Orman sınıflandırıcısı, torba dışı hata değerinin en düşük olduğu noktada yakınsamayı sağlayacaktır.
Unutmayın ki torba dışı hata, eğitim için kullanılan veri örneklerini bootstrap ile alt örnekleyen sınıflandırıcıların tahmin hatasını ölçmek için bir tahmindir. Her bir eğitim örneği X için, bootstrap örneğinde X’i içermeyen ağaçlar kullanılarak elde edilen ortalama tahmin hatasıdır.
Alternatif olarak, sürecin ilerleyişine dair rapor almak için doTrace argümanını 1 veya 2 olarak ayarlayabilirsiniz.
boruta paketi ayrıca, orta özellik Z-skorunu en önemli gölge özelliğin orta Z-skoru ile basitçe karşılaştırarak eksik kararları doldurmak için kullanılabilecek bir TentativeRoughFix() işlevi içerir:
#take a call on tentative features
boruta.bank <- TentativeRoughFix(boruta.bank_train)
print(boruta.bank)## Boruta performed 99 iterations in 18.97234 mins.## Tentatives roughfixed over the last 99 iterations.## 12 attributes confirmed important: age, campaign, contact, day,## default and 7 more;## 4 attributes confirmed unimportant: balance, education, job,## marital;Altyapı:
Boruta artık işini yaptı: Her özelliği önemli veya önemsiz olarak başarıyla sınıflandırdı.
Değişken önem grafiğini plot(boruta.bank) çağrısıyla çizebilirsiniz. Ancak, x ekseni etiketleri yatay olacaktır. Bu pek derli toplu görünmez.
Bu yüzden, aşağıdaki kod parçasında olduğu gibi x eksenine özellik etiketlerini dikey olarak ekleyeceksiniz:
y ekseni etiketi Importance, karıştırılmış veri kümesindeki her bir özelliğin Z skorunu temsil eder.
Mavi kutu grafikleri bir gölge özelliğin minimum, ortalama ve maksimum Z skorlarına karşılık gelirken, kırmızı ve yeşil kutu grafikleri sırasıyla reddedilen ve onaylanan özelliklerin Z skorlarını temsil eder. Gördüğünüz gibi kırmızı kutu grafikleri, gölge özelliğin maksimum Z skorundan daha düşük Z skoruna sahiptir; bu da onların önemsiz kategorisine konulmalarının tam nedenidir.
Özelliklerin önemini şu komutla doğrulayabilirsiniz:
Sonucu kolayca doğrulayabilirsiniz; çünkü duration özelliğine en yüksek önem verilmiştir ki veri açıklamasında da bu dikkatle okursanız belirtilmiştir (bkz. burası)!
Sonuç
İşte bu kadar! Sadece birkaç satır kod yazarak veri kümenizdeki en önemli özellikleri başarıyla filtrelediniz. Böylece verinizdeki gürültüyü azalttınız; bu da herhangi bir sınıflandırıcının bir gözleme etiket ataması için gerçekten faydalı olacaktır. Bu önemli özellikler üzerinde bir model eğitmek, modelinizin performansını kesinlikle iyileştirecektir; zaten özellik seçimini yapmanızın amacı da buydu!
Bu öğreticiyi hazırlarken kullanılan kaynaklara göz atmak isterseniz, aşağıdakilere bakın:
PACKAGE AMELIA : A Program for Missing Data; James Honaker, Gary King, and Matthew Blackwell
Feature Selection with the Boruta Package; Miron B. Kursa, Witold R. Rudnicki
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Özellik sayısı açısından yüksek boyutlu veriler, günümüzde makine öğrenimi problemlerinde giderek daha yaygın. Bu yüksek hacimli verilerden yararlı bilgi çıkarmak için gürültüyü veya yinelenen verileri azaltacak istatistiksel teknikler kullanmanız gerekir. Bunun nedeni, bir modeli eğitmek için elinizdeki her özelliği kullanmanızın çoğu zaman gerekmediğidir. Yalnızca birbiriyle ilişkili olmayan ve tekrarlı olmayan özellikleri besleyerek modelinizi iyileştirebilirsiniz. İşte burada özellik seçimi önemli bir rol oynar. Yalnızca modelinizi daha hızlı eğitmeye yardımcı olmakla kalmaz, aynı zamanda modelin karmaşıklığını azaltır, yorumlamayı kolaylaştırır ve performans ölçütünüz ister doğruluk, ister kesinlik, ister duyarlılık olsun, doğruluğu artırır.
Bu öğreticide aşağıdaki kavramları ele alacaksınız:
Önce özellik seçimi hakkında daha fazla bilgi edineceksiniz: Ne zaman kullanabileceğinizi ve modeliniz için en önemli özellikleri seçmek üzere hangi yöntemlerin mevcut olduğunu göreceksiniz!
Ardından Boruta algoritması ile tanışacaksınız. Orijinal özniteliklerin önemini, permütasyon kopyaları kullanılarak rastgele elde edilebilecek önemle karşılaştırıp, alakasız özellikleri kademeli olarak eleyerek ilgili özellikler için yukarıdan aşağıya bir arama yapmayı nasıl kullanabileceğinizi göreceksiniz.
Ayrıca, özellik seçimini gerçekleştireceğiniz veri kümesine kısaca bakacaksınız.
Ameliapaketinin yardımıyla eksik değerleri nasıl imputasyonla tamamlayabileceğinizi göreceksiniz.Son olarak, algoritmayı çalıştırmak için kullanabileceğiniz
Borutapaketi hakkında daha fazla bilgi edineceksiniz.Özellik Seçimi
Genel olarak, verinin boyutluluğunu azaltmak istediğinizde Temel Bileşenler Analizi, Tekil Değer Ayrışımı vb. yöntemlerle karşılaşırsınız. O hâlde neden başka özellik seçimi yöntemlerine ihtiyaç duyduğunuzu sormanız doğal. Bu tekniklerin sorunu, denetimsiz özellik seçimi yöntemleri olmalarıdır: Örneğin, verideki varyansı kullanarak bileşenleri bulan PCA’yı ele alın. Bu teknikler, özellik değerleri ile hedef sınıf veya değerler arasındaki bilgiyi hesaba katmaz. Ayrıca, bu tür yöntemlerle ilişkili normallik gibi bazı varsayımlar vardır ve bunları uygulamaya başlamadan önce belli dönüşümler gerektirir. Bu kısıtlar her tür veri için geçerli değildir.
Genel olarak üç tür özellik seçimi yöntemi vardır:
Filtre Yöntemleri: Filtre yöntemleri genellikle bir ön işleme adımı olarak kullanılır. Özelliklerin seçimi herhangi bir makine öğrenimi algoritmasından bağımsızdır. Bunun yerine, özellikler, sonuç değişkeniyle olan korelasyonları için çeşitli istatistiksel testlerde aldıkları puanlara göre seçilir. Yaygın filtre yöntemleri arasında Korelasyon ölçütleri (Pearson, Spearman, Mesafe), Ki-kare testi, Anova, Fisher Skoru vb. bulunur.
Sarmalayıcı Yöntemler: Sarmalayıcı yöntemlerde, bir özellik alt kümesini kullanıp bunlarla bir model eğitirsiniz. Önceki modelden çıkardığınız sonuçlara dayanarak, alt kümeden özellik eklemeye veya çıkarmaya karar verirsiniz. İleriye Doğru Seçim, Geriye Doğru Eleme sarmalayıcı yöntemlere örnektir.
Gömülü Yöntemler: Kendi yerleşik özellik seçimi yöntemlerine sahip algoritmalardır. LASSO regresyonu buna bir örnektir.
Bu öğreticide R’de
Borutaadlı bir paket aracılığıyla hazır bulunan sarmalayıcı yöntemlerden birini kullanacaksınız.Boruta Algoritması
Boruta algoritması, rastgele orman sınıflandırma algoritması etrafında oluşturulmuş bir sarmalayıcıdır. Bir sonuç değişkeniyle ilişkili olarak, veri kümenizde bulunabilecek tüm önemli ve ilgi çekici özellikleri yakalamaya çalışır.
R'de Boruta Algoritması
Boruta algoritmasını en yaygın bulunan veri kümelerinden birinde kullanalım: Banka Pazarlama verisi. Bu veri, bir Portekiz bankacılık kuruluşunun doğrudan pazarlama kampanyalarını (telefon aramaları) temsil eder. Sınıflandırma hedefi, müşterinin vadeli mevduata abone olup olmayacağını tahmin etmektir.
İpucu: Farklı özelliklerin ayrıntılı açıklamasını buradan incelemeyi unutmayın.
Veri kümenizdeki farklı özelliklerin ortak betimleyici istatistiklerini özetlemek için
summary()işlevini kullanalım.summary()işlevi, ortalama, medyan, çeyrekler vb. gibi sürekli özellikler için merkezi eğilim ölçülerini verir. Veri kümenizde kategorik özellikler varsa, bu özelliklerin Sınıfını ve Modunu da görürsünüz.Şimdi kategorik özellikleri factor veri tipine dönüştürelim:
Gölge özellikler oluşturmak için veri noktaları karıştırıldığından ve her biri için Z-skoru hesaplandığından,
borutapaketini kullanmadan önce eksik veya boş değerleri ele almak önemlidir; aksi takdirde hata verir.(Ne) yazık ki bu veri kümesinde ikisi de yok. Ancak eğitim amaçlı olarak veriye bazı
NA’ler ekleyeceksiniz.Veri kümenize eksik değerleri
prodNA()işlevini kullanarak tohumlayalım. Bu işlevimissForestpaketini kurarak kullanabilirsiniz.Unutmayın ki, gerekirse eksik paketleri kurmak için
install.packages()kullanabilirsiniz!Yeni veri çerçevenizde imputasyonla oluşturulan
NAsayısını almak için yinesummary()işlevini çağırabilirsiniz, ancak gelin biraz daha yaratıcı olalım!Verideki eksiklik durumunu aşağıdaki
ggplot2kodunu kullanarak görselleştirelim:Grafikteki beyaz çizgiler, her özellikte eksik değerleri tohumladığınızı görsel olarak gösterir; ancak
ggplot_missingişlevini yazmanın ne kadar zahmetli olduğuna dikkat ettiniz mi? Neyse ki bir sonraki bölümde kullanacağınızR’dekiAmeliapaketi, benzer bir grafiği çizmek için tek satırlık bir alternatif sunuyor:Kendiniz deneyin!
Eksik Değerlerin
Ameliaile İmputasyonuEksik değerleri ortalama, medyan veya mod (kategorik özellikler için) ile tamamlamak gibi çeşitli yollarla imputasyon yapabilirsiniz; ancak gelin eksik değerlerin imputasyonu için güçlü bir başka paketi, Amelia’yı kullanalım.
Amelia,
mbootstrap örneklemi alır ve her örneklemdeEMB(bootstrap’lı beklenti-maksimizasyon) algoritmasını uygular.madet ortalama ve varyans tahmini farklı olacaktır. Son olarak, ilk tahmin kümesi birinci eksik değer kümesini regresyonla imputasyon için, ikinci tahmin kümesi ikinci küme için vb. kullanılır. Çoklu imputasyon yanlılığı azaltmaya ve verimliliği artırmaya yardımcı olur. Ayrıca çok çekirdekli CPU’lar kullanılarak paralel imputasyon özelliğiyle de etkinleştirilmiştir.3 önemli parametresi vardır:
m: oluşturulacak imputasyonlu veri kümesi sayısı.idvars: imputasyon yapmak istemediğiniz tüm kimlik değişkenlerini ve diğer değişkenleri burada tutun.noms: nominal değişkenleri burada belirtin.İmputasyonlu veri çerçevelerine erişmek için aşağıdaki alt kümelendirmeyi kullanabilirsiniz:
İmputasyonlu veri kümesini
csvdosyalarına aktarmak için şunu kullanın:BorutaR PaketiŞimdi Boruta algoritmasını imputasyonlu veri kümelerinden birinde kullanalım. Bunu yapmak için Boruta paketinden yararlanabilirsiniz:
Boruta, bir veri kümesindeki özelliklerin önemine ilişkin bir karar verir. Birçoğu zaten önemli veya önemsiz olarak sınıflandırılmıştır; ancak bazılarının geçici (tentative) kategorisine atandığını görürsünüz.
Peki bu ne anlama geliyor?
Geçici özelliklerin önemi, en iyi gölge özelliklerinin önemine o kadar yakındır ki, varsayılan Rastgele Orman çalıştırma sayısında Boruta istenen güvenle karar veremez.
Peki bu durumda ne yapmalısınız?
Geçici özellikler kaldıysa
maxRunsparametresini artırmayı düşünebilirsiniz. Ancak, not edin kimtryventreeparametreleri için de değerler sağlayabilirsiniz; bunlarrandomForest()işlevine iletilecektir. İlki, her bölünmede aday olarak rastgele örneklenen değişken sayısını belirtmenize olanak tanırken, ikincisi büyütmek istediğiniz ağaç sayısını belirtmek için kullanılır. Bu argümanlar belirtildiğinde, Rastgele Orman sınıflandırıcısı, torba dışı hata değerinin en düşük olduğu noktada yakınsamayı sağlayacaktır.Unutmayın ki torba dışı hata, eğitim için kullanılan veri örneklerini bootstrap ile alt örnekleyen sınıflandırıcıların tahmin hatasını ölçmek için bir tahmindir. Her bir eğitim örneği X için, bootstrap örneğinde X’i içermeyen ağaçlar kullanılarak elde edilen ortalama tahmin hatasıdır.
Alternatif olarak, sürecin ilerleyişine dair rapor almak için
doTraceargümanını1veya2olarak ayarlayabilirsiniz.borutapaketi ayrıca, orta özellik Z-skorunu en önemli gölge özelliğin orta Z-skoru ile basitçe karşılaştırarak eksik kararları doldurmak için kullanılabilecek birTentativeRoughFix()işlevi içerir:Borutaartık işini yaptı: Her özelliği önemli veya önemsiz olarak başarıyla sınıflandırdı.Değişken önem grafiğini
plot(boruta.bank)çağrısıyla çizebilirsiniz. Ancak,xekseni etiketleri yatay olacaktır. Bu pek derli toplu görünmez.Bu yüzden, aşağıdaki kod parçasında olduğu gibi
xeksenine özellik etiketlerini dikey olarak ekleyeceksiniz:yekseni etiketiImportance, karıştırılmış veri kümesindeki her bir özelliğinZskorunu temsil eder.Mavi kutu grafikleri bir gölge özelliğin minimum, ortalama ve maksimum Z skorlarına karşılık gelirken, kırmızı ve yeşil kutu grafikleri sırasıyla reddedilen ve onaylanan özelliklerin Z skorlarını temsil eder. Gördüğünüz gibi kırmızı kutu grafikleri, gölge özelliğin maksimum
Zskorundan daha düşükZskoruna sahiptir; bu da onların önemsiz kategorisine konulmalarının tam nedenidir.Özelliklerin önemini şu komutla doğrulayabilirsiniz:
Sonucu kolayca doğrulayabilirsiniz; çünkü
durationözelliğine en yüksek önem verilmiştir ki veri açıklamasında da bu dikkatle okursanız belirtilmiştir (bkz. burası)!Sonuç
İşte bu kadar! Sadece birkaç satır kod yazarak veri kümenizdeki en önemli özellikleri başarıyla filtrelediniz. Böylece verinizdeki gürültüyü azalttınız; bu da herhangi bir sınıflandırıcının bir gözleme etiket ataması için gerçekten faydalı olacaktır. Bu önemli özellikler üzerinde bir model eğitmek, modelinizin performansını kesinlikle iyileştirecektir; zaten özellik seçimini yapmanızın amacı da buydu!
Bu öğreticiyi hazırlarken kullanılan kaynaklara göz atmak isterseniz, aşağıdakilere bakın: