logo

Наивни алгоритам Бајесовог класификатора

  • Наивни Бајес алгоритам је надзирани алгоритам учења, који се заснива на Бајесова теорема и користи се за решавање класификационих задатака.
  • Углавном се користи у класификација текста који укључује скуп података за обуку високе димензије.
  • Наивни Бајесов класификатор је један од једноставних и најефикаснијих класификационих алгоритама који помаже у изградњи брзих модела машинског учења који могу брзо да предвиђају.
  • То је вероватноћарски класификатор, што значи да предвиђа на основу вероватноће неког објекта.
  • Неки популарни примери наивног Бајесовог алгоритма су филтрирање нежељене поште, сентименталну анализу и класификацију чланака .

Зашто се зове Наивни Бајес?

Наивни Бајес алгоритам се састоји од две речи Наиван и Бајес, које се могу описати као:

штампа са јава
    Наивно: Назива се наивним јер претпоставља да је појава одређене особине независна од појаве других обележја. На пример, ако се воће идентификује на основу боје, облика и укуса, онда се црвено, сферично и слатко воће препознаје као јабука. Стога свака карактеристика појединачно доприноси идентификацији да је то јабука без зависности једна од друге.Баиес: Зове се Бајес јер зависи од принципа Бајесове теореме.

Бајесова теорема:

  • Бајесова теорема је такође позната као Бајесово правило или Бајесов закон , који се користи за одређивање вероватноће хипотезе уз претходно знање. Зависи од условне вероватноће.
  • Формула за Бајесову теорему је дата као:
Наивни алгоритам Бајесовог класификатора

Где,

П(А|Б) је Постериорна вероватноћа : Вероватноћа хипотезе А о посматраном догађају Б.

П(Б|А) је вероватноћа вероватноће : Вероватноћа доказа с обзиром да је вероватноћа хипотезе тачна.

П(А) је претходна вероватноћа : Вероватноћа хипотезе пре посматрања доказа.

П(Б) је гранична вероватноћа : Вероватноћа доказа.

Рад наивног Бајесовог класификатора:

Рад наивног Бајесовог класификатора може се разумети уз помоћ следећег примера:

Претпоставимо да имамо скуп података од временски услови и одговарајућу циљну променљиву ' Игра '. Дакле, користећи овај скуп података, морамо да одлучимо да ли треба да играмо или не одређеног дана у складу са временским условима. Дакле, да бисмо решили овај проблем, морамо да следимо следеће кораке:

  1. Конвертујте дати скуп података у табеле учесталости.
  2. Генеришите табелу вероватноће тако што ћете пронаћи вероватноће датих карактеристика.
  3. Сада користите Бајесову теорему да израчунате постериорну вероватноћу.

Проблем : Ако је време сунчано, онда играч треба да игра или не?

Решење : Да бисте ово решили, прво размотрите доњи скуп података:

Изгледи Игра
0 Кишовито да
1 Сунчан да
2 Облачно да
3 Облачно да
4 Сунчан Не
5 Кишовито да
6 Сунчан да
7 Облачно да
8 Кишовито Не
9 Сунчан Не
10 Сунчан да
Једанаест Кишовито Не
12 Облачно да
13 Облачно да

Табела учесталости за временске услове:

Време да Не
Облачно 5 0
Кишовито 2 2
Сунчан 3 2
Укупно 10 5

Временски услови табеле вероватноће:

Време Не да
Облачно 0 5 5/14= 0,35
Кишовито 2 2 4/14=0,29
Сунчан 2 3 5/14=0,35
Све 4/14=0,29 10/14=0,71

Примена Бајесове теореме:

П(Да|Сунчано)= П(Сунчано|Да)*П(Да)/П(Сунчано)

П(Сунчано|Да)= 3/10= 0,3

П(Сунчано)= 0,35

П(Да)=0,71

стринг.субстринг јава

Дакле, П(Да|Сунчано) = 0,3*0,71/0,35= 0,60

П(Не|Сунчано)= П(Сунчано|Не)*П(Не)/П(Сунчано)

П(Сунчано|НЕ)= 2/4=0,5

П(Не)= 0,29

П(Сунчано)= 0,35

Дакле, П(Не|Сунчано)= 0,5*0,29/0,35 = 0.41

Дакле, као што видимо из горњег прорачуна да П(Да|Сунчано)>П(Не|Сунчано)

Дакле, по сунчаном дану, играч може да игра игру.

листе латекса

Предности наивног Бајесовог класификатора:

  • Наивни Бајес је један од брзих и лаких МЛ алгоритама за предвиђање класе скупова података.
  • Може се користити за бинарне и вишекласне класификације.
  • Добро ради у предвиђањима више класа у поређењу са другим алгоритмима.
  • То је најпопуларнији избор за проблеми класификације текста .

