- Teorema de Bayes
- Estmicación de parámetros
- Estimador de máxima verosimilitud(MLE)
- Máximo a posteriori (MAP)
Son efectivoss en una gran cantidad de casos.
- Tipo de método: Supervisado
- Supuestos: Ejemplos de entrenamiento son representativos
- Los datos provienen de un proceso que no es totalmente conocido
- Nosotros lo modelamos como un proceso estocástico
- Por ejemplo: los datos son resultados de volados, los datos son precios de una acción
- Gracias a que no tenemos toda la información necesaria para descubrir el proceso determinista que lo rige, definimos una variable aleatoria X que pude tomar distintos valores
- Águila o Sol en el caso de los volados
- Un número real positivo para las acciones
- Deseamos encontrar la probabilidad P(X=valor)
- En el caso de los volados supongamos que P(X=aguila) =po
- ¿Qué en P(X=sol)?
- ¿Cómo calculamos po?
- Lo estimamos de una muestra de tamaño N (ejemplos de aprendizaje): p^o=número de aguilas/N
- Estimar frecuencias
- Calcular probabilidades
- Usar regla de Bayes
- Para calcular arg maxC {Pr(C|A1 . . .An)}: repasamos la regla de Bayes y la aplicamos,
- Pr(C|A1 . . .An) = Pr(A1 . . .An|C) ∗ Pr(C)/Pr(A1 . . .An)
- El divisor es el mismo para todos los valores de C, por lo cual para encontrar el valor de C que maximiza la probabilidad podemos prescindir de la división.
- Y ahora suponemos independencia (condicionada a la clase).
- Pr(A1 . . .An|C) ∗ Pr(C) = Pr(A1|C) ∗ . . . ∗ Pr(An|C) ∗ Pr(C)
- Ejemplo:
- Supongamos ahora que lo que tenemos es una base de datos de clientes de un banco y deseamos un modelo para determinar si un cliente nuevo es de alto o bajo riesgo para un préstamo
- Supongamos que las variables de interés son la ingreso mensual y su saldo actual
- Lo que queremos calcular es P(C|X1,X2)
- Donde C puede ser alto o bajo riesgo y X1 es el valor del ingreso mensual y X2 el saldo actual
- De esta manera podemos definir que un cliente es de alto riesgo si P(C=alto|ingreso_cliente, saldo_cliente)>=0.2
- En este caso es la probabilidad de que el cliente sea de alto riesgo dado que ya observamos su ingreso y saldo P(C|X1,X2) es la probabilidad posterior
| Ingreso | Saldo | Clase |
|---|---|---|
| 20 | 10 | alto |
| 30 | 40 | bajo |
| 30 | 10 | alto |
| 10 | 30 | bajo |
| 20 | 10 | alto |
| 20 | 10 | bajo |
| 20 | 05 | alto |
Queremos predecir
| Ingreso | Saldo | Clase |
|---|---|---|
| 20 | 10 | ? |
| 30 | 40 | ? |
| 20 | 05 | ? |
-
P(C | Ingreso, Saldo) = P( C )*P(Ingreso,Saldo|C) / P(Ingreso,Saldo)
-
N = 7
-
Paso 1 - Obtener la Probabilidad de la clase
- Pr(C=alto)= 4/7 y Pr(C=bajo)= 3/7, la suma debe ser 1.
-
Paso 2 - Obtener la Probabilidad de las variables, dada la clase.
- Ingreso=20,Saldo=10:
- Pr(Ingreso=20,Saldo=10|c=alto)=2/4
- Pr(X1=20,X2=10|C=bajo)= 1/4
- Ingreso=30,Saldo=40:
- Pr(Ingreso=30,Saldo=40|c=alto)=0/4
- Pr(Ingreso=30,Saldo=40|C=bajo)= 1/3
- Ingreso=20,Saldo=5:
- Pr(Ingreso=20,Saldo=5|c=alto)=1/4
- Pr(Ingreso=20,Saldo=5|C=bajo)= 0/3
- Ingreso=20,Saldo=10:
-
Paso 3 - Obtener la Probabilidad total
- Pr(Ingreso=20, Saldo|C=alto=10) + Pr(Ingreso=20, Saldo=10|C=bajo)=(4/7)(2/4) + (3/7)(1/3) = 0.428571429
- Pr(Ingreso=30, Saldo|C=alto=40) + Pr(Ingreso=30, Saldo=40|C=bajo)=(4/7)(0) + (3/7)(1/3) = 0.142857143
- Pr(Ingreso=20, Saldo|C=alto=5) + Pr(Ingreso=20, Saldo=5|C=bajo)=(4/7)(1/4) + (3/7)(0) = 0.142857143
-
Paso 4 - Aplicando la fórmula P(C | Ingreso, Saldo) = P( C )*P(Ingreso,Saldo|C) / P(Ingreso,Saldo), seleccionamos el argumento máximo para cada caso.
- Ingreso=20,Saldo=10:
- ** P(C=alto|Ingreso=20, Saldo=10) = (4/7)(2/4)/(4/7)(2/4)+(3/7)(1/3)= 0.666666667**
- P(C=bajo|Ingreso=20, Saldo=10) = (3/7)(1/3)/(4/7)(2/4)+(3/7)(1/3)= 0.333333333
- Ingreso=30,Saldo=40:
- P(C=alto|Ingreso=30, Saldo=40) = (4/7)(0/4)/(4/7)(0/4)+(3/7)(1/3)= 0
- ** P(C=bajo|Ingreso=30, Saldo=40) = (3/7)(1/3)/(4/7)(0/4)+(3/7)(1/3)= 1**
- Ingreso=20,Saldo=5:
- ** P(C=alto|Ingreso=20, Saldo=5) = (4/7)(1/4)/(4/7)(1/4)+(3/7)(0/3)= 1**
- P(C=bajo|Ingreso=20, Saldo=5) = (3/7)(1/3)/(4/7)(0/4)+(3/7)(1/3)= 0
- Ingreso=20,Saldo=10:
El resultado sería:
| Ingreso | Saldo | Clase |
|---|---|---|
| 20 | 10 | alto |
| 30 | 40 | bajo |
| 20 | 05 | alto |
- Película "Rosencrantz y Guildenstern han muerto"
- En la escena que abre la película, Rosencrantz va lanzando monedas al aire.
- Si sale cara, la pierde y se la lleva Guildenstern; de lo contrario, se supone que recibe una moneda de Guildenstern.
- Lleva lanzadas noventa y una. Todas han salido cara (y, por tanto, se las ha llevado Guildenstern).
- A la próxima vez, la probabilidad de cruz es mayor, ¿no? Pues, de hecho. . . ¡no!
- ¡Son eventos independientes!
- La paradoja de Monty Hall (Catafixia de Chabelo)
- Se supone que todos los participantes en el juego conocen las reglas.
- Detrás de una de las tres puertas está el coche; tú eliges una puerta.
- Chabelo abre una puerta distinta de la elegida, y te muestra que el coche no está tras ella.
- Y te pregunta: ¿seguro que no quieres cambiar?
- ¿Es mejor cambiar? ¿es mejor mantener la elección? ¿da igual?
- ¡Para que el problema esté bien planteado hemos de acordar qué significa "mejor"!
- La paradoja de Simpson
- Supongamos que las encuestas nos dicen:
- En la provincia de C´aceres, los vegetarianos son menos propensos a tener ojeras que los no vegetarianos;
- Y que en la provincia de Badajoz, los vegetarianos también son menos propensos a tener ojeras que los no vegetarianos.
- Podemos deducir que esa correlaci´on se da en toda Extremadura,¿no?
- ¡Error! Es posible que, en la población conjunta, la ratio vaya a la inversa.
-
Supuesto:
- Las probabilidades de clase son independientes.
- Supone que todos los atributos son independientes conocida la variable clase.
-
Dificultades del método:
- El número de ejemplos necesarios crece muy rápido con el número de atributos
- No esta definido para atributos que no se encuentran en el conjunto de entrenamiento.
- La estimación de probabilidad que se mencionó no sirve para variables contínuas
Tomando el ejemplo anterior, qué pasaría si además de Ingreso y Saldo, ¿tuviéramos más atributos?, probabilidad de la clase la calcularíamos como:
- Pr(C=alto|X1...Xn)=Pr(C=alto)Pr(X1|C=alto)....Pr(Xn|C=alto)
- Asumiendo independencia condicional
- Pr(C=alto|X1...Xn)=Pr(C=alto)∏Pr(Xi|C=alto)
- Ejemplo:
- P(C=alto|Ingreso=30, Saldo=5)= Pr(C=alto)Pr(Ingreso=30|C=alto)Pr(Saldo=5|C=alto)= (4/7)(1/4)(1/4)=0.03571429
- P(C=bajo|Ingreso=30, Saldo=5)= Pr(C=bajo)Pr(Ingreso=30|C=bajo)Pr(Saldo=5|C=bajo)= (3/7)(1/3)(0)=0
- P(C=alto|Ingreso=20, Saldo=10)= Pr(C=alto)Pr(Ingreso=20|C=alto)Pr(Saldo=10|C=alto)= 0.3214286
- P(C=bajo|Ingreso=20, Saldo=10)= Pr(C=bajo)Pr(Ingreso=20|C=bajo)Pr(Saldo=10|C=bajo)= (3/7)(1/3)(1/3)=0.04761905
Algunos valores no existen en el set de datos actual, por lo que su probabilidad nos da 0, para mitigar este punto usamos el Suavizamiento de Laplace:
+ Sumar un término en el numerador y en el denominador
+ P^(C)= (|C|+1)/(numdatos + numCat)
- donde C es una categoría y |C| es el número de datos con categoría C.
- Ejemplo:
+ P(C=alto)= 4 + 1 / 7 + 1 * 2 =0.5556
+ P(C=bajo)= 3 + 1 / 7 + 1 * 2= 0.4444
+ P^(x|C)= (1+|x^C|)/(|C|+unique(C))
- donde |x^C| es el número de veces que x tiene una categoría C y unique(C) es el número de datos diferentes con categoría C.
- Para clasificar un nuevo valor
- C^<-arg max P(C=alto)=Pr(C=alto)∏Pr(Xi_nuevo|C=alto)
- Se utiliza para valores continuos.
- Supone que los datos se distribuyen de acuerdo a una distribución, en base a esto calculamos las probabilidades de clase, generalmente se utiliza la normal.
- Se utiliza la función de densidad.
- No da una probabilidad, recordemos que la probabilidad de una variable continua es 0 por definición.
- Lo que nos da es la altura de la función en un punto, para calcular las probabilidades necistaríamos definir una base(para aproximar base * altura)
- Ejemplo de clasificación de spam de una base de datos de correos.
- Paso 1 - Obtenemos la media (p) y la desviación estándar(st) de los datos.
- Paso 2 - Recordemos que suponemos independiencia condicional, Pr(C=Spam|A1...An)=Pr(C=Spa,)∏Pr(Xi|C=alto), pero es mucho mas fácil para la computadora(y para nosotros) utilizar logaritmo, por que aplicando logaritmo la multiplicación se convierte en sumatoria:
- Pr(C=Spam|A1, A2,...,An)= Log(C=Spam) + ∑log(Pr(Ai|C=Spam))
- Pr(C= NoSpam|A1, A2,...,An)= Log(C=NoSpam) + ∑log(Pr(Ai|C=NoSpam))
- Paso 3 - Para predecir si es Spam o no, nos falta utilizamos la función de densidad de la normal para realizar el cálculo:
- Pr(X|C) = arg max Log(C) + ∑log( fd_normal( p,st, Pr(Ai|C))