Clase 11: Naive Bayes
También conocido como
Clasificador Inexperto de Bayes
, es uno de los clasificadores más conocidos y sencillos.
Se hizo particularmente conocido como uno de los primeros algoritmos en funcionar como Clasificador de Spam de manera efectiva.
Teorema de Bayes
.
Se lee como la Probabilidad de que Ocurra \(X\) dado que tenemos \(C\).
La probabilidad a posteriori
(LHS), depende de el Likelihood, la probabilidad a priori y la evidencia (RHS).
Si asumimos independencia, entonces la probabilidad conjunta de \(k\) eventos condicionados, se calcula como la productoria de las probabilidades condicionales independientes.
Supongamos que:
Si su paciente tiene tortícolis, ¿Cuál es la probabilidad de que tenga Meningitis?
\[P(M|T) = \frac{P(T|M)P(M)}{P(T)}=\frac{0.5 \cdot 1/50000}{1/20} = 0.0002\]
\[P(y = C_j|X_1, X_2, ..., X_k) = \frac{P(X_1,X_2,..., X_k|y=C_j)P(y=C_j)}{P(X_1, X_2, ..., X_k)}\]
Por simplicidad reduciremos \(X_1, X_2, ..., X_k\) a \(X\).
\(P(X)\) tiene como única función la de normalizar la probabilidad para que vaya en un rango entre 0 y 1.
\[\hat{y_i} = \underset{C_j}{argmax} \: P(y=C_j|X) \]
donde, \[P(y = C_j|X) \propto \prod_{i=1}^k P(X|y=C_j)P(y=C_j)\]
La predicción de Naive Bayes
corresponde a la clase que entrega [un estimado de] la Probabilidad a Posteriori
más grande.
\[ P(y = Sí|X) = P(C=Soleado|y=Sí)P(T=Media|y=Sí)P(H=Alta|y=Sí)P(V=Débil|y=Sí)P(y=Sí)\]
\[ P(y = No|X) = P(C=Soleado|y=No)P(T=Media|y=No)P(H=Alta|y=No)P(V=Débil|y=No)P(y=No)\]
\[\small P(C = Soleado|y = Sí) = 2/9\] \[\small P(T = Media|y = Sí) = 4/9\]
\[\small P(H = Alta|y = Sí) = 3/9\] \[\small P(V=Débil|y = Sí) = 6/9\]
\[\small P(C = Soleado|y = No) = 3/5\] \[\small P(T = Media|y = No) = 2/5\]
\[\small P(H = Alta|y = No) = 4/5\] \[\small P(V=Débil|y = No) = 2/5\]
\[P(y = Sí) = \frac{9}{14} = 0.642\] \[P(y = No) = \frac{5}{14} = 0.357\]
\[\scriptsize P(y = Sí|X) = P(C=Soleado|y=Sí)P(T=Media|y=Sí)P(H=Alta|y=Sí)P(V=Débil|y=Sí)P(y=Sí)\] \[\small P(y = Sí|X) = \frac{2}{9} \cdot \frac{4}{9} \cdot \frac{3}{9} \cdot \frac{6}{9} \cdot \frac{9}{14} = 0.0141\]
\[\scriptsize P(y = No|X) = P(C=Soleado|y=No)P(T=Media|y=No)P(H=Alta|y=No)P(V=Débil|y=No)P(y=No)\] \[\small P(y = No|X) = \frac{3}{5} \cdot \frac{2}{5} \cdot \frac{4}{5} \cdot \frac{2}{5} \cdot \frac{5}{14} = 0.0274\]
\[\hat{y} = argmax \{0.0141, 0.0274\} = No\]
Supongamos otro dataset más pequeño:
Dado que Naive Bayes
se calcula como una Productoria, al tener probabilidades 0 inmediatamente la Probabilidad a Posteriori es 0.
\[ P(Clima = Soleado|y = Sí) = \frac{0}{6}\] \[ P(Clima = Soleado|y = No) = \frac{5}{8}\]
\[P(X_j|C = i) = \frac{N_{yj} + \alpha}{N_y + M\alpha}\]
En este caso \(\alpha = 1\) y \(M=3\) ya que Clima puede tomar 3 valores: Soleado, Cubierto y Lluvia.
\[P(humedad=74|y = Sí) = \frac{1}{\sqrt{2\pi \cdot 10.2^2}}e^{-\frac{(74-79.1)^2}{2\cdot 10.2^2}} = 0.0345 \]
\[P(humedad=74|y = No) = \frac{1}{\sqrt{2\pi \cdot 9.7^2}}e^{-\frac{(74-86.2)^2}{2\cdot 9.7^2}} = 0.01865 \]
Luego la predicción es Sí.
Fortalezas
Debilidades
from sklearn.naive_bayes import MultinomialNB
nb = MultinomialNB(alpha = 1)
nb.fit(X_train, y_train)
y_pred = nb.predict(X_test)
y_proba = nb.predict_proba(X_test)