Artan özellik sayısı doğruluk düşüşüne neden olur, ancak ön / geri çağırma artar


15

Makine Öğreniminde yeniyim. Şu anda 3 sınıftaki küçük metinleri NLTK ve python kullanarak pozitif, negatif veya nötr olarak sınıflandırmak için Naive Bayes (NB) sınıflandırıcısı kullanıyorum.

Bazı testler yaptıktan sonra, 300.000 örnekten oluşan bir veri kümesiyle (16.924 pozitif 7.477 negatif ve 275.599 nötr), özellik sayısını artırdığımda doğruluk azalır, ancak pozitif ve negatif sınıflar için hassasiyet / hatırlama artar. Bu bir NB sınıflandırıcı için normal bir davranış mı? Daha fazla özellik kullanmanın daha iyi olacağını söyleyebilir miyiz?

Birkaç veri:

Features: 50    
Accuracy: 0.88199
F_Measure Class Neutral 0.938299
F_Measure Class Positive 0.195742
F_Measure Class Negative 0.065596

Features: 500   
Accuracy: 0.822573
F_Measure Class Neutral 0.904684
F_Measure Class Positive 0.223353
F_Measure Class Negative 0.134942

Şimdiden teşekkürler...

Düzenle 2011/11/26

Naive Bayes sınıflandırıcısıyla 3 farklı özellik seçim stratejisini (MAXFREQ, FREQENT, MAXINFOGAIN) test ettim. İlk önce Doğruluk ve sınıf başına F1 Önlemleri:

resim açıklamasını buraya girin

Sonra ilk 100 ve ilk 1000 özellik ile MAXINFOGAIN kullanırken tren hatasını ve test hatasını artımlı bir eğitim seti ile çizdim:

resim açıklamasını buraya girin

Bana öyle geliyor ki FREQENT ile en yüksek doğruluk elde edilse de, en iyi sınıflandırıcı MAXINFOGAIN kullanan olan, doğru mu? En iyi 100 özelliği kullanırken önyargı var (test hatası tren hatasına yakın) ve daha fazla eğitim örneği eklemek yardımcı olmayacak. Bunu geliştirmek için daha fazla özelliğe ihtiyacımız olacak. 1000 özellik ile önyargı azalır ancak hata artar ... Bu doğru mu? Daha fazla özellik eklemem gerekir mi? Bunu nasıl yorumlayacağımı gerçekten bilmiyorum ...

Tekrar teşekkürler...


1
"En iyi sınıflandırıcı" ile ne demek istediğinize bağlıdır, eğer göreviniz genel olarak iyi doğrulukta bir sınıflandırıcı oluşturuyorsa, FREKENT'i seçerdim. Öte yandan, nadir sınıf sınıflandırma görevlerinin çoğunda olduğu gibi, nadir sınıfları daha iyi sınıflandırmak istiyorsanız (bu "negatif" veya "pozitif" sınıf olabilir) MAXINFOGAIN'i seçerdim. Öğrenme eğrileri yorumunuzun doğru olduğunu düşünüyorum: 100 özellik ile önyargınız var ve bunları ekleyebilirsiniz, 1000 ile varyansınız var ve bunları kaldırabilirsiniz. Belki daha iyi sonuçlar almak için 100 ve 1000 özellik arasında bir denemeyi deneyebilirsiniz.
Simone

Yardımınız için teşekkürler Simone! Son kısım hariç her şeyi anladım ... Lütfen 1000 özelliklerle yüksek varyansı nasıl gördüğünüzü söyler misiniz? Test ve tren hataları arasındaki fark o kadar görünmüyor çünkü hala bana karşı önyargı gibi görünüyor ...
kanzen_master

