logo

Naïve Bayes Sınıflandırıcı Algoritması

  • Naïve Bayes algoritması, denetimli bir öğrenme algoritmasıdır. Bayes teoremi ve sınıflandırma problemlerinin çözümünde kullanılır.
  • Esas olarak kullanılır metin sınıflandırması yüksek boyutlu bir eğitim veri kümesi içerir.
  • Naïve Bayes Sınıflandırıcı, hızlı tahminler yapabilen hızlı makine öğrenimi modellerinin oluşturulmasına yardımcı olan basit ve en etkili Sınıflandırma algoritmalarından biridir.
  • Olasılıksal bir sınıflandırıcıdır, yani bir nesnenin olasılığı temelinde tahminde bulunur..
  • Naïve Bayes Algoritmasının bazı popüler örnekleri şunlardır: Spam filtreleme, Duygusal analiz ve makaleleri sınıflandırma .

Neden Naïve Bayes deniyor?

Naïve Bayes algoritması Naïve ve Bayes olmak üzere iki kelimeden oluşur ve şu şekilde tanımlanabilir:

    Toy: Naif olarak adlandırılır çünkü belirli bir özelliğin ortaya çıkmasının diğer özelliklerin ortaya çıkmasından bağımsız olduğunu varsayar. Mesela meyve rengine, şekline ve tadına göre tanımlanıyorsa kırmızı, küresel ve tatlı bir meyve elma olarak tanınır. Dolayısıyla her bir özellik, birbirine bağlı kalmadan, tek başına elma olduğunun belirlenmesine katkıda bulunur.Bayes: Bayes Teoremi prensibine bağlı olduğu için Bayes olarak adlandırılmıştır.

Bayes teoremi:

  • Bayes teoremi aynı zamanda şu şekilde de bilinir: Bayes Kuralı veya Bayes yasası Ön bilgiye sahip bir hipotezin olasılığını belirlemek için kullanılır. Koşullu olasılığa bağlıdır.
  • Bayes teoreminin formülü şu şekilde verilmiştir:
Naïve Bayes Sınıflandırıcı Algoritması

Nerede,

P(A|B) İkinci olasılıktır : A hipotezinin gözlenen B olayına ilişkin olasılığı.

P(B|A) Olasılık olasılığıdır : Bir hipotezin olasılığının doğru olduğunu gösteren kanıtın olasılığı.

P(A) Önceki Olasılıktır : Kanıtları gözlemlemeden önce hipotezin olasılığı.

P(B) Marjinal Olasılıktır : Kanıt Olasılığı.

Naïve Bayes Sınıflandırıcısının Çalışması:

Naïve Bayes Sınıflandırıcısının çalışması aşağıdaki örnek yardımıyla anlaşılabilir:

Diyelim ki elimizde bir veri seti var hava koşulları ve karşılık gelen hedef değişken ' Oynamak '. Dolayısıyla bu veri setini kullanarak hava koşullarına göre belirli bir günde oynayıp oynamamamız gerektiğine karar vermemiz gerekiyor. Dolayısıyla bu sorunu çözmek için aşağıdaki adımları izlememiz gerekiyor:

  1. Verilen veri kümesini frekans tablolarına dönüştürün.
  2. Verilen özelliklerin olasılıklarını bularak Olasılık tablosunu oluşturun.
  3. Şimdi son olasılığı hesaplamak için Bayes teoremini kullanın.

Sorun : Hava güneşliyse Oyuncu oynamalı mı oynamamalı mı?

Çözüm : Bunu çözmek için öncelikle aşağıdaki veri kümesini göz önünde bulundurun:

Görünüm Oynamak
0 Yağmurlu Evet
1 Güneşli Evet
2 Bulutlu Evet
3 Bulutlu Evet
4 Güneşli HAYIR
5 Yağmurlu Evet
6 Güneşli Evet
7 Bulutlu Evet
8 Yağmurlu HAYIR
9 Güneşli HAYIR
10 Güneşli Evet
on bir Yağmurlu HAYIR
12 Bulutlu Evet
13 Bulutlu Evet

Hava Koşullarına İlişkin Frekans Tablosu:

Hava durumu Evet HAYIR
Bulutlu 5 0
Yağmurlu 2 2
Güneşli 3 2
Toplam 10 5

Olasılık tablosu hava durumu:

Hava durumu HAYIR Evet
Bulutlu 0 5 5/14= 0,35
Yağmurlu 2 2 4/14=0,29
Güneşli 2 3 5/14=0,35
Tüm 4/14=0,29 10/14=0,71

Bayes teoremini uygulamak:

P(Evet|Güneşli)= P(Güneşli|Evet)*P(Evet)/P(Güneşli)

P(Güneşli|Evet)= 3/10= 0,3

P(Güneşli)= 0,35

P(Evet)=0,71

Yani P(Evet|Güneşli) = 0,3*0,71/0,35= 0,60

