Nube de Etiquetas
(Ah?)
Mostrando las entradas con la etiqueta Classification. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Classification. Mostrar todas las entradas

lunes, enero 29, 2018

Recursos para aprender Machine Learning

En esta entrada, he querido compartir una serie de recursos que quienes quieren inicarse en el área de Machine Learning podrían encontrar interesantes:

Foros de Reddit:

Artículos de ArXiv

Blogs:

Libros:

Cursos:


viernes, mayo 04, 2012

Enfoques basados en optimización convexa para clasificación de patrones

Tal y como lo comenté anteriormente, el próximo martes 8 de mayo de 2012, en la Sala Carlos Aragone, Edf. FEI-256 (segundo piso), de la Universidad Simón Bolívar (USB), a las 2:30pm se dictará un seminario titulado:

ENFOQUES BASADOS EN OPTIMIZACION CONVEXA
PARA LA CLASIFICACION DE PATRONES

El expositor, el Prof. Orestes Manzanilla (del Dpto. Procesos y Sistemas de la USB)

Resumen

En este seminario se mostrará un enfoque novedoso para resolver un problema específico dentro de las áreas de minería de datos, aprendizaje artificial y reconocimiento de patrones: el de la clasificación de patrones. Este es un problema con diversas aplicaciones, entre las cuales se puede mencionar el apoyo en
prognosis médica, otorgamiento de créditos, categorización de textos, prospección petrolera, detección de patrones de fraude, detección de patrones físicos (sonoros, visuales, etc), análisis de perfiles de expresión genética, ADN y proteínas diversas. Se hará un breve repaso de las técnicas más comunes para la resolución de este problema,  nacidas de la estadística, y de distintos campos de “máquinas de aprendizaje”, algunos de ellos bio-inspirados, indicando brevemente las ventajas y desventajas de cada método.
Se expondrá un grupo de heurísticas basadas en optimización lineal, y lineal entera-mixta para la generación de clasificadores de patrones de tipo no-lineal (pero lineal por partes), que puede representarse tanto como redes neurales artificiales, como árboles de clasificación, explicando las ventajas y  desventajas que comparativamente se observan respecto a los métodos mencionados anteriormente.
Los métodos están orientados hacia la búsqueda de (1) la minimización de la dependencia del “éxito” de la implementación, de la experticia del implementador, cerrando la brecha "tecnológica" que actualmente mantiene a los no-expertos alejados de este tipo de problemas, y (2) la escalabilidad de la técnica, para garantizar su aplicabilidad en bases de datos masivas. Por último, se esboza el posible uso de las  estructuras no-lineales generadas en el espacio multi-dimensional, ya no tanto para la predicción de la categoría o patrón de un nuevo
indivíduo de clase desconocida, sino para la visualización de los patrones en el espacio multi-dimensional.

Palabras claves: Programación lineal, Redes neurales artificiales, Máquinas de Soporte Vectorial, Clasificadores de patrones, Máquinas de aprendizaje.

lunes, abril 04, 2011

Aceptado artículo sobre el uso de programación lineal para la construcción de clasificadores de patrones binarios

Fue aceptado en la revista Decision Support Systems (4ta revista en el ranking de las revistas de Investigación de Operaciones) el siguiente artículo:

García Palomares, U; Manzanilla, Orestes
. "Novel linear programming approach for building a piecewise nonlinear binary classifier with a priori accuracy". DECISION SUPPORT SYSTEMS. 2011. Indexada en el SCIENCE CITATION INDEX.

En este trabajo, el prof. Ubaldo García Palomares y yo hemos diseñado un algoritmo que construye una estrutura no-lineal, pero lineal por partes, que separa la data de entrenamiento de un problema de clasificación, logrando alcanzar, en ese conjunto, una precisión tan alta como se requiera.

En cada iteración, se resuelve un modelo de programación lineal, o un número arbitrariamente pequeño de modelos de programación lineal entera-mixta. Se muestran bondades que permiten el uso de procesamiento paralelo y/o distribuído.