Cevabıma bazı örnekler koydum. Eğriler bu kadar yakın olmadığında sorun yüksek varyans olarak sınıflandırılır . Sizin durumunuzda, belki size söyledim çünkü daha az özellik ile daha iyi performans elde edersiniz ve bu nedenle 1000 özellik ile yüksek sapma problemi olabilir. Özellik seçim algoritmalarının sonuçlarını eğitim setinde hesaplanan ölçümlerle çizmek yerine, verilerinizi eğitim (2/3 tanesi) ve doğrulamada bölmeye çalışın, ardından eğitim setinde özellik seçimini yapın ve test setinde değerlendirin . Parselin ortasında bir maksimum bulmalısınız.
Simone

Cevabınız için teşekkürler. Güncellenmiş yazınızın 3. örneği (iyi sonuç, tren, test hata eğrileri ne çok uzakta ne de çok uzak değil) 1000 özellik kullanarak çizdiğim öğrenme eğrisine benziyor, bu yüzden yaklaşık 1000 özellik kullanmanın "iyi bir sonuç" olacağını düşündüm. Ancak, bu durumda hata daha yüksektir, ki bu iyi değildir. Ancak, sadece eğriler arasındaki mesafeye baktığımda, 1000 özellik ile yüksek sapma göremiyorum ... (Bu arada, zaten veri seti olarak 2/3, test seti olarak 1/3, performans özelliği olarak bölüyorum eğitim seti seçimi ve test seti üzerinde değerlendirme ...)
kanzen_master

1
TAMAM. Eğrileri öğrenmede oldukça yeniyim ve örnekleriniz gerçekten ilginçti ve bunlar hakkında bilgi edinmemi sağladı. Bu nedenle, D T. teşekkürler Evet, her iki durumda da önyargı olabilir. Bana göre, çok çarpık bir veri kümeniz var ve test doğruluğu yerine F ölçüsüne bakmak önemlidir. Arsalarınıza bir göz attığınızda, ne kadar çok özelliğe sahip olursanız o kadar iyidir; aslında, F-ölçüsü iyileşir. Metin sınıflandırmasında, eğer metninizdeki sözcük sıklığı ise, çok fazla özellik kullanmak yaygındır; btw Buna alışık değilim ve size daha fazlasını söyleyemem.
Simone

Yanıtlar:


18

Doğruluk ve F ölçüsü karşılaştırması

Her şeyden önce, bir metrik kullandığınızda nasıl oynayacağınızı bilmelisiniz. Doğruluk, tüm sınıflardaki doğru sınıflandırılmış örneklerin oranını ölçer. Bunun anlamı, eğer bir sınıf diğerinden daha sık meydana gelirse, sonuçta ortaya çıkan doğruluk, egemen sınıfın doğruluğuna açıkça hakimdir. Sizin durumunuzda, her örnek için sadece "nötr" olan bir Model M oluşturursanız, elde edilen doğruluk

bircc=neutrbirl(neutrbirl+pÖsbentbenve+negbirtbenve)=0,9188

İyi, ama işe yaramaz.

Bu nedenle özelliklerin eklenmesi, NB'nin sınıfları ayırt etme gücünü açıkça geliştirdi, ancak "pozitif" ve "negatif" tahmin ederek kişi nötrleri yanlış sınıflandırıyor ve dolayısıyla doğruluk azalıyor (kabaca konuşuluyor). Bu davranış NB'den bağımsızdır.

Daha fazla veya daha az özellik?

Genel olarak daha fazla özellik kullanmak daha doğru değil, doğru özellikleri kullanmak daha iyidir. Daha fazla özellik, bir özellik seçim algoritmasının en uygun alt kümeyi bulmak için daha fazla seçeneğe sahip olması açısından daha iyidir (araştırmayı öneririm: çapraz doğrulanmış özellik seçimi ). NB söz konusu olduğunda, hızlı ve sağlam (ancak optimalden daha az) bir yaklaşım, özellikleri azalan sırada sıralamak ve üst k'yi seçmek için InformationGain (Oran) kullanmaktır.

Yine, bu tavsiye (InformationGain hariç) sınıflandırma algoritmasından bağımsızdır.

DÜZENLEME 27.11.11

