Makine Öğreniminde Naif Bayes Algoritması

⚡ Akıllı Özet

Naive Bayes, her özelliğin bağımsız olarak katkıda bulunduğunu varsayan, Bayes teoremi üzerine kurulu, denetimli, olasılıksal bir sınıflandırma algoritmasıdır. Teorisi, uygulamalı bir atölye çalışmasıdır.ping Örneğin, üç model varyantı, avantajları, sınırlamaları ve gerçek dünya uygulamaları aşağıda ele alınmıştır.

  • 🔘 Tanım: Her aday sınıfın olasılığını karşılaştırarak bir kaydı etiketleyen bir sınıflandırıcı.
  • ☑️ Safça bir varsayım: Her özellik, nadiren geçerli olan ancak yine de iyi tahminler veren koşullu bağımsız bir unsur olarak ele alınır.
  • ✅ Bayes formülü: P(A|B), P(B|A)'nın P(A) ile çarpımının P(B)'ye bölünmesine eşittir.
  • 🧪 Çalışılmış örnek: Gün, indirim ve ücretsiz teslimat bir araya geldiğinde satın alma olasılığı %97.33'tür.
  • ️ Üç farklı varyant: Kelime sayımları için çok terimli dağılım, kelime varlığı için Bernoulli dağılımı, sürekli değerler için Gauss dağılımı.
  • ⚠️ Sınırlama: İlişkili özellikler göz ardı edilir, bu nedenle karar ağaçları veya SVM'ler bağımlı veriler için daha uygundur.

Makine Öğreniminde Naif Bayes Algoritması

Naive Bayes Sınıflandırıcı Algoritması

Sınıflandırıcı, verileri bir veya daha fazla "sınıfa" ayıran bir makine öğrenme algoritmasıdır. E-posta sınıflandırıcısı bunun bilindik bir örneğidir: gelen her mesajı tarar ve Spam veya Spam Değil sınıf etiketini ekler.

Makine öğreniminde Naive Bayes Sınıflandırıcısı bir denetimli öğrenme Sınıflandırma görevlerinde kullanılan algoritma.

Aşağıdaki diyagram bu akışı özetlemektedir.

Naive Bayes sınıflandırıcısı, bir giriş kaydına sınıf etiketi atar.

Naive Bayes sınıflandırma problemlerini çözmek için kullanılır. Bir nesnenin olasılığına dayanarak tahminde bulunur. Naive Bayes, Bayes Teoremini temel alır ve çoğunlukla metin sınıflandırma amacıyla kullanılır. Naive Bayes, uygulanması kolay ve eğitilmesi hızlı olan olasılıksal bir sınıflandırma algoritmasıdır.

Naive Bayes sınıflandırıcısı, Bayes teoremi üzerine kurulu olduğu için olasılık sınıflandırıcısı olarak da bilinir. Bir öğenin olasılığına dayanarak tahmin yapar.

Naif Bayes neden bu şekilde adlandırılıyor?

Naive Bayes adı iki bölümden oluşur: Naive (Naif) ve Bayes. Neden naif? Algoritma, özelliklerin görünme sırasını dikkate almaz, bu nedenle "Sen" ve "Sen misin" ifadeleri ona özdeş görünür. Ayrıca hiçbir özelliğin diğerini etkilemediğini varsayar. Elma meyvesini tanımak için kırmızı rengi, küresel şekli ve tatlı tadı kullanırsınız ve algoritma bu ipuçlarının her birini ayrı, bağımsız kanıt olarak ele alır.

  • Naive Bayes sınıflandırıcısı, özelliklerin birbirlerinden bağımsız olduğunu varsayar. Bu durum gerçek hayattaki verilerde nadiren mümkün olduğundan, sınıflandırıcıya "naif" (naif) denir.
  • Bu sınıflandırma algoritması Bayes teoremi üzerine kuruludur, bu nedenle Naif Bayes Sınıflandırıcı olarak bilinir.

Naive Bayes Teoremi

Bayes teoremi, önsel bilgiye bağlı koşullu olasılıklarla bir hipotezin olasılığını bulmak için kullanılır. Bu teorem, Thomas Bayes'in adını taşır. Naive Bayes sınıflandırıcı, Bayes teoremi tarafından verilen koşullu olasılık ilkesine göre çalışır.

