Repasito sobre la regresión

En los posts anteriores vimos cómo es posible predecir ciertos valores “de salida” a partir de ciertos valores “de entrada” a través de descubrir tendencias (rectas, planos, hiperplanos… con cierta pendiente) en observaciones anteriores.

A este cálculo de una posible tendencia lineal lo llamamos regresión lineal y vimos, de pasada, que es posible ajustar no sólo formas geométricas lineales sino también curvas (este tema lo trataremos en profundidad en futuros posts).

Desde el punto de vista del Machine Learning, puesto que la obtención o ajuste del patrón, modelo o tendencia se hace a partir de una familia de datos de entrenamiento en que los valores de salida son conocidos, la regresión lineal entra dentro de la familia de algoritmos de aprendizaje supervisado.

En este posts vamos a introducir otro de los algoritmos fundamentales de aprendizaje supervisado: el de la clasificación lineal.

La clasificación

εκστα ση… εκστα νο…
Chimo Bayo

En la regresión nuestro objetivo era predecir una variable respuesta en forma de de número real a partir de ciertas observaciones, por ejemplo, podíamos predecir precios de bienes inmuebles. En la clasificación, en cambio, nuestro objetivo es predecir un valor discreto, o dicho de otro modo, clasificar observaciones en categorías distintas: animal o vegetal, enfermo o sano, etc.

Las aplicaciones de la clasificación son muchas y muy útiles, entre las más conocidas están, por ejemplo, el filtro de spam (clasificar emails como spam o no spam) o la resolución de problemas de computer vision como el análisis de emociones (clasificar caras como triste, feliz…).

La clasificación lineal

Vamos a empezar por la clasificación lineal binaria, es decir, donde la variable respuesta que queremos predecir sólo puede tener dos categorías posibles (por ejemplo: spam o no spam, enfermo o sano, etc.). Existen diversos algoritmos para tratar de delimitar linealmente las categorías “de respuesta”, en este post usaremos el de la regresión logística.

Como veremos, la función objetivo a optimizar en la clasificación lineal como problema de regresión logística no tendrá una solución “en forma cerrada” (closed-form solution) o, dicho de otro modo, que no vamos a poder encontrar una solución en forma de expresión matemática con operaciones “sencillas”. Esta dificultad nos va a permitir introducir un algoritmo de búsqueda de soluciones de forma iterativa que, de hecho, aplicaremos a la resolución de muchos otros problemas de optimización que surgen en machine learning, incluyendo también el de la regresión lineal de los posts anteriores.

Empecemos por presentar una serie de datos de ejemplo en que se ha observado si una serie de pacientes presentaban o no presentaban una enfermedad cardíaca y la edad y frecuencia cardíaca máxima de cada paciente.

Edad Frecuencia cardíaca máxima Enfermo
67 108 0 (No)
65 129 0 (No)
62 160 0 (No)
63 147 0 (No)
52 155 0 (No)
56 142 0 (No)
55 148 0 (No)
61 132 0 (No)
40 154 0 (No)
53 168 0 (No)
51 160 0 (No)
41 172 0 (No)
43 160 0 (No)
57 112 0 (No)
48 139 0 (No)
64 144 1 (Sí)
60 160 1 (Sí)
61 173 1 (Sí)
63 150 1 (Sí)
37 187 1 (Sí)
59 178 1 (Sí)
56 153 1 (Sí)
44 173 1 (Sí)
52 162 1 (Sí)
57 174 1 (Sí)
54 160 1 (Sí)
48 168 1 (Sí)
66 158 1 (Sí)
49 171 1 (Sí)
58 162 1 (Sí)

Nuestro objetivo es construir un modelo predictivo de tal forma que podamos predecir con cierta fiabilidad si un nuevo paciente está sano o enfermo a partir de su edad y de medir su frecuencia cardíaca máxima. Hasta aquí vemos que el planteamiento es muy similar al de la regresión como predicción.

Una forma habitual de presentar gráficamente el problema de la clasificación lineal es a través de una nube de puntos sobre un plano en que los dos ejes cartesianos representarán nuestras variables predictivas (la Edad y la Frecuencia cardíaca máxima en nuestro ejemplo) y un color o forma distinta para cada punto que represente nuestra variable “objetivo” a predecir (en el ejemplo, si está Enfermo usaremos la cruz, si está sano la redonda). Veámoslo:


[To be continued]