Doğru sayıda özellik seçmek için önyargı ve sapma konusunda çok fazla kafa karışıklığı olmuştur. Bu yüzden, bu eğitimin ilk sayfalarını okumanızı tavsiye ederim: Önyargı-Varyans tradeoff . Temel öz:

  • Yüksek Eğilim , modelin optimalden daha az olduğu, yani test hatasının yüksek olduğu (Simone'un koyduğu gibi uygun olmayan) anlamına gelir
  • Yüksek Varyans , modelin modeli oluşturmak için kullanılan örneğe çok duyarlı olduğu anlamına gelir . Bu, hatanın büyük ölçüde kullanılan eğitim setine bağlı olduğu ve dolayısıyla hatanın varyansı (farklı çapraz validasyon katlarında değerlendirilen) son derece farklı olacağı anlamına gelir. (aşırı uyum gösterme)

Çizilen öğrenme eğrileri, hata çizildiği için gerçekten de Sapma'yı gösterir. Ancak, göremediğiniz şey Varyanstır, çünkü hatanın güven aralığı hiç çizilmez.

Örnek: 3 kez Çapraz Doğrulama gerçekleştirirken (evet, farklı veri bölümleme ile tekrarlama önerilir, Kohavi 6 tekrarlama önerir), 18 değer elde edersiniz. Şimdi ...

  • Az sayıda özellik ile ortalama hata (sapma) daha düşük olur, ancak hatanın varyansı (18 değerin) daha yüksek olacaktır.
  • çok sayıda özellik ile, ortalama hata (sapma) daha yüksek olacaktır, ancak hatanın varyansı (18 değerin) daha düşük olacaktır.

Hatanın / yanlılığın bu davranışı, grafiklerinizde gördüğümüz şeydir. Varyans hakkında bir açıklama yapamayız. Eğrilerin birbirine yakın olması, test setinin eğitim seti ile aynı özellikleri gösterecek kadar büyük olduğunun ve dolayısıyla ölçülen hatanın güvenilir olabileceğinin bir göstergesi olabilir, ancak bu (en azından anladığım kadarıyla) ()) varyansı hakkında bir açıklama yapmak için yeterli değildir (hatanın!).

Daha fazla eğitim örneği eklerken (test setinin boyutunu sabit tutarak), her iki yaklaşımın (küçük ve yüksek özellik sayısı) varyansının azalmasını beklerim.

Oh, ve sadece eğitim örneğindeki verileri kullanarak özellik seçimi için infogain hesaplamayı unutmayın ! Bunlardan biri, özellik seçimi için tüm verileri kullanması ve ardından veri bölümlemesi yapması ve çapraz doğrulamayı uygulaması için caziptir, ancak bu aşırı sığmaya yol açacaktır. Ne yaptığını bilmiyorum, bu sadece unutulmaması gereken bir uyarı.


1
Cevabınız için çok teşekkür ederim, çok açık bir açıklama. Özellik seçim stratejim olarak maksimum bilgi kazancı kullanıyorum ve 5 kat çapraz doğrulama kullanarak test yapıyorum. Hangi en iyi k özelliklerini almam gerektiğini bilmek için her seferinde özellik sayısını artıran algoritmayı tekrar tekrar test etmem ve en yüksek f_score veren k'yi almam gerektiğini tahmin ediyorum. Ancak, sanırım "top k" veri kümesine bağlı olarak değişecektir ... değil mi?
kanzen_master

1
Doğru. Ancak yeni veri kümesi eskisine benziyorsa (aynı dağılımlarla aynı özellikler) k aynı kalır. Olası çözümlerin alanını daha hızlı aramak için genetik bir algoritma ekleyebilir veya (daha iyi), InformationGain'den bağımsız olarak optimum özellik alt kümesini bulmak için genetik bir algoritma kullanabilirsiniz ...
steffen

1
Stanford'un derslerine göre, eğitim örneklerini değiştiren iyi ayrılmış eğitim ve test eğrileri görüyorsanız, aslında varyans olduğu anlamına gelir. Elbette güven aralıklarını tahmin etmek daha iyi bir yaklaşım olacaktır.
Simone