Entre las bondades que presenta el trabajo, al igual que otros algoritmos similares como el Multi-Superficie (MSM) de Olvi Mangasarian, es que requiere de un mínimo de parámetros a utilizar por parte del usuario, haciendo que el resultado de la aplicación del modelo sea poco dependiente de las decisiones de implantación por parte del usuario.

La estructura resultante puede ser evaluada tanto como árbol de clasificación, como red neuronal artificial.

Actualización del 11 de Abril de 2011
Puede descargarse la versión preliminar enviada para la revista Decision Support Systems, en la sección de Reportes Técnicos del CESMa (Centro de Estadística y Software Matemático), correspondiente al año 2011.

lunes, febrero 07, 2011

¡Aprobadas tesis de maestría en I.O. aplicada a Machine Learning!

Orgullosamente felicito a mis dos amigas y tesistas de la maestría en Ingeniería de Sistemas de la USB (opción Investigación de Operaciones), Adriana Torres y Ana Serra, quienes este viernes en la mañana tuvieron sus respectivas defensas, con un jurado integrado por mi persona, como tutor, por el prof. Marcos Raydan, como miembro principal del jurado. Los presidentes del jurado evaluador fueron, respectivamente, Ana María Borges y Hugo Montesinos.

Los nombres de los trabajos de grado son:
  • "Clasificación multicategoría de patrones mediante optimización de multisuperficies" - Adriana Torres
  •  "Algoritmo de Boosting en Métodos Multi-superficies para clasificación binaria" - Ana Serra
Ambas defensas tuvieron lugar en la sala de reuniones del Centro de Estadística y Software Matemático.

Felicidades por un trabajo bien hecho! Es un placer contar con tesistas de ese calibre.

lunes, junio 01, 2009

Charla: Clasificadores multi-superficie con minimización asimétrica de errores


En el contexto del Primer Ciclo de Charlas de los Postgrados en Estadística a realizarse los días jueves de las semanas impares de este trimestre, este jueves 4 de junio de 2009 dictaré esta charla, a las 11:30 am en el edificio MyS oficina 108. Específicamente, se realizará en la sala de seminarios del CESMa-USB.

Las charlas están pensadas para que estudiantes o egresados de nuestros programas compartan resultados o avances de sus trabajos de grado, estimulando el intercambio de ideas entre los participantes.

El tema de mi ponencia, en esta ocasión, versará sobre el uso de heurísticas de optimización, para la generación de un clasificador de patrones (reconocedor de patrones) multi-superficie. Se hablará sobre las Redes Neurales Artificiales de Clasificación Binaria (perceptrones de una capa oculta), Máquinas de Vectores de Soporte (SVMs), y sobre enfoques innovadores en el tratamiento asimétrico de errores de clasificación.

martes, marzo 25, 2008

Usando creyones para entrenar máquinas

Tuve la fortuna de toparme con un post del blog de Greg Linden, en el que se nos muestra un excelente ejemplo de lo que es el Aprendizaje Interactivo aplicado al procesamiento/reconocimiento de imágenes, mostrado por Dan Olsen de la Brigham Young University.

Se trata del uso de una interfaz para el usuario, en la que éste usa herramientas tipo creyón. En uno de los videos, se muestran imágenes donde una mano está sobre un escritorio. Un creyón es utilizado para marcar áreas de la imágen que el usuario quiere indicar que corresponden a piel. Otro es utilizado para marcar áreas de la imágen que el usuario quiere indicar que corresponden al "fondo" (cualquier cosa menos piel).

Una vez la máquina recibe esa información, la analiza, y en base a las características que tenían las áreas marcadas con ambos creyones clasifica el resto de la imágen como "piel" o "fondo". El usuario tiene entonces la oportunidad de usar los creyones para "corregir" los errores que cometió el software, marcando con el creyón "piel" aquellos puntos que la máquina clasificó como "fondo" pero eran "piel". Obviamente también se marca con el creyón ""fondo" aquellos puntos que la máquina clasificó como "piel" pero eran "fondo".