Bayes teoremini anlamak için, iki madeni parayı atma örneğine, yani basit bir Naive Bayes sınıflandırıcı örneğine bakalım. İki madeni parayı atarak şu örnek uzayları elde edebiliriz: {HH, HT, TH, TT}. Dolayısıyla, bu olayların olasılıkları şöyle olacaktır:

  • İki tura almak = 1/4
  • En az bir kuyruk = 3/4
  • İlk paraya tura verilen ikinci para yazı = 1/2
  • İlk para verildiğinde iki tura gelmesi tura = 1/2

Bayes teoremi, bir olayın gerçekleşme olasılığını, daha önce gerçekleşmiş farklı bir olayın olasılığına dayanarak hesaplar. Bayes teoreminin formülü şu şekildedir:

P(A|B) = (P(B|A) * P(A)) / P(B)

P(A|B), B olayı zaten gerçekleşmişken A olayının gerçekleşme olasılığıdır. P(B) olasılığı sıfır olamaz.

  • B olayı (kanıt) doğru olduğunda verilen A olayının olasılığını bulmanız gerekir.
  • P(A), A olayının önsel olasılığıdır; yani, herhangi bir kanıt gözlemlenmeden önce olayın gerçekleşme olasılığıdır. Burada, B olayı bilinmeyen bir örneğin değeridir.
  • P(A|B), A olayının sonradan gelen olasılığıdır; yani, B kanıtına bakıldıktan sonra A olayının gerçekleşme olasılığıdır.

Naive Bayes Sınıflandırıcısının Çalışma Örneği

Formülün işe yaradığını görmenin en hızlı yolu, onu elle çalıştırmaktır.

Bir dükkan örneği ele alalım.ping Bayes Naif Sınıflandırıcısının çalışma prensibini anlamak için. Bu veri setinde, bu örnek için 30 satırdan oluşan küçük bir örnek veri seti bulunmaktadır.

Veri kümesi

Numune mağazasıping Gün, İndirim, Ücretsiz Teslimat ve Satın Al sütunlarını içeren 30 satırlık veri seti.

Sorun, Naive Bayes Teoremini kullanarak bir kişinin belirli bir Gün, İndirim ve Ücretsiz Teslimat kombinasyonunda bir ürün satın alıp almayacağını tahmin etmektir.

Her özellik değeri için Satın Al ve Satın Almama sonuçlarını sayan frekans tablosu.

) 1 Adım Veri kümesinde belirtilen gün, indirim ve ücretsiz teslimat gibi giriş türlerini kullanarak her özellik için sıklık tabloları oluşturacağız.

Günlük, İndirimli ve Ücretsiz Teslimat özelliklerine ilişkin frekans tabloları

'Satın Al' olayını 'A', bağımsız değişkenleri ise 'İndirim', 'Ücretsiz teslimat' ve 'Gün' olarak 'B' ile gösterelim. Bu olayları ve değişkenleri kullanarak Bayes teoremini uygulayacağız.

) 2 Adım Şimdi Olasılık tablolarını tek tek hesaplayalım.

Alım ve Alım Yok seçeneklerine karşı Gün özelliğine ilişkin olasılık tablosu

Örnek 1:

Bu olabilirlik tablosuna dayanarak koşullu olasılıkları aşağıdaki gibi hesaplayacağız.

P(A) = P(No Buy) = 6/30 = 0.2
P(B) = P(Weekday) = 11/30 = 0.37
P(B/A) = P(Weekday / No Buy) = 2/6 = 0.33

Bayes teoremini kullanarak P(A/B)'yi bulun,

P(A/B)
= P(No Buy / Weekday)
= P(Weekday / No Buy) * P(No Buy) / P(Weekday)
= (2/6 * 6/30) / (11/30)
= 0.1818

Benzer şekilde, eğer A Satın Al ise, o zaman

= P(Buy / Weekday)
= P(Weekday / Buy) * P(Buy) / P(Weekday)
= (9/24 * 24/30) / (11/30)
= 0.8181

Not: P(Satın Al | Hafta İçi) P(Satın Alma Yok | Hafta İçi) değerinden daha büyük olduğundan, bir müşterinin ürünü büyük olasılıkla Hafta içi bir günde satın alacağı sonucuna varabiliriz.

) 3 Adım Benzer şekilde, bir olayın gerçekleşme olasılığını üç değişkenin tümüne dayanarak hesaplayabiliriz. Şimdi yukarıdaki frekans tablolarını kullanarak her üç değişken için Olabilirlik tablolarını hesaplayacağız.

