Düşük sınıflandırma doğruluğu, sonra ne yapmalı?


16

Yani, ML alanında bir acemi oldum ve biraz sınıflandırma yapmaya çalışıyorum. Amacım bir spor etkinliğinin sonucunu tahmin etmektir. Bazı tarihsel veriler topladım ve şimdi bir sınıflandırıcı yetiştirmeye çalıştım. Yaklaşık 1200 örnek aldım, bunlardan 0.2 tanesi test amaçlı olarak ayırdım, diğerleri farklı sınıflandırıcılar ile ızgara aramasına (çapraz doğrulama dahil) koydum. Şu ana kadar doğrusal, rbf ve polinom çekirdekleri ve Rastgele Ormanlarla SVM'yi denedim. Ne yazık ki, doğruluk 0,5'ten önemli ölçüde daha büyük olamaz (rasgele sınıf seçimi ile aynı). Bu, bu kadar karmaşık bir olayın sonucunu tahmin edemeyeceğim anlamına mı geliyor? Yoksa en az 0.7-0.8 doğruluk alabilir miyim? Mümkünse, bir sonraki aşamaya ne bakmalıyım?

  • Daha fazla veri almak ister misiniz? (Veri kümesini 5 kata kadar büyütebilirim)
  • Farklı sınıflandırıcılar mı denemek istiyorsunuz? (Lojistik regresyon, kNN, vb.)
  • Özellik kümemi yeniden değerlendirilsin mi? Analiz edilecek ML-araçları var mı, hangi özellikler anlamlı ve hangileri anlamlı değil? Belki, özellik setimi azaltmalıyım (şu anda 12 özelliğim var)?

Egzersiz doğruluğunuz nedir? Ve her sınıfta kaç tane örneğiniz var?
Leo

1
Bu hangi spor ve "doğru" bir sınıflandırmayı düşünüyorsunuz? Hemen hemen her büyük sporda bir kazan / zarar sonucunu tahmin etmeye çalışıyorsanız, en basit sınıflandırıcıların bile 0,5'ten daha iyi tahmin etmemesi neredeyse akıl almaz. Diyelim ki, bir spread veya başka bir özürlü sonuca karşı kazancınızı / kaybınızı tahmin etmeye çalışıyorsanız, 0,5'ten çok daha iyi olabilir.
kardinal

@Leo Egzersiz doğruluğu yaklaşık 0.5. Sınıflar eşit olarak dağıtılır, sınıf 0 ve 1 var.
fspirit

@cardinal Evet, kazanç / kayıp sonucunu tahmin etmeye çalışıyorum, engel yok. Test setinde 0,8 hassasiyete ulaşmak mümkün müdür?
fspirit

1
@fspirit: Bir kere katılımcılar arasındaki spora ve yetenek eşitsizliğine bağlıdır. Her yarışmaya kimlerin katıldığını bilmek çoğu zaman güçlü bir yordayıcı olabilir. Burada ve burada ilgili birkaç mesaj var.
kardinal

Yanıtlar:


17

Her şeyden önce, sınıflandırıcınız rastgele bir seçimden daha iyisini yapmazsa, özellikler ve sınıf arasında herhangi bir bağlantı olmaması riski vardır. Kendinize böyle bir pozisyonda sormak için iyi bir soru, sizin veya bir etki alanı uzmanının verilen özelliklere dayanarak sınıfı (rastgele bir sınıflandırıcıdan daha büyük bir doğrulukla) çıkarabileceği hava durumu. Hayırsa, daha fazla veri satırı almak veya sınıflandırıcıyı değiştirmek yardımcı olmaz. Yapmanız gereken, farklı özellikleri kullanarak daha fazla veri elde etmektir.

Öte yandan, sınıfı çıkarmak için gereken bilgilerin zaten etiketlerde olduğunu düşünüyorsanız, sınıflandırıcıda yüksek sapma veya yüksek sapma sorunu olup olmadığını kontrol etmelisiniz.

Bunu yapmak için, eğitim örneklerinin bir fonksiyonu olarak doğrulama hatasını ve egzersiz seti hatasını grafik olarak çizin.

Çizgiler aynı değere yakınsa ve sonunda yakınsa, sınıflandırıcı yüksek önyargıya sahiptir ve daha fazla veri eklemek yardımcı olmaz. Bu durumda iyi bir fikir, daha yüksek varyansa sahip olan bir tanesinin sınıflandırıcısını değiştirmek veya sadece geçerli olanınızın normalleştirme parametresini düşürmektir.

Öte yandan, çizgiler oldukça uzaksa ve düşük bir eğitim seti hatası ancak yüksek doğrulama hatası varsa, sınıflandırıcı çok yüksek varyansa sahiptir. Bu durumda, daha fazla veri almanın yardımcı olması muhtemeldir. Daha fazla veri aldıktan sonra varyans hala çok yüksekse, normalleştirme parametresini artırabilirsiniz.

Bu sizinki gibi bir sorunla karşılaştığımda kullanacağım genel kurallardır.

Şerefe.


Şunu mu demek istediniz: validation set error ve TEST set error? Aksi takdirde kafam karıştı. Tren seti hatasını bile bilmiyorum, çünkü modeli seçmek için doğrulama seti hatasını kullanıyorum ve test setinde seçilen modeli kontrol ettim.
fspirit