Luego de 4 minutos, el clasificador obtuvo excelentes resultados en otras imágenes donde aparece la mano, en diferentes posiciones, y una última en la que no aparece mano alguna. Siempre con alguno que otro pixel mal clasificado, pero realmente asombroso, a mi modo de ver.

Otro de los videos muestra un uso genial de este tipo de herramientas, para enseñar a un robot a manejar. Se muestran dos imágenes tomadas de la cámara que tiene el robot. En una se usan dos creyones: uno para marcar terreno "seguro", y uno para marcar terreno "inseguro". En esa misma imágen, luego de usar los creyones, se colorea la imágen según la máquina clasifica cada pixel como "seguro" o "inseguro". La otra imágen se usa para manejar al robot, indicándole hacia dónde debe ir.

El usuario, luego de marcar como "inseguro" aquellos lugares que se desea que el robot esquive, y como "seguro" aquellos lugares por los cuales el robot puede andar, le da la instrucción de caminar. En "tiempo real", las imágenes van actualizándose por la entrada de video, y el clasificador las va coloreando, y en base a ello, ajusta la trayectoria del robot. Si en algún lugar del camino, el usuario detecta que el clasificador ha cometido errores, detiene el robot y usa los creyones para corregir, y luego puede continuar.

¿Será que pronto usaremos esto para un rover en la Luna o Marte?

Si es así, ¡ojalá que algún día uno de los modelos matemáticos de clasificación que manden de viaje sea uno mío! Soñar no cuesta nada... ¿eh?

Visíten el post. Está en este URL:
http://glinden.blogspot.com/2007/12/interactive-machine-learning-talk.html

domingo, marzo 23, 2008

¿Qué son las SVM?

Por ahí Alfredo me preguntó qué eran las SVM o Support Vector Machines... y realmente ese debería ser tema obligado para este blog! así que ya es hora de acometer esa tarea.


Una especie de definición

Las SVM (o Máquinas de Vectores de Soporte) son un tipo de Máquinas de Aprendizaje. En particular son de esas que necesitan primero entrenarse con situaciones en las que se les dice la respuesta correcta sobre muchos ejemplos, y una vez ella se ha entrenado, entra en fase de "uso", y simplemente se convierte en una caja que devuelve la respuesta ante un nuevo caso (en pocas palabras, es un método de aprendizaje supervisado).

Quienes inventaron las SV fueron Vladimir Vapnik (una persona orientada hacia la estadística) y sus compañeros de AT&T. El método se basa en el uso de programación matemática, formulada de forma que la interpretación estadística del modelo resulta particularmente apropiada. El modelo está rigurosamente sustentado por las teorías estadísticas de aprendizaje propuestas por Vapnik.


Importancia

¿Qué tienen de particular que las hace famosas? Bueno... desde que fueron inventadas, superaron con creces la eficiencia de los algoritmos antecesores, tanto en tareas de clasificación, como de regresión. Hasta el momento, las SVMs no han sido superadas sino por ellas mismas, con los diferentes ajustes y variaciones que se han venido haciendo.


¿y para qué sirven?

Bueno, los modelos SVM nos servirán para predecir datos, siempre y cuando hayamos entrenado a la máquina. Esta predicción puede ser de varios tipos:
  • predicción de clasificación binaria
  • predicción de clasificación multi-categoría
  • predicción de regresión general.

¿y cómo funcionan?

La forma en que trabaja es muy interesante. Supongamos que tenemos la tarea de realizar predicciones de clasificación binaria (p.e.: tenemos valores de un exámen médico rutinario de una persona, y queremos saber si tiene diabetes o no). Vamos a imaginarnos que los valores recogidos en el exámen son sólo 2, en lugar de sopotocientos. Cada paciente que efectivamente tiene diabetes lo podemos poner en un plano cartesiando (donde cada eje es uno de los dos valores que recoge el exámen médico). Colocamos a los pacientes que efectivamente tenían diabetes como círculos negros en el plano en las coordenadas que corresponden a cada uno de ellos (según sus resultados de exámen), y a los que no tenían diabetes, como rombos de centro blanco. Vamos a tener algo así:
las SVM encuentran una "superficie" que intenta separar los ejemplos negativos y positivos con el margen más grande posible a ambos lados del hiperplano. En este caso, bi-dimencional, la "superficie" sería una línea. En un caso 3D (tres atributos para cada paciente) sería un plano. En un caso de más de 3 dimensiones, sería un hiper-plano o hiper-superficie con el número apropiado de variables.