P(Hayır|Güneşli)= P(Güneşli|Hayır)*P(Hayır)/P(Güneşli)

P(Güneşli|HAYIR)= 2/4=0,5

P(Hayır)= 0,29

P(Güneşli)= 0,35

Yani P(Hayır|Güneşli)= 0,5*0,29/0,35 = 0,41

Yukarıdaki hesaplamadan da görebileceğimiz gibi P(Evet|Güneşli)>P(Hayır|Güneşli)

Dolayısıyla Güneşli bir günde Oyuncu oyunu oynayabilir.

Naïve Bayes Sınıflandırıcının Avantajları:

  • Naïve Bayes, bir veri kümesi sınıfını tahmin etmek için kullanılan hızlı ve kolay makine öğrenimi algoritmalarından biridir.
  • İkili ve Çok Sınıflı Sınıflandırmalar için kullanılabilir.
  • Diğer Algoritmalara kıyasla Çok sınıflı tahminlerde iyi performans gösterir.
  • için en popüler seçimdir. metin sınıflandırma sorunları .

Naïve Bayes Sınıflandırıcının Dezavantajları:

  • Naive Bayes, tüm özelliklerin bağımsız veya ilgisiz olduğunu varsayar, dolayısıyla özellikler arasındaki ilişkiyi öğrenemez.

Naïve Bayes Sınıflandırıcının Uygulamaları:

  • İçin kullanılır Kredi Puanlaması .
  • İçinde kullanılır tıbbi veri sınıflandırması .
  • Kullanılabilir gerçek zamanlı tahminler çünkü Naïve Bayes Sınıflandırıcı istekli bir öğrenicidir.
  • Aşağıdaki gibi Metin sınıflandırmasında kullanılır: Spam filtreleme Ve Duygu analizi .

Naif Bayes Modeli Türleri:

Aşağıda verilen üç tür Naive Bayes Modeli vardır:

    Gaussian: Gauss modeli, özelliklerin normal bir dağılım izlediğini varsayar. Bu, tahmincilerin ayrık yerine sürekli değerler alması durumunda modelin bu değerlerin Gauss dağılımından örneklendiğini varsaydığı anlamına gelir.Çok terimli: Veriler çok terimli olarak dağıtıldığında Multinomial Naïve Bayes sınıflandırıcısı kullanılır. Öncelikle belge sınıflandırma problemleri için kullanılır; belirli bir belgenin Spor, Politika, eğitim vb. gibi hangi kategoriye ait olduğu anlamına gelir.
    Sınıflandırıcı, tahmin ediciler için kelimelerin sıklığını kullanır.Bernoulli: Bernoulli sınıflandırıcısı Multinomial sınıflandırıcıya benzer şekilde çalışır, ancak yordayıcı değişkenler bağımsız Booleans değişkenleridir. Örneğin belirli bir kelimenin bir belgede mevcut olup olmadığı gibi. Bu model aynı zamanda belge sınıflandırma görevleriyle de ünlüdür.

Naïve Bayes algoritmasının Python Uygulaması:

Şimdi Python kullanarak Naive Bayes Algoritmasını uygulayacağız. Bunun için '' ifadesini kullanacağız. Kullanıcı bilgisi ' veri kümesi Diğer sınıflandırma modelimizde de kullanmıştık. Bu nedenle Naive Bayes modelini diğer modellerle rahatlıkla karşılaştırabiliriz.

Uygulama adımları:

  • Veri Ön İşleme adımı
  • Naive Bayes'in Eğitim Setine Takılması
  • Test sonucunu tahmin etmek
  • Sonucun doğruluğunu test edin (Karışıklık matrisinin oluşturulması)
  • Test seti sonucunun görselleştirilmesi.

1) Veri Ön İşleme adımı:

Bu adımda verileri kodumuzda verimli bir şekilde kullanabilmek için ön işleme tabi tutacağız/hazırlayacağız. Veri ön işlemede yaptığımıza benzer. Bunun kodu aşağıda verilmiştir:

 Importing the libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd # Importing the dataset dataset = pd.read_csv('user_data.csv') x = dataset.iloc[:, [2, 3]].values y = dataset.iloc[:, 4].values # Splitting the dataset into the Training set and Test set from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.25, random_state = 0) # Feature Scaling from sklearn.preprocessing import StandardScaler sc = StandardScaler() x_train = sc.fit_transform(x_train) x_test = sc.transform(x_test) 

Yukarıdaki kodda veri setini ' kullanarak programımıza yükledik. veri kümesi = pd.read_csv('user_data.csv') . Yüklenen veri setini eğitim ve test setine ayırdık ve daha sonra özellik değişkenini ölçeklendirdik.

Veri kümesinin çıktısı şu şekilde verilir:

Naïve Bayes Sınıflandırıcı Algoritması 1

2) Naive Bayes'in Eğitim Setine Yerleştirilmesi:

