R'deki Rastgele Ormanlarla sınıflandırma için dengesiz sınıf büyüklüklerine göre nasıl ayarlanmalıdır?


17

Üzerinde çalıştığım bir proje için farklı sınıflandırma yöntemleri araştırıyorum ve Rastgele Ormanları denemekle ilgileniyorum. Ben ilerlerken kendimi eğitmeye çalışıyorum ve CV topluluğu tarafından sağlanan yardımları takdir ediyorum.

Verilerimi eğitim / test setlerine ayırdım. R'deki rastgele ormanlarla yapılan deneylerden (randomForest paketini kullanarak), daha küçük sınıfım için yüksek yanlış sınıflandırma oranı ile ilgili sorun yaşıyorum. Rasgele ormanların dengesiz veriler üzerindeki performansıyla ilgili bu makaleyi okudum ve yazarlar rasgele ormanları kullanırken sınıf dengesizliği ile başa çıkmak için iki yöntem sundular.

1. Ağırlıklı Rastgele Ormanlar

2. Dengeli Rasgele Ormanlar

R paketi sınıfların ağırlıklandırmasına izin vermez (R yardım forumlarından, classwt parametresinin düzgün performans göstermediğini ve gelecekteki bir hata düzeltmesi olarak programlandığını okudum), bu yüzden seçenek 2 ile kaldım. rastgele ormanın her bir yinelemesi için her sınıftan örneklenen nesne sayısı.

Gelecekteki verilerle kötü performansa yol açan daha büyük sınıf hakkında çok fazla bilgi kaybedeceğimi hissettiğim için, rastgele ormanlar için eşit örnek boyutları ayarlama konusunda tedirgin hissediyorum. Daha büyük sınıfın altörneklenmesi sırasındaki yanlış sınıflandırma oranları geliştiğini gösterdi, ancak rastgele ormanlardaki dengesiz sınıf büyüklükleriyle başa çıkmanın başka yolları olup olmadığını merak ediyordum?


1
Ben de benzer bir sorunla karşı karşıyayım. Varsa Ağırlıklı Rastgele Orman ve Metrik tabanlı rastgele orman için senaryo verebilir misiniz? Cevabınızı dört gözle bekliyoruz

Yanıtlar:


5

Bu seçenekleri beğenmediyseniz, bunun yerine bir yükseltme yöntemi kullanmayı düşündünüz mü? Uygun bir kayıp fonksiyonu göz önüne alındığında, arttırmak ağırlıkları otomatik olarak tekrar ayarlar. Rasgele ormanların stokastik doğası size hitap ediyorsa, stokastik gradyan artırma bunu da yapar.


Merhaba David, öneri için teşekkürler. Rasgele ormanlar içinde / ile birlikte artırmak mümkün olabilir mi? Ayrıca, artırmanın gürültülü verilerle uygulanamayabileceğini okudum. Çalıştığım veriler birçok "gürültülü" değişken içeriyor - Şu anda özellik seçimi olmadan rastgele ormanlar çalıştırıyorum, dengesizlikle başa çıkmak için daha büyük sınıfı küçültüyorum. Kabul edilebilir sonuçlar alıyorum (daha küçük sınıfın% 85'ini ve eğitim setindeki büyük sınıfın% 93'ünü doğru bir şekilde sınıflandırıyorum), ancak iyileştirmeler her zaman beklerim.
ialm

@Jonathan Rastgele ormanlar çeşitli artırma yöntemlerini tamamlamaya başlamadan önce ne kadar gürültü gerektiğine dair iyi bir fikrim yok, ama benim izlenimim çok fazla sürmesi. gbmPaket Rişleyen "ağırlıkları" terimini vardır ve "bag.fraction" terimiyle azaltarak rastgele ormanlar için çok benzer bir şekilde rastgeleliğine artırabilir. Denemeye değer gibi görünüyor.
David J. Harris

@ DavidJ.Harris Boosting, özellikle mutlak nadirlik durumunda, azınlık sınıfları hakkında bilgi seyrek olduğunda sınıf dengesizliği çekmektedir
Antoine

2

Ağırlık nesnelerinin bir şekilde onları kopyalamakla eşdeğer olduğunu düşünüyorum. Belki de farklı sınıflarınızı uygun şekilde örnekleyerek bootstrap adımını değiştirmeyi denemelisiniz.

0.5


0

Büyük sınıfları örneklemek yerine küçük sınıfları genişletebilirsiniz! Büyük sınıflar küçükten çok daha fazla gözlem yaparsa, biase küçük olacaktır. Umarım bu büyük veri setini halledebilirsiniz.

Ayrıca, büyük sınıflar hakkında en fazla bilgiyi ele alan gözlem alt kümelerini de tanımlayabilirsiniz, birçok olası prosedür vardır, bence en basit komşu yöntemine dayanmaktadır - mahalle grafik yapısına dayalı gözlem örneklemesi, numunenin olasılık yoğunluğuna daha benzer olacağını garanti eder Asıl olan.

randomForest Fortran ve c ile yazılmıştır, kaynak kodu mevcuttur (http://cran.r-project.org/src/contrib/randomForest_4.6-2.tar.gz) ama entropinin hesaplandığı yeri bulamıyorum, ps. rastgele ormanların entropi yerine Gini kullandıkları


Daha büyük sınıftaki gözlem alt kümelerini tanımlamak ilginç bir fikir gibi görünüyor. Projenin ikinci kısmı aslında daha büyük sınıfı gelecekteki çalışmalar için yararlı olabilecek daha küçük, kullanışlı alt gruplara ayırmaktır. Koddaki entropi hesaplamalarına gelince, aslında kodun içine girmedim ve sadece rf'nin arkasındaki teoriye baktım, bu yüzden bu konuda yorum yapamam.
ialm

Bu kodu uzun zaman önce değiştirmek istedim, ancak bunun için zaman yoktu, ağırlıklar eklemek kavramsal olarak zor olurdu.
Qbik

R'deki rastgele orman regresyon aracı olarak kullanılabilir, belki de denetimsiz sınıflandırma için yararlıdır. Uzun zaman önce randomForest kodunu değiştirmek istedim, ancak bunun için zaman yoktu, ağırlıklar eklemek kavramsal olarak zor olurdu. Zaman önce denetimsiz kümelenme için rastgele ormanı nasıl kullanacağımı merak ediyordum ve bir fikrim var ama test etmedim, talihsiz bir şekilde oldukça karmaşık bir şekilde talep ediyor - numerofobservations ^ 2.
Qbik

0

(1) Haklısın, ağırlıklandırma fonksiyonu çalışmıyor ve düzeltilip düzeltilmediğinden emin değilsiniz.

(2) Çoğu, dengeli verilerle 2. seçeneği kullanır. Çok fazla veri kaybetmemenin anahtarı katmanlı örneklemedir. Her ağaç için rastgele bir dengeli küme örneklersiniz.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.