miércoles, 17 de agosto de 2016

Algoritmos de Clasificación




Como comentamos en la anterior sección vamos a dedicar una serie de entradas a  explicar los conceptos básicos necesarios para abordar el problema real a modelar.

Esta entrada la dedicaremos a los Algoritmos de Machine Learning de Clasificación. 

Estos algoritmos, aplicables al tanto al análisis de datos de negocio tradicional (DataMining) como a grandes volúmenes de datos (Big Data), nos permitirán predecir la clase o categoría a la que pertenece una instancia del dominio. Sin embargo predecir o "adivinar" implica "incertidumbre" por lo que es necesario conocer no solamente las técnicas básicas sino, también, saber evaluar el grado de certidumbre que dicho modelo nos arroja.

Tipos de algoritmos

  • Árboles de decisión (Decision trees)

Es un tipo de modelo de los denominados jerárquicos ya que va dividiendo el dominio en distintos subdominios o regiones (nodos) hasta llegar a una condición de parada (hojas). 
En el proceso de generalización, esto es "predicción", se irá evaluando cada instancia a través de las distintas condiciones del árbol hasta llegar a un nodo hoja que determinará su clase. 

El proceso asociado a hacer crecer el árbol desde su raíz (root) hasta sus hojas (leaves) se le denomina "growing" y a la optimización para simplificarlo se le denomina "pruning" (poda).

Es muy importante controlar tanto el crecimiento como la forma de dividir el árbol, por ello hay que tener en cuenta un criterio de parada (que controle cuánto va crecer como máximo nuestro árbol) y cual va a ser nuestra estrategia de división de nodos (univariable, multivariable, basada en distribuciones probabilísticas balanceadas, ..)

Estos modelos son muy fáciles de leer y comprender por lo que se ha extendido su uso en los últimos 30 años.
  • Naïve Bayes
Basados en el principio de "Probabilidad Total" son algoritmos y modelos puramente probabilísticos. Por su simplicidad siguen teniendo cierto peso en los procesos de análisis, sobre todo,  en las clasificaciones de texto.

  • Clasificadores Lineales
Basados en los mismos principios que la "regresión lineal", estos modelos buscan encontrar una función, de naturaleza lineal, que aplicada a los datos, nos indique si pertenece a una categoría u otra. Es un clasificador paramétrico y, si bien es uno de los primeros mecanismos de inducción que surgieron con la aparición del concepto AI (Artificial Intelligence) por los años 50, en la actualidad no es de los más demandados.


  • Instance Based Learning o K-neighbours

Es la técnica más parecida a nuestra forma habitual de resolver problemas computacionales. Utilizamos los datos históricos almacenados en, normalmente, nuestras bases de datos para, en base a un valor definido como K, realizar la comprobación del valor que le corresponde al suceso que queremos clasificar mediante una función de distancia y una función de agregación. A modo de ejemplo si tenemos una clasificación de un valor de mercado de una vivienda (Alto, medio o bajo) con un algoritmo de k-neighbours con k= 5 buscaremos los datos almacenados de las 5 viviendas más cercanas a la propiedad que queremos valorar (función de distancia) y obtendremos la moda de sus valores de clasificación (función de agregación) para obtener así la clasificación estimada de la nueva propiedad.

  • SVM o Support Vector Machines
El concepto es tan sencillo como compleja su formulación matemática. Se basa en separar dos conjuntos de datos por una linea o plano que maximice las distancia entre los conjuntos de datos. El problema viene asociado a que normalmente los conjuntos de datos no son linealmente separables, pero aquí, la complejidad matemática nos aporta la solución. Dentro de esta formulación compleja hay una parte concreta que determina la similaridad de los sucesos y, modificando esta, se puede conseguir separaciones complejas de datos tales y aplicarla a temas tan complejos como la diferenciación de imagenes o la similaridad de cadenas de texto. A estas modificaciones las denominaremos Kernels o K(x).

  • Ensamblaje o Boosting
Ya lo dijeron en su momento. Divide y vencerás y la solución más sencilla suele ser la mejor (Principio de la navaja de Occam) . La técnica de Boosting no es más que un método matemático para unir modelos simples con un rendimiento "débil" para, trabajando juntos, obtener un rendimiento superior al de un modelo más complejo. ¿Ventajas? Dos principalmente. Al trabajar con modelos simples la necesidad de recursos suele ser menor y es mucho menos sensible al overfitting que otros algoritmos. Como desventaja ... hay que tener cuidado con el llamado "ruido rosa (Pink noise)", esto es, el ruido o errores en los datos que se distribuye de forma uniforme.


Conceptos importantes



A la hora de abordar problemas de clasificación y según el algoritmo utilizado deberemos tener en cuenta una serie de aspectos que, si bien solo enunciamos, es necesario comprender.

Misclassification Cost: es el coste de un error de clasificación. 

Pensemos en el mundo real, ¿Cuestan lo mismo y tienen el mismo impacto todos los errores?. Claramente no, por tanto, para que el modelo generado pueda predecir clasificaciones de la forma más adecuada tiene que tener en cuenta estos aspectos e incorporarlos a su modelo de decisiones minimizando así el error en aquellas con un a mayor coste, esto es, obteniendo el óptimo global.