Ön işleme adımından sonra artık Naive Bayes modelini Training setine sığdıracağız. Aşağıda bunun kodu verilmiştir:

 # Fitting Naive Bayes to the Training set from sklearn.naive_bayes import GaussianNB classifier = GaussianNB() classifier.fit(x_train, y_train) 

Yukarıdaki kodda şunu kullandık: GaussianNB sınıflandırıcısı eğitim veri setine sığdırmak için. İhtiyaca göre diğer sınıflandırıcıları da kullanabiliriz.

Çıktı:

 Out[6]: GaussianNB(priors=None, var_smoothing=1e-09) 

3) Test seti sonucunun tahmini:

Şimdi test seti sonucunu tahmin edeceğiz. Bunun için yeni bir tahmin değişkeni oluşturacağız y_pred ve tahminleri yapmak için tahmin fonksiyonunu kullanacaktır.

 # Predicting the Test set results y_pred = classifier.predict(x_test) 

Çıktı:

Naïve Bayes Sınıflandırıcı Algoritması 2

Yukarıdaki çıktı tahmin vektörünün sonucunu gösterir y_pred ve gerçek vektör y_test. Bazı tahminlerin gerçek değerlerden farklı olduğunu yani yanlış tahminler olduğunu görebiliriz.

4) Karışıklık Matrisi Oluşturma:

Şimdi Naive Bayes sınıflandırıcısının doğruluğunu Confusion matrisini kullanarak kontrol edeceğiz. Aşağıda bunun kodu verilmiştir:

 # Making the Confusion Matrix from sklearn.metrics import confusion_matrix cm = confusion_matrix(y_test, y_pred) 

Çıktı:

Naïve Bayes Sınıflandırıcı Algoritması 3

Yukarıdaki karışıklık matrisi çıktısında görebileceğimiz gibi 7+3= 10 yanlış tahmin, 65+25=90 doğru tahmin bulunmaktadır.

5) Eğitim seti sonucunun görselleştirilmesi:

Daha sonra Na�ve Bayes Sınıflandırıcıyı kullanarak eğitim seti sonucunu görselleştireceğiz. Aşağıda bunun kodu verilmiştir:

 # Visualising the Training set results from matplotlib.colors import ListedColormap x_set, y_set = x_train, y_train X1, X2 = nm.meshgrid(nm.arange(start = x_set[:, 0].min() - 1, stop = x_set[:, 0].max() + 1, step = 0.01), nm.arange(start = x_set[:, 1].min() - 1, stop = x_set[:, 1].max() + 1, step = 0.01)) mtp.contourf(X1, X2, classifier.predict(nm.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape), alpha = 0.75, cmap = ListedColormap(('purple', 'green'))) mtp.xlim(X1.min(), X1.max()) mtp.ylim(X2.min(), X2.max()) for i, j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j, 0], x_set[y_set == j, 1], c = ListedColormap(('purple', 'green'))(i), label = j) mtp.title('Naive Bayes (Training set)') mtp.xlabel('Age') mtp.ylabel('Estimated Salary') mtp.legend() mtp.show() 

Çıktı:

monitörüm ne kadar büyük
Naïve Bayes Sınıflandırıcı Algoritması 4

Yukarıdaki çıktıda Na�ve Bayes sınıflandırıcısının veri noktalarını ince sınırla ayırdığını görebiliriz. Kullandığımız şekliyle Gauss eğrisidir. GaussianNB kodumuzdaki sınıflandırıcı.

6) Test seti sonucunun görselleştirilmesi:

 # Visualising the Test set results from matplotlib.colors import ListedColormap x_set, y_set = x_test, y_test X1, X2 = nm.meshgrid(nm.arange(start = x_set[:, 0].min() - 1, stop = x_set[:, 0].max() + 1, step = 0.01), nm.arange(start = x_set[:, 1].min() - 1, stop = x_set[:, 1].max() + 1, step = 0.01)) mtp.contourf(X1, X2, classifier.predict(nm.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape), alpha = 0.75, cmap = ListedColormap(('purple', 'green'))) mtp.xlim(X1.min(), X1.max()) mtp.ylim(X2.min(), X2.max()) for i, j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j, 0], x_set[y_set == j, 1], c = ListedColormap(('purple', 'green'))(i), label = j) mtp.title('Naive Bayes (test set)') mtp.xlabel('Age') mtp.ylabel('Estimated Salary') mtp.legend() mtp.show() 

Çıktı:

Naïve Bayes Sınıflandırıcı Algoritması 5

Yukarıdaki çıktı, test seti verilerinin son çıktısıdır. Gördüğümüz gibi sınıflandırıcı 'satın alınan' ve 'satın alınmayan' değişkenleri bölmek için bir Gauss eğrisi yarattı. Karışıklık matrisinde hesapladığımız bazı yanlış tahminler var. Ama yine de oldukça iyi bir sınıflandırıcıdır.