Hayır, yani eğitim setinin yazıldığı yerde hata. Egzersiz hatası, eğitim setindeki eğitim sınıfı boyutuna bölünen yanlış sınıflandırılmış örneklerin sayısıdır. Benzer şekilde test seti hatası, test setindeki eğitim seti boyutuna bölünen yanlış sınıflandırılmış örneklerin sayısıdır. Ayrıca Coursera'nın Makine Öğrenim Sınıfını, ( class.coursera.org/ml-2012-002/lecture/index ), özellikle de "Makine Öğrenmesi uygulamak için tavsiyeler" videolarını kontrol etmek isteyebilirsiniz . Bu tavsiyeler sizin durumunuzla oldukça ilgilidir.
sjm.majewski

İlk kez koştuğunda parkurda yarıştım. Eğitim seti hatasına gelince, şimdi de çıktı verdim, SVM için oldukça yüksek - 0.5, ancak rastgele ormanlar için 0.
fspirit

5

Geri adım atmayı ve sınıflandırma girişiminden önce bazı keşifsel veri analizleri yapmayı öneririm. İlginin sonucu ile herhangi bir ilişki olup olmadığını görmek için özelliklerinizi bireysel olarak incelemeye değer - sahip olduğunuz özelliklerin sınıf etiketleri ile herhangi bir ilişkisi olmayabilir. Sahip olduğunuz özelliklerin işe yarayıp yaramayacağını nasıl anlarsınız?

İlişkileri test etmek için hipotez testi veya korelasyon analizi yapmaya başlayabilirsiniz. Özellikler için sınıfa özgü histogramlar oluşturmak (yani, aynı eksende belirli bir özellik için her sınıf için verilerin histogramlarını çizmek), bir özelliğin iki sınıf arasında iyi ayrımcılık yapıp yapmadığını göstermek için iyi bir yol olabilir.

Keşif analizinizin sonuçlarının sınıflandırma tercihlerinizi etkilemesine izin vermemeniz gerektiğini hatırlamak önemlidir. Aynı veriler üzerinde daha önceki bir keşif analizine dayanarak sınıflandırma için özellikler seçmek, aşırı sığmaya ve taraflı performans tahminlerine yol açabilir ( buradaki tartışmaya bakın ), ancak keşif analizi size en azından yapmaya çalıştığınız görevin bile mümkün.


Histogramları çizmeye ve neye benzeyeceklerini görmeye çalışacağım.
fspirit

@BGreene - üçüncü paragrafınız benim için zor bir paragraf. Keşif analizi, x1 yordayıcısının sonuçla yüksek derecede ilişkili olduğunu gösteriyorsa, eğer biri x1'i çok değişkenli bir modelde en az bir aday yordayıcı olarak kullanmadıysa, bu korelasyonu kontrol etmenin amacını ortadan kaldırmaz mı?
rolando2

@ rolando2 - Özelliği, özellik seçme rutininin bir parçası olarak aday olarak eklememenizi önermiyorum, ancak bu özelliklerin gereğinden fazla kullanılacağı için keşifsel bir analize dayalı özellikler seçmemelisiniz. Bununla birlikte, bir sınıflandırıcı modelin genelleştirilmiş performansını değerlendirmek amacıyla, özellik seçimi model seçim rutini içinde (yani çapraz doğrulamanın her katında) yapılmalıdır.
Önerdiğim

3

Verilerinizi egzersiz verilerine ve test verilerine ayırmanız iyi olur.

Eğitim alırken egzersiz hatası azaldı mı? Değilse, eğitim algoritmanızda bir hata olabilir. Test setinizdeki hatanın egzersiz setinizdeki hatadan daha büyük olmasını beklersiniz, bu nedenle egzersiz setinizde kabul edilemez derecede yüksek bir hatanız varsa başarı umudu azdır.

Özelliklerden kurtulmak, bazı aşırı sığmayı önleyebilir. Ancak, egzersiz setinizdeki hatayı düzeltmemelidir. Egzersiz setinizde düşük bir hata ve test setinizde yüksek bir hata, aşırı esnek bir özellik seti kullanarak fazla taktığınızın bir göstergesi olabilir. Bununla birlikte, test kümenizdekinden daha çapraz doğrulama yoluyla kontrol etmek daha güvenlidir. Test grubunuza göre özellik kümenizi seçtikten sonra, artık test seti olarak geçerli değildir.


Ayrı tren, validasyon ve test setleri kullanıyorum. Doğrulama kümesi hatasına bağlı olarak hiper parametreler seçiyorum ve ardından seçilen modeli test kümesine uyguluyorum. Eğitim algoritmasında bir hata olduğundan şüpheliyim, çünkü hazır lib'i kullanıyorum.
fspirit

50%

"Özellikler korkunç" olasılığına, olası bir çözüm olmadığı durumu da ekliyorum. Ancak bundan çok şüpheliyim. Bir yarışmacının bir rakibin diğerinin favorisi olduğunu görmenin yolları olmadığını bildiğim bir spor yok. Taş-kağıt-makaslarda bile mümkündür.
Douglas Zare

1

Neden "önce verilerin grafiğine bakın" ilkesine uymuyorsunuz. Yapabileceğiniz bir şey, iki ortak değişken için iki sınıf koşullu yoğunlukların 2B dağılım grafiğidir. Bunlara bakarsanız ve tahmin edilebilirlik eksikliğini gösterebilecek hiçbir ayrım görmezseniz ve bunu tüm ortak değişkenlerle yapabilirsiniz. Bu, bu değişkenleri tahmin etmek için kullanma yeteneği hakkında bazı fikirler verir. Bu değişkenlerin biraz ayrılabileceğine dair bir umut görürseniz, doğrusal ayrımcılar, ikinci dereceden ayrımcılar, çekirdek ayrımcılığı, düzenlileştirme, ağaç sınıflandırması, SVM vb.


Üzgünüz, um, değişken == özellik mi?
fspirit
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.