Modelo de evaluación: es la forma en la que se va a garantizar que un modelo de clasificación, realmente, va a funcionar dentro de unos parámetros definidos más allá de las instancias del conjunto de datos de aprendizaje. 

  • Matriz de confusión: asociado al modelo de evaluación nos indica el número de aciertos y falsos positivos (aka type I) o negativos (aka type II) generados por el modelo.
  • Análisis ROC: basado en el análisis gráfico de los resultados porcentuales de falsos positivos (eje x) frente a verdaderos positivos (eje y) nos permite ver el rendimiento del modelo y su evolución.

Casos de Uso

Pero vamos al meollo de la cuestión ¿Para que me pueden servir a mi estas técnicas?.

La mayoría de los algoritmos de clasificación que se usan en la actualidad son binarios, esto es, 0/1, True/False. Parece tan simple como inútil en un mundo tan complejo como en el que nos encontramos actualmente .... ¿Seguro?. 

Reformulemos la cuestión. 

"La mayoría de los algoritmos de clasificación que se usan en la actualidad son binarios, esto es .."

  • Decisiones Go/No Go.
  • Decisiones asociadas a Riesgo asumible/ Riesgo no asumible.
  • Decisiones asociadas a comportamiento normal / detección de comportamiento anómalo.
  • Alarmas asociadas a riesgo de fallo / no riesgo de fallo.
  • Predicciones asociadas a ruptura de stock / No ruptura de stock.
  • Predicciones asociadas a ruptura de planificación / No ruptura de planificación.

Parece que el asunto cambia y podríamos poner muchos más ejemplos.

En nuestro día a día tomamos cientos de decisiones de naturaleza binaria debido a que es nuestra forma natural de decisión (Si/No). La aplicación de estas técnicas es una extensión natural de nuestro comportamiento pero permitiendo, a través de los algoritmos y las capacidades de computación, tomar estas decisiones de forma mucho más rápida (en la mayoría de los casos es imposible para el cerebro humano, incluso con la ayuda de las herramientas actuales, manejar la complejidad real de todas las variables y relaciones implicadas en la decisión) y con tiempo suficiente para planificar una estrategia de mitigación o contingencia.

"El tiempo es oro" y estas técnicas son oro para los negocios en forma de ventaja competitiva e incluso supervivencia.

A partir de aquí, es cada uno desde su negocio y su problemática concreta el que debe evaluar donde y para qué puede utilizar estas técnicas para hacer sus negocios más competitivos y adecuados al contexto actual.




domingo, 24 de julio de 2016

Definiciones y Conceptos


Para comprender todo el proceso de pruebas que vamos a seguir se hace necesario comenzar fijando una serie de conceptos y definiciones que arrastraremos durante todo el desarrollo.


Con el fin de que sea comprensible para todos los lectores no nos ceñiremos a la notación matemática sino que los explicaremos en un lenguaje más coloquial. Enmarcaremos de esta forma todo el lenguaje y los análisis y validaciones a realizar.

Conocimiento

Es todo aquello que permite inferir un resultado esperado a partir de una situación.

Inferencia

Es el proceso de aplicar un conocimiento para obtener un resultado (deductiva) o un nuevo conocimiento (inductiva).

Aprendizaje

Es el proceso mediante el cual a partir de unos datos de partida o entradas se genera un conocimiento, el cual nos permite obtener soluciones para distintos problemas.
Existen dos tipos de aprendizaje:

  • Supervisado: aquel que parte de unos datos históricos conocidos para generar un conocimiento. 
  • No supervisado: parte de un conjunto de datos e intenta descubrir nuevas relaciones o características de estos datos no detectadas a hasta este momento. 

Dominio

Todo el conjunto de individuos, entidades y sucesos que componen nuestro ámbito de actuación. Es un subconjunto del mundo real.

Instancia o Suceso

Es un elemento concreto del dominio. Digamos que para un dominio X, una instancia es un elemento x Ꞓ X.

Atributos

Toda instancia debe estar definida por unas características (definición y valor) para que pueda ser tratado en el mundo computacional. A cada uno de estos pares (clave, valor) asociados a una instancia en un momento dado se le denomina atributo de la instancia. Todos los atributos de una instancia, establecidos en forma matemática, determinan un vector de la forma (a1,a2,a3, … an) por lo que podremos considerar que las instancias de un dominio son los vectores válidos del dominio.

Atributos de entrada

Son aquellos atributos que conocemos, para una entidad de un dominio, y son utilizados como base para la resolución de un problema concreto.

Atributos objetivo

Son aquellos atributos cuyo valor queremos descubrir por medio del proceso de inferencia. Son el resultado de los procesos de inferencia deductiva, en los cuales consultamos a nuestra base de conocimiento, esperando a cambio una predicción.

Modelo

Es una función h(x) que, a partir de un conjunto de instancias caracterizadas por unos atributos de entrada (Escenario) predice o descubre, de forma automática, qué valor tomarán los atributos objetivo. Descubrir y almacenar estos modelos h(x), para su posterior uso, es el objetivo de la inferencia inductiva o generación de conocimiento.