Hay muchas formas de hacer esto, propuestas por métodos estadísticos, por la gente de redes neurales, por la gente de optimización, etcétera. Lo que distingue a las SVMs es que el hiper-plano resultante se consigue logrando, como dije antes, que el margen que separa los datos es el mayor posible.


...entendiendo lo del margen, o ¿por qué lejos es mejor?

¿Y qué es eso de "margen"? Bueno, primero acudamos a la intuición, y luego definiré la palabra "margen" en este contexto. Para los datos que tenemos en el ejemplo, podríamos tener varias posibles superficies (infinitas), pero tomemos como ejemplo estas dos:


Preguntémonos ¿cuál es mejor? Vapnik demuestra estadísticamente, que mientras más lejos esté el hiper-plano de los puntos a los que clasifica, mejor. En este caso, pareciera que la Superficie A es mejor que la Superficie B.

Pero dije que iba a irme primero por la intuición: preguntémonos.... ¿Por qué lejos es mejor?

Para verlo intuitivamente, podemos imaginarnos el caso extremo, es decir, que la superficie estuviese "adherida" a algunos de los puntos de uno de los conjuntos, como en la siguiente figura:

Tengamos en cuenta que esos datos son de los pacientes para los cuales, hasta ahora, sabemos si tienen diabetes o no. Si dejamos que la superficie clasificadora esté allí, "adherida" a los pacientes sanos, intuitivamente podemos imaginar que es bastante probable que aparezca algún paciente con características similares a las de alguno de los pacientes a los cuales está "adherido" el hiper-plano. Pero cuando digo "similar", intuitivamente estamos aceptando que no hay dos pacientes exactamente iguales. Debe haber alguna pequeña diferencia. ¿Cierto?

¿Y si esa pequeña diferencia hiciera que el paciente estuviese justo un ligeramente más allá de la superficie separadora? Si eso ocurriera, la máquina diría que ese paciente pertenece al grupo de los que tienen diabetes, es decir, diría que es un "círculo negro", cuando en realidad el afortunado paciente podría no tener diabetes. Estaríamos dando un falso positivo con cierta frecuencia.

Si el hiper-plano estuviese "adherido" a los pacientes del grupo de entrenamiento que eran diabéticos, estaríamos haciendo una máquina que produciría concierta frecuencia falsos negativos (porque pacientes muy parecidos a los que ya tienen diabetes, podrían estar ya el otro lado de la superficie separadora). Uno no desearía darles falsas expectativas a un paciente, así que esto tampoco es conveniente.

Para lograr alejar la superficie de los puntos de ambos conjuntos, Vapnick define el "margen" a maximizar como la distancia entre los dos hiper-planos, paralelos al hiper-plano separador, que están, cada uno, adherido a los puntos de uno de los conjuntos. En las Superficies A y B, el "margen" vendría a ser la distancia entre las líneas punteadas que se muestran abajo:
Como podemos ver, en el caso de la Superficie A, está mucho mejor que en la B. El método, adicionalmente, coloca la superficie, en general, en la mitad de esa distancia.


¿y dónde dejamos a las Redes Neurales Artificiales?


Obviamente, las SVM están relacionadas con las redes neurales. De hecho, un modelo de SVM que use una sigmoide (aproximación a la función escalón que mencioné en mi post sobre redes neurales) como función para el cálculo de la salida, es equivalente a un perceptron (una neurona de salida binaria). En otras palabras, los parámetros para una neurona de clasificación (perceptrón), podríamos hallarlos mediante el uso del método SVM.

