domingo, 27 de noviembre de 2016

Algoritmos de Clustering o Agrupamiento


La tarea fundamental de los algoritmos de clustering se basa en explotar las similaridades entre entidades para realizar agrupaciones entre ellas. Para situarnos, estas técnicas nos permiten encontrar patrones ocultos en nuestros datos, esto es, en nuestros sistemas.

El clustering, por tanto,  busca encontrar los conjuntos de entidades más similares entre ellos (elementos) y lo más más disjuntos entre sí. Pero, ¿para qué nos puede servir este conjunto de técnicas?

En el sector de retail estos algoritmos nos permiten realizar tareas, no supervisadas, de customer discovery y recomendación, esto es, nos permiten descubrir relaciones entre conjuntos de elementos, no descubiertas o utilizadas hasta este momento, y que nos dan una clara ventaja competitiva sobre el resto del sector. Pero, ¿cómo puede apoyar esto a la operativa industrial?

Si bien la regresión es la técnica predictiva principal de cara a la simulación, el clustering nos va a apoyar en tareas de planificación de mantenimientos predictivos y validación de sensores remotos. 

Las técnicas de clustering se basan en algoritmos no supervisados, esto es, partimos de una base de vectores (datos) para generar K conjuntos de datos similares entre sí. Esta información se puede utilizar para planificar acciones de forma agregada. 

Se diferencia de los algoritmos de clasificación en que, en estos, indicamos la categorías en las que queremos que se realice la predicción (etiquetando las categorías) mientras que en los que tratamos actualmente estas categorías no están predefinidas.

Por ejemplo, para una planificación de mantenimiento predictivo, podemos encontrar agrupaciones de sensores por Mean Time Between Failures, distancia existente entre el centro de operación y el sensor, condiciones de accesibilidad, … y utilizar un algoritmo de clustering para encontrar un conjunto de agrupaciones que cumplan condiciones similares y que, por tanto, podamos planificar bajo periodos de frecuencia similares, independientemente de la marca y modelo del sensor (método tradicional).

Bajo este mismo enfoque, podemos realizar validaciones de coherencia de datos y seguridad. Supongamos que realizamos una agregación por clustering de un conjunto de datos internos (sensores propios con los que realizamos las mediciones) y externos (que nos valen de contraste). Realizamos la agrupación a través de un algoritmo de clustering y utilizamos este modelo para ir validando la agrupación en Tiempo Real. Si un elemento por alguna razón cambia de grupo en las sucesivas iteraciones pueden ocurrir dos cosas:

  1. El sensor esta estropeado o ha sido manipulado.
  2. El sensor presenta un cambio de comportamiento no planificado (no tiene por qué ser un error)

En cualquiera de los dos casos conocer esta situación es necesaria desde el punto de vista de que es necesaria una actuación.

Si bien este último ejemplo se puede resolver por otro tipo de técnicas, como clasificación, los algoritmos de clustering nos pueden aportar resultados mucho más potentes en base al descubrimiento de relaciones entre entidades no detectadas hasta este momento.

Principio de funcionamiento

Los algoritmos de clustering se basan en un concepto bastante sencillo, si bien, su implementación no lo es tanto. 

Todos los algoritmos descansan sobre el concepto de similitud, es decir, como de parecidos son, y la técnica más adoptada es la del cálculo de las distancias de los vectores que definen una instancia de una entidad (vector de atributos) con respecto a otro vector que indica el centro de una agrupación.

De forma general, la cercanía se define en términos de una determinada función de distancia, que puede ser la distancia Euclídea, la matriz de correlación entre vectores, la distancia de Manhattan, el coeficiente de correlación de Pearson o cualquier función definida por el usuario y que trasforme un conjunto de vectores en valores que indiquen, para nosotros, la distancia entre ellos.
Profundizando en los algoritmos, existen dos vertientes para su implementación.


Por un lado, están los algoritmos de la familia de k-centers en los que el número de agrupaciones se determinan de antemano y al que pertenecen los algoritmos de k-mean y k-metoids.

La base de los algoritmos de la familia de k-centers es sencilla:establecer k-vectores indicando los centros de cada una de las agrupaciones y determinar para cada uno de los vectores de datos (instancias de entidades) cual es la distancia a cada center y seleccionar aquella que sea la menor para asignarle dicha agrupación.

Sin embargo, la dificultad se encuentra en detectar cuales son los vectores centrales asociados a cada agrupación para obtener el mejor resultado, esto es, el más óptimo.

Una vez visto lo anterior introduciremos un nuevo dato. Los algoritmos de clustering se pueden ver como una extensión de los algoritmos de clasificación, pero realizado en dos pasos:
1) Detección y formación de los clusters y sus centros.
2) Generación de un modelo de clasificación sobre las K agrupaciones generadas.

