Mostrando entradas con la etiqueta educación. Mostrar todas las entradas
Mostrando entradas con la etiqueta educación. Mostrar todas las entradas

domingo, 4 de mayo de 2014

Aprendizaje Automático: Machine Learning

Después de presentados 6 artículos (I, II, III , IV, V, VI) sobre modelos matemáticos es hora de presentar un caso práctico de actualidad que demuestre la capacidad de los mismos.

Que una computadora pase de llenar un piso entero de un edificio a caber en tu bolsillo es algo que sorprende, sin embargo la robótica y la inteligencia artificial promete pronto tenerla caminando a tu lado, reconociendo el entorno, interactuando contigo y respondiendo a tus preguntas como si de un ser inteligente y "sabiondo" se tratará. 
¿Cómo se consigue esto? Pues lo siento no es con magia, es con mucha matemática y algoritmos complejos, sobre todo probabilidad e inteligencia artificial. 

Gracias a Marco Gutama que recomendó este curso en edX sobre cuadricópteros y su navegación autónoma: 



Se encontró en la página del grupo de investigación de la Universidad Técnica de Munich en Visión por Computadora el curso:

En la página del curso (link de arriba) podrán encontrar las lecturas correspondientes y los vídeos de los profesores que imparten esta clase en inglés. Por cierto las lecturas y vídeos del cuadricóptero también las encuentran aquí.

Sin embargo si prefieren una versión resumida (o más extensa según el tópico) y en español no duden en seguir los siguientes artículos de este blog. 
Además se ofreció al principio un caso práctico, por lo tanto se usará Scilab y tal vez las mismas prácticas del curso para que no sea simplemente teoría matemática sino una verdadera aventura en el campo de la visión por computadora. 

Finalmente debido a que los autores de este blog pertenecen a la carrera de Ingeniería Electrónica y Telecomunicaciones se espera presentar el trabajo final de la materia Redes Neuronales, que tiene bastante relación con Machine Learning.

Empecemos por dar la lista de los temas a tratarse:
  1. Introducción al Aprendizaje y Razonamiento probabilístico.
  2. Introducción al Aprendizaje.
  3. Regresión o Ajuste.
  4. Modelos Gráficos Probabilísticos a) Métodos Dirigidos y b) Métodos No Dirigidos.
  5. Boosting (Intensificación).
  6. Métodos Kernel.
  7. Procesos Gaussianos a) Regresión y b) Clasificación.
  8. Modelos Mixtos y Maximización de la Esperanza.
  9. Interferencia Variacional.
  10. Métodos de Muestreo.
  11. Cadena de Markov Monte Carlo.
  12. Evaluación y Selección de Modelo.
  13. Agrupamiento.
Y una breve introducción de Scilab:

Scilab es desarrollado por  Inria (French National Institute for Research in Computer Science and Control) bajo la compañía Scilab Enterprises. Es un programa libre y abierto para aplicaciones científicas y de ingeniería. Es una opción frente al muy usado Matlab, que tiene el mismo objetivo, debido a que este último es un software de pago muy costoso.


Tiene una interfaz gráfica desarrollada tanto para Linux, Window y OSX a diferencia de Octave, también libre, que es un software de iguales o mejores características sin embargo su mayor potencial se desarrolla sobre Linux.
El uso de cualquiera de estos programas logra que el desarrollo de algoritmos y simulaciones de modelos matemáticos sea mucho más rápido que en un lenguaje de programación tradicional como C, al costo de disminuir la eficiencia en la ejecución de los mismos, usando más memoria y demorando más en obtener los resultados finales. Sin embargo como el objetivo de este curso tampoco es llegar a simular cosas demasiado complejas viene bien usar este software ahorrando tiempo en el desarrollo y haciendo cualquier otra actividad hasta que el resultado aparezca en pantalla. Que esperas para descargarlo e instalarlo.


domingo, 28 de abril de 2013

Modelos Matemáticos I: El principio

Los modelos matemáticos no son personas dedicadas a la matemática vistiendo ropa de moda, no.
Son ecuaciones que describen un fenómeno (hecho real), tan detallado o simplificado como se quiera o necesite.
Para lo cual se puede usar cualquier tipo de ecuación (así mismo sencilla o complicada), dependiendo claro del hecho que se quiere representar.

