πŸ€– Наивный байСсовский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ классификации: прСимущСства ΠΈ нСдостатки

Наивный байСсовский классификатор (Naive Bayes classifier) – это ΠΎΡ‡Π΅Π½ΡŒ популярный Π² машинном ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² основном ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для получСния Π±Π°Π·ΠΎΠ²ΠΎΠΉ точности Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…. Π˜Π·ΡƒΡ‡ΠΈΠΌ Π΅Π³ΠΎ прСимущСства ΠΈ нСдостатки, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½Π° языкС Python.

Π§Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅?

Наивный БайСс – это самый простой Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ своим Π΄Π°Π½Π½Ρ‹ΠΌ. Как слСдуСт ΠΈΠ· названия, этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ всС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… "Π½Π°ΠΈΠ²Π½Ρ‹Π΅", Ρ‚.Π΅. Π½Π΅ ΠΊΠΎΡ€Ρ€Π΅Π»ΠΈΡ€ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄ собой Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π·Π΅Π»Π΅Π½ΠΎΠ΅. Π­Ρ‚ΠΎΡ‚ Π·Π΅Π»Π΅Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΅ΠΆΠΈΠΊΠΎΠΌ, собакой ΠΈΠ»ΠΈ мячом. ЕстСствСнно, Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ мяч. Но ΠΏΠΎΡ‡Π΅ΠΌΡƒ?

Π’Ρ‹ создаСтС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈ вашСй Ρ†Π΅Π»ΡŒΡŽ являСтся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²Ρ‹ΡˆΠ΅: ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ мячом, Π΅ΠΆΠΈΠΊΠΎΠΌ ΠΈ собакой. Π‘Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π΅Ρ‚Π΅ ΠΎΠ± ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ символов ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ± ΠΈΡ… сопоставлСнии с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ классификации, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ – ΠΊΡ€ΡƒΠ³, Ρ‚ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ мяч, Ссли ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ – ΠΊΠΎΠ»ΡŽΡ‡Π΅Π΅ ΠΆΠΈΠ²ΠΎΠ΅ сущСство, Ρ‚ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ Π΅ΠΆΠΈΠΊ, Π° Ссли наш ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π»Π°Π΅Ρ‚, Ρ‚ΠΎ, вСроятно, это Π±ΡƒΠ΄Π΅Ρ‚ собака.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° проста: ΠΌΡ‹ с дСтства Π²ΠΈΠ΄ΠΈΠΌ Π·Π΅Π»Π΅Π½Ρ‹ΠΉ ΡˆΠ°Ρ€, Π½ΠΎ собака ΠΈΠ»ΠΈ Π΅ΠΆΠΈΠΊ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π° ΠΊΡ€Π°ΠΉΠ½Π΅ маловСроятны для нас. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² нашСм случаС ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, сопоставив Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ с нашим классификатором ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π—Π΅Π»Π΅Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ Π±Ρ‹Π» сопоставлСн с Π΅ΠΆΠΎΠΌ, собакой ΠΈ мячом, ΠΈ Π² ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ принадлСТности Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊ мячу. Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ классифицировали Π΅Π³ΠΎ ΠΊΠ°ΠΊ мяч.

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° data scientist’а».

ВСорСтичСская ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

Π’Π΅ΠΎΡ€Π΅ΠΌΠ° БайСса позволяСт Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΠΏΠΎΡΡ‚Π΅Ρ€ΠΈΠΎΡ€Π½ΡƒΡŽ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ P(A | B) Π½Π° основС P(A), P(B) ΠΈ P(B | A).

Π“Π΄Π΅:

  • P(A | B) – апостСриорная Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ (Ρ‡Ρ‚ΠΎ A ΠΈΠ· B истинно)
  • P(A) – априорная Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ (нСзависимая Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ A)
  • P(B | A) – Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½ΠΎΠ³ΠΎ значСния ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ° ΠΏΡ€ΠΈ Π΄Π°Π½Π½ΠΎΠΌ классС. (Ρ‡Ρ‚ΠΎ B ΠΈΠ· A истинно)
  • P(B) – априорная Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ нашСго ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ°. (нСзависимая Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ B)

РСализация Π½Π° языкС python

### Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from scipy.stats import norm
 
data = load_iris()
X, y, column_names = data['data'], data['target'], data['feature_names']
X = pd.DataFrame(X, columns = column_names)
 