Недостаци наивног Бајесовог класификатора:

  • Наивни Бајес претпоставља да су све карактеристике независне или неповезане, тако да не може научити однос између карактеристика.

Примене наивног Бајесовог класификатора:

  • Користи се за Цредит Сцоринг .
  • Користи се у класификација медицинских података .
  • Може се користити у предвиђања у реалном времену јер наивни Бајесов класификатор жељно учи.
  • Користи се у класификацији текста као нпр Филтрирање нежељене поште и Анализа сентимента .

Врсте наивног Бајесовог модела:

Постоје три типа наивног Бајесовог модела, који су дати у наставку:

    Гаусов: Гаусов модел претпоставља да карактеристике прате нормалну дистрибуцију. То значи да ако предиктори узимају континуиране вредности уместо дискретних, онда модел претпоставља да су ове вредности узорковане из Гаусове дистрибуције.Мултиномијална: Вишеномски наивни Бајесов класификатор се користи када су подаци вишеномски дистрибуирани. Првенствено се користи за проблеме класификације докумената, значи да одређени документ припада којој категорији као што су спорт, политика, образовање итд.
    Класификатор користи учесталост речи за предикторе.Бернули: Бернулијев класификатор функционише слично мултиномском класификатору, али променљиве предиктора су независне Булове променљиве. Као на пример да је одређена реч присутна или не у документу. Овај модел је такође познат по задацима класификације докумената.

Питхон имплементација наивног Бајесовог алгоритма:

Сада ћемо имплементирати наивни Бајес алгоритам користећи Питхон. Дакле, за ово ћемо користити ' кориснички подаци ' скуп података , који смо користили у нашем другом моделу класификације. Стога можемо лако упоредити Наиве Баиес модел са осталим моделима.

Кораци за имплементацију:

  • Корак претходне обраде података
  • Уградња Наиве Баиеса у сет за обуку
  • Предвиђање резултата теста
  • Тестирајте тачност резултата (матрица стварања конфузије)
  • Визуелизација резултата тестног скупа.

1) Корак претходне обраде података:

У овом кораку ћемо претходно обрадити/припремити податке како бисмо их могли ефикасно користити у нашем коду. Слично је као што смо урадили у претходној обради података. Код за ово је дат у наставку:

 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) 

У горњем коду, учитали смо скуп података у наш програм користећи ' скуп података = пд.реад_цсв('усер_дата.цсв') . Учитани скуп података је подељен на скуп за обуку и тест, а затим смо скалирали променљиву карактеристике.

Излаз за скуп података је дат као:

Наивни алгоритам Бајесовог класификатора 1

2) Уградња Наиве Баиеса у сет за обуку:

Након корака претходне обраде, сада ћемо наивни Бајесов модел уклопити у сет за обуку. Испод је код за то:

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

У горњем коду смо користили ГауссианНБ класификатор да га прилагоди скупу података за обуку. Такође можемо користити друге класификаторе према нашим захтевима.

Излаз:

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

3) Предвиђање резултата тестног скупа:

Сада ћемо предвидети резултат тестног скупа. За ово ћемо креирати нову променљиву предиктора и_пред , и користиће функцију предвиђања за предвиђање.

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

Излаз:

Наивни алгоритам Бајесовог класификатора 2

Горњи излаз показује резултат за вектор предвиђања и_пред и реални вектор и_тест. Видимо да се нека предвиђања разликују од стварних вредности, а то су нетачна предвиђања.

4) Креирање матрице конфузије:

Сада ћемо проверити тачност наивног Бајесовог класификатора помоћу матрице конфузије. Испод је код за то:

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

Излаз:

Наивни алгоритам Бајесовог класификатора 3

Као што можемо видети у горњем излазу матрице конфузије, постоји 7+3= 10 нетачних предвиђања и 65+25=90 тачних предвиђања.

5) Визуелизација резултата скупа обуке:

Затим ћемо визуелизовати резултат скупа обуке користећи Наве Бајесов класификатор. Испод је код за то:

 # 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() 

Излаз:

Наивни алгоритам Бајесовог класификатора 4

У горњем излазу можемо видети да је Наве Бајесов класификатор одвојио тачке података фином границом. То је Гаусова крива као што смо користили ГауссианНБ класификатор у нашем коду.

цамелцасе питхон

6) Визуелизација резултата тестног скупа:

 # 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() 

Излаз:

Наивни алгоритам Бајесовог класификатора 5

Горњи излаз је коначни излаз за податке скупа тестова. Као што видимо, класификатор је креирао Гаусову криву да подели 'купљено' и 'некупљено' променљиве. Постоје нека погрешна предвиђања која смо израчунали у матрици конфузије. Али ипак је прилично добар класификатор.