2010-07-11 20 views
7

"0" sınıfına (yaklaşık 30000 vs 1500) doğru büyük bir eğriliğe sahip bir ikili sınıf veri kümem var (0/1). Her bir örnek için 7 özellik vardır, eksik değerler yoktur.Weka ağaç sınıflandırıcılarına bilerek nasıl yüklenir?

J48 veya başka bir ağaç sınıflandırıcısı kullandığımda, "0" olarak sınıflandırılan "1" örneklerinin neredeyse tümünü alırım. Tüm bu yardım etmedi - 1 olarak yaprak başına örneklerinin minimum sayıda ayar 1 olarak güven faktörünü ayarlayarak, örnek kimliği numarası ile bir kukla özellik ekleyerek, için "unpruned" sınıflandırıcı ayarlanması

.

Ben sadece veri overfits bir model oluşturmak olamaz!

Ayrıca Weka'nın sağladığı diğer tüm sınıflandırıcıları denedim, ancak benzer sonuçlar elde ettim.

IB1 kullanımı% 100 doğrulukta (tren setinde tren seti), aynı özellik değerlerine ve farklı sınıflara sahip birden çok örnek sorun yaratmaz.

nasıl tamamen unpruned ağacı oluşturabilir? Ya da Weka'yı verilerimi aşırıya zorlamak için mi zorluyorsunuz?

Teşekkürler.

Güncelleme: Tamam, bu çok saçma. Ben sadece yaklaşık 3100 negatif ve 1200 olumlu örnekler kullandım ve bu aldığım ağaçtır (unpruned!):

J48 unpruned tree 
------------------ 

F <= 0.90747: 1 (201.0/54.0) 
F > 0.90747: 0 (4153.0/1062.0) 

Söylemeye gerek yok, IB 1 hala% 100 hassasiyet vermektedir.

Güncelleme 2: Bunu nasıl özlediğimi bilmiyorum - benzersiz SimpleCart çalışır ve trende% 100 doğrulukta tren verir; budanmış SimpleCart J48 kadar önyargılı değildir ve iyi bir yanlış pozitif ve negatif orana sahiptir.

+0

olası ilgili soru (daha doğrusu büyük olasılıkla sınıfa yerine): http://stackoverflow.com/

sonuç için algoritma sonra çalışacaktı olmasıdır sorular/2519997/farklı-ağırlıkları-yanlış-pozitif-ve-yanlış-negatif-içinde-nöral-ağ – Amro

cevap

2

Hızlı ve kirli çözüm yeniden örneklemektir. Pozitif örneklerin 1500'ünü atın ve dengeli bir veri seti üzerinde eğitin. Bunu yapmak için Weka'da bir örnek bileşen olduğundan eminim.

Diğer çözüm, her sınıf için değişken maliyete sahip bir sınıflandırıcı kullanmaktır. Eminim libSVM bunu yapmana izin veriyor ve ben de Weka'nın libSVM'yi değiştirebileceğini biliyorum. Ancak bir süredir Weka kullanmıyorum, bu yüzden burada çok pratik bir yardım olamam.

+0

Teşekkürler. Yeniden örneklemenin işe yarayacağından emin değilim - yaptığım deneylerden, oldukça dengeli bir veri kümesinde bile (her sınıf için 1000 örnek) J48 ve diğer sınıflandırıcılar (SimpleCart hariç) gülünç sonuçlar elde ediyor - ya sınıf için çok yüksek FP ya da FN 0 "veya" 1 "sınıfı için çok yüksek (ve diğer sınıf çoğunlukla doğru olarak sınıflandırılmıştır). Maliyete duyarlı sınıflandırma ile ilgili olarak - bunu tamamen unuttum, yakında inceleyeceğim. Teşekkür ederim! – Haggai

+0

Maliyete duyarlı yaklaşım işe yaradı. Ben hala beklenmedik J48'ün neden antrenman setinde% 100 doğruluk vermeyeceğini veya J48 ile oldukça dengeli bir veri kümesinin neden hala saçma çıktılar verdiğini anlamıyorum. Ama en azından şimdi çalışacak bir şeyim var. Teşekkürler! – Haggai

5

Weka ilgi iki meta sınıflandırıcılarıyla içerir: Onlar yapmanızı sağlar

herhangi algoritma maliyet duyarlı (SVM'e sınırlı değildir) ve belirtmek için maliyet matrisi (çeşitli hataların cezası); 0'u 0'u 1 olarak hatalı olarak sınıflandırmaktan daha fazla 1 örneğini yanlış sınıflandırma için daha yüksek bir ceza verirsiniz.

beklenen Hatalı sınıflandırma maliyetini minimize

+1

Teşekkürler, bu benim kullandığım çözüm. – Haggai