Los algoritmos de k-centers son algoritmos iterativos que ejecutan la siguiente secuencia de pasos en pseudo-código:

  • Inicializar los centers de forma aleatoria
  • Hacer
    • Asignar las instancias a los distintos cluster
    • Reorganizar los centers en base a la función de distancia sobre las agrupaciones establecidas para obtener un nuevo vector centro de la agrupación
  • Mientras (condición de paradano satisfecha) 

Las condiciones de parada más habituales son un número determinado de iteraciones, la no modificación (o modificación dentro de un umbral) de los k-centers tras realizar una iteración, o la no variación de la asignación de las instancias a las agrupaciones definidas en la iteración anterior.

Por otro lado, están los algoritmos jerárquicos (basados en árboles), aglomerativos (Botom-up) o divisivos (Top-down), donde el número de agrupaciones no está predeterminado de antemano. La forma de representar los arboles de agrupación se realiza mediante los denominados dendogramas que no dejan de ser más que una representación gráfica de un árbol de decisión.

Los algoritmos Top-Down se basan en un algoritmo de división heurístico denominado DIANA (DIvisive ANAlysis Clustering). Inicialmente, todas las instancias de datos están en el mismo cluster. Iterativamente el grupo más grande se divide en objetos individuales y, tras esto y por medio de DIANA, se elige el objeto con la máxima disimilitud promedio generando un nuevo cluster.  Posteriormente reorganizamos los objetos para teniendo en cuenta el nuevo cluster y así sucesivamente hasta satisfacer una condición de parada.

Los algoritmos Bottom-up o aglomerativos parten del principio opuesto al anterior. Inicialmente, todas las instancias de datos independientes, esto es, cada una en su propio cluster. Tras esto, se elige el objeto o cluster con la máxima similitud a otro y se genera una nueva agrupación recalculando el nuevo center para esa agrupación. Se repite la operación hasta que se satisfaga la condición de parada que puede ser o que no exista ninguna agregación posible que mejore la situación actual o bien cuando hay un número suficientemente pequeño de agrupaciones.

En la próxima entrega del blog hablaremos de la última característica realmente importante que necesitamos conocer para abordar nuestro problema que es la reducción de la dimensión o la extracción de las características principales que nos permitirá reducir el volumen de nuestro problema.

domingo, 16 de octubre de 2016

Algoritmos de Regresión





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..
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.

jueves, 15 de septiembre de 2016

Sistemas Dinámicos





Las técnicas analíticas de regresión jugarán un papel fundamental en la resolución de nuestro problema. Recordemos la primera cuestión que queríamos resolver:

¿Es posible realizar un producto de ámbito general 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?

Cuando lanzábamos esta pregunta, irremediablemente, estamos hablando en un porcentaje muy alto de sistemas dinámicos de naturaleza continua pero, ¿qué es un sistema dinámico?

“Un sistema dinámico es aquel cuyo estado evoluciona con el tiempo. El comportamiento en dicho estado se puede caracterizar determinando los límites del sistema, los elementos y sus relaciones; de esta forma se pueden construir instrumentos que buscan representar el comportamiento del sistema”.

Hay miles de ejemplos de sistemas dinámicos a nuestro alrededor; el curso del agua en un río, la trayectoria y evolución de una nube, una cadena de producción de una fábrica, el comportamiento de un individuo en un entorno, etc. en los que si pudiésemos medir todas las variables que afectan al sistema y tuviésemos la suficiente capacidad de cálculo, en teoría, podríamos saber cómo se comportaría en el siguiente instante de tiempo. A este enfoque en el que se reproducen los comportamientos físicos de un objeto en un entorno se le denomina “Simulación”.

Este enfoque es muy exacto y preciso pero presenta un problema; ¿somos capaces de obtener y calcular todos los datos y variables que, en cada momento, afectan a cada individuo del sistema modelado? En algunos casos  pero, para sistemas físicos complejos, se tiene que trabajar con un conjunto reducido de datos para predecir qué va a ocurrir.

Existe un segundo enfoque denominado “Modelado”. Este enfoque no trata de imitar el comportamiento físico de un sistema sino de generar modelos matemáticos (conocimiento) que permitan descubrir el estado final (inferencia) independientemente de cuales sean las leyes físicas que producen que el sistema pase de un estado et a un estado et+1.

Para sistemas complejos con un conjunto limitado de datos este último enfoque suele dar mejores resultados.

Adicionalmente incluiremos un par de conceptos más que nos ayudarán a comprender los algoritmos y técnicas de regresión que necesitaremos para dar respuesta a la cuestión planteada.