Birleşik hesaplamada kullanılan Günlük, İndirimli ve Ücretsiz Teslimat olasılık tabloları

Örnek 2:

Şimdi, bu üç Olasılık tablosunu kullanarak, bir müşterinin belirli bir 'Gün', 'İndirim' ve 'Ücretsiz teslimat' kombinasyonuna dayalı olarak satın alma olasılığının olup olmadığını hesaplayacağız.

Burada bu faktörlerin bir kombinasyonunu ele alalım:

  • Gün = Tatil
  • İndirim = Evet
  • Ücretsiz Teslimat = Evet

Ne zaman, A = Satın Al

Aşağıdaki gün, indirim ve ücretsiz teslimat kombinasyonunda satın alma işleminin koşullu olasılığını hesaplayın.

B nerede:

  • Gün = Tatil
  • İndirim = Evet
  • Ücretsiz Teslimat = Evet

Ve A = Satın Al

Bu nedenle,

= P(A/B)
= P(Buy / Discount=Yes, Day=Holiday, Free Delivery=Yes)
= ( P(Discount=(Yes/Buy)) * P(Free Delivery=(Yes/Buy)) * P(Day=(Holiday/Buy)) * P(Buy) )
/ ( P(Discount=Yes) * P(Free Delivery=Yes) * P(Day=Holiday) )
= (19/24 * 21/24 * 8/24 * 24/30) / (20/30 * 23/30 * 11/30)
= 0.986

Ne zaman, A = Satın Alma Yok

Benzer şekilde, gün, indirim ve ücretsiz teslimat kombinasyonunun satın alma koşullu olasılığını hesaplayın.

B nerede:

  • Gün = Tatil
  • İndirim = Evet
  • Ücretsiz Teslimat = Evet

Ve A = Satın Alma Yok

Bu nedenle,

= P(A/B)
= P(No Buy / Discount=Yes, Day=Holiday, Free Delivery=Yes)
= ( P(Discount=(Yes/No Buy)) * P(Free Delivery=(Yes/No Buy)) * P(Day=(Holiday/No Buy)) * P(No Buy) )
/ ( P(Discount=Yes) * P(Free Delivery=Yes) * P(Day=Holiday) )
= (1/6 * 2/6 * 3/6 * 6/30) / (20/30 * 23/30 * 11/30)
= 0.027

) 4 Adım Bu nedenle,

Satın alma olasılığı = 0.986

Satın almama olasılığı = 0.027

Son olarak, bu gün satın almak için koşullu olasılıklarımız var. Şimdi olayların olabilirliğini elde etmek için bu olasılıkları genelleştirelim.

  • Olasılıkların toplamı = 0.986 + 0.027 = 1.013
  • Satın alma olasılığı = 0.986 / 1.013 = %97.33
  • Satın Almama Olasılığı = 0.027 / 1.013 = %2.67

Bağımsızlık varsayımı her bir tahminin yaklaşık değer olmasını sağladığı için, iki puanın toplamı 1 yerine 1.013'tür; bu nedenle toplam değere bölmek, onları yüzdelere dönüştürür.

%97.33'ün %2.67'den büyük olduğunu unutmayın. Ortalama bir müşterinin tatilde indirimli ve ücretsiz teslimatla satın alacağı sonucuna varabiliriz.

Naive Bayes Modelinin Türleri

Naive Bayes Sınıflandırıcılarının birçok türü vardır. Burada Multinomial, Bernoulli ve Gaussian Naive Bayes sınıflandırıcılarını tartıştık.

Varyant Özellik türü Tipik kullanım
Çok terimli Kelime sayıları Konu ve belge sınıflandırması
bernoulli İkili var veya yok bayrakları Kısa metinler ve spam filtreleme
Gauss Sürekli sayısal değerler Sensör okumaları ve ölçümleri

1. Çok Terimli Naive Bayes

Bu tür Naive Bayes modeli belge sınıflandırma problemlerinde kullanılır. Bir belgedeki kelimelerin sıklığını temsil eden özelliklerle çalışır. Sınıflandırıcı, bir belgenin spor, politika veya teknoloji gibi belirli bir kategoriye ait olma olasılığını belirlemek için kelimelerin oluşumunu ve sayısını dikkate alır.

