Mostrando entradas con la etiqueta matemática. Mostrar todas las entradas
Mostrando entradas con la etiqueta matemática. Mostrar todas las entradas

domingo, 5 de octubre de 2014

ML VII Modelos gráficos probabilísticos, Redes Bayesianas

Bueno, hasta ahora hemos visto 101 diapositivas en 5 artículos, lo cual indica mas o menos 20 diapositivas por artículo, espero sus comentarios para saber si quieren más resumido o más extenso el contenido.

La probabilidad nos ha acompañado al largo de todo el curso mediante fórmulas pero una forma de representarla es también gráficamente.

Una gráfica de modelo probabilístico es una representación esquemática de una distribución de probabilidad. 
En un modelo gráfico, las variables aleatorias se representan como nodos y las dependencias estadísticas se representan utilizando los enlaces entre los nodos. 
El gráfico resultante puede tener las siguientes propiedades: 
• Cíclico / Acíclico 
• Dirigida / No Dirigido 
• Los gráficos más simples son los gráficos acíclicos dirigidos(DAG).

Ejemplo:
Dado 3 variables aleatorias, y su probabilidad conjunta: p(a,b,c)=p(c|a,b)p(a,b)=p(c|a,b)p(b|a)p(a)
Redes Bayesianas

Un modelo basado en DAG es una red bayesiana.
En general con K variables aleatorias se podría tener una distribución conjunta de probabilidad: 
p(x1,...,xK)=p(xK|x1,..xK-1)....p(x2|x1)p(x1)
Esto lleva a un gráfico completamente conectado. 
• Nota: El orden de los nodos en un gráfico totalmente conectado es arbitrario. 
Todos ellos representan la distribución de probabilidad conjunta:
p(a,b,c)=p(a|b,c)p(b|c)p(c)
p(a,b,c)=p(b|a,c)p(a|c)p(c)
...
etc
La independencia estadística se puede representar por la ausencia de bordes. Esto hace los cálculos eficientes.
Recordemos (son 4 meses de demora ;-D): Dos variables son independientes si  

 Y por tanto al usar el teorema de Bayes:

Además dos variables con condicionalmente independientes si:
 Que es equivalente a:
Cos estos conceptos en cuenta veamos unos ejemplos usando gráficos:

Ejemplo 1
El siguiente gráfico representa :

 Al marginalizar a c:
Se tiene que a y b no son independientes.

Si suponemos que se conoce c, se tiene lo siguiente:
Por tanto a y  b, son condicionalmente independientes con respecto a c, y se dice que c es un nodo cola a cola (tail-to-tail node) en el trayecto entre a y b 

 Ejemplo 2
El siguiente dibujo representa:
Al marginalizar a c:

 Se tiene que a y b no son independientes.

 Si suponemos que se conoce c, se tiene lo siguiente:

Por tanto de nuevo a y b son condicionalmente independientes con respecto a c. Y a c se le llama nodo de cabeSe tiene que a y b no son independientes.
Siguiendo el mismo procedimiento marginalizando c se tiene que a es independiente de b.
Si se concidera que se conoce c:
Se tiene que a y b no son condicionalmente independientes de c. Además a c se le conoce como nodo cabeza a cabeza (head-to-head node).

Con estos ejemplos es claro ver como con los enlaces entre nodos y la dirección entre ellos, además de saber si el nodo intermedio corresponde a una variable conocida o no, se puede saber si existe o no independencia entre las variables.






domingo, 1 de junio de 2014

ML V: Regularización y Regresión Lineal Bayesiana

Regularización
En el artículo anterior obtuvimos la función de regresión entre dos variables, que es un modelo matemático para el conjunto de datos dados, sin embargo se puede encontrar parámetros muy grandes por lo que es necesario agregar un factor de regularización llegando a obtener el siguiente problema:

Cuya solución al aplicar el gradiente para minimizar el error es:

Ahora debemos encontrar el parámetro lambda adecuado, pero antes observemos como afecta la variación de este parámetro:
Ahora con el uso de probabilidades encontraremos cual es el lambda adecuado, en la siguiente gráfica se observa como y en x1 esta efectado por ruido gaussiano, tal que la probabilidad de que se mida el dato t en es punto es:
Que se lee como: probabilidad de que sea t dado x,w y sigma (desviación estándar)  es igual a una distribucion normal de la variable t con media en y(x,w), que es la función de regresión, y varianza igual a sigma al cuadrado

Recordando el planteamiento del problema de regresión donde teníamos de datos los puntos dados (x1,t1), (x2,t2), ..., (xN,tN). Asumiendo que las probabilidades en cada punto son independientes se tiene:

Ahora aplicaremos logaritmos para pasar de las multiplicaciones a una sumatoria
Ahora asumamos una distribución gaussiana prior, o anterior , con distinta varianza y media 0, y podemos obtener una probabilidad posterior, la cual debemos maximizar.

Usando Bayes tenemos:
Donde el denominador por ser una integral con respecto a w, termina por no depender de w. Por eso maximizamos solo el numerador. Para pasar de la multiplicación a una suma volvemos a usar el logaritmo obteniendo al final:
Que es similar a la primera ecuación de este artículo, por tanto para obtener la Estimación Máxima a Posteriori (MAP ) debemos hacer lambda igual a la división de las varianzas.

Regresión Lineal Bayesiana
Usando MAP podemos encontrar ya parámetros adecuado pero que pasa si los datos son secuenciales, debemos buscar la manera de encontrar la probabilidad de un nuevo punto dados los puntos antiguos, a esto se llama la distribución predictiva:

   Esto se debe aplicar recursivamente tantas veces como nuevos puntos aparezcan.
Veamos un ejemplo, supongamos que tenemos y=-0.3+0.5x, e inicialmente varianza1=0.4 y varianza2=0.5.
Al principio sin ningún punto observado se tiene a priori:
El espacio de Hough se obtiene de una transformada que permite conocer si existe lineas rectas en el espacio de datos.

Al conocer el primer dato se tiene:
Al conocer el segundo dato:
Y así se va acercando cada vez mas a medida que se toman más datos, así con 20 datos:


Obtenemos la distribución predictiva integrando sobre todos los posibles parámetros del modelo:

La probabilidad a posterior puede encontrarse:

Donde Prior cov: Covarianza de la probabilidad a priori y Prior mean: media de la probabilidad a priori.
Podemos realizar un programa pero es mejor observar los resultados gráficamente:



Al igual que en el ejemplo anterior al agregar mas datos el modelo se vuelve más cercano al esperado.

Si bien una imagen vale más que mil palabras, a veces es más esclarecedor un ejemplo con palabras:

Imaginen que les presentan una foto, antes de verla les han dicho que lo que hay en  la foto es un animal.
Una vez que la ven, observan que tiene cuatro patas, es peludo y posee cola.
Luego les presenta otra foto de un animal de la misma especie, misma raza, ahora relacionan la características del animal de la foto anterior con las del animal de la nueva foto, por ejemplo el pelaje es café y los ojos y nariz son negros en ambos pero el uno es más pequeño y posee pelaje más corto.
Luego les presenta unas foto de un animal de la misma especie, pero diferente raza, si bien ahora hay más diferencias las semejanzas siguen siendo más numerosas, como orejas largas y hocico un tanto alargado.
Luego de muchas fotos más pueden reconocer un perro, no sabíamos que era un perro al inicio, sin problema de otra foto de un animal de otra especie.

Es lo que hemos estado realizando con la regresión bayesiana, con cada nuevo dato tenemos un modelo más reducido y por tanto reconocemos o clasificamos mejor nuevos datos que obtengamos. 

Además y para terminar:
Un modelo que se ha encontrado con el uso de regresión puede ser evaluado de diferentes maneras.
Esto se puede utilizar para ajustar los parámetros del modelo como el uso de un conjunto de datos de validación
La Regresión Lineal Bayesiana opera en datos secuenciales y proporciona la distribución predictiva.
Cuando se utiliza priores gaussianos (y ruido gaussiano), todos los cálculos se pueden hacer analíticamente, como todas las probabilidades siguen siendo gaussianas