Sistemas dinámicos de naturaleza discreta en el tiempo: son aquellos en los que la variación del estado se produce a intervalos concretos del tiempo, esto es, a pequeños lapsos de tiempo no variando su estado entre paso y paso. Los sistemas.

Sistemas dinámicos de naturaleza continúa en el tiempo: son aquellos en los que la variación del estado se produce continuamente.

Aquí se nos presenta el primer problema a resolver. La mayoría de los sistemas productivos industriales son sistemas continuos (energía, agua, cadenas de producción de alta velocidad, etc.) pero la capacidad de medir los datos mediante sensores (IoT) es discreta en la mayoría de las instalaciones (adquisición de datos minutal, cinco-minutal, quince-minutal, horaria, diaria, etc.).

¿Trabajaremos entonces sobre sistemas dinámicos discretos o continuos?

En nuestro caso trataremos normalmente sistemas continuos pero, en función del objetivo del análisis y de los datos disponibles abordaremos una técnica denominada discretizar, que se basa en transformar una distribución continua de datos en discreta con la mínima pérdida de información.

Otro concepto importante es si el sistema dinámico es lineal o no.

Un sistema dinámico es de naturaleza lineal si se puede resolver (predecir) mediante ecuaciones diferenciales lineales según la siguiente formula:

 xt  = ak(xt)yk


Donde x cambia con el tiempo. Tanto a como x pueden ser elementos de  en un espacio vectorial Rk para permitir análisis multi-dimensionales (múltiples variables).


Los sistemas no lineales son mucho más difíciles de analizar y a menudo exhiben un fenómeno conocido como Caos (exhiben un comportamiento muy complicado en intervalos grandes de tiempo), con comportamientos totalmente impredecibles por lo que tiene  que ser modelados por medio de otro tipo de técnicas basadas en el aprendizaje (por ejemplo, Redes Neuronales).

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.


domingo, 10 de julio de 2016

Once upon a Time ... 


“Hay 3 tipos de personas en el mundo: los inamovibles, los movibles y los que se mueven” 
Benjamin Franklin

Tras 6 años en la dirección de una organización se hace casi necesario dar el salto y empezar una nueva etapa profesional más enfocada en la tecnología y en el desarrollo de negocio desde la base, más cerca del barro, desde cero. 

Fiel a mis convicciones no creo en el negro, ni en el blanco, más bien en los grises, creo en las alternancias y el sentido común, y que para avanzar no siempre hay que subir, bajando muchas veces, consigues mas velocidad e impulso. 


Durante esta nueva etapa voy a centrarme en trasladar mi conocimiento a la creación de un producto innovador en modalidad Open Source, en las Áreas de Modelado de Sistemas Continuos y su adaptación al mundo Big Data & Analytics, intentando trasladar todo lo aprendido en estos años, el conocimiento del cliente, de los proyectos, sus problemas y sus soluciones y , sobre todo, de como hacer que la tecnología sea un medio real para progresar, al alcance de todos, para crear nuevos conocimientos y valor siendo capaces de explotar, en todo su potencial, estos avances.


Durante los próximos 6 meses y con la inestimable ayuda de la EOI, a través de su programa Go2Work, validaremos como es de fácil o difícil en España trasladar una idea innovadora (contrastando si realmente es una idea innovadora) a la realidad.

Durante este periodo realizaremos las siguientes validaciones y preparaciones para conseguir que la idea tenga acceso a las fuentes de financiación público/privadas necesarias en condiciones óptimas, tanto de definición y validación de  viabilidad del producto, como de Valor de Negocio. 


Validaremos hasta donde se puede llegar una idea partiendo de cero; cero personal, cero recursos económicos.



  • Estudio de Viabilidad el Producto
  • Definición de Mercado y estrategias de acceso al Mercado
  • Definición de la experiencia de Cliente y Usuario
  • Estrategia y Consecución de Alianzas
  • Definición, Estrategia y Adquisición de equipo
  • Plan de Marketing
  • Plan Financiero
  • Preparación de Papers y Presentaciones
  • Análisis de canales de financiación
  • Preparación para acceso a financiación.
  • Consitución de la Sociedad


Pero por supuesto esto no es lo más importante para este Blog, que se pretende llamar Tecnológico. Durante este periodo también tendremos que realizar demostraciones e investigaciones técnicas de forma que consigamos nuestros objetivos.  Serán muchas horas de trabajo y esfuerzo, muchos cabezazos pero también muchas alegrías que, partiendo de una visión e ideas generales, tendrán que ir profundizando en las técnicas y el stack tecnológico para definir, demostrar y validar los principios básicos de nuestro producto.

¿Merecerá la pena? Seguro...... y con vuestra ayuda más!