Cuando no es posible separar completamente los puntos de los dos conjuntos, la forma matemática en que se plantean los SVM obtiene excelentes resultados, minimizando los errores.


Kernels, o ¿qué hago cuando necesito un hiper-plano torcido?

Si nos encontráramos en un caso en el que los datos no pudieran ser separados por un hiper-plano, podría ser que una superficie no-lineal pudiera separar los conjuntos, como en el ejemplo de abajo:
.. lo que se hace en SVM (y en muchas otras técnicas) es transformar el espacio de los atributos (lo que llaman el kernel). Esto suena complicado, pero si nos fijamos en el ejemplo, podemos ver que una elipse podría resolver el problema, de la siguiente forma:
Esa sería la superficie no-lineal que necesitamos. Todo lo que hemos venido hablando, ha sido referido a hiper-planos, y claramente la elipse no es un hiper-plano. Sin embargo, sabemos que la elipse es una figura "Cónica", expresada más o menos así (en nuestro eje cartesiano del ejemplo):

a*(x1 + b)^2 + c*(x2 + d)^2 = e

donde {a, b, c, d, e} es un conjunto de constantes, y {x1, x2} nuestras variables (discúlpenme por renegar del par {x,y} jejeje).

En general, cualquier superifice cónica, termina siendo algo como esto:

a1*(x1)^2 + a2*(x1) + a3*(x1)*(x2) + a4*(x2) + a5*(x2)^2 = a6

Ahora, esto ni de casualidad es lineal en un espacio definido por las variables {x1, x2}. Pero si nos imaginamos un espacio donde las variables son esas dos, mas 3 variables nuevas (tres dimensiones) extra: {x3, x4, x5}, donde cada una de ellas representa a los términos cuadráticos de la expresión de arriba, tenemos:

x3
= x1^2
x4 = x2^2
x5 = x1*x2

Y volviendo a escribir la ecuación cónica genérica (o cuadrática, como sería mejor llamarle), tenemos que nos queda así:

a1*(x3) + a2*(x1) + a3*(x5) + a4*(x2) + a5*(x4) = a6

¡Y acá estaremos todos de acuerdo con que se trata de una ecuación bastante lineal! Dense cuenta de que lo que se desprende de todo esto, es que un hiper-plano en este espacio de atributos ampliado, equivale a una elipse en nuestro espacio bi-dimensional (definido tan sólo por {x1, x2}).

Si pudiésemos representar gráficamente lo que ocurre en este espacio 5-dimensional, sería algo así:

Repito: acá aplican ahora todos los conceptos de margen y linealidad que se habían manejado anteriormente. Como puede verse, acá el SVM, aunque modelaría un simple hiper-plano separando grupos de puntos, estaría comportándose como una superficie no-lineal.


Algunas consideraciones de modelaje del SVM y el problema a optimizar

Sin embargo, quiero hacer notar una cosa importante: este kernel cuadrático resultó bastante apropiado para el problema del ejemplo. Pero podría no ser suficiente para otro problema. En general, la estrategia de complicar el kernel depende de nuestra suposición de la estructura y complejidad de los datos, y siempre aumenta la dificultad de obtener un resultado.

Si tenemos 9 atributos principales, resolver el problema cuadrático implica añadir una cantidad mucho más grande de variables "extra", representando los cuadrados de los principales y los productos entre ellas.

Un ejemplo de un problema que no podría resolverse con un kernel cuadrático, sería este, en el que se necesitaría de un kernel basado en funciones de base radial (gaussianas):

Separar conjuntos con superficies no-lineales, es algo que se ha logrado con perceptrones clásicos multi-capa (redes neurales). Sin embargo, dado que cada perceptrón posee una función de transferencia sigmoidal (buscando comportarse como una función escalón), la optimización a la que debe acudirse en las redes neurales tipo perceptrón, equivale a una optimización de este tipo:
donde o(x) es la salida de la red (su propuesta de clasificación), y c(x) es la verdadera clasificación del individuo "x". Los w, theta, nu y tau son simplemente parámetros de las neuronas del perceptrón multicapa.