1
@DT 1. Dersi bilmiyorum, bu yüzden Andrewg'ın açıklamasını benimkine bağlayamıyorum, üzgünüm. 2. Hayır. Az sayıda özellik => fazla takma => düşük sapma, yüksek sapma. Çok sayıda özellik => yetersiz takma => yüksek sapma, düşük sapma. Gerçekten, farklı sayıda özellik ve eğitim örneği için cv-fold hatalarının varyansını çizmenizi öneririm.
steffen

2
1. steffen, ders burada mevcuttur: ml-class.org/course/video/preview_list (Bölüm X, Bölüm "Öğrenme Eğrileri") 2. Anlıyorum. Eğitim sırasında öğrenilen birçok özellik => model karmaşıklaştığında ve eğitim setini aştığında => Varyans ...
kanzen_master

5

Daha fazla özellik kullanmanın faydalı olup olmadığını bilmek için öğrenme eğrilerini çizerdim. Bence bu, burada bulabileceğiniz “Makine öğrenimi uygulamak için tavsiyede bulun” adlı Stanford'un Makine Öğrenimi dersinin 10. Biriminde açıkça açıklanmıştır: http://www.ml-class.org/course/video/preview_list .

Probleminizin yüksek sapma veya yüksek sapma olup olmadığını anlayabileceğiniz öğrenme eğrilerini çizmek. Egzersiz örneği sayısını artırdığınız sürece egzersiz hatasını ve test hatasını (örn. 1 doğruluk) çizmelisiniz, ikincisi sınıflandırıcınızın farklı bir veri kümesinde tahmin edilen hatasıdır. Bu eğriler birbirine yakınsa yüksek bir yanlılık probleminiz vardır ve muhtemelen daha fazla özellik eklemek yararlı olacaktır. Öte yandan, antrenman örneği sayısını artırdığınız sürece eğrileriniz oldukça ayrılırsa, yüksek bir sapma probleminiz vardır. Bu durumda kullandığınız özelliklerin sayısını azaltmalısınız.

Düzenle

Bazı öğrenme eğrileri örnekleri ekleyeceğim. Bunlar düzenli bir lojistik regresyon ile elde edilen öğrenme eğrileridir. Farklı arsalar farklıλ

λ aşırı uyum sağladık, bu nedenle yüksek varyans var .

Yüksek varyans

λ ile, böylece yüksek önyargı .

Yüksek yanlılık

λ=1

İyi sonuç


Harika! Çok teşekkür ederim! Her iki cevap da gerçekten yardımcı olduğundan, her ikisini de yanıt olarak işaretleyemediğimden, ilkini cevap olarak işaretleyeceğim. Ama bu kesinlikle kontrol etmenin en iyi yolu, sanırım.
kanzen_master

Bu arada, Maksimum Bilgi Kazancı puanı ile ilk 100 özelliğini kullanan bir sınıflandırıcının öğrenme eğrisini çizmeye çalışıyorum. Egzersiz veri seti boyutunu arttırırken egzersiz hatasını ve test hatasını çizmek istiyorum. İlk tren veri setinin (kademeli olarak artırılacak) ve test veri setinin (tüm testler için statik) boyutları neler olmalıdır? Tekrar teşekkürler ...
kanzen_master

2
Veri setinizi bir eğitim setine ve bir test setine ayırın. Çok az eğitim kaydından başlayın ve ardından kayıt eklemeye devam edin. Her yineleme için egzersiz seti hatasını sınıflandırıcıyı eğitmek için kullandığınız kayıtlarla hesaplayın ve ardından test seti hatasını her zaman tüm test kayıtları ile hesaplayın. Bunun yaygın uygulamada kullanılan standart bir yöntem olduğunu biliyorum. Sonuçlarınızı görmek ilginç olurdu! Şerefe Simone.
Simone

1
Simone, ilk gönderiyi bazı doğruluk, f1 ölçüleri ve öğrenme eğrileri sonuçlarıyla güncelledim ve alttaki yorumum, lütfen kontrol edebilir misiniz? Thanks ...
kanzen_master
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.