Los ejemplo más fáciles son el planteamiento de un problema de álgebra.

Uno de los problemas mas comunes de la vida diaria, es el dar el vuelto (cambio) tras una compra.

Vuelto = Dinero Entregado - Precio, donde lo que se quiere encontrar es el vuelto a entregar, teniendo conocimiento de los otros dos datos. Bastante intuitivo pero puede hacerse un análisis de dicha ecuación.
El vuelto es menos, sí el precio sube o se paga con menos dinero.
El vuelto es más, sí el precio baja o se paga con mucho más dinero.
El vuelto ideal es cero, porque significa que se ha entregado la cantidad exacta del precio en dinero, lo que quiere decir que no se necesitan más monedas ni más billetes para que la compra se haga efectiva.

Considerando que se compra una libra de arroz, a 55 centavos o lo que es lo mismo 0,55 dólares.
Cantidad que se puede lograr de muchas maneras:
55 monedas de 1 centavo.
11 monedas de 5 centavos.
5 monedas de 10 centavos y 1 de 5 centavos.
2 monedas de 25 centavos y 1 de 5 centavos.
1 moneda de 50 centavos y 1 de 5 centavos.
Lo cierto es que como máximo puede usar 55 monedas y como mínimo entregar 2 monedas.

Pero para realizar la compra se entrega una moneda o billete de 1 dólar, usando la fórmula anterior:

 Vuelto=1-0,55=0,45 dólares o que es lo mismo 45 centavos. 

El vendedor puede entregárselos al comprador de distintas maneras:
45 monedas de 1 centavo.
9 monedas de 5 centavos
4 monedas de 10 centavos y 1 de 5 centavos.
1 moneda de 25 centavos y 2 monedas de 10 centavos.
Y muchísimas combinaciones más, lo cierto es que como máximo ocuparía 45 monedas y como mínimo ocuparía 3 monedas. Al final de la compra, entregado la libra de arroz y el vuelto correcto, tanto comprador como vendedor quedan contentos. 
El que no queda contento es la entidad encargada de emitir dinero. Para realizar la compra como máximo se necesitan 55 monedas, mínimo 2; en el ejemplo se realizó con un máximo de 46 monedas y un mínimo de 4 monedas, pero el problema no es tanto la cantidad de monedas y lo que cuesta elaborar cada una, si no el flujo de dinero, se usaron 1,45 dólares para transferir un bien de 0,55 dólares, desde otro punto de vista se usaron 0,90 dólares más que debieron salir de alguna otra actividad productiva.
Esto nos dice que para poder pagar con cualquier moneda o billete de cualquier valor y recibir vuelto necesitamos de otras actividades (trabajos) tanto por parte del vendedor como del comprador, pues ambos tienen inicialmente y en partes iguales (0,90/2=0,45) más dinero aparte del arroz y el dinero que es necesario para comprarlo.

Esto comprueba en parte que el vuelto ideal es cero, pero la importancia de que el vuelto sea cero se puede encontrar en sistemas de control donde dada una entrada (Dinero Entregado) y un valor de referencia (Precio), la diferencia (resta) entre estas debe ser cero (nula) para decir que se ha hecho un control efectivo. 

Ejemplo: Se quiere mantener la velocidad de un carro en 60 Km/h, el tacómetro nos indica la velocidad, si es menor se presiona el acelerador, si es mayor se aplasta el freno; así continuamente para que la velocidad sea la más próxima posible a los 60Km/h.   

Ahora un ejemplo de dos variables y con datos desconocidos al principio pero que pueden aproximarse o condicionarlos según el interés:

Pepe es capaz de sembrar 1000 m2 de terreno en un día, Juan es capaz de plantar en 800 m2 en un día. Si se necesita sembrar 12600 m2 de terreno y el sueldo de Juan es $30 el día y el sueldo de Pepe es $40 el día. ¿Cuántos días debe trabajar cada uno? y ¿Cuánto hay que pagar en total?, tomando en cuenta que trabajan simultáneamente y que reciben el mismo sueldo tanto si trabajan medio día o un día entero (no viven  cerca o alguna otra circunstancia).
Primero hay que recoger los datos del problema y seleccionar las variables (cantidades) que nos sirven de respuestas.
Sean:
SP=40 ;sueldo de Pepe
SJ=30 ;sueldo de Juan
Tt =1260 ;terreno que debe sembrarse
TP=100 ;terreno por día de Juan
TJ=80 ;terreno por día de Pepe
DP=? ; días trabajados por Pepe
DJ=? ;días trabajados por Juan
PP=? ;pago a Pepe
PJ=? ;pago a Juan
PT=PP+PJ ;pago total

