Soru:
Sınıflandırma için değişken seçimi ve farklı sınıflandırma teknikleri hakkında sorular
ialm
2011-05-10 22:29:15 UTC
view on stackexchange narkive permalink

Özellik seçimi ve sınıflandırmasıyla ilgili bir sorum var. R. ile çalışacağım. Veri madenciliği tekniklerine çok aşina olmadığımı söyleyerek başlamalıyım, çok değişkenli analiz üzerine bir lisans dersi tarafından sağlanan kısa bir bakış dışında, bu yüzden sorumla ilgili ayrıntılarda eksiksem beni affet. Sorunumu tanımlamak için elimden gelenin en iyisini yapacağım.

İlk olarak, biraz projem hakkında: Bir görüntü sitometri projesi üzerinde çalışıyorum ve veri kümesi, hücresel çekirdeklerin histolojik görüntülerinin 100'den fazla nicel özelliğinden oluşuyor . Tüm değişkenler, boyut, DNA miktarı, vb. Gibi çekirdeğin özelliklerini tanımlayan sürekli değişkenlerdir. Şu anda bu hücresel görüntüleri elde etmek için manuel bir işlem ve otomatik bir süreç vardır. Manuel işlem (çok) yavaştır, ancak bir teknisyen tarafından yapılır ve yalnızca daha fazla analiz için kullanılabilen görüntüler verir. Otomatik işlem çok hızlıdır, ancak çok fazla kullanılamaz görüntü ortaya çıkarır - görüntülerin yalnızca yaklaşık% 5'i daha fazla analiz için uygundur ve örnek başına binlerce nükleer görüntü vardır. Görünüşe göre, otomatik süreçten elde edilen verileri temizlemek, manuel işlemden daha fazla zaman alıyor.

Amacım, iyi nesneler ile kötü nesneler arasında ayrım yapmak için R kullanarak bir sınıflandırma yöntemi eğitmek. otomatik işlemden elde edilen verilerden. Otomatik süreçten elde edilmiş halihazırda sınıflandırılmış bir eğitim setim var. 150.000 satırdan oluşur ve bunların ~% 5'i iyi nesneler ve ~% 95'i kötü nesnelerdir.

İlk sorum özellik seçimiyle ilgilidir. 100'den fazla sürekli açıklayıcı özellik var ve sınıflandırmaya yardımcı olmak için (umarım) gürültü değişkenlerinden kurtulmak istiyorum. Sınıflandırmayı iyileştirmek amacıyla boyut azaltma için hangi yöntemler var? Değişken azaltma ihtiyacının kullanılan sınıflandırma tekniğine bağlı olarak değişebileceğini anlıyorum.

Bu da ikinci soruma götürüyor. Farklı sınıflandırma teknikleri hakkında bir şeyler okudum, ancak problemime en uygun yöntemi yeterince belirleyemeyeceğimi hissediyorum. Temel endişelerim, iyi nesnelerin kötü nesnelere göre düşük bir yanlış sınıflandırma oranına sahip olması ve iyi nesnelerin önceki olasılığının, kötü nesnelerin önceki olasılığından çok daha düşük olması gerçeğidir. İyi olarak sınıflandırılan kötü bir nesneye sahip olmak, kötü nesneler havuzundan iyi bir nesneyi kurtarmaktan daha az güçlüktür, ancak çok fazla kötü nesne iyi olarak sınıflandırılmasaydı iyi olurdu.

Bende var. bu gönderiyi okuyun ve şu anda chl'nin cevabına göre Rastgele Ormanlar'ı düşünüyorum. Diğer yöntemleri de araştırmak istiyorum ve buradaki iyi insanların önerilerini CV'de toplamak istiyorum. Ayrıca, sınıflandırma konusunda yardımcı olabilecek her türlü okumayı ve R paketlerinin kullanılması için önerileri memnuniyetle karşılıyorum.

Gönderimde ayrıntılar yoksa lütfen daha fazla ayrıntı isteyin.