lunes, 19 de mayo de 2014

ML IV: Regresión o Ajuste

Diferencias entre Regresión y Clasificación:
• En la regresión, Y, la variable dada a las clases, es continua, en la clasificación es discreta 
• La regresión aprende una función, la clasificación normalmente aprende etiquetas de clase. 
Por ahora vamos a tratar de regresión.

Funciones de Base: 
En principio, los elementos de X pueden ser cualquier cosa (por ejemplo, números reales, gráficos, objetos 3D). Para poder tratar estos objetos matemáticamente necesitamos funciones que asignen un número real a partir de X. Llamamos a estas las funciones de base. 
También podemos interpretar las funciones de base como las funciones que extraen las características de los datos de entrada. Estas características reflejan las propiedades de los objetos (anchura, altura, etc.)

El problema de regresión lineal puede ser planteado como sigue:
Asumir que X pertenece a los números Reales, Y pertenece a los números Reales también, la función Ø es la identidad (I)
Dados: Puntos de datos (x1,t1); (x2,t2), ...
Objetivo: Predecir el  valor de t para una nueva muestra de x.
Formulación Paramétrica: y(x,w)=w0+w1x

Para llegar al objetivo podemos usar el error cometido (líneas verdes) entre el valor predicho al evaluar la función (línea negra) y el valor de un punto dado(puntos rojos). 
Si usamos la suma de todos esos errores sin importar el signo (puesto que hay puntos arriba y abajo de la línea) basta con conocer cuales w0 y w1 minimizan dicho error, logrando que el valor predicho tenga poco error 
A la siguiente función de error se le llama suma de error cuadrático medio:
Como el error es elevado al cuadrado y se busca minimizarlo a este método se le conoce como mínimos cuadrados. La manera en que se halla el mínimo de una función es derivándola, como w =[w0 w1] es decir no es una variable única si no varias se utiliza el operador de gradiente (triángulo invertido) que deriva la función para cada variable quedando de resultado otro vector.
Con estas dos ecuaciones es posible llegar al resultado, veamos con un programa en Scilab, usando la formula resultante:
Primero daremos puntos cercanos a una recta conocida, luego calcularemos w aplicando la función linsolve(A,b) que resuelve el problema de álgebra lineal Ax+b=0. Pondremos todo dentro de una función reglineal(x,t), que recibe como datos los puntos y devuelve w y la gráfica de los puntos y la recta encontrada.
En un archivo nuevo en SciNotes copia y guarda como reglineal.sci