2. Bernoulli Saf Bayes

Bu, çok terimli Naive Bayes'e benzer. Belge sınıflandırma görevleri için Bernoulli Naive Bayes sınıflandırıcısı kullanılır. Ancak boole tahmincilerini kullanır. Bir kelimenin var olup olmadığını temsil eder ve yalnızca Evet veya Hayır değerlerini alır. Sınıflandırıcı, bir kelimenin metinde bulunup bulunmamasına göre olasılıkları hesaplar.

3. Gauss Saf Bayes

Bu sınıflandırıcı sürekli değer durumunda kullanılır ancak ayrık değerde kullanılmaz. Bu sınıflandırıcı olasılıkları aşağıdaki parametreleri kullanarak hesaplar: Gauss dağılım, yani ortalama ve varyans.

Naive Bayes'te sürekli özellikleri modellemek için kullanılan Gauss çan eğrisi.

Koşullu olasılık formülü şu şekilde değişir:

Ortalama ve varyansı kullanan Gauss tipi Naive Bayes koşullu olasılık formülü

MKS scikit-öğrenme Kütüphane iki yeni varyant daha ekliyor: Dengesiz metinler için Tamamlayıcı Naive Bayes ve ayrık kategoriler için Kategorik Naive Bayes.

Naive Bayes Sınıflandırıcının Faydaları ve Sınırlamaları

Naive Bayes algoritmasının makine öğrenmesinde çeşitli avantajları ve dezavantajları bulunmaktadır.

Naive Bayes Sınıflandırıcının Faydaları

  • Sadelik ve Verimlilik: Naive Bayes'in eğitilmesi ve uygulanması basit ve kolaydır. Hesaplama maliyetinin düşük olması nedeniyle verimlidir. Büyük veri kümelerini verimli bir şekilde işleyebilir.
  • Hızlı Eğitim ve Tahmin: Naive Bayes, özellikler arasındaki bağımsızlık nedeniyle çok fazla eğitim verisine ihtiyaç duymaz. Model eğitildikten sonra hızlı tahmin yapabilir.
  • Ölçeklenebilirlik: Naive Bayes, çok sayıda özelliğe sahip yüksek boyutlu veri kümelerini işleyebilir. Özellik sayısı eğitim örneklerinin sayısından fazla olduğunda bile iyi performans gösterir. Veri noktalarının ve tahmincilerin sayısına göre ölçeklenir. Hem sürekli hem de ayrık verileri işler.
  • İlgisiz Özelliklere Karşı Sağlamlık: İlgisiz özelliklere duyarlı değildir.
  • Küçük Eğitim Setleriyle iyi çalışır: Naive Bayes, sınırlı eğitim verisiyle bile makul sonuçlar verebilir. Eğitim örneklerinin sayısının az olduğu durumları da ele alabilir.

Naive Bayes Sınıflandırıcının Sınırlandırılması

Naif Bayes makine öğrenme tüm özelliklerin birbirinden bağımsız olduğunu varsayar. Dolayısıyla verideki farklı özellikler arasındaki ilişkileri öğrenemez. Her özelliğe diğerleriyle hiçbir ilişkisi yokmuş gibi davranır.

İkinci bir uyarı: Bildirdiği sınıf olasılıkları yetersiz kalibre edilmiştir, bu nedenle bir tahmine eklenen güven aralığı rakamı güvenilir bir olasılık değildir.

Bu sorunun üstesinden gelmek için şunları kullanabilirsiniz: Karar ağaçlarıRastgele Ormanlar, Destek Vektör Makineleri (SVM), Nöral ağlar vb. Bu algoritmalar, verilerdeki özellikler arasındaki karmaşık ilişkileri ve bağımlılıkları öğrenme yeteneğine sahiptir. Bu nedenle daha doğru sonuçlar tahmin edebilirler.

Naive Bayes Sınıflandırıcı Uygulamaları

Bu algoritma hızlı ve etkili olduğundan gerçek zamanlı tahminler yapmak için kullanabilirsiniz.

İstenmeyen Posta Algılama