Söylemeyi unuttum, şu anda R'deki şapka paketini araştırıyorum.
@veol imleci, kullanışlı bulabileceğiniz rfe adında bir özellik seçme yordamına sahiptir. Burada daha fazlasını okuyabilirsiniz, ancak bunu yerleşik özellik seçimi olan algoritmalarda (glmnet gibi) kullanmamaya dikkat edin. http://cran.r-project.org/web/packages/caret/vignettes/caretSelection.pdf
Bu sorunu keşfetmek için çok bütçeniz var mı? Veri kümeniz herkese açık olarak paylaşabileceğiniz bir veri kümesi mi?
@Zach Bağlantı için teşekkürler. İkinci yoruma gelince, aslında bu proje üzerinde çalışmak için işe alındım (üniversite kooperatif öğrencisiyim), bu yüzden bu sorun üzerinde çalışmak için bolca vaktim var. Veri kümesine gelince, onu paylaşmama izin verilmiyor, ancak verileri okumak isterseniz veriler üzerinde yaptığımız analiz türüyle ilgili kamuya açık olan bazı makalelere bağlantı verebilirim.
@veol Oh, anlıyorum. O halde sizin için iyi bir öğrenme deneyimi olmalı. İlginç bir analiz gibi geldi, makalelerden birini görmeyi çok isterim.
@Zach Okumam için bana verilen makalelerin ücretsiz versiyonlarını maalesef bulamadım. İşte hücrelerin görüntülenmesi ve sayısal özelliklerin hesaplanmasıyla ilgili bir makale, uğraştığım veri türüne yakın: [Link] (http://www.ncbi.nlm.nih.gov/pubmed/8570289) .
Iki yanıtlar:
#1
+14
Dikran Marsupial
2011-05-10 23:04:25 UTC
view on stackexchange narkive permalink

Özellik seçimi, modern sınıflandırıcı sistemlerin performansını mutlaka iyileştirmez ve çoğu zaman performansı kötüleştirir. Hangi özelliklerin en önemli olduğunu bulmak analizin bir amacı olmadığı sürece, aşırı uydurmayı önlemek için normalleştirmeyi denememek ve kullanmak genellikle daha iyidir (örneğin, çapraz doğrulama yoluyla düzenleme parametrelerini seçin).

Özellik seçiminin zor olmasının nedeni, kriterin sonlu bir veri örneğine bağlı olduğu birçok serbestlik derecesine sahip (esasen özellik başına bir) bir optimizasyon problemi içermesidir. Bu, özellik seçim kriterini gereğinden fazla sığdırabileceğiniz ve bu belirli veri örneği için iyi çalışan, ancak başkaları için işe yaramayan (yani, zayıf şekilde genelleştiren) bir dizi özelliğe sahip olabileceğiniz anlamına gelir. Öte yandan, düzenleyici, sınırlı bir veri örneğine dayalı bir kriteri optimize ederken, daha az serbestlik derecesi (tipik olarak bir) içerir, bu da ölçütü aşırı uydurmanın daha zor olduğu anlamına gelir.

Öyle görünüyor Bana göre, "özellik seçimi daha iyi performans sağlıyor" fikri, tarihe kadar satışını geride bıraktı. Basit doğrusal düzensiz sınıflandırıcılar için (örneğin lojistik regresyon), modelin karmaşıklığı (VC boyutu) özelliklerin sayısı ile birlikte büyür. Düzenli hale getirdiğinizde, modelin karmaşıklığı, parametrelerin sayısından ziyade düzenlileştirme parametresinin değerine bağlıdır. Bu, düzenlenmiş sınıflandırıcıların çok yüksek boyutlu alanlarda bile aşırı uydurmaya (düzenleme parametresini doğru şekilde ayarlamanız koşuluyla) dirençli olduğu anlamına gelir. Aslında, destek vektör makinesinin neden çalıştığının temeli budur, verileri yüksek (muhtemelen sonsuz) boyutlu bir alana dönüştürmek için bir çekirdek kullanın ve ardından modelin karmaşıklığını kontrol etmek ve dolayısıyla aşırı uydurmayı önlemek için normalleştirmeyi kullanın.

Hangisi olduğunu söyledikten sonra, bedava öğle yemeği yok; Sorununuz, özellik seçiminin iyi çalıştığı bir yer olabilir ve öğrenmenin tek yolu onu denemektir. Ancak, ne yaparsanız yapın, tarafsız bir performans tahmini elde etmek için iç içe geçmiş çapraz doğrulama gibi bir şey kullandığınızdan emin olun. Dış çapraz doğrulama, performans değerlendirmesi için kullanılır, ancak her katmanda, modeli uydurmada (özellik seçimi dahil) her adımı bağımsız olarak tekrarlayın. Yaygın bir hata, tüm verileri kullanarak özellik seçimi yapmak ve ardından tanımlanan özellikleri kullanarak performansı tahmin etmek için çapraz doğrulama yapmaktır. Bunun neden yapılacak doğru şey olmadığı aşikar olmalı, ancak doğru yaklaşım hesaplama açısından pahalı olduğu için pek çok kişi bunu yaptı.

Benim önerim SVM'leri veya çekirdek lojistik regresyonunu veya LS-SVM'yi vb. çeşitli çekirdeklerle, ancak özellik seçimi yok. Hiçbir şey değilse, size anlamlı bir temel sağlayacaktır.

Detaylı cevabınız için teşekkür ederiz. Destek vektör makinelerine aşina değilim, ancak denemeye hevesliyim. Wikipedia'da hızlı bir okumadan sonra, verilerimin rastgele bir alt kümesinde R'deki varsayılan ayarlarla doğrusal SVM'yi deniyorum (tüm veri kümesiyle biraz zaman alıyordu). SVM'leri tanımam için iyi makaleler veya okumalar önerir misiniz?
@veol Doğrusal bir SVM, başlamak için iyi bir yerdir, ancak yalnızca varsayılan ayarları kullanmakla kalmayın, bir SVM'den iyi performans elde etmenin anahtarı, iyi bir çekirdek seçmede ve hiper parametreleri (düzenleme parametresi ve herhangi bir çekirdek parametreleri). Bu, çapraz doğrulama hatasını veya genelleme performansındaki bir sınırı en aza indirerek yapılabilir (örneğin, "yarıçap marjı" veya "aralık" sınırları. R kullanmıyorum, ancak herhangi bir düzgün SVM paketi bu prosedürü gradyan iniş yoluyla otomatikleştirmelidir veya ızgara araması.
@veol Bilgi kaynaklarının yanı sıra SVM'ler (Boser Guyon ve Vapnik ve Cortes ve Vapnik) hakkındaki iki önemli makale ile ilgili olarak, Scholkopf ve Smola'nın "çekirdeklerle öğrenme" gibi bu tür şeyleri kapsayan birçok iyi ders kitabı vardır. Shawe-Taylor ve Christianini'nin "örüntü tanıma için çekirdek yöntemleri" veya Bishop'tan "örüntü tanıma ve makine öğrenimi". Projende iyi şanslar!
(+1) temellerin güzel açıklaması. Yine favorilerime bir cevap eklemek istediğim bir an (tüm soru yerine).
Harika cevap için teşekkürler, çok şey öğrendim. R'de çekirdek lojistik regresyonunu nasıl yaparım?
#2
+6
richiemorrisroe
2011-05-10 23:04:58 UTC
view on stackexchange narkive permalink

Boyut azaltma konusunda, iyi bir ilk seçenek temel bileşenler analizi olabilir.

Bunun dışında, ekleyeceğim çok şey yok, eğer varsa veri madenciliğine ilgi duyuyorsanız, istatistiksel öğrenmenin unsurlarını okumanızı şiddetle tavsiye ederim. Hem titiz hem de net ve bitirmemiş olsam da, muhtemelen sorununuza yaklaşmanın doğru yolu hakkında size çok fazla fikir verecektir. 4. Bölüm, doğrusal sınıflandırıcılar başlamanıza neredeyse kesinlikle yeterli olacaktır.

Ne yazık ki, verilerin boyutluluğunu azaltmaya çalıştığım ilk şey PCA oldu. Anlamlı sonuçlar sağlamadı ve gelecekteki verilere değil, yalnızca eğitim setine uygulanabilecek dönüşümler yaratma konusunda dikkatli olmam söylendi. Kitap tavsiyesi için teşekkür ederim - LDA'ya aşina olmama rağmen, faydalı olabilecek başka yöntemler de var. Binamda veya üniversite kütüphanesinde bir nüsha var mı bakacağım.
Yardımcı olursa, yukarıdaki bağlantıdan indirilebilecek bir PDF kopyası var.
Ah, bunu fark etmemiştim. Doğruca içindekiler bölümüne gittim. Bunu okumak, başlamak için iyi bir yer gibi geliyor.


Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...