Luego hay que dar relación lógica entre los datos y las variables, es donde entran las ecuaciones.
Ya tenemos una PT=PP+PJ
¿Ahora cuánto hay que pagar a Pepe y cuanto a Juan? Pues según los días que trabajaron y su sueldo diario
Tomando a Pepe, si gana $40 en un día, en dos días debería ganar el doble $80 y así sucesivamente, lo que se puede expresar como:
PP=SP x DP = 40 x DP
PJ=SJ x DJ =  30 x DJ
reemplazando en la primera.
PT= 40 x DP + 30 x DJ
Lo que nos falta saber es cuanto es DP y cuanto es DJ, si trabajan hasta completar los 1260 m2 tenemos:
1260 = TP x DP + TJ x DJ = 1000 x DP + 800 x DJ.

Esta última puede representarse mediante un gráfico
Y se pueden tabular los datos:

De la tabla de datos se puede observar que:
1) Solo existen tres combinaciones de días enteros entre DP y DJ, estas son 3 y 12; 7 y 7;  11 y 2.
Lo cual es importante pues se pagan sueldos por día, en los casos con decimales habría que aproximar u obtener el sueldo proporcional a la porción de día trabajado.
2) A partir de 13 días de DP, los días DJ son negativos, lo que quiere decir que con 13 días trabajando Pepe ya no se necesitaría contratar a Juan. O lo mismo que mientras más días trabaje Pepe menos días trabajara Juan y viceversa.
3) Que con los datos dados existe el resultado 7,7 que implica que con 7 días de trabajo se cumple el objetivo. si no trabajaran simultáneamente, la mejor combinación sería 11,2, ya que sumarían 13 días en total, menos que los 14 que suman 7+7 y los 15 que suman 3+12.

Ahora es fácil, observando la tabla y el gráfico llegar a esas conclusiones, pero es más fácil si se incluyen en el gráfico las restricciones que necesitamos, estas son:
1) Que la respuesta sean enteros. Líneas horizontales y verticales en los números enteros.
2) Que los días no sean negativos y que ambos trabajen. DP>0 DJ>0
3) Que la respuesta sea el menor numero de días de trabajo simultáneo. DP<
Al incluir todo eso se obtiene un gráfico como el siguiente:
Haciendo un acercamiento se observa:

Se ve que las condiciones se encuentran o cortan en un punto, lo cual quiere decir que ese punto es solución.
Ahora que estamos seguros de que lo mejor es 7 DP y 7 DJ, podemos calcular PT
PT= 40 x 7+ 30 x 7 = $490
Teniendo el resultado que buscábamos y que responde a nuestras interrogantes iniciales.
Pero haciendo un análisis de los datos descartados se obtiene que:
Con DP=3 y DJ=12
PT=40 x 3+ 30 x 12= $480

Con DP=11 y DJ=2
PT= 40 x 11 + 30 x 2 = $500


Se observa que con la opción DP=3 y DJ=12 el valor a pagar es menor pero se necesitan 12 días para terminar el trabajo, la primera opción DP=7 y DJ=7 nos hace pagar $10 más pero el trabajo se termina 5 días antes. La última opción no ofrece ninguna mejoría en respecto a las otras dos.


Escoger entre la primera o segunda opción dependen del dinero disponible o del tiempo requerido, condiciones que pueden haberse planteado al inicio del problema, dando como resultado una única respuesta posible.

Concluimos que para obtener una sola respuesta que se adapte mejor a nuestro interés es necesario iniciar con todas las condiciones requeridas, si no se expresan el problema tiene múltiples soluciones.

Esto es útil para la segunda parte de este artículo, donde se analizaran modelos matemáticos con derivadas e integrales, donde dadas las condiciones iniciales la respuesta es una sola.