Python'da Tamamlayıcı Naif Bayes mi uygulanıyor?


9

Sorun

Suç verileri etiketli bir veri kümesi üzerinde Naive bayes kullanmayı denedim ama gerçekten kötü sonuçlar (% 7 doğruluk) var. Naive Bayes kullandığım diğer alogoritmalardan çok daha hızlı çalışıyor, bu yüzden skorun neden bu kadar düşük olduğunu bulmak istedim.

Araştırma

Okuduktan sonra daha yüksek frekanslı sınıflar için bir önyargıya sahip olduğu için Naif bayların dengeli veri kümeleriyle kullanılması gerektiğini buldum. Verilerim dengesiz olduğundan, özellikle veri eğrileriyle uğraşmak için yapıldığı için Tamamlayıcı Naif Bayes'i kullanmayı denemek istedim. Süreci açıklayan makalede, uygulama metin sınıflandırması içindir, ancak tekniğin diğer durumlarda neden işe yaramadığını anlamıyorum. Bahsettiğim kağıdı burada bulabilirsiniz . Kısacası fikir, bir sınıfın görünmediği olaylara dayalı olarak ağırlıkları kullanmaktır.

Biraz araştırma yaptıktan sonra Java'da bir uygulama bulabildim ama ne yazık ki Java bilmiyorum ve algoritmayı kendimi uygulayacak kadar iyi anlamıyorum.

Soru

python'da bir uygulamayı nerede bulabilirim? Eğer bu yoksa, kendim uygulamaya nasıl devam etmeliyim?

Yanıtlar:


5

Naif Bayes, dengesiz veri kümelerini işleyebilmelidir. Bayes formülünün

P(yx)=P(xy)P(y)P(x)P(xy)P(y)

Dolayısıyla önceki yi dikkate alır.P(xy)P(y)P(y)

Sizin durumunuzda belki fazla giyiyorsunuz ve biraz düzeltmeye mi ihtiyacınız var? +1 yumuşatma ile başlayabilir ve herhangi bir iyileştirme sağlayıp sağlamadığını görebilirsiniz. Python, numpy kullanırken, düzgünleştirmeyi şu şekilde uygularım:

table = # counts for each feature 
PT = (table + 1) / (table + 1).sum(axis=1, keepdims=1)

Bunun size sadece kategorik veriler için geçerli olan Multinomial Naive Bayes verdiğini unutmayın.

Ayrıca aşağıdaki bağlantıyı önerebilirim: http://www.itshared.org/2015/03/naive-bayes-on-apache-flink.html . Naive Bayes'i Apache Flink'te uygulamakla ilgili. Java olsa da, belki de size algoritmayı daha iyi anlamanız gereken bazı teoriler verecektir.


Saf Bayes sadece metin sınıflandırma dengesizlik sorunu var gibi görünüyor olabilir. Yumuşatmanın ne olduğunu açıklayabilir misiniz?
çekirge

Bağlantıya bir göz attınız mı? Orada açıklandı. Kısacası, tahmin edilirken bazen antrenman ve yumuşatma sırasında asla görülmez, tüm özelliklere ekstra bir sayım (laplace veya +1 yumuşatma durumunda) ekleyerek sınıflandırıcı performansını bozmamasını sağlar . P(xy)x
Alexey Grigorev

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.