¿por qué la superficie a optimizar es así? Fácil: Porque es el error cuadrático de clasificación. El algoritmo de optimización (Backpropagation y sus primos, típicamente) va ajustando el parámetro de alguna neurona o peso de dendrita, hasta que ¡Zas! una de las neuronas cambia su salida de 0 a 1, o de 1 a 0, y con ello la respuesta de la red, posiblemente. Se sigue moviendo levemente (según un parámetro de paso) los parámetros, y posiblemente no pasa nada, hasta que se cruza otro límite de alguna de las sigmoides, y ¡Zas! ocurre otro cambio de 0 a 1, o de 1 a 0.

Mientras cambias los parámetros pero no pasa nada, se comporta de forma "estacionaria" la función del error (derivada = 0). Luego encuentras otro lugar, donde hay el cambio de respuesta, y la función de error cambia de forma brusca (derivada = mucho), ya que es la subida del "escalón" aproximado de la sigmoide. Nótese que idealmente el sigmoide sería lo más parecido a una función escalón, pero para que la derivada sea manejable numéricamente por los algoritmos de backpropagation, en el lugar donde está el umbral, se disminuye bastante, por lo que la red termina teniendo respuestas "difusas" cuando los elementos caen en el borde del umbral de alguna de las neuronas. Esto, a mi modo de ver, es indieseable.

Así pues, entrenar un perceptrón multi-capa implica un problema de optimización:
  1. no convexo
  2. con múltiples puntos estacionarios (donde suelen estancarse los algoritmos de optimización)
  3. con elevada cantidad óptimos locales
  4. no acotado
  5. asume sigmoides suavizadas (por lo que la red da respuestas difusas posteriormente)
Es decir: ¡todo lo que un optimizador no desea encontrar!

Es mucho más atractivo resolver un problema como el de las SVM, porque es optimización cuadrática con restricciones lineales,... es decir: de los problemas más fáciles de solucionar. Más adelante les hablaré de un método que utiliza Programación Lineal para generar perceptrones multi-capa, sin usar Backpropagation. Si el problema de resolver una red neural, hubiese sido atacado inicialmente, por gente de investigación de operaciones, dudo que hubiésen optado por algo como el Backpropagation, realmente.


¿Y cómo es eso de "Vectores de Soporte"?

Ahora, para cerrar, quiero aclarar la duda que siempre surge cuando uno conoce a las SVMs:
¿por qué el nombre?

La respuesta es sencilla: si asumimos que cada uno de los ejemplos de los que disponemos (círculos oscuroes y rombos blancos) es un vector en el espacio, resolver SVMs es: encontrar los vectores en los que podamos apoyar los hiper-planos que definan el mayor margen de separación. Es decir, buscamos los vectores en los cuales "soportar" los hiper-planos paralelos, uno hacia un conjunto, y uno hacia el otro, para trazar justo en el medio de ambos, nuestro hiper-plano de separación. Veámoslos señalados por círculos rojos en la siguiente figura:
¡Ahí los tienen!

Ahora lo de "Máquinas de Vectores de Soporte" suena menos oscuro ¿verdad?
En verdad espero que esta explicación les haya sido de utilidad ¡y disculpen lo extenso!
Para los que deseen profundizar, les recomiendo esta página: http://www.dtreg.com/svm.htm
Es mucho menos "básica" la explicación, pero mucho más completa.

NOTA: Si alguien detecta en mi post algún error, no duden en contactarme para decírmelo, ¿vale? ¡Gracias de antemano!.

viernes, febrero 01, 2008

Regresión vs. Clasificación

