Una vez que hemos
visto que es un sistema dinámico y sus principales características
podemos abordar los distintos algoritmos que se utilizan para
realizar predicciones futuras por medio de las técnicas de modelado. Pero lo primero es ver a que problema real nos enfrentamos.
Al contrario que con los algoritmos de clasificación y clustering, en los algoritmos de regresión esperamos "acertar" o acercarnos al valor "real" exacto.
En un algoritmo de clasificación de 10 valores obtener un 5 con un 10% de tolerancia seria (extrapolando a regresión que no es la realidad) como decir que estoy entre un 4.90 o un 5.10, o lo que es lo mismo en un sistema de 10 valores es claramente un 5, pero en un sistema dinámico no es lo mismo obtener un 4.9, que un 5.10, que un 5 ya que, normalmente el error propagado influirá en la siguiente capa.
Si tenemos un sistema de 10 niveles enlazados en serie con una tolerancia de error del 10% (90% de acierto) en verdad el sistema final puede tener un tasa de acierto del 34%, que claramente es inadmisible.
¿Pero como solucionamos es te problema? Tan simple como aplicar la inversa del divide y vencerás. En este caso Agrupa y Vencerás.
Si en verdad, de esos 10 niveles solo nos interesa la predicción en 4, generaríamos 4 modelos para realizar la predicción end-to-end como bloques independientes evitando la propagación de errores.
Lo segundo es comprender los términos de exactitud (accuracy) y precisión (precision).
La exactitud mide como de lejos o cerca ha estado tu previsión del valor real.
La precisión va más relacionada a como de homogénea es tu previsión.
¿Porqué son tan importantes? porque un sistema con un 0% de exactitud pero un 100% de precisión es más fiable que un sistema con una baja precisión. ¿Lo demostramos con un ejemplo?
Imaginaos que tenemos dos tiradores una diana y tiramos 100 dardos cada uno con el objetivo de acertar en el centro de la diana.
El primer jugador acierta 50 en los perímetros centrales de la diana pero el resto terminan distribuidos homogéneamente alrededor de la esta en distintos puntos.
En el segundo no acierta ninguno pero sus 100 tiradas van al mismo sitio exactamente a 15 cm a la izquierda del centro de la diana. Esto es un caso de 0% de exactitud y 100% de precisión.
Si tuviéramos que presentarnos a un concurso en 1 mes, ¿con cual jugador iríamos?
En condiciones ideales la solución menos arriesgada es el jugador 2 ya que con moverlo 15 cm a la derecha obtendríamos un 100% de exactitud y un 100% de precisión, o lo que es lo mismo, conseguiríamos un modelo perfecto aplicando un offset o bias al resultado de la predicción.
Una vez visto esto podemos pasar a las distintas técnicas de regresión existentes a día de hoy..
Al contrario que con los algoritmos de clasificación y clustering, en los algoritmos de regresión esperamos "acertar" o acercarnos al valor "real" exacto.
En un algoritmo de clasificación de 10 valores obtener un 5 con un 10% de tolerancia seria (extrapolando a regresión que no es la realidad) como decir que estoy entre un 4.90 o un 5.10, o lo que es lo mismo en un sistema de 10 valores es claramente un 5, pero en un sistema dinámico no es lo mismo obtener un 4.9, que un 5.10, que un 5 ya que, normalmente el error propagado influirá en la siguiente capa.
Si tenemos un sistema de 10 niveles enlazados en serie con una tolerancia de error del 10% (90% de acierto) en verdad el sistema final puede tener un tasa de acierto del 34%, que claramente es inadmisible.
¿Pero como solucionamos es te problema? Tan simple como aplicar la inversa del divide y vencerás. En este caso Agrupa y Vencerás.
Si en verdad, de esos 10 niveles solo nos interesa la predicción en 4, generaríamos 4 modelos para realizar la predicción end-to-end como bloques independientes evitando la propagación de errores.
Lo segundo es comprender los términos de exactitud (accuracy) y precisión (precision).
La exactitud mide como de lejos o cerca ha estado tu previsión del valor real.
La precisión va más relacionada a como de homogénea es tu previsión.
¿Porqué son tan importantes? porque un sistema con un 0% de exactitud pero un 100% de precisión es más fiable que un sistema con una baja precisión. ¿Lo demostramos con un ejemplo?
Imaginaos que tenemos dos tiradores una diana y tiramos 100 dardos cada uno con el objetivo de acertar en el centro de la diana.
El primer jugador acierta 50 en los perímetros centrales de la diana pero el resto terminan distribuidos homogéneamente alrededor de la esta en distintos puntos.
En el segundo no acierta ninguno pero sus 100 tiradas van al mismo sitio exactamente a 15 cm a la izquierda del centro de la diana. Esto es un caso de 0% de exactitud y 100% de precisión.
Si tuviéramos que presentarnos a un concurso en 1 mes, ¿con cual jugador iríamos?
En condiciones ideales la solución menos arriesgada es el jugador 2 ya que con moverlo 15 cm a la derecha obtendríamos un 100% de exactitud y un 100% de precisión, o lo que es lo mismo, conseguiríamos un modelo perfecto aplicando un offset o bias al resultado de la predicción.
Una vez visto esto podemos pasar a las distintas técnicas de regresión existentes a día de hoy..
Para hablar de
algoritmos válidos para el modelado de regresiones debemos
diferenciar dos vertientes:
Algoritmos
paramétricos: son aquellos que se basan en las
operaciones con un vector de parámetros (w), los atributos actuales
del suceso que queremos predecir y una función aplicada sobre ellos.
Un sistema de
regresión paramétrica tendría la siguiente estructura: h(x) =
F(a(x), w), donde h(x) es el modelo de predicción resultante,
a(x) son los atributos del suceso x y w es el
vector de parámetros que se aplica para obtener los resultados de la
predicción.
Existen varios
tipos de algoritmos de regresión paramétrica, cada uno de los
cuales se ajusta a un tipo de problema:
-
Basados en funciones lineales
-
Basados en funciones polinómicas
-
Basados en funciones logarítmicas
-
Basados en funciones trigonométricas
-
Basados en funciones exponenciales
-
…. Y una combinación de todos ellos
Algoritmos
no paramétricos: son aquellos algoritmos y
técnicas que se aplican sobre sistemas dinámicos complejos que,
aunque de naturaleza matemática, no se consiguen modelar por las
técnicas anteriormente descritas. Son algoritmos iterativos en los
cuales la predicción se realiza por aprendizaje. Es una forma
de análisis
de la regresión en el que el predictor no tiene una forma
predeterminada, sino que se construye de acuerdo a la información
derivada de los datos. Los ejemplos más conocidos de este tipo de
algoritmos son las ANN (Artificial Neural Networks) y los árboles de
regresión (Regression Tree).
Centrándonos en
los Algoritmos Paramétricos de Regresión ¿dónde se encuentra la
dificultad? Claramente se basa en la existencia de un conjunto de
parámetros w, a priori desconocidos, que van a determinar la
bondad de nuestras predicciones. ¿Pero cómo llegamos a definir
estos?
Determinación
del Vector de parámetros “w”.
Existen varias
técnicas que permiten alcanzar la definición de tan preciado vector
por medio de técnicas de “back propagation” y un training set, o
lo que es lo mismo, ir corrigiendo los valores del vector de
parámetros, en la dirección apropiada, para aproximarnos cada vez
más al resultado esperado.
-
Mean Square Error minimization (MSE): se basa seleccionar un w aleatorio bajo y minimizar la diferencia cuadrática del resultado obtenido con respecto al resultado esperado (wi+1 = wi * E(F(a(x)W) – h(x)) donde la función error E = ½ Sum(x : (f(x)-h(x))2
-
Delta Rule (LSE): basada en el caso anterior varia la función de error siendo esta la derivada en W de E(f(x), h(x))
Estas técnicas
se aplican normalmente de forma iterativa (ejemplo Gradient
Descent).
En estos casos surge un nuevo concepto denominado, Factor
de Aprendizaje, que se basa en limitar la modificación de los
parámetros para acercarse poco a poco a la solución.
Otro problema que
nos podemos encontrar es el de los, ya famosos, mínimos locales.
Es un viejo conocido en AI (Artifical Intelligence) y el problema radica en la posibilidad de poder
encontrar la mejor solución desde tu punto de partida pero no la
mejor solución real.
Pongamos un ejemplo.
Supongamos que estamos en la montaña y tenemos como objetivo
descender al punto mas bajo de la cordillera. Utilizando las
formulas anteriores puede llegar un momento en el que estemos en el
punto mas bajo desde donde nos encontramos y cualquier paso que demos
suponga ascender y, por tanto, sea una alternativa peor. A esto se le
llama mínimo local.
Solucionar este
problema es relativamente sencillo. Simplemente debemos probar a
empezar desde puntos distintos y seleccionar luego la solución
mejor, en nuestro caso la mejor combinación de W a partir
de distintas W0. Esto
no garantiza alcanzar el mínimo global pero, normalmente, ofrece una
solución muy aproximada a este (en caso de no encontrarlo).
Con
todo esto, ¿ya esta todo resuelto? Lo cierto es que no.
Las regresiones paramétricas (lineales, linealizadas, segmentadas
..) son la base más utilizada para los problemas de regresión, sin
embargo, en los sistemas complejos reales la salida de un elemento o
el comportamiento de éste viene condicionado por el comportamiento
de múltiples "influencers".
Estos elementos condicionan el comportamiento de nuestro elemento a modelar de forma que,
desde nuestro punto de vista y desde el punto de vista de un sistema
de regresión paramétrica, se comportan de forma errática, aunque
no sea cierto.
En este caso h(x) sería, por tanto, la combinación de múltiples
f(x) que, según su influencia en un momento dado, darán un
resultado u otro. Para este enfoque, técnicas de modelado no paramétricos como ANN o Regression Trees suelen obtener mejores resultados.
Otro gran problema es la selección de los datos debemos tener en
cuenta para poder generar un modelo predictivo válido. Supongamos la
propagación del agua en un canal o un río. ¿Cómo y cuando
impactaría la apertura de una compuerta de una presa en un punto
situado a 50Km? ¿Cómo y cuando impactan unas lluvias torrenciales en
un punto sobre otro punto concreto del cauce?
Estos problemas pueden ser modelados mediante algoritmos de regresión pero es necesario
inyectarle al modelo todos los datos significativos desde que se abre
la compuerta o descarga la tormenta hasta que realmente llega el
efecto debido a la velocidad de propagación del agua, no solo los de
sus predecesores más cercanos.
Todos estos temas las iremos avanzando en próximos posts para poder
ir desgranando el problema real que nos marcamos como objetivo.