### Π Π°Π·Π±ΠΈΠ²Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅
from sklearn.model_selection import train_test_split
X_train, X_val, y_train, y_val = train_test_split(X, y, random_state=44)
 
means = X_train.groupby(y_train).apply(np.mean)
stds = X_train.groupby(y_train).apply(np.std)
 
### ВычисляСм Π°ΠΏΡ€ΠΈΠΎΡ€Π½ΡƒΡŽ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ класса
probs = X_train.groupby(y_train).apply(lambda x: len(x)) / X_train.shape[0]
 
### ВычисляСм Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ для Π’Π΅ΠΎΡ€Π΅ΠΌΡ‹ БайСса для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта
y_pred = []
# ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π² Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ части Π΄Π°Π½Π½Ρ‹Ρ…
for elem in range(X_val.shape[0]):
   p = {}
 
   # для каТдого возмоТного класса
   for cl in np.unique(y_train):
 
       # априорная Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ взятого Ρ€Π°Π½Π΅Π΅ класса
       p[cl] = probs.iloc[cl]
 
       # для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ столбца Π² датасСтС
       for index, param in enumerate(X_val.iloc[elem]):
 
           # ΡƒΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ столбца
           # Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ΡŒ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ для Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ класса
           p[cl] *= norm.pdf(param, means.iloc[cl, index], stds.iloc[cl, index])
  
   y_pred.append(pd.Series(p).values.argmax())
 
### ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ нашСго прСдсказания нСсколькими ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ
# Ρ€ΡƒΡ‡Π½ΠΎΠΉ классификатор
from sklearn.metrics import accuracy_score
accuracy1 = accuracy_score(y_val, y_pred)
 
# классификатор ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ sklearn
from sklearn.naive_bayes import GaussianNB
model = GaussianNB()
model.fit(X_train, y_train)
accuracy2 = accuracy_score(y_val, model.predict(X_val))
 
print(accuracy1)
print(accuracy2)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠ΄Π°:

0.9210526315789473
0.9210526315789473

Базовая модСль с самой простой настройкой Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π² 90% Π½Π° Π·Π°Π΄Π°Ρ‡Π΅ классификации Ρ†Π²Π΅Ρ‚ΠΊΠΎΠ² ириса.

ΠŸΠ»ΡŽΡΡ‹ ΠΈ минусы

ΠŸΠ»ΡŽΡΡ‹

  • Алгоритм Π»Π΅Π³ΠΊΠΎ ΠΈ быстро прСдсказываСт класс тСстового Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…. Он Ρ‚Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ справляСтся с многоклассовым ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.
  • ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΠΈΠ²Π½ΠΎΠ³ΠΎ байСсовского классификатора Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… простых Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ логистичСская рСгрСссия. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π²Π°ΠΌ трСбуСтся мСньшС ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ….
  • Он Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ°ΠΌΠΈ(ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с числовыми). Для числовых ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ² прСдполагаСтся Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ распрСдСлСниС, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΌ Π΄ΠΎΠΏΡƒΡ‰Π΅Π½ΠΈΠ΅ΠΌ Π² точности нашСго Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

ΠœΠΈΠ½ΡƒΡΡ‹

  • Если пСрСмСнная ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ (Π² тСстовом Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ…), которая Π½Π΅ наблюдалась Π² ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰Π΅ΠΌ Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ модСль присвоит 0 (Π½ΡƒΠ»Π΅Π²ΡƒΡŽ) Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ Π½Π΅ смоТСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ прСдсказаниС. Π­Ρ‚ΠΎ часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½ΡƒΠ»Π΅Π²ΠΎΠΉ частотой. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ сглаТивания. Один ΠΈΠ· самых простых ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² сглаТивания называСтся ΠΎΡ†Π΅Π½ΠΊΠΎΠΉ Лапласа.
  • ЗначСния спрогнозированных вСроятностСй, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ predict_proba, Π½Π΅ всСгда ΡΠ²Π»ΡΡŽΡ‚ΡΡ достаточно Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ.
  • ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° являСтся ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎ нСзависимости ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ². Однако Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡Π°Ρ… ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ нСзависимыС ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ€Π΅Π΄ΠΊΠΎ.

Π’ ΠΊΠ°ΠΊΠΈΡ… областях ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?

Алгоритм Π½Π°ΠΈΠ²Π½ΠΎΠ³ΠΎ БайСса – это классификатор, ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ быстро. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π΄Π°Π½Π½Ρ‹ΠΉ инструмСнт идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для составлСния ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΎΠ² Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π’Π°ΠΊΠΆΠ΅ этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстСн благодаря Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ многоклассового прогнозирования. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… классов Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ области для примСнСния Π½Π°ΠΈΠ²Π½ΠΎΠ³ΠΎ байСсовского классификатора это:

  • БистСма Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ. Π’ сочСтании Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΊΠΎΠ»Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ (Collaborative Filtering) ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ систСму, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ машинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄ΠΎΠ±Ρ‹Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… для ΡƒΡ‡Π΅Ρ‚Π° Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (Ρ‚Π°ΠΊΠΎΠΉ, ΠΊΠ°ΠΊ поиск Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ просмотра). ЦСль – прСдсказаниС Ρ‚ΠΎΠ³ΠΎ, понравится Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π΄Π°Π½Π½Ρ‹ΠΉ рСсурс/ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΈΠ»ΠΈ Π½Π΅Ρ‚.
  • Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ спама ΠΈ классификация тСкста. Наивный байСсовский классификатор Π² основном ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для классификации тСкстов (благодаря Π»ΡƒΡ‡ΡˆΠ΅ΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ Π² многоклассовых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ нСзависимости) ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΎΠ½ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ спама (Π² элСктронной ΠΏΠΎΡ‡Ρ‚Π΅) ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ настроСний (ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтСй, для выявлСния ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… настроСний ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²).
***

Из этого руководства Π²Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ ΠΎ Π½Π°ΠΈΠ²Π½ΠΎΠΌ байСсовском Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ классификации, Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ…, Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, прСимущСствах ΠΈ нСдостатках.

ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π° языкС Python. Наивный БайСсовский классификатор – ΠΎΠ΄ΠΈΡ… ΠΈΠ· самых простых ΠΈ эффСктивных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² машинного обучСния.

НСсмотря Π½Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ успСхи Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π·Π° послСдниС нСсколько Π»Π΅Ρ‚, БайСс всС Ρ‚Π°ΠΊ ΠΆΠ΅ Π΄ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ свою Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ. Он ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ примСняСтся Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… прилоТСниях, ΠΎΡ‚ тСкстовой Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ ΠΈ спам-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² Π΄ΠΎ систСм Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ.

***

Π₯ΠΎΡ‡Ρƒ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ слоТно Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ?

Алгоритмы ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ… Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нСпростая Ρ‚Π΅ΠΌΠ° для ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ изучСния: Π½Π΅ Ρƒ ΠΊΠΎΠ³ΠΎ ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ запустили курс «Алгоритмы ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ…Β», Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π΅ΠΆΠ΅Π½Π΅Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Π΅Π±ΠΈΠ½Π°Ρ€ΠΎΠ² Π²Ρ‹:

  • ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ слСнг, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ говорят всС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ нСзависимо ΠΎΡ‚ языка программирования: язык Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΈ структур Π΄Π°Π½Π½Ρ‹Ρ…;
  • Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ;
  • ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅ΡΡŒ ΠΊ тСхничСскому собСсСдованию ΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅.

ΠšΡƒΡ€Ρ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠ°ΠΊ junior, Ρ‚Π°ΠΊ ΠΈ middle-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ.

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста
16 ноября 2019

DeepFake-Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»: создаСм собствСнный Π΄ΠΈΠΏΡ„Π΅ΠΉΠΊ Π² DeepFaceLab

РассказываСм ΠΎ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ DeepFake ΠΈ шаг Π·Π° шагом учимся Π΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΠΈΠΏΡ„Π΅ΠΉΠΊΠΈ Π² ...
admin
11 дСкабря 2018

ООП Π½Π° Python: ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python допускаСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π½ΠΎ Π² Π΅Π³ΠΎ основС...
admin
14 июля 2017

ПишСм свою Π½Π΅ΠΉΡ€ΠΎΡΠ΅Ρ‚ΡŒ: пошаговоС руководство

ΠžΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π³Π°ΠΉΠ΄ ΠΏΡ€ΠΎ Π½Π΅ΠΉΡ€ΠΎΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΊ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΈΠ· ΠΊΠ°ΠΊΠΈΡ… элСмС...