Regresión, en el contexto de la estadística y el modelaje matemático, es algo claramente distinto a autoespiarse en una etapa infantil o una vida pasada. Y ciertamente cuando uno hace una regresión típica (digamos, por ejemplo, mínimos cuadrados), uno ciertamente no siente que está regresando en ningún sentido.
El orígen del término data del siglo XIX, cuando fue utilizado en el contexto del análisis de un proceso biológico. Éste proceso tenía que ver con el hecho de que los descendientes de individuos excepcionales, tienden a ser más normalitos que sus excepcionales ancestros. Charles Darwin tenía un primo de apellido Galton (si no me equivoco) que llamó a este proceso "regresión". Este caso fue estudiado luego desde el punto de vista estadístico, y al final se terminó llamando "Regresión" a las técnicas en las que uno examina como se reacciona una variable de respuesta (variable dependiente) en función de una variable explicativa (variable independiente).
Este tipo de procesos de análisis no requieren entender los procesos detrás de la generación de los datos estudiados. Las premisas que se toman, en todo caso, son sólo de tipo estadístico (como por ejemplo que los errores respecto a la curva que "modela" el sistema están distribuídos según la campana de Gauss).
La regresión se usa para realizar pronósticos, probar hipótesis, estimar parámetros, entre otras cosas. He escuchado varias opiniones acerca de estos métodos, y no les quito razón, cuando dicen que debido a que "cualquiera hace una regresión, pero sólo expertos pueden criticarlas", uno encuentra que muchísima gente hace una regresión simplemente por hacerla.
Los que no conocen de estadística o modelos matemáticos ven unas "cuentas" y una curva, y realmente no tienen el tiempo de comprobar que todo lo que se hizo está bien, pero ya la exposición del analista de la regresión queda enmarcada en una supuesta formalidad.
A esto se refiere el dicho de que "la mayoría de las personas usan la estadística de la misma forma que los borrachos usan los postes de luz, para apoyarse, pero no para buscar iluminación".
Al final, simplemente una regresión es una forma de aproximar una expresión matemática para que se comporte de forma similar a un conjunto de datos que uno ha recogido. Por ejemplo: quiero saber cómo varía la presión atmosférica según se sube por una montaña, y hago mi escalada para la montaña, parándome 4 veces en mi camino para sacar mi barómetro y ver cuánto marca, y en el mapa me dicen a que altura está el parador turístico en el que me detuve a hacer la medición, por lo que en mis notas pongo los dos datos juntos.
Al final tengo 4 pares de datos (altitud, presión), y en la próxima tarde lluviosa me pongo a sacar cuentas, para ver qué función matemática pasa por esos puntos de la mejor forma. Cuando la tenga lista, asumiré que cada vez que me digan la altura, podré estimar la presión, y viceversa. Perfecto. Si no tuviese esa técnica (ni conocimientos teóricos sobre termodinámica y fluídos), sólo podría responder a esas preguntas específicamente para los puntos que ya medí. Ahora puedo responderlo para cualquier punto intermedio aunque no me haya parado a medir.
¿Y para donde voy con todo esto? Bien. Ahora que está claro para todos lo que es una regresión, puedo pasar a relacionar el concepto con el de clasificación, que lo hablé en un post anterior.
Resulta que construír un modelo de clasificación es conceptualmente muy similar a construír un modelo de regresión, sólo que la respuesta que se me pide que de, no es un número cualquiera, sino una categoría.
Es algo así como que me pidan que elabore un modelo para saber cuando un lugar es de presión alta y cuando es de presión baja. Me voy de paseo, y en el camino voy preguntando a las personas: "¡Señor! ¿acá la presión es alta o baja?". Voy anotando los valores de altitud, junto a la respuesta del paisano de ese lugar en mi cuadernito. Luego tengo que sentarme en mi casa y ver para cada altura qué me respondieron. El modelo podría ser algo así como "Si la altura es mayor que X, la gente en general piensa que la presión es alta". Ese es mi modelo de clasificación.
En el fondo es un modelo de Regresión, pero que la variable de respuesta (dependiente) no es contínua, sino categórica.
Bueno, a mi me pareció interesante cuando supe esto, y quería compartirlo con los que aún no han pasado a considerarlo trivial, jeje. Son los pequeños asombros que lo animan a uno a seguir investigando estas cosas. ¿No es verdad?