//Función que realiza la regresión lineal de los puntos dados
//x: es un arreglo(vector) unidimensional correspondiente a la variable x.             Arreglo(float)
//t: es un arreglo(vector) unidimensional correspondiente a la variable t.             Arreglo(float)
//w: Son los coeficiente de la funci[on lineal. Arreglo(float)
function w = reglineal(x, t )
  xi=[ones(1,length(x));x];
  A=(xi*xi')'//la comilla simple significa transponer o el superindice T de las ecuaciones
  b=(t*xi')';
  w=linsolve(A,-b);//Es -b pues tiene que volver del otro lado del igual
  y=w'*xi;
  figure();
  plot(x,t,'or'); //La 'o' hace que se dibujen solo los puntos, la 'r' que sean rojos.
  plot(x,y,'k'); //la 'k' hace negra la linea.
endfunction     

En otro archivo o copiando directamente en la interfaz de comandos pon:

clc
x=[0 1 2 3 4 5 6 7 8 9];
t=[3 8 13 18 23 28 33 38 43 48];
w=reglineal(x,t);
disp(w, "Los coeficientes w resultaron");
//El resultado debe ser [3 5], es decir y=3+5*x.
////Ahora observemos que pasa al ingresar las varibles en otro orden
//Se espera  la misma expresion despejando x=-3/5+1/5*y= -0.6+0.2y
w1=reglineal(t,x);
disp(w1, "Los coeficientes al invertir las variables son ");
//por ultimo ingresemos valores no exactos para ver a que se aproxima
xh=[0 1 2 3 4 5 6 7 8 9];
th=[4 6.5 11.7 16 25 28.5 32 37.8 44 48.1];
w2=reglineal(xh,th);
disp(w2, "Los coeficientes ahora son son ");
w3=reglineal(th,xh);
disp(w3, "Los coeficientes al invertir las nuevas varibles son ");
//Ahora observemos como no necesariamente se llega al mismo resultado al ingresar las variables en otro orden
 //Se espera x=-0.473140+0.1961017y 


El problema de regresión polinómica se plantea como sigue:
Asumir que X pertenece a los números Reales, Y pertenece a los números Reales también, la función Øj es x elevado a la j.
Dados: Puntos de datos (x1,t1); (x2,t2), ..., (xN,tN)
Objetivo: Predecir el  valor de t para una nueva muestra de x.
 La función paramétrica se muestra en la figura, donde M es la complejidad dado que indica el  número de coeficientes de y.
Al poner y(x,w) con notación vectorial, considerando Ø(x) también como un vector:
Al igual que en el caso anterior se debe minimizar E(w), pero ahora no son solo dos variables sino N variables.
Al final queda:
Con:
Realizemos el siguiente ejercicio en Scilab:
Copia la siguiente función y guarda como regpolinomial.sci

//Función que realiza la regresión polinomial de los puntos dados
//x: es un arreglo(vector) unidimensional correspondiente a la variable x.             Arreglo(float)
//t: es un arreglo(vector) unidimensional correspondiente a la variable t.             Arreglo(float)
//m: es la complejidad del polinomio, m-1 es el grado 
//w: Son los coeficientes del polinomio. Arreglo(float)
function w = regpolinomial(x, t ,m)
    for i=1:length(x)
        for j=1:m
            phi(i,j)= x(i)^(j-1);
        end
    end
  A=phi'*phi
  b=phi'*t';
  w=linsolve(A,-b);//Es -b pues tiene que volver del otro lado del igual
  y=w'*phi';
  figure();
  plot(x,t,'or'); //La 'o' hace que se dibujen solo los puntos, la 'r' que sean rojos.
  plot(x,y,'k'); //la 'k' hace negra la linea.
endfunction    

Copia el siguiente código en un archivo o directamente en la interfaz de comandos:
clc
//Datos aleatorios
x=[0 1 2 3 4 5 6 7 8 9];
t=[2 13 20 53 78 83 98 103 128 125];
m=4;
w=regpolinomial(x,t,m);
disp(w, "Los coeficientes w con m=3 resultaron ");
w1=regpolinomial(t,x,m);
disp(w1, "Los coeficientes w al invertir el orden de entrada de los puntos esultaron");
m=32; 
w2=regpolinomial(x,t,m);
disp(w2, "Los coeficientes w con m=32 resultaron");
w3=regpolinomial(t,x,m);
disp(w3, "Los coeficientes w con m=32 al invertir el orden de entrada de los puntos resultaron");

En las diapositivas también encontramos este ejemplo:
En las primeras 4 gráficas se observa los resultados al aumentar la complejidad, al igual que en nuestro ejercicio en Scilab, es evidente que aumentar la complejidad no necesariamente ayuda a obtener un mejor ajuste, puede empeorar o producir sobreajuste (N=10, M=10), por el contrario en las 4 gráficas siguientes se observa como el añadir puntos de datos si mejora el ajuste obtenido. 

Se puede usar otras funciones base, como la gaussiana 

 Y la sigmoidal:
Como se aprecia en todas las figuras la complejidad de la regresión debe llegar a ser la adecuada par obtener un buen resultado y debido a que el número de datos disponibles generalmente es fijo se debe hallar cual debe ser ese nivel de complejidad .