E-posta hizmetleri (Örneğin GmailBu algoritma, bir e-postanın spam olup olmadığını belirlemek için kullanılır. Bu algoritma, spam filtreleme için mükemmeldir.

Duygu Analizi

Kelime seçimi, cümle yapısı ve bağlam gibi özelliklere göre metni olumlu, olumsuz veya nötr olarak sınıflandırabilir. Sosyal medya izleme, müşteri incelemeleri ve pazar araştırmalarında uygulama alanı bulur.

Belge Sınıflandırma

Belgeleri, belgedeki belirli kelimelerin veya özelliklerin sıklığına veya varlığına göre spor, politika, teknoloji veya finans gibi kategorilere ayırabilir.

Tavsiye Sistemleri

Ürün, film veya makale önermeye yönelik kullanıcı ilgi alanlarını veya tercihlerini tahmin etmek için kullanıcı tercihlerini, geçmiş verileri ve öğe özelliklerini analiz edebilir.

Bu sınıflandırma algoritması ayrıca yüz tanıma, hava tahmini, tıbbi teşhis ve alışveriş gibi alanlarda da kullanılmaktadır.pingHaber sınıflandırması vb. alanlarda Naive Bayes algoritmasını uygulayabilirsiniz. Pythonsklearn.naive_bayes modülü yukarıda açıklanan tüm varyantları sunmaktadır.

SSS

İhtiyacınız olan varyantı içe aktarın. sklearn.naive_bayesVerileri train_test_split ile ayırın, ardından eğitim satırlarında fit() ve test satırlarında predict() fonksiyonlarını çağırın. GaussianNB sürekli özellikler için uygundur, MultinomialNB ve BernoulliNB ise metin sayımlarını ve ikili kelime işaretlerini ele alır.

Eğer bir kategori eğitimde hiçbir sınıfla birlikte görünmüyorsa, koşullu olasılığı sıfır olur ve tüm ürünü ortadan kaldırır. Laplace düzeltmesi her sayıma bir ekler, böylece hiçbir şey sıfıra düşmez. Scikit-learn bunu alfa parametresi olarak sunar.

İkisi de kesin bir üstünlük sağlayamıyor. Naive Bayes daha hızlı eğitiliyor, daha az veriye ihtiyaç duyuyor ve yüksek boyutlu metinlerle başa çıkabiliyor. Lojistik regresyon ise ilişkili özellikleri modelliyor ve daha iyi kalibre edilmiş olasılıklar üretiyor. Küçük metin veri kümelerinde Naive Bayes genellikle önde giderken, daha fazla veriyle lojistik regresyon onu geçiyor.

Bir test veri seti ayırın ve tahminleri gerçek etiketlerle karşılaştırın. karışıklık matrisiArdından hassasiyet, geri çağırma ve F1 puanlarını türetin. Doğruluk tek başına, bir sınıfın örneklemde baskın olduğu spam gibi dengesiz verilerde yanıltıcı olabilir.

Metni küçük harfe çevirin, noktalama işaretlerini kaldırın, durdurma kelimelerini çıkarın ve isteğe bağlı olarak kelimelerin köklerini bulun, ardından her belgeyi bir sayım veya TF-IDF vektörüne dönüştürün. Bernoulli varyantları, sayımlar yerine ikili varlık işaretleri ister. Eğitim ve tahmin zamanında aynı adımları uygulayın.

Naive Bayes, en basit Bayes ağıdır: her özelliğin doğrudan bağlı olduğu tek bir sınıf düğümü vardır ve özellikler arasında bağlantı yoktur. Genel bir Bayes ağı, bu bağımlılık kenarlarını çizmenize olanak tanır, bu nedenle Naive Bayes'in kasıtlı olarak göz ardı ettiği korelasyonları modeller.

Otomatik makine öğrenimi araçları, düzeltme değerlerini, özellik temsillerini ve varyant seçimini arar, ardından adayları çapraz doğrulanmış puana göre sıralar. Bu, manuel deneme yanılma yönteminin büyük bir kısmını ortadan kaldırır; yine de hangi ölçütün önemli olduğuna ve kazananın mantıklı davranıp davranmadığına siz karar verirsiniz.

GitHub Yardımcı Pilotu Kısa bir yorumdan hızlıca şablon kodunu (içe aktarmalar, eğitim-test ayrımı, uyum ve tahmin çağrıları) oluşturur. Her zaman seçtiği varyantı ve değerlendirme kodunu kontrol edin, çünkü mantıklı bir komut dosyası bile yanlış modeli eğitebilir.

Bu yazıyı şu şekilde özetleyin: