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)