jueves, enero 31, 2008

Clasificar vs. Reconocer un Patrón

Estaba en estos días reunido con un amigo explicándole que estaba trabajando en un algoritmo para el reconocimiento de patrones binarios. Entré en detalles, y posteriormente usé la palabra "Clasificación binaria", lo que le motivó a preguntarme:
Por fin, Orestes ¿esto no era para reconocimiento de patrones? ¡Ahora me acabas de decir que es para clasificacion binaria!.

Claro... para algunos de ustedes, que también están empapados en estos temas, la pregunta es trivial. Sin embargo para los que ocupan su mente con otro tipo de problemas y herramientas, no es evidente que ambas cosas son lo mismo.
Para ellos estoy escribiendo este post, y lo haré parafraseando una explicación muy buena que hicieron K.P. Bennet y E.J. Bredensteiner en su artículo "Geometry in Learning".
Imagínese que su trabajo es determinar si un tumor de seno es benigno o maligno. Un cirujano inserta una aguja en el tumor y aspira una pequeña cantidad de tejido. Se prepara una placa de vidrio (porta-objeto) en la que se coloca la muestra, y usted procede a colocarla en el microscopio para estudiarla. Su trabajo es examinar las células que están en la láminilla de vidrio, reconocer los atributos importantes de las células, tales como la uniformidad de la fórma de las células, y la variabilidad en el tamaño. Eventualmente usted llega a la conclusión de que es benigno, o de que es maligno. Esto es algo que usted debería haber aprendido a hacer luego de examinar montones de tumores de los que ya previamente le habían chismeado si el tumor era maligno o benigno, de parte de un experto patólogo que usó biopsias quirúrjicas tradicionales (a punta de cuchillo, para ser completamente claros). Probablemente alguien podría ayudarle señalando en la imágen los atributos que deben ser estudiados con más incapié. Y entonces usted debería "generalizar" el conocimiento que aprendió, aplicándolo luego para estudiar nuevos tumores, para (por ejemplo) tener una idea previa de la malginidad del caso, sin tener que echar cuchillo al delicado seno (y aquí termina mi paráfrasis de la introducción del paper de Bennet y Bredensteiner).
Hablando normalmente, como quien se encuentra en una cafetería hablando con los familiares de la pacienet, usted diría sobre un caso, que "Reconoció el Patrón" que tienen los tumores malignos.
Ahora, hablando matemáticamente, podemos decir que usted "clasificó" a ese elemento como "Maligno", tal y como si usted tuviese una caja donde recibe los casos a estudiar, a su lado derecho, y dos cajas a su lado izquierdo, cada una con una etiqueta: una dice "Maligno" y otra dice "Benigno". El equivalente de su trabajo es tomar cada tumor de la caja de la derecha, estudiarlo, y en base al estudio de sus atributos, lo lanza a una de las cajas de la izquierda. Por eso es que los matemáticos consideran el proceso de "reconocer patrones", como un caso más de "clasificación".

Obviamente, esta puede ser de múltiples clases, no necesariamente binaria. Por ejemplo, reconocer caracteres visualmente, además de entenderse como "reconocer el patrón" de la letra A, la letra B, y así sucesivamente, puede entenderse como que usted tiene tantas cajitas a su izquierda, como letras hay en el abecedario (más una por cada número), y recibe un caracter, lo estudia y lo lanza en alguna de las cajitas luego de dar cuenta de los atibutos de ese caracter. Reconocer patrones de caracteres, es clasificar caracteres en tantos tipos como caracteres posibles pueda haber. También puede verse así el problema típico de "reconocer" una huella digital (alguno ha visto CSI?). Las "clases" son cada uno de los criminales en la base de datos contra la cuál se contrasta la huella en cuestión.

En fin... Yo ya estoy empezando a clasificar este punto de mi escritura del post como del tipo "ya ponte a trabajar", así que... nos vemos luego!