Naif Bayes'i Anlamak


47

Gönderen StatSoft, Inc. (2013), Elektronik İstatistik Kitabı , "Naif Bayes Sınıflandırıcı" :

görüntü tanımını buraya girin

Naif Bayes Sınıflandırması kavramını göstermek için, yukarıdaki şekilde gösterilen örneği düşünün. Belirtildiği gibi, nesneler YEŞİL veya KIRMIZI olarak sınıflandırılabilir. Benim görevim yeni davaları ulaştıklarında sınıflandırmak, yani şu anda mevcut olan nesnelere dayanarak hangi sınıf etiketine ait olduklarına karar vermek.

KIRMIZI'dan iki kat daha YEŞİL nesne olduğu için, yeni bir vakanın (henüz gözlemlenmemiş) KIRMIZI yerine YEŞİL üyeliğe sahip olma ihtimalinin iki katı olduğuna inanmak makul. Bayes analizinde, bu inanç öncelikli olasılık olarak bilinir. Öncelikli olasılıklar önceki deneyime dayanır, bu durumda YEŞİL ve KIRMIZI nesnelerin yüzdesi ve genellikle gerçekte gerçekleşmeden önce sonuçları tahmin etmek için kullanılır.

Böylece yazabiliriz:

görüntü tanımını buraya girin

40'ı YEŞİL ve 20 KIRMIZI olmak üzere toplam 60 nesne bulunduğundan, sınıf üyeliği için öncelikli olasılıklarımız:

görüntü tanımını buraya girin görüntü tanımını buraya girin

Önceden olasılığımızı belirledikten sonra, şimdi yeni bir nesneyi sınıflandırmaya hazırız (WHITE dairesi). Nesnelerin iyi bir şekilde kümelenmesi nedeniyle, X'in çevresindeki YEŞİL (veya KIRMIZI) nesnelerin ne kadar fazla olduğunu varsayalım, yeni vakaların o belirli renge ait olma olasılığı o kadar yüksektir. Bu olasılığı ölçmek için, sınıf etiketlerine bakılmaksızın X'in etrafına bir nokta (bir priori seçilecek) içeren bir daire çizeriz. Sonra, her bir sınıf etiketine ait olan dairedeki noktaların sayısını hesaplıyoruz. Bundan olasılığını hesaplıyoruz:

görüntü tanımını buraya girin

Yukarıdaki çizimden, YEŞİL verilen X Olabilirliğinin, RED verilen X Olabilirliğinden daha küçük olduğu açıktır, çünkü daire 1 YEŞİL nesne ve 3 Kırmızı olanlar içerir. Böylece:

görüntü tanımını buraya girin

görüntü tanımını buraya girin

Önceki olasılıklar, X'in YEŞİL'e ait olabileceğini gösterse de (KIRMIZI'dan iki kat fazla YEŞİL olduğu göz önüne alındığında) olabilir; X'in sınıf üyeliğinin KIRMIZI olduğu (X civarında YEŞİL'den daha fazla KIRMIZI nesne olduğu düşünülür). Bayes analizinde, son sınıflandırma, her iki bilgi kaynağını, yani öncekini ve olasılığını birleştirerek, Bayes kuralı (Rev. Thomas Bayes 1702-1761'den sonra adlandırılır) kullanılarak bir arka olasılık oluşturmak üzere üretilir.

görüntü tanımını buraya girin

Son olarak, sınıf üyeliği en büyük arka olasılığa ulaştığından, X'i KIRMIZI olarak sınıflandırıyoruz.

Bu matematik anlayışımın zorluğunun ortaya çıktığı yerdir.

görüntü tanımını buraya girin

p (Cj | x1, x2, x ..., xd), sınıf üyeliğinin arka olasılığıdır, yani X'in Cj'ye ait olma olasılığıdır, ancak neden böyle yazıyorsunuz?

Olasılığı hesaplamak?

görüntü tanımını buraya girin

Posterior Olasılık?

görüntü tanımını buraya girin

Asla matematik almadım, ama saf bayes anlayışım iyi, sanırım bu ayrıştırılmış yöntemlere gelince kafam karıştı. Bazıları bu yöntemlerin görselleştirilmesine ve matematiğin anlaşılır bir şekilde yazılmasına yardımcı olabilir mi?


12
(+1) Sorunuzu ortaya koyduğunuz gerçekten dikkatli ve net bir şekilde hayranım.
rolando2,

2
@ rolando2: tüm rakamlar ve bu sorunun hemen hemen tüm metni istatistikoft.com/textbook/naive-bayes-classifier
Franck Dernoncourt

Lütfen bu yazıyı, başkaları tarafından yazılmış bir materyale nasıl başvurulacağı uyarınca, başka bir yerden gelen materyali açıkça belirtmek için düzenleyin .
Scortchi - Monica'yı yeniden konumlandırın

Doğrudan tekliflerin doğru bir şekilde ilişkilendirilmesi her zaman Stack Exchange sitelerinde bir gereklilik olmuştur. Her neyse, ihmal kolayca giderilebilir; & Ben yaptım. Hesabınızı silmenize gerek yok - lütfen tekrar düşünün.
Scortchi - Monica'yı yeniden kurun

Yanıtlar:


50

Naive Bayes sürecini sıfırdan baştan başlayacağım, çünkü nereye kapatıldığın tam olarak belli değil.

P(class|feature1,feature2,...,featuren

P(A|B)=P(B|A)P(A)P(B)
P(class|features)=P(features|class)P(class)P(features)

P(features)P(class|features)classP(features)class

P(class|features)P(features|class)P(class)

P(class)

P(features|class)P(feature1,feature2,...,featuren|class)

P(feature1,feature2,...,featuren|class)=iP(featurei|class)

Ayrık Örnek Verileri.

Örnek: Sınıflandırıcının eğitimi

Sınıflandırmayı eğitmek için, çeşitli nokta alt kümelerini sayıyoruz ve bunları önceki ve koşullu olasılıkları hesaplamak için kullanıyoruz.

P(class=green)=4060=2/3 and P(class=red)=2060=1/3

feature1feature2

  • P(feature1=A|class=red)
  • P(feature1=B|class=red)
  • P(feature1=A|class=green)
  • P(feature1=B|class=green)
  • P(feature2=X|class=red)
  • P(feature2=Y|class=red)
  • P(feature2=X|class=green)
  • P(feature2=Y|class=green)
  • (bariz değilse, bunların hepsi olası özellik-değer ve sınıf çiftleridir)

P(feature1=A|class=red)feature1P(feature1=A|class=red)=20/20=1P(feature1|class=red)=0/20=0P(feature1=A|class=green)=5/40=1/8P(feature1=B|class=green)=35/40=7/8feature2

  • P(feature1=A|class=red)=1
  • P(feature1=B|class=red)=0
  • P(feature1=A|class=green)=1/8
  • P(feature1=B|class=green)=7/8
  • P(feature2=X|class=red)=3/10
  • P(feature2=Y|class=red)=7/10
  • P(feature2=X|class=green)=8/10
  • P(feature2=Y|class=green)=2/10

Bu on olasılık (iki öncelik artı sekiz şartlı) bizim modelimiz.

Yeni Bir Örneği Sınıflandırma

feature1feature2

P(class=red|example)P(class=red)P(feature1=A|class=red)P(feature2=Y|class=red)

P(class=red|example)131710=730
P(class=green|example)P(class=green)P(feature1=A|class=green)P(feature2=Y|class=green)

2/302/10

notlar

P(feature=value|class)Her sınıf için uygun ortalama ve varyansa takarak. Verilerinizin özelliklerine bağlı olarak diğer dağıtımlar daha uygun olabilir, ancak bir Gauss iyi bir başlangıç ​​noktası olabilir.

DARPA veri setine pek aşina değilim, ama aslında aynı şeyi yapardınız. Muhtemelen P (attack = TRUE | service = finger), P (attack = false | service = finger), P (attack = TRUE | service = ftp), vb. Gibi şeyleri hesaplayacaksınız ve sonra bunları örnekle aynı şekilde. Bir yandan not olarak, buradaki hilenin bir kısmı iyi özellikler bulmaktır. Örneğin Kaynak IP, muhtemelen umutsuzca seyrek olacak - muhtemelen belirli bir IP için yalnızca bir veya iki örneğiniz olacaktır. IP'yi konumlandırıp "Source_in_same_building_as_dest (true / false)" veya bunun yerine bir özellik olarak kullanırsanız, çok daha iyisini yapabilirsiniz.

Umarım bu daha fazla yardımcı olur. Herhangi bir şeyin açıklığa kavuşturulması gerekiyorsa, tekrar denemekten mutluluk duyarım!


3
Elbette. Eğer senin için uygunsa, cevabımı düzenleyeceğim, böylece daha fazla yer var (ve LaTex işlerini yapabilirim).
Matt Krause,

1
Eğitim ve test bölümlerini genişletip kendi bölümlerine ayırdım. İlk çift paragraflar aynı ...
Matt Krause

2
Matt, bu, karşılaştığım Naive Bayes'in herhangi bir kitap tanımından çok daha net. Muhtemelen bu web sitesinde şimdiye kadar gördüğüm herhangi bir sorunun en iyi cevabı budur.
Zhubarb

@Berkan, teşekkürler; bu çok naziksiniz (başka bir sürü harika cevap olsa da!) Herhangi bir öneriniz varsa, onları ele almaya çalışmaktan mutlu olurum!
Matt Krause

+ 1 ve stackoverflow.com/questions/10059594/… benzer bir açıklamanın olduğu yer
Drey

6

DP(CjD)

P(CjD)=P(DCj)P(Cj)P(D), j=1,2,
jP(C1D)P(C2D),P(CjD)P(D)P(DCj)P(Cj)P(DCj)P(Cj)P(D)CjP(CjD)P(DCj) P(Cj)
P(CjD)P(DCj)P(Cj).
D(x1,x2,,xd)Cj)
P(DCj)=P(x1,x2,,xdCj)=P(x1Cj)P(x2Cj)P(xdCj)=1=1dP(xiCj)

1

Saf bayes modelinin ardındaki temel varsayım, her bir özelliğin (x_i), sınıfa verilen diğer tüm özelliklerden şartlı olarak bağımsız olduğudur. Bu varsayım, olasılığını basit bir ürün olarak (gösterdiğiniz gibi) yazmamızı sağlayan şeydir.

Bu aynı zamanda saf bayes modelinin pratikte iyi bir şekilde genellenmesine yardımcı olan şeydir. Eğitim aşamasını göz önünde bulundurun: Bu varsayımı yapmazsak, öğrenme, karmaşık, yüksek boyutlu bir dağılımın tahmin edilmesini içerir: p (x1, x2, ..., xn, c) tüm özelliklerin birlikte dağıtıldığı. Bunun yerine, p (x1, c), p (x2, c), ..., p (xn, c) 'yi tahmin ederek eğitebiliriz, çünkü c değerini bilerek, diğer tüm özelliklerin değerlerini alakasız kılar. x_i hakkında ek bilgi yok).

Bunu görselleştirmenin iyi bir yolunu bilmiyorum (standart grafik model gösterimi dışında), ancak daha somut hale getirmek için bir Naive bayes modelini öğrenmek için bir kod yazabilirsiniz ( burada bazı örnek verileri alabilirsiniz ). Eğit ve test et. Şimdi koşullu bağımsızlık varsayımını bırakın ve kodu değiştirin. Önceki modele göre eğitim, test ve karşılaştırma yapın.

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.