Rendimiento de un modelo

Indica la calidad de las predicciones de un modelo, esto es, cómo de buenas o malas se espera que sean estas predicciones. A modo de ejemplo, si un modelo tiene un 0.63 de rendimiento debemos esperar una tasa de acierto del 63% en sus predicciones y decidir si realmente ese valor es adecuado para resolver nuestro problema.

Intervalo de confianza

Es el umbral dentro del cual podemos considerar que el resultado de la predicción generada por el modelo es válido.

Conjunto de Aprendizaje

Para aprendizajes supervisados, el Conjunto de Aprendizaje es el conjunto de instancias que utilizaremos para el proceso de inferencia. Esto es, el conjunto de datos históricos.
Normalmente durante este proceso los datos históricos se dividen en dos: un conjunto de datos o vectores usados para el aprendizaje (Training Set) normalmente definidos como el 75% del conjunto de aprendizaje y un conjunto de datos para la validación posterior de los resultados del modelo (25%).

Overfitting

Es la pesadilla de los modelos de aprendizaje automáticos. El overfitting es una característica que se da cuando un modelo h(x) tiene un rendimiento superior a otro h´(x) para el Training Set pero tiene un rendimiento más pobre para el dominio completo (atributos objetivo conocidos y desconocidos), esto es, en el mundo real fuera del laboratorio.

Algoritmos

Son la base de la generación de conocimiento y son las distintas técnicas a aplicar para generar conocimiento, esto es, modelos. Los clasificaremos en tres tipos:
  • Clasificación: orientados a segmentar las instancias de un dominio en un conjunto de segmentos preestablecidos. 
  • Regresión: orientados a predecir el valor numérico esperado para un atributo objetivo. 
  • Clustering: en la línea del algoritmo de clasificación, pero orientado a detectar similaridades dentro del conjunto de instancias del dominio y, por tanto, no trabaja con un conjunto predefinido de segmentos sino que genera los distintos segmentos para detectar la mejor distribución de estos. 

Conforme avancemos introduciremos nuevos conceptos orientados definir y usar algoritmos concretos dentro de cada una de los tipologías y, más tarde, entraremos en el mundo del Deep Learning.

martes, 12 de julio de 2016

DayF (Decisions at your Fingertips)


Modelado y Análisis de Flujos Dinámicos de Información. Necesidades y Demandas del Usuario.


El estado actual del arte y la proliferación de plataformas Data-Driven han generado una creciente necesidad de información para la toma de decisiones. Esto ha supuesto la aparición en escena de nuevos roles especializados necesarios para el proceso de predicción y simulación, como el Data Scientist pero, realmente ¿qué papel juega el Experto de Dominio?.

Sin duda este perfil es el más adecuado para realizar los modelados y la caracterización de los análisis pero, ¿es necesario adquirir las competencias de un científico de datos para que realice sus propios modelos?.  

Actualmente sí.

Aun cuando una organización pueda permitirse un departamento de Científicos de Datos el GAP existente entre la nueva necesidad, en un sistema dinámico Real Time, y el feedback asociado a dicha necesidad es inevitable.

Si, adicionalmente, le unimos un entorno cambiante y realimentado de forma dinámica, como pueden ser los sistemas de generación energética, los sistemas de abastecimiento, cadenas de producción en base a demanda o incluso la regulación automática de semáforos en base al tráfico, donde las decisiones automáticas tienen que ser fiables e incluir predicciones de comportamiento del sistema en los tramos y componentes vecinos, los sistemas de apoyo a la decisión son planteados como productos llave en mano, con unos costes de implantación, mantenimiento y evolución altos y recurrentes, o como características adicionales desarrolladas sobre productos de base, orientados a otras funciones, como los Scadas o los BI, soluciones que, por otro lado, nunca llegan a cubrir las expectativas.

Las cuestiones por tanto son:
  •          ¿Es posible realizar un producto para la toma de decisiones predictiva y automática partiendo de una topología de red, una caracterización de los elementos, una algorítmica adecuada y existente y unas series históricas de datos?
  •          ¿Es posible generar el producto de forma que sea user-friendly y con una curva de aprendizaje adecuada?
  •          ¿Es posible abstraer al usuario de la complejidad matemática de los modelos y meta-modelos?
  •          ¿Es posible modificar la topología, caracterización de los componentes o inclusión de nueva algorítmica y que el modelo simulado se reajuste automáticamente a su comportamiento óptimo en tiempo y forma?
Y una cuestión adicional: ¿es posible llevarlo a mercado en un modelo Open Source y sus variantes y tener acceso a la financiación necesaria para desarrollarlo?

Sin duda la siguiente evolución del Machine Learning y la cuarta revolución industrial tendrán que resolver estos aspectos.

En los próximos meses analizaremos esta problemática intentando dar solución, en forma de producto, a este comportamiento al que denominaremos data-flow-driven.


La iniciativa DayF (Decisions at your Fingertips) se pone en marcha.