Bunun eski bir soru, yerleşik bir cevabı olduğunu fark ettim. Göndermemin nedeni, kabul edilen cevabın farklı bir algoritma olan k- NN'nin ( k-en yakın komşuları) birçok unsuru olmasıdır .
Hem k-NN hem de NaiveBayes sınıflandırma algoritmalarıdır. Kavramsal olarak, k-NN yeni varlıkları sınıflandırmak için "yakınlık" fikrini kullanır. K-NN'de 'yakınlık' Öklid Uzaklığı veya Kosinüs Uzaklığı gibi fikirlerle modellenir. Buna karşılık, NaiveBayes'te 'olasılık' kavramı yeni varlıkları sınıflandırmak için kullanılır.
Soru Naive Bayes ile ilgili olduğu için, birisine fikirleri ve adımları nasıl tarif edeceğim. Mümkün olduğunca az denklem ve sade İngilizce ile yapmaya çalışacağım.
İlk olarak, Koşullu Olasılık ve Bayes Kuralı
Birisi Naive Bayes'in nüanslarını anlayabilmeden ve takdir etmeden önce, önce birkaç ilgili kavramı, yani Koşullu Olasılık ve Bayes Kuralı'nı bilmeleri gerekir. (Bu kavramlara aşina iseniz Bayes'e Ulaşmak başlıklı bölüme geçin )
Basit İngilizcede Koşullu Olasılık : Başka bir şeyin zaten gerçekleştiği göz önüne alındığında, bir şeyin gerçekleşme olasılığı nedir .
Diyelim ki bazı Sonuç O var ve bazı Kanıt E. Bu olasılıkların tanımlandığı yoldan: Hem Sonuç O hem de Kanıt E'ye sahip olma olasılığı : (O oluşma olasılığı) ile (E'nin Olası) Ey oldu)
Koşullu Olasılığı anlamak için bir örnek:
ABD Senatörlerinden oluşan bir koleksiyonumuz olduğunu varsayalım. Senatörler Demokratlar veya Cumhuriyetçiler olabilir. Ayrıca erkek ya da kadın.
Bir senatörü tamamen rastgele seçersek, bu kişinin kadın bir Demokrat olma olasılığı nedir? Koşullu Olasılık buna cevap vermemize yardımcı olabilir.
(Demokrat ve Kadın Senatör) Olasılığı = Prob (Senatör Demokrattır) bir Demokrat oldukları sürece Koşullu Kadın Olma Olasılığı ile çarpılır.
P(Democrat & Female) = P(Democrat) * P(Female | Democrat)
Aynı şeyi tersine hesaplayabiliriz:
P(Democrat & Female) = P(Female) * P(Democrat | Female)
Bayes Kuralını Anlama
Kavramsal olarak, bu P (Kanıt | Bilinen Sonuç) 'dan P (Sonuç | Bilinen Kanıt)' a gitmenin bir yoludur. Genellikle, bilinen bir sonuç göz önüne alındığında , bazı belirli kanıtların ne sıklıkta gözlemlendiğini biliyoruz . Bu bilinen gerçeği , kanıt göz önüne alındığında, tersi hesaplamak, sonucun gerçekleşme şansını hesaplamak için kullanmalıyız .
P (Biraz Kanıt bildiğimizden elde edilen sonuç) = P (Sonucu bildiğimiz göz önüne alındığında kanıt) çarpı P (Kanıt) ile ölçeklendirilmiş Prob (Sonuç)
Bayes Kuralını anlamak için klasik örnek:
Probability of Disease D given Test-positive =
Prob(Test is positive|Disease) * P(Disease)
_______________________________________________________________
(scaled by) Prob(Testing Positive, with or without the disease)
Şimdi, tüm bunlar Naive Bayes'e ulaşmak için önsözdü.
Naif Bayes'e Ulaşım
Şimdiye kadar sadece bir parça kanıttan bahsettik. Gerçekte, birden fazla kanıtın verildiği bir sonucu tahmin etmeliyiz . Bu durumda, matematik çok karmaşıklaşır. Bu komplikasyonun üstesinden gelmek için bir yaklaşım, birden fazla kanıt parçasını 'ayırmak' ve her bir kanıt parçasını bağımsız olarak ele almaktır. Bu yaklaşım buna naif Bayes denir .
P(Outcome|Multiple Evidence) =
P(Evidence1|Outcome) * P(Evidence2|outcome) * ... * P(EvidenceN|outcome) * P(Outcome)
scaled by P(Multiple Evidence)
Birçok kişi bunu hatırlamayı seçer:
P(Likelihood of Evidence) * Prior prob of outcome
P(outcome|evidence) = _________________________________________________
P(Evidence)
Bu denklem hakkında birkaç şeye dikkat edin:
- Prob (kanıt | sonuç) 1 ise, o zaman sadece 1 ile çarpıyoruz.
- Prob (bazı özel kanıtlar | sonuç) 0 ise, tüm prob. Eğer çelişkili kanıtlar görürseniz, bu sonucu göz ardı edebiliriz.
- Her şeyi P'ye (Kanıt) böldüğümüzden, hesaplamadan bile kurtulabiliriz.
- İle çarpılması arkasında sezgi önce biz daha yaygın sonuçlara yüksek olasılık ve olası sonuçlara küçük olasılık vermek öyle mi. Bunlar da denir
base rates
ve tahmin edilen olasılıklarımızı ölçeklendirmenin bir yoludur.
Bir Sonuçları Tahmin Etmek İçin NaiveBayes Nasıl Uygulanır?
Her olası sonuç için yukarıdaki formülü çalıştırmanız yeterlidir. Sınıflandırmaya çalıştığımız için , her sonuca a denir class
ve bunun bir class label.
İşi vardır . Yine çok basit bir yaklaşımı ele alıyoruz: En yüksek olasılığa sahip olan sınıf "kazanan" olarak ilan edilir ve bu sınıf etiketi bu kanıt kombinasyonuna atanır.
Meyve Örneği
Anlayışımızı artırmak için bir örnek üzerinde deneyelim: OP bir 'meyve' tanımlama örneği istedi.
Diyelim ki 1000 adet meyve hakkında verilerimiz var. Muz , Portakal veya Diğer Meyveler olurlar . Her meyve hakkında 3 özellik biliyoruz:
- Uzun olup olmadığı
- Tatlı olup olmadığı ve
- Rengi Sarı ise.
Bu bizim 'eğitim setimiz'. Bunu karşılaştığımız yeni meyvelerin türünü tahmin etmek için kullanacağız .
Type Long | Not Long || Sweet | Not Sweet || Yellow |Not Yellow|Total
___________________________________________________________________
Banana | 400 | 100 || 350 | 150 || 450 | 50 | 500
Orange | 0 | 300 || 150 | 150 || 300 | 0 | 300
Other Fruit | 100 | 100 || 150 | 50 || 50 | 150 | 200
____________________________________________________________________
Total | 500 | 500 || 650 | 350 || 800 | 200 | 1000
___________________________________________________________________
Meyve koleksiyonumuzla ilgili birçok şeyi önceden hesaplayabiliriz.
Sözde "Önceki" olasılıklar. (Meyve özelliklerinden hiçbirini bilmeseydik, bu bizim tahminimiz olurdu.) Bunlar bizimbase rates.
P(Banana) = 0.5 (500/1000)
P(Orange) = 0.3
P(Other Fruit) = 0.2
"Kanıt" olasılığı
p(Long) = 0.5
P(Sweet) = 0.65
P(Yellow) = 0.8
"Olabilirlik" olasılığı
P(Long|Banana) = 0.8
P(Long|Orange) = 0 [Oranges are never long in all the fruit we have seen.]
....
P(Yellow|Other Fruit) = 50/200 = 0.25
P(Not Yellow|Other Fruit) = 0.75
Bir Meyve verildiğinde, nasıl sınıflandırılır?
Diyelim ki bize bilinmeyen bir meyvenin özellikleri verildi ve onu sınıflandırmamız istendi. Bize meyvenin Uzun, Tatlı ve Sarı olduğu söylenir. Muz mu? Portakal mı? Yoksa başka bir meyve mi?
3 sonucun her biri için sayıları tek tek çalıştırabiliriz. Daha sonra en yüksek olasılığı seçeriz ve bilinmeyen meyvemizi önceki kanıtlarımıza (1000 meyve eğitim setimiz) dayanarak en yüksek olasılığa sahip olan sınıfa ait olarak sınıflandırırız:
P(Banana|Long, Sweet and Yellow)
P(Long|Banana) * P(Sweet|Banana) * P(Yellow|Banana) * P(banana)
= _______________________________________________________________
P(Long) * P(Sweet) * P(Yellow)
= 0.8 * 0.7 * 0.9 * 0.5 / P(evidence)
= 0.252 / P(evidence)
P(Orange|Long, Sweet and Yellow) = 0
P(Other Fruit|Long, Sweet and Yellow)
P(Long|Other fruit) * P(Sweet|Other fruit) * P(Yellow|Other fruit) * P(Other Fruit)
= ____________________________________________________________________________________
P(evidence)
= (100/200 * 150/200 * 50/200 * 200/1000) / P(evidence)
= 0.01875 / P(evidence)
Ezici bir farkla ( 0.252 >> 0.01875
), bu Tatlı / Uzun / Sarı meyveyi bir Muz olarak sınıflandırıyoruz.
Bayes Sınıflandırıcısı neden bu kadar popüler?
Sonunda neyin aşağı indiğine bakın. Sadece sayma ve çarpma. Tüm bu terimleri önceden hesaplayabiliriz ve böylece sınıflandırma kolay, hızlı ve verimli hale gelir.
Let z = 1 / P(evidence).
Şimdi aşağıdaki üç miktarı hızla hesaplıyoruz.
P(Banana|evidence) = z * Prob(Banana) * Prob(Evidence1|Banana) * Prob(Evidence2|Banana) ...
P(Orange|Evidence) = z * Prob(Orange) * Prob(Evidence1|Orange) * Prob(Evidence2|Orange) ...
P(Other|Evidence) = z * Prob(Other) * Prob(Evidence1|Other) * Prob(Evidence2|Other) ...
En yüksek sayı olan sınıf etiketini atayın ve işiniz bitti.
İsme rağmen, Naive Bayes bazı uygulamalarda mükemmel görünüyor. Metin sınıflandırma, gerçekten parladığı bir alandır.
Naive Bayes algoritmasının arkasındaki kavramların anlaşılmasına yardımcı olan umarım.