Paloma Recuero de los Santos

Paloma Recuero de los Santos

Especialista en generación de contenidos tecnológicos para los canales digitales de Telefónica Tech AI of Things. Licenciada en Ciencias Físicas y Máster en Tecnología Educativa. Apasionada por las “tecnologías para la vida”, las que nos hacen la vida más fácil (que no son todas) y por la pedagogía.
AI & Data
¿Cómo hablar a los niños sobre la Inteligencia Artificial?
Desde la conocida como “generación de los constructores”, los nacidos entre 1925 y 1944, a los pequeños “alfa”, los hijos de los “millenials”, la tecnología ha ido ganando terreno e influencia sobre la vida de las personas. Ya no se trata de una herramienta de investigación o de producción. La "generación alfa”, los nacidos a partir de 2011, y antes que ellos, la “generación Z” (primera década del 2000), son ya auténticos nativos digitales. La Inteligencia Artificial, la realidad aumentada, los juegos de realidad virtual etc crean un contexto nuevo que, indudablemente, influirá en sus actitudes, hábitos y habilidades cognitivas. Pero este nuevo contexto implica también nuevos riesgos para los cuales los adultos podemos y debemos prepararles. En este post daremos algunas claves para hablar a los niños sobre la inteligencia artificial de forma que aprendan a disfrutar de sus ventajas, minimizando o al menos siendo conscientes de sus riesgos. Figura 1: Tabla de generaciones digitales La inteligencia artificial y los niños: el problema En épocas anteriores, la relación de las personas con la tecnología en general, y con la inteligencia artificial en particular, estaba basada en “texto”, normalmente usando lenguajes de programación especializados. Sin embargo, hoy, la inteligencia artificial ha aprendido a hablar e interpretar el lenguaje humano. Así, aunque hablemos con un asistente como si fuera una persona, y le digamos, “Siri, quiero un vídeo de Pepa Pig”, en ningún momento vamos a dudar de que Siri no es una persona. Sin embargo, se está viendo, que, para los pequeños de la generación alfa, los límites entre ellos mismos y la tecnología que les ha rodeado desde siempre, no están tan claros. Figura 2: “Siri, quiero un vídeo de Pepa Pig”, Sue Shellenbarger, columnista del Wall Street Journal, advierte que "muchos niños piensan que los robots son más inteligentes que los humanos o les otorgan poderes mágicos". Un estudio llevado a cabo en 2018 sobre el juguete-robot Cozmo, un juguete diseñado para aparentar “tener alma”, mostraba cómo niños entre 4 y 10 años, pensaban que el juguete era “más inteligente” que ellos, e incluso que era capaz de tener sentimientos. Figura 3: Robot Cozmo (fuente: amazon.com) En la promoción del juguete, Boris Sofman, uno de los fundadores de Anki, la compañía que los fabrica, afirmaba: “Si no juegas con Cozmo por una semana, te sentirás como si no hubieras jugado con tu perrito por una semana” ¿Cómo no se van a sentir confundidos los pequeños, cuando sus juguetes están diseñados de esta forma? Otros estudios muestran cómo niños entre 9 y 15 años se sentían emocionalmente vinculados a robots de aspecto humano, y pensaban que “podían ser sus amigos”; o bien, cambiaban sus respuestas a preguntas tipo ”¿está bien pegar a otros niños?” según “la opinión” de su muñeca. “Mi muñeca dice que “está bien”. La solución Como para casi todas las cosas, la mejor forma de ayudar a los pequeños a definir límites entre la tecnología y la realidad pasa por la educación. Investigadores del MIT están trabajando con niños de distintas edades para ver cómo podemos los adultos ayudarles a percibir la inteligencia artificial de forma correcta. Aunque parezca precipitado, y ciertamente lo es, cuatro años, son muy pocos, niños de esta edad ya eran capaces de comprender que, aunque el juguete les gane a un juego, no es más inteligente que ellos. El curso de ética de la IA del MIT Entre los 10 y 14 años, los niños empiezan a desarrollar pensamientos de alto nivel y lidiar con razonamientos morales complejos. Y también a esa edad, la mayoría disponen de telefónos inteligentes con todo tipo de aplicaciones basadas en IA. El MIT ha desarrollado un curso de ética de la IA para niños, en el que les enseña cómo funcionan los algoritmos basados en IA, y cómo puede haber intenciones determinadas tras las respuestas. Por ejemplo, aprenden por qué Instagram les muestra determinado anuncio, o por qué reciben una información y no otra en su app de noticias. También les retan a diseñar un “algoritmo” en forma de receta para el mejor bocadillo de mantequilla de cacahuete o juegan al bingo (AI Bingo). En definitiva, aprenden de un modo sencillo y divertido, que la tecnología, los robots, las computadoras… no son más que herramientas, rápidas, precisas, potentes, pero no hacen más que seguir los modelos, o los algoritmos con los que los hemos programado. Algunos consejos sencillos para ir poniendo en práctica Los adultos somos una referencia fundamental para los niños, especialmente los padres. Y, sin necesidad de hacer ningún curso del MIT (ni ellos ni nosotros), podemos ayudarles a comprender los límites de la IA con estos sencillos consejos propuestos por Sue Shellenbarger: No te refieras a los asistentes, robots, o juguetes basados en IA como si fueran personas Intenta transmitirles una imagen positiva sobre los beneficios de la IA en general. Nos hacen la vida más fácil en muchos aspectos. Despierta su curiosidad sobre cómo se diseñan y construyen los robots Ayúdales a entender que la "fuente" de la inteligencia de los dispositivos basados en IA son los humanos Plantéales aspectos éticos sobre el diseño de la IA con preguntas como: ¿Deberíamos construir robots que, (como intentamos enseñarles a ellos), sean corteses y pidan las cosas por favor, saluden, den las gracias etc? Fomenta su espíritu crítico respecto a la información que reciben a través de estos juguetes o dispositivos inteligentes; al igual que la recibida de redes sociales e internet. Ten mucho cuidado con los juguetes que se comercializan como el "mejor amigo" de un niño. Pueden llegar a crear dependencias no deseadas. Y lo más importante, intenta rebatir, siempre que surjan, ideas tipo "las máquinas son superiores a los humanos", "los robots acabarán con los humanos" etc, porque pueden resultar perjudiciales para las ingenuas mentes de los más pequeños.
30 de junio de 2022
AI & Data
Python para todos: ¿Por qué usamos números aleatorios ?
Continuamos hablando de "Python para todos". En esta ocasión, explicando por qué necesitamos poder generar números aleatorios para entrenar nuestros modelos de aprendizaje automático. ¿Qué son los números aleatorios? Un número aleatorio es un número obtenido al azar. El ejemplo clásico es lanzar una moneda, o un dado (no trucado). Cada cara de la moneda o del dato, tiene siempre la misma probabilidad de salir, independientemente del resultado anterior. O del resultado de lanzar el otro dado, si lanzamos simultáneamente dos de ellos. En general cuando se requiere una impredecibilidad en unos determinados datos, se utilizan números aleatorios. Números aleatorios y modelos Machine Learning En Ciencia de Datos, como en cualquier otra rama de la Ciencia, se construyen modelos que nos ayuden a representar la realidad o los fenómenos concretos que queremos estudiar. Pero esta realidad, y nosotros mismos, los seres humanos somos altamente impredecibles. Por ello, si queremos que nuestros modelos predictivos se aproximen a la realidad, deben funcionar como ésta: de forma aleatoria. Algunos ejemplos de este tipo de fenómenos son: Evolución del clima Resultado de unas elecciones Erupción del un volcán Evolución del desempleo Epidemias... etc Por tanto, en Machine Learning se trabaja a menudo con generadores de números aleatorios porque éstos permiten a los modelos matemáticos representar la realidad. Generación de números aleatorios Aunque sea tan sencillo como "lanzar un dado", cuando necesitas generar, por ejemplo, un millón de datos, hay que buscar alternativas más eficientes. ¿Por qué no generarlos por ordenador entonces? Esta es un pregunta interesante. Un ordenador es una máquina que repite, a gran velocidad eso sí, los pasos que le pedimos que haga. Sin embargo, es imposible generar algo impredecible en un ordenador. Uno de los primeros científicos interesados en este tema ,el físico John von Neumann, reconocía que la tarea en sí era imposible y acuñó la frase: "Aquel que trate de producir dígitos aleatorios mediante métodos aritméticos está, por supuesto, pecando". "Any one who considers arithmetical methods of producing random digits is, of course, in a state of sin" (John von Neumann) Recientemente han surgido alternativas interesantes, como basar la generación de números aleatorios en procesos físicos realmente impredecibles, como son los procesos cuánticos. Sin embargo, lo más habitual es "tirar por el camino de enmedio" y trabajar con números pseudoaleatorios, que se obtienen a partir de operaciones aritméticas, y se parecen mucho a los números aleatorios. No sirven para todos los casos, por ejemplo en ciberseguridad es muy importante que sean realmente aleatorios, pero para la mayoría de los problemas, funcionan. Una vez aclarado el porqué son necesarios los datos aleatorios en Machine Learning, ya sólo nos queda ponernos manos a la obra y aprender a generarlos en Python. Pero ésto, ya lo dejamos para el próximo post. ¡No te lo pierdas! AI OF THINGS Python para todos: 5 formas de generar datos aleatorios 8 de septiembre de 2020
23 de marzo de 2022
AI & Data
Python para todos: 5 formas de cargar datos para tus proyectos de Machine Learning
Uno de los primeros pasos que hay que dar cuando queremos crear un modelo de aprendizaje automático en Python es cargar los datos a partir de los cuales construiremos nuestro modelo. Hay distintas formas de llevar a cabo esta tarea, que dependerán del formato que tengan los datos, su ubicación o los recursos/librerías de Python que queramos utilizar. Empezaremos por lo más sencillo. Cargar de ficheros csv en Python. Se trata de uno de los formatos de datos más habituales. A la hora de cargar un fichero csv, deberemos tener en cuenta algunos detalles como: Su ubicación Si tienen cabecera o “header” Si tiene comentarios (señalados por medio de #) Qué tipo de delimitador utiliza (“,”, “/”, espacios en blanco etc) Lo primero que habrá que hacer, por tanto, es guardar los datos en nuestro directorio de trabajo. Comprobamos cuál es mediante el comando os.getcwd(). Si queremos cambiarlo, podemos usar el comando chdir(), ojo que tenemos que usar “\” dobles para especificar la nueva ruta: Una vez que tenemos claramente definido el directorio de trabajo, guardamos en él los datasets con los que vamos a trabajar en nuestros proyectos. Para cargar estos datos en Python podemos usar distintas opciones: Cargar los ficheros CSV usando el módulo CSV de la librería estándar de Python Cargar los ficheros CSV usando NumPy Cargar los ficheros CSV usando Pandas Cargar los ficheros desde la URL Cargar ficheros de pruebas desde librerías (Staatsmodels, etc) 1. Usando el módulo csv de la librería estándar Para extraer los datos de un fichero csv, primero lo "abrimos" con la función open(). Después, usamos la función, csv.reader(), que lee línea a línea el fichero, y hace una lista de todas las columnas en el objeto reader. Es mucho más sencillo hacerlo que explicarlo, así que mejor, lo vemos con un ejemplo. Hemos guardado, en nuestro directorio de trabajo, un dataset de ejemplo con datos sobre diabetes. 2. Usando NumPy Otra forma de cargar los datos es usando la función numpy.loadtxt() de la librería NumPy. Para ello, lo primero que tendremos que hacer es cargar la librería. Esta función asume que el fichero no tiene cabeceras, y que todos los datos tienen el mismo formato. Como no es el caso de nuestro dataset sobre diabetes, usaremos el modificador "skiprow" para indicar que no debe tener en cuenta la primera fila. En este ejemplo, también le hemos pedido que nos indique las dimensiones del dataset y nos muestre los datos. 3. Usando Pandas Esta tercera forma de cargar los datos es, probablemente, la más popular entre los científicos de datos como veremos, por muy buenas razones. En este caso, la función que usaremos es readcsv(). Esta función nos ofrece una gran flexibilidad a la hora de importar datos, ya que de forma automática, o con una simple línea de comando, permite hacer cosas como: Detectar automáticamente las cabeceras o "headers" "Saltar" líneas con el modificador "skiprow" Detectar automáticamente el tipo de datos (número entero, decimal, cadena de texto etc) Identificar campos con datos erróneos o vacíos Convertir los datos en formato csv en un dataframe de Pandas Los dataframes de Pandas son unas estructuras de datos diseñadas especialmente para facilitar el trabajo del analista y científico de datos. Permiten trabajar con datos de todo tipo (enteros, decimales, cadenas de texto) dispuestos en forma de tablas, incluso con series temporales. También se pueden usar como vectores y matrices, lo que permite realizar operaciones de álgebra lineal, como la multiplicación de matrices. Otro aspecto importante de pandas.read_csv() es que puede ejecutarse con la opción chunksize, que, en lugar de cargar el fichero de datos completo en memoria, permite hacerlo en fragmentos (chunks) de tamaño configurable, mejorando mucho la eficiencia en la carga de datos de ficheros muy grandes. Veamos un ejemplo. 4. Desde URL. Otra de las formas más habituales de cargar un dataset es directamente desde la URL donde se alojan los datos. Este método es perfectamente compatible con los anteriores. Por ejemplo, podemos modificar el ejemplo anterior, para que cargue los datos desde su ubicación original. 5. Desde otras librerías. Cuando lo que queremos es hacer una prueba rápida, nos pueden resultar muy útiles los datasets que traen "de serie" algunos de los paquetes más populares como statsmodels, scikit-learn, o seaborn. Se trata de conjuntos de datos de todo tipo "para hacer pruebas" que se conocen como "Toy datasets" y de los que hablaremos con más detalle en el próximo post. En el experimento que hicimos para explicar en qué consiste la regresión logística paso a paso, usamos uno de estos conjuntos de datos. En concreto, el dataset "affairs", de statsmodels. En este post, podéis ver cómo se cargan los datos desde la librería y, si os animáis, seguir el ejemplo completo, explicado paso a paso. Como veis, hay muchas formas distintas de cargar los datos. Aunque, según nos resulte más sencillo y cómodo, tendremos cada uno nuestra "favorita", es bueno conocer las otras alternativas por si nos surge algún caso en el que resulte conveniente cambiar de método. ¿Cuál es la tuya?
1 de febrero de 2022
AI & Data
Datos de entrenamiento vs datos de test
Los algoritmos de Machine Learning aprenden de los datos con los que los entrenamos. A partir de ellos, intentan encontrar o inferir el patrón que les permita predecir el resultado para un nuevo caso. Pero, para poder calibrar si un modelo funciona, necesitaremos probarlo con un conjunto de datos diferente. Por ello, en todo proceso de aprendizaje automático, los datos de trabajo se dividen en dos partes: datos de entrenamiento y datos de prueba o test. Datos de entrenamiento o "training data" Los datos de entrenamiento o "training data" son los datos que usamos para entrenar un modelo. La calidad de nuestro modelo de aprendizaje automático va a ser directamente proporcional a la calidad de los datos. Por ello las labores de limpieza, depuración o "data wrangling" consumen un porcentaje importante del tiempo de los científicos de datos. AI OF THINGS ¿La clave del éxito del Machine Learning? Datos de calidad 24 de abril de 2018 Datos de prueba, validación o "testing data" Los datos de prueba, validación o "testing data" son los datos que nos “reservamos” para comprobar si el modelo que hemos generado a partir de los datos de entrenamiento “funciona”. Es decir, si las respuestas predichas por el modelo para un caso totalmente nuevo son acertadas o no. Es importante que el conjunto de datos de prueba tenga un volumen suficiente como para generar resultados estadísticamente significativos, y a la vez, que sea representativo del conjunto de datos global. Normalmente el conjunto de datos se suele repartir en un 70% de datos de entrenamiento y un 30% de datos de test, pero se puede variar la proporción según el caso. Lo importante es ser siempre conscientes de que hay que evitar el sobreajuste u “overfitting”. (En este post, podéis ver un ejemplo en Python de cómo separar un conjunto de datos en datos de entrenamiento y validación). AI OF THINGS Python para todos (5): Termina tu primer experimento de Machine Learning con Python 16 de abril de 2018 Sobreajuste u "overfitting" El sobreajuste ocurre cuando un modelo está “sobre-entrenado”. Son modelos complejos que se ajusta tan milimétricamente al conjunto de datos a partir del cual se han creado, que pierden gran parte de su poder predictivo, y ya no son útiles para otros conjuntos de datos. Esto se debe a que los datos siempre tienen cierto grado de error o imprecisión, e intentar ajustarse demasiado a ellos, complica el modelo inútilmente al mismo tiempo que le resta utilidad. Lo entenderemos mejor con un ejemplo. Señal versus ruido En un conjunto de datos, hay patrones subyacentes que representan la señal que buscamos detectar. Sin embargo, también hay un componente de ruido o aleatoriedad. Un modelo de aprendizaje automático bien ajustado, es capaz de aprender de la señal e ignorar o minimizar el ruido. Figura 1: Ejemplo de sobreajuste- línea verde (fuente) La gráfica anterior representa un problema de clasificación binario. El modelo representado por la línea negra parece ser un buen predictor para nuevos casos. Si está a la derecha de la línea, será de clase "azul" y si está a la izquierda, "rojo". Por el contrario, la línea verde representa un modelo sobreajustado porque ha aprendido del "ruido". Como indicamos antes, es un modelo inútilmente complejo, ya que aunque su rendimiento sea mejor para este conjunto de datos en particular, no será "exportable" a otros conjuntos de datos. Subajuste o underfitting El underfitting o subajuste es justamente el caso contrario. Ocurre cuando el conjunto de datos de entrenamiento es insuficiente, con ruido en alguna de sus dimensiones o, en definitiva, poco representativo. Como consecuencia, nos lleva a un modelo excesivamente simple, con poco valor predictor. Por ello, para generar un buen modelo de aprendizaje automático, es importante encontrar el punto medio entre ambas tendencias. Otra forma de expresar este equilibrio es mediante los conceptos de "Bias vs Varianza". En este otro post de nuestro blog, os explicamos en detalle en qué consisten estos conceptos y cómo conseguir ese punto de equilibrio (sweet spot) que nos garantice un modelo fiable. AI OF THINGS ¿Qué es overfitting y cómo evitarlo? 8 de abril de 2019 Conclusión La partición de los datos de trabajo en estos dos conjuntos diferenciados permite generar el modelo a partir de los datos de entrenamiento para después comprobar su eficiencia con los datos reservados para test. Los resultados de cualquier modelo basado en aprendizaje automático tienen una gran dependencia de los datos a partir de los cuales se han generado. Por ello, es fundamental cuidar su calidad y buscar siempre el equilibrio entre bias y varianza.
24 de enero de 2022
AI & Data
Cómo interpretar la matriz de confusión: ejemplo práctico
La matriz de confusión es una herramienta muy útil para valorar cómo de bueno es un modelo clasificación basado en aprendizaje automático. En particular, sirve para mostrar de forma explícita cuándo una clase es confundida con otra, lo cual nos, permite trabajar de forma separada con distintos tipos de error. En un post anterior de nuestro blog, explicamos detalladamente el concepto de matriz de confusión y sus métricas asociadas. Hoy planteamos un sencillo ejemplo de apliación. AI OF THINGS Machine Learning a tu alcance: La matriz de confusión 23 de enero de 2018 Recordando nuestro "experimento" de predicción de infidelidad Rescatamos para este post uno de nuestros experimentos anteriores. En concreto el de hicimos para explicar el algoritmo de regresión logística. AI OF THINGS Especial San Valentin: ¿Podemos predecir la infidelidad con Inteligencia Artificial? 14 de febrero de 2019 Si recordamos, trabajamos con el dataset “affairs”, basado en en una encuesta realizada por la revista Redbook en 1974, en la que se preguntaba a mujeres casadas por sus aventuras extramaritales. Este dataset, que cargamos desde la librería Staatsmodel, constaba de 6366 observaciones con 9 variables, de tipo "valoración de su matrimonio", "años de casada", "número de hijos", "nivel de estudios" etc. Figura 1: Descripción del dataset affairs Objetivo del modelo El objetivo era crear un modelo que predijera si un individuo (en este caso, mujer) iba a ser “fiel” o “infiel”, basándose en el valor de esas 9 variables para el nuevo caso y en lo “aprendido” por el modelo a partir de los datos de entrenamiento (los datos de la encuesta). Regresión logística En este ejemplo, aplicamos el modelo de regresión logística de scikit-learn. Se trata de un modelo de probabilidad lineal, en el que la probabilidad condicionada es función lineal de los valores de las variables de entrada. Por tanto, obtenemos la probabilidad de que la variable dependiente tenga un valor categórico u otro (en nuestro ejemplo o “infidelity”= 0, o “infidelity”= 1), en función de los valores de las variables de entrada. Evaluación del modelo Llegado el momento de evaluar el modelo, es cuando vamos a echar mano de la matriz de confusión. Para ello, dividimos el dataset en dos partes. Dejamos un 75% de los datos como datos de entrenamiento (train), y reservamos el 25% restando como datos de prueba (test). A continuación, entrenamos el modelo de nuevo, pero ahora sólo con los datos de entrenamiento. AI OF THINGS Datos de entrenamiento vs datos de test 24 de enero de 2022 En el siguiente paso, lo aplicamos a los datos reservados como “test”, y ya evaluamos su rendimiento, calculando la matriz de confusión y las métricas exactitud (Accurary) y precisión (Precision). Figura 2: Cálculo de la matriz de confusión y métricas Para mayor claridad, visualizamos la matriz de confusión en forma de mapa de calor. Figura 3: Matriz de confusión en forma de mapa de calor (ampliar) Matriz de confusión Merece la pena pararnos un momento a recordar el significado de la matriz de confusión y sus métricas asociadas, antes de pasar a interpretarla en nuestro ejemplo. Figura 4: Matriz de confusión y métricas asociadas (ampliar) Los valores de la diagonal principal a=993 y d=176 se corresponden con los valores estimados de forma correcta por el modelo, tanto los verdaderos positivos_ TP(d), como los verdaderos negativos_TN (a). La otra diagonal, por tanto, representa los casos en los que el modelo "se ha equivocado (c=316 falsos negativos_FN, b=107 falsos positivos_FP). Exactitud Si recordamos, la exactitud (o "accuracy") representa el porcentaje de predicciones correctas frente al total. Por tanto, es el cociente entre los casos bien clasificados por el modelo (verdaderos positivos y verdaderos negativos, es decir, los valores en la diagonal de la matriz de confusión), y la suma de todos los casos. Sin embargo, cuando un conjunto de datos es poco equilibrado, no es una métrica útil. Por ejemplo, si lo que intentamos predecir es una enfermedad rara, y nuestro algoritmo clasifica a todos los individuos como sanos, podría ser muy preciso (incluso un 99%), pero también, totalmente inútil. Por ello, en estos casos se suele recurrir a otras métricas, como la sensibilidad (o recall), que representa la habilidad del modelo de detectar los casos relevantes, y que veremos un poco más adelante. (El valor obtenido para este modelo es de un 73%. No es maravilloso, pero podemos considerarlo aceptable). Para calcularlo a mano, a partir de la matriz de confusión: (993+176)/(993+176+107+316)=1169/1592= 0,73—73% Precisión La precisión, (o“precision”) se refiere a lo cerca que está el resultado de una predicción del valor verdadero. Por tanto, es el cociente entre los casos positivos bien clasificados por el modelo y el total de predicciones positivas. Para calcularlo a mano, a partir de la matriz de confusión: (176)/(176+107)= 0,62— 62% El valor obtenido para este modelo es de un 62%. Por tanto, nuestro modelo es más preciso que exacto. Sigamos con otras métricas. Sensibilidad, exhaustividad La sensibilidad (o recall) representa la tasa de verdaderos positivos (True Positive Rate) ó TP. Es la proporción entre los casos positivos bien clasificados por el modelo, respecto al total de positivos. Para calcularlo en este caso: 176/(316+176)=0,35— 35% Representa, como hemos dicho antes, la habilidad del modelo de detectar los casos relevantes. Un 35% es claramente un valor muy malo para una métrica. Podemos decir que nuestro algoritmo de clasificación es poco sensible, "se le escapan" muchos positivos. Especifidad La especificidad, por su parte, es la tasa de verdaderos negativos, (“true negative rate”)o TN. Es la proporción entre los casos negativos bien clasificados por el modelo, respecto al total de negativos. Para calcularlo a mano, a partir de la matriz de confusión: 993/(993+107)=0,90 —90% En este caso, la especificad tiene un valor muy bueno. Esto significa que su capacidad de discriminar los casos negativos es muy buena. O lo que es lo mismo, es difícil obtener falsos positivos. ¿Qué métrica elegir? La conveniencia de usar una métrica otra como medida del estimador dependerá de cada caso en particular y, en concreto, del “coste” asociado a cada error de clasificación del algoritmo. En este ejemplo, la sensibilidad=0,35 y la especifidad=0,90. Por tanto, este modelo mucho más específico que sensible. Esta es la situación que nos interesa cuando nuestro objetivo es evitar a toda costa los falsos positivos. Un ejemplo típico sería una prueba de dopping en un deportista. Si un falso positivo significa expulsarle de la competición injustamente, debemos evitar esta situación. En nuestro ejemplo sobre infidelidad, podemos decir que nuestro modelo evitaría "acusaciones injustas" ;) Si lo que nos interesa es identificar los verdaderos negativos, (evitar falsos positivos) debemos elegir especifidad alta. Por el contrario, si las "falsas alarmas" no nos preocupan, y lo que queremos evitar son los falsos negativos, nos interesa una mayor sensibilidad o recall. Por ejemplo, no nos importa un falso positivo en una prueba de diabetes, ya que, indudablemente, la prueba se repetirá. Sin embargo, no nos interesa que una persona diabética no diagnosticada, no acceda rápidamente al tratamiento adecuado debido a un falso negativo. Si lo que nos interesa es evitar falsos negativos, debemos elegir sensibilidad alta. Conclusión Este pequeño experimento, evidentemente, no tiene mayor utilidad que la de ayudarnos a aprender cómo funciona el algoritmo de regresión logística o cómo interpretar la matriz de confusión. Un modelo no vale nada, si los datos sobre los que se ha entrenado no tienen ni el volumen ni la calidad suficientes (como en este ejemplo). Sin embargo, como vemos, la mejor manera de aprender es...¡haciendo! Para ello, no te pierdas nuestra colección de tutoriales sobre IA y Big Data.
13 de diciembre de 2021
AI & Data
Tipos de aprendizaje en Machine Learning: supervisado y no supervisado
El machine Learning o aprendizaje automático consiste básicamente en automatizar, mediante distintos algoritmos, la identificación de patrones o tendencias que se “esconden” en los datos. Por ello, resulta muy importante no sólo la elección del algoritmo más adecuado (y su posterior parametrización para cada problemática concreta), sino también el hecho de disponer de un gran volumen de datos de suficiente calidad. En los últimos años, el machine learning ha cobrado una gran importancia en el mundo de los negocios, ya que el uso inteligente de las analíticas de datos es clave para el éxito empresarial. En este post vamos a explicar en qué consiste el aprendizaje automático, que tipos de aprendizaje hay, cómo funcionan y para qué se utilizan. Realmente, ¿qué es Machine learning? Es una rama de la inteligencia artificial que empezó a cobrar importancia a partir de los años 80. Se trata de un tipo de IA que ya no depende de unas reglas y un programador, sino que la computadora puede establecer sus propias reglas y aprender por sí misma. El aprendizaje automático se produce por medio de algoritmos. Un algoritmo no es más que una serie de pasos ordenados que se dan para realizar una tarea. El objetivo del machine learning es crear un modelo que nos permita resolver una tarea dada. Luego se entrena el modelo usando gran cantidad de datos. El modelo aprende de estos datos y es capaz de hacer predicciones. Según la tarea que se quiera realizar, será más adecuado trabajar con un algoritmo u otro. La elección del algoritmo no es fácil. Si buscamos información en internet, podemos encontrar con un auténtica avalancha de artículos muy detallados, que a veces, más que ayudarnos, nos confunden. Por ello, vamos a intentar dar algunas pautas básicas para empezar a trabajar. AI OF THINGS Empieza ya a programar Inteligencia Artificial: lenguajes, herramientas y recomendaciones 18 de enero de 2023 Hay dos preguntas fundamentales que nos debemos plantear. La primera es: ¿Qué queremos hacer? El quid de la cuestión es definir de forma clara el objetivo. Para resolver nuestro problema, pues, nos plantearemos qué tipo de tarea es la que tendremos que acometer. Puede tratarse, por ejemplo, de: Problemas de clasificación como detección de correo basura o “spam”. Problemas de clustering como recomendar un libro a un usuario basándonos en sus compras anteriores (sistema de recomendación) f Problemas de regresión, como averiguar cuánto va usar un cliente determinado servicio (determinar un valor) Si consideramos el clásico problema de retención de clientes, vemos que podemos abordarlo desde distintos enfoques. Queremos hacer una segmentación de clientes, sí, pero ¿qué estrategia es la más adecuada? ¿Es mejor tratarlo como problema de clasificación, clustering o incluso regresión? La pista clave nos la va a dar plantearnos la segunda pregunta. ¿Qué información tengo para conseguir mi objetivo? Si yo me pregunto: "Mis clientes, ¿se agrupan de alguna manera, de forma natural?", no he definido ningún objetivo (target) para el agrupamiento. Sin embargo, si planteo la pregunta de esta otra forma: ¿Podemos identificar grupos de clientes con una alta probabilidad de solicitar la baja del servicio en cuanto finalice su contrato?, tenemos un objetivo perfectamente definido: ¿se dará de baja el cliente?, y queremos tomar medidas según la respuesta que obtengamos. En el primer caso, nos encontramos ante un ejemplo de aprendizaje no supervisado, mientras que el segundo lo es de aprendizaje supervisado. En las fases iniciales del proceso de Data Science, es muy importante decidir si la “estrategia de ataque” será supervisada o no supervisada, y en éste último caso definir de forma precisa cuál va a ser la variable objetivo. Según decidamos, trabajaremos con una familia de algoritmos o con otra. Una vez identificado lo anterior, se emplearán algoritmos prefijados para que se pueda escoger con cual trabajar. Entre los más conocidos se tienen: scikit-learning, machine learning algorithm cheat see, entre otros. Figura 2: "Chuleta" de selección de algoritmo de Scikit-learn. Tipos de Machine Learning Los tipos de implementación de machine Learning pueden clasificarse en tres categorías diferentes: Aprendizaje supervisado Aprendizaje no supervisado Aprendizaje de refuerzo según la naturaleza de los datos que recibe. Aprendizaje Supervisado En el aprendizaje supervisado, los algoritmos trabajan con datos “etiquetados” (labeled data), intentado encontrar una función que, dadas las variables de entrada (input data), les asigne la etiqueta de salida adecuada. El algoritmo se entrena con un “histórico” de datos y así “aprende” a asignar la etiqueta de salida adecuada a un nuevo valor, es decir, predice el valor de salida. (Simeone, 2018) Por ejemplo, un detector de spam, analiza el histórico de mensajes, viendo qué función puede representar, según los parámetros de entrada que se definan (el remitente, si el destinatario es individual o parte de una lista, si el asunto contiene determinados términos etc), la asignación de la etiqueta “spam” o “no es spam”. Una vez definida esta función, al introducir un nuevo mensaje no etiquetado, el algoritmo es capaz de asignarle la etiqueta correcta. El aprendizaje supervisado se suele usar en: Problemas de clasificación (identificación de dígitos, diagnósticos, o detección de fraude de identidad). Problemas de regresión (predicciones meteorológicas, de expectativa de vida, de crecimiento etc). Estos dos tipos principales de aprendizaje supervisado, clasificación y regresión, se distinguen por el tipo de variable objetivo. En los casos de clasificación, es de tipo categórico, mientras que, en los casos de regresión, la variable objetivo es de tipo numérico. Los algoritmos más habituales que aplican para el aprendizaje supervisado son: Árboles de decisión. Clasificación de Naïve Bayes. Regresión por mínimos cuadrados. Regresión Logística. Support Vector Machines (SVM). Métodos “Ensemble” (Conjuntos de clasificadores). Aprendizaje no Supervisado El aprendizaje no supervisado tiene lugar cuando no se dispone de datos “etiquetados” para el entrenamiento. Sólo conocemos los datos de entrada, pero no existen datos de salida que correspondan a un determinado input. Por tanto, sólo podemos describir la estructura de los datos, para intentar encontrar algún tipo de organización que simplifique el análisis. Por ello, tienen un carácter exploratorio. Por ejemplo, las tareas de clustering, buscan agrupamientos basados en similitudes, pero nada garantiza que éstas tengan algún significado o utilidad. En ocasiones, al explorar los datos sin un objetivo definido, se pueden encontrar correlaciones espúreas curiosas, pero poco prácticas. El aprendizaje no supervisado se suele usar en: Problemas de clustering Agrupamientos de co-ocurrencias Perfilado o profiling. Si embargo, los problemas que implican tareas de encontrar similitud, predicción de enlaces o reducción de datos, pueden ser supervisados o no. Los tipos de algoritmo más habituales en aprendizaje no supervisado son: 1. Algoritmos de clustering 2. Análisis de componentes principales 3. Descomposición en valores singulares (singular value decomposition) 4. Análisis de componentes principales (Independent Component Analysis) ¿Entonces, qué es el aprendizaje por refuerzo? No todos los algoritmos ML se pueden clasificar como algoritmos de aprendizaje supervisado o no supervisado. Hay una "tierra de nadie" que es donde encajan las técnicas de aprendizaje por refuerzo. Este tipo aprendizaje se basa en mejorar la respuesta del modelo usando un proceso de retroalimentación. El algoritmo aprende observando el mundo que le rodea. Su información de entrada es el feedback o retroalimentación que obtiene del mundo exterior como respuesta a sus acciones. Por lo tanto, el sistema aprende a base de ensayo-error. No es un tipo de aprendizaje supervisado, porque no se basa estrictamente en un conjunto de datos etiquetados, sino en la monitorización de la respuesta a las acciones tomadas. Tampoco es un aprendizaje no supervisado, ya que, cuando modelamos a nuestro "aprendiz"sabemos de antemano cuál es la recompensa esperada. Si quieres saber más sobre tipos de aprendizaje, no te pierdas este otro post, donde explicamos qué es el aprendizaje por transferencia. Usos prácticos del Machine learning Para terminar, veamos algunos de los usos prácticos mas habituales del aprendizaje automático. Seguridad informática, diagnóstico de ataques, prevención de fraude online, detección de anomalías, etc. Reconocimiento de imágenes o patrones (facial, dactilar, objetos, voz, etc) Conducción autónoma, mediante algoritmos deep learning: identificación de imágenes en tiempo real, detección de obstáculos y señales de tráfico, prevención de accidentes... Salud: evaluación automática de pruebas diagnósticas, robótica médica etc Análisis de mercado de valores ( predicciones financieras, evolución de mercados etc) Motores de recomendación Es fundamental tener claro en todo momento los objetivos buscados por la empresa a la hora de utilizar estas técnicas, para poder plantear las preguntas adecuadas a los datos. Y, por supuesto, trabajar siempre con datos de calidad. Simeone, O. (2018). A Very Brief Introduction to Machine Learning With Applications to Communication Systems. Repositorio Universidad de Cornell. Computerworld. (2019). Tendencias tecnológicas para 2020: las apuestas de Gartner.
2 de diciembre de 2021
AI & Data
Tutorial Power BI: ¿De donde vienen los nuevos madrileños?
Si quieres aprender a visualizar datos con Power BI, la mejor manera es ponerse manos a la obra y trabajar sobre un ejemplo. En un post anterior ya explicamos cómo instalar la herramienta y trabajamos sobre un conjunto de datos publicado en el portal de datos abiertos de Londres. Primeros pasos: instalamos la herramienta AI OF THINGS Ciudades Inteligentes: Tutorial de Power BI sobre Open Data 24 de abril de 2017 Descargamos los datos. En esta ocasión, nos hemos planteado investigar sobre el origen de los "nuevos madrileños". Para ello, vamos a trabajar sobre un conjunto de datos que recoge los nacimientos producidos en la ciudad de Madrid por nacionalidad/origen de la madre, publicado en el portal de datos abiertos de la Comunidad de Madrid. Analizando estos datos, vamos a poder dar respuesta a preguntas del tipo: ¿En qué distritos/barrios se producen más nacimientos y cuáles menos? ¿Cuáles son las raíces de estos "nuevos madrileños"?¿de qué región española o país proceden sus madres? En este ejemplo, hemos descargado directamente el csv (botón rojo), pero también hay disponible una API de datos. El asistente nos ofrece ejemplos sencillos sobre cómo cargar los datos en Python, o ejemplos de consultas SQL y Ajax. Figura 1: Dataset de trabajo, descargable desde el portal de datos abiertos de la Comunidad de Madrid Exploramos los datos. Lo primero, como siempre, es echarle un vistazo preliminar al conjunto de datos. Nos interesa conocer aspectos como el número de registros disponibles, quién creó el dataset, cuándo, bajo qué licencia, con qué frecuencia se actualizan etc. Toda esta información está en la ficha de los datos. Figura 2: Información adicional de la ficha de datos. También necesitamos conocer la descripción de los campos o variables del conjunto de datos, en qué formato están, de dónde proceden los datos, Para ello, consultamos el "Dicccionario de datos". En este conjunto de datos tenemos información, desagregada por distrito y barrio , sobre niños y niñas nacidos en el Municipio de Madrid . También se indica la nacionalidad u origen de la madre. Las madres nacidas en el extranjero se agrupan en la provincia 66 denominada "Extranjero". En la categoría "No consta" se incluyen tanto las que no se sabe si han nacido en España o el extranjero, como las que sabiendo que han nacido en España no se sabe en qué provincia lo hicieron. Los datos proceden de la última explotación del Movimiento Natural de la Población. Cargamos los datos en Power BI. Cargamos el csv en la herramienta. Si la usas por primera vez, no dejes de leer el post que hemos indicado al principio, donde estos pasos se describen con todo detalle. Figura 4: Carga de datos en Power BI ¿Cuántos nacimientos hubo en Madrid capital en 2018? Una de las primeras preguntas que podemos hacerlos es: ¿Cuántos niños nacieron en Madrid en 2018? ¿Nacieron más niños o más niñas?. Para responder a estas preguntas, podemos simplemente visualizar, en una tabla, los campos "Número de nacimientos" y "sexo". Figura 5: Visualización del número de nacimientos y sexo del bebé en una tabla Obtenemos: Figura 6: Número de nacimientos por sexo del bebé. Para calcular los porcentajes, no tenemos más que cambiar a la visualización de "pie chart" o bien la "gauge", seleccionar el modo "Focus" para verlo mejor y pasar el ratón por cada sector de la los sectores. Figura 7: Visualización de la distribución de nacimientos por sexo. (Tamaño real) Como era de esperar, los porcentajes están muy igualados, aunque, en este caso, nacieron más varones, con un 48,62% de niñas frente a un 51, 38 de niños. ¿En qué distritos nacieron más niños ? Para saber en qué distritos/barrios han tenido lugar más nacimientos, agregamos el campo "nombre de distrito" a nuestros datos de trabajo. Figura 8: Agregamos campos distrito-barrio. En este caso, por ejemplo, la visualización de "line and clustered column chart" (gráfico de líneas y columnas agrupadas) nos permite apreciar, de un vistazo, la gran diferencia entre distritos. Seleccionamos la opción "Data Labels on" en el menú "Formato" para que indique el valor de referencia. (Pulsar "tamaño real" , en el pie de imagen para verlas a mayor tamaño) Figura 9: Visualización del número de nacimientos por distrito. (tamaño real) Modificamos las visualizaciones según nuestras preferencias. Podemos, por ejemplo, ordenarlos de mayor a menor, usando el menú "más opciones", que aparece en la esquina superior derecha: Figura 10: Menú "mas opciones" O cambiar el color, tipo de letra, tamaño, títulos etc. usando el menú "Formato": Figura 11: Menú formato Figura 10: Visualización del número de nacimientos por distrito de mayor a menor (tamaño real) O bien usar otra visualización diferente, como por ejemplo, el diagrama de árbol ("treemap"): Figura 11: Visualización del número de nacimientos por distrito diagrama árbol (tamaño real) En todas ellas se puede apreciar que el distrito de Fuencarral-El Pardo, con 2521 nacimientos, es aquel donde han nacido más niños, mientras que el de Barajas, con 490, es donde menos. Saltamos al siguiente nivel ("drill down") Pulsando la flecha que aparece en la esquina superior derecha activamos el "Drill down" que nos permite "profundizar" un nivel. Podemos seleccionar un distrito concreto, haciendo click sobre la columna que lo representa y pasamos a ver la distribución de nacimientos por barrios. Por ejemplo, si seleccionamos el distrito de Retiro, vemos la siguiente distribución. Puede ser interesante comparar esta distribución de nacimientos por barrios con la correspondiente a otros distritos de Madrid. En este caso, hemos escogido los distritos de Centro, Fuencarral y Puente de Vallecas. Se aprecia una gran diferencia entre barrios en prácticamente todos los distritos, lo que sugiere que es importante bajar hasta este nivel para asegurarse de que los recursos lleguen a los ciudadanos que los necesitan. Nacimientos por barrios en Centro Nacimientos por barrios en Fuencarral Nacimientos por barrios en Puente de Vallecas Nacimientos por barrios en Retiro Por ejemplo, es fácil ver que la mayor parte de los nacimientos en el distrito de Retiro corresponden al popular barrio de Pacífico. (Podríamos incluso bajar un nivel más y ver, dentro de cada barrio, el número de nacimientos que corresponden a cada sexo, pero en este caso, no aportaría información relevante). Esta información es de gran importancia a la hora de valorar qué inversiones son precisas para proveer a estos nuevos madrileños de las instalaciones y servicios necesarios. Hablamos de temas tan importantes como escuelas infantiles, colegios, profesores, pediatras, zonas verdes, bibliotecas, servicios sociales, instalaciones deportivas etc. Por ello, también nos podría interesar averiguar qué porcentaje de nacimientos corresponde a cada barrio. Una forma muy rápida de verlo es cambiar el tipo de gráfico, y seleccionar el diagrama de sectores o "pie chart". Al pasar el cursor sobre cada sector, nos indica el número de nacimientos por barrio y el porcentaje que supone respecto del total. También, desde el menú "Formato" /Etiquetas de detalles/Estilo de etiqueta se puede elegir que el porcentaje aparezca de forma explícita. El barrio de Valverde, en Fuencarral, por ejemplo, supone un 33,68% del total. Porcentaje de nacimientos por barrio en Fuencarral Porcentaje de nacimientos por barrio en Latina Porcentaje de nacimientos por barrio en Puente de Vallecas Figura 11: Porcentaje de nacimientos por barrio. ¿Cuál es el origen de las madres? Para contestar a esta pregunta, agregamos un nuevo campo de datos. En particular el campo " provincia de nacimiento de la madre". Su valor puede ser cualquier provincia española, "nació en el extranjero", o "no consta" . Si queremos ver, "grosso modo" el origen de las madres, nos sirve el mismo diagrama de sectores o "pie chart" una vez agregado el nuevo campo. Figura 12: Nacimientos según el origen de la madre (tamaño real) Así, podemos ver que, de un total de 29.032 nacimientos, un 43,76% de las madres eran originarias de Madrid. Del resto, un 21,01% procedían de otras provincias españolas, y un 34,13% del extranjero. Los datos corresponden sólo a los nacimientos producidos en Madrid en 2018 y para ser precisos, habría que considerar un conjunto de datos más amplio que abarcara un intervalo temporal más amplio. Ya que no tenemos datos de nacionalidades, podemos filtrar por los campos "Origen Madrid, Extrajero y no consta", podemos ver de qué provincias españolas proceden las madres. Podemos elegir, por ejemplo, un diagrama de barras agrupadas ("clustered bar chart"), en el que resulta muy sencillo ver que Barcelona, Asturias y Toledo son las provincias que más pequeños "nuevos madrileños" han aportado, con 307, 296 y 273 nacimientos respectivamente. Y Ceuta, Teruel y Lérida, las que menos, con 10. Figura 13: Nacimientos por provincia (tamaño real) Conclusiones. Hemos visto lo sencillo que es visualizar información a partir de conjuntos de datos públicos con la herramienta Power BI. A la hora de sacar conclusiones, no hay que olvidar que los datos se refieren a los nacimientos producidos en Madrid en 2018. No podemos extrapolar directamente conclusiones sobre la composición de la población madrileña. Para ello, habría que considerar periodos de varios años, o considerar otras fuentes de datos. Por ejemplo, censales, de la seguridad social, sistema educativo etc. Lo que es evidente, es que los datos son la mejor herramienta con la que contamos para conocer las necesidades de la población y gestionar los recursos disponibles de la forma más eficiente. Con este objetivo, el Ayuntamiento de Madrid lanzó un concurso para diseñar un sistema capaz de sistematizar de forma consistente la valoración de las necesidades de los barrios. La herramienta, desarrollada por la Universidad Carlos III, se basa en el análisis jerarquizado de 12 parámetros agrupados en 5 categorías que permiten detectar situaciones de vulnerabilidad en los barrios. De esta forma, los datos se convierten en una poderosa herramienta en pro de la igualdad. Lo que sí podemos afirmar, tras este pequeño "ejercicio" es el hecho de que Madrid, pese a todos los problemas propios de una gran ciudad, es una ciudad abierta, y acogedora, donde personas de orígenes muy diversos pueden sentirse tan a gusto como los auténticos "gatos". Para mantenerte al día con el área de Internet of Things de Telefónica visita nuestra página web o síguenos en Twitter, LinkedIn y YouTube
4 de mayo de 2021
AI & Data
Deep Learning para predecir la calidad del aire
La contaminación atmosférica por gases procedentes de combustibles fósiles genera graves problemas de salud a los habitantes de las ciudades. Por ello, la creación de modelos predictivos que permitan estimar los niveles de calidad del aire en un lugar, momento y condiciones dadas resulta de gran interés. Pero no es una tarea fácil. Veamos cómo el Deep Learning puede a superar estas dificultades. El problema Las principales agencias encargadas de la protección de la salud y del medio ambiente -como la OMS, la Agencia Europea de Medio Ambiente o la Agencia de Protección Ambiental de los EEUU (EPA), afirman que la inhalación de contaminantes, especialmente de las partículas de menor tamaño, incrementa el riesgo de daños pulmonares permanentes y muerte prematura. A pesar de la gravedad de sus efectos, tanto a corto como a largo plazo, las observaciones existentes sobre contaminación no son adecuadas para planificar estrategias de protección a la población vulnerable con suficiente antelación. ¿Por qué resulta tan complicado? El problema principal radica en cómo combinar las dos fuentes de datos principales. Por un lado, las observaciones por satélite, que permiten medir la contaminación atmosférica en un lugar determinado a la misma hora cada día, pero no pueden medir cómo varían las emisiones a horas distintas. Por otro lado, las estaciones meteorológicas terrestres, que recogen datos de forma continuada, pero sólo en un número limitado de ubicaciones. Sensores satelitales El Sentinel-5p (p de precursor) es un satélite de monitorización atmosférica que, mediante instrumentos como el TROPOMI y UVNS, permite monitorizar la distribución de componentes atmosféricos como: ozono (O3), dióxido de nitrógeno (NO2), dióxido de azufre (SO2), formaldehidos (HCHO), monóxido de carbono (CO) y metano (CH4), o el espesor óptico de aerosoles (AOD). (los datos de los satélites Sentinel son siempre gratuitos y de acceso libre para todos los usuarios y, por supuesto, preferente para los servicios Copernicus). En particular, TROPOMI, el espectrómetro de imágenes multiespectrales fue desarrollado conjuntamente por la ESA y la Oficina Espacial de los Países Bajos. Proporciona una medición de la calidad del aire troposférico de alta resolución espacial (~5 km) que capta la variabilidad espacial de la contaminación del aire. En la imagen, podemos ver como ejemplo una visualización de la variación en la concentración de dióxido de nitrógeno sobre China. Gif: Concentración de dióxido de nitrógeno sobre China (ESA (CC BY-SA 3.0 IGO) ) Estaciones terrestres AirNow es una asociación que unifica datos procedentes de diferentes asociaciones gubernamentales de EEUU, y datos procedentes de sus embajadas y consulados en todo el mundo con el objeto de poner a disposición del investigadores, empresas y publico en general datos de calidad sobre contaminación atmosférica. Las estaciones de AirNOW, ofrecen observaciones horarias de los niveles de dióxido de nitrógeno (NO2) a nivel del suelo. Sin embargo, se trata de mediciones discretas, procedentes de las distintas estaciones terrestres asociadas al programa. Los niveles de dióxido de nitrógeno varían mucho durante el día. Por ello, resultaría muy interesante comparar las observaciones a nivel de superficie con las registradas por satélite, para así poder elaborar estimaciones con mayor resolución espacial y temporal. Lo ideal sería disponer de medidas a escala suburbana cada hora. Deep Learning para medir contaminación atmosférica En un estudio publicado en Science Direct, los investigadores Manzhu Yu y Qian Liu aplican algoritmos de aprendizaje profundo (Deep Learning) para integrar las observaciones horarias de NO2 a nivel del suelo, con las observaciones de la columna de NO2 troposférica recogidas por TROPOMI. Para ello, trabajaron con datos de la ciudad de Los Ángeles, donde los altos niveles de NO2 se deben, principalmente a emisiones del tráfico y de las centrales eléctricas. ¿Por qué usar Deep Learning? El deep learning o aprendizaje profundo es, por tanto, un subcampo dentro del Machine Learning que utiliza redes neuronales para obtener representaciones cada vez más significativas de los datos mediante el aprendizaje por capas. Cada una de estas capas va extrayendo características de un nivel cada vez más alto hasta llegar a su respuesta final. Es por ello, que el deep learning es especialmente apropiado para detectar patrones a partir de grandes volúmenes de datos, incluso datos no estructurados. También realiza de forma automática una de las tareas más complejas del proceso de trabajo de Machine Learning: la ingeniería de atributos. Las redes neuronales seleccionan de forma automática qué atributos son los relevantes y cuáles se pueden desechar. Si quieres comprender mejor cómo funciona el aprendizaje profundo o deep learning: AI OF THINGS Atrévete con Deep Learning: Principios básicos al alcance de todos 20 de noviembre de 2018 ¿Cómo lo hicieron? Para obtener estimaciones de las emisiones de NO2 a escala suburbana sobre una base horaria, los investigadores entrenaron los modelos con los siguientes datos de entrada: Ubicación de las estaciones AirNOW Observaciones de NO2 de AirNOW, la altura de la capa límite, Información meteorológica Altitud Vías de tráfico principales Centrales eléctricas Trabajaron sobre dos modelos: un método integrado entre la distancia ponderada inversa y una red neuronal de avance (IDW + DNN), y una red matricial profunda (DMN) que mapea las observaciones discretas de AirNOW directamente a la distribución de las observaciones de TROPOMI Compararon las precisiones de ambos modelos utilizando diferentes configuraciones de predictores de entrada y validamos su error medio cuadrático medio (RMSE), su error medio absoluto (MAE) y la distribución espacial de los errores. Comprobaron que el modelo DMN, que compara las observaciones terrestres directamente con las observaciones por satélite, genera estimaciones de NO2 más fiables y captura una mejor distribución espacial de las concentraciones de NO2 que el modelo IDW + DNN. La adición de información como los datos meteorológicos, la elevación y la ubicación de las estaciones terrestres y las principales carreteras y centrales eléctricas mejoró aún más la precisión de la predicción. El modelo, una vez entrenado, ofrece estimaciones horarias de de dióxido de nitrógeno atmosférico en cuadrículas de aproximadamente 5km cuadrados. Esta alta resolución espacio-temporal resulta muy útil para estudiar la evolución de los contaminantes en el aire, ya que también podría aplicarse a otros gases de efecto invernadero y a otras escalas geográficas (de ciudades a regiones o continentes). Por otra parte, el modelo también podrá actualizarse y mejorar su precisión cuando se lancen nuevos satélites de mayor resolución. Conclusión La aplicación de algoritmos de deep learning a las distintas fuentes de datos sobre contaminación atmosférica permite crear modelos que predicen, con una alta resolución espacio-temporal, los niveles de calidad del aire. Este resultado es de gran importancia, la calidad del aire, especialmente en los entornos urbanos, tiene un gran impacto sobre nuestra salud. ________________________________________ 1. Manzhu Yu, Qian Liu. Deep learning-based downscaling of tropospheric nitrogen dioxide using ground-level and satellite observations. Science of The Total Environment, 2021; 773: 145145 DOI: 10.1016/j.scitotenv.2021.145145 ________________________________________ Para mantenerte al día con el área de Internet of Things de Telefónica visita nuestra página web o síguenos en Twitter, LinkedIn y YouTube
26 de abril de 2021
Conectividad e IoT
IoT4All: La importancia de la interoperabilidad
¿A qué llamamos interoperabilidad en IoT?¿Es posible lograr una interoperabilidad plena?¿Es deseable?¿Qué implicaciones, más allá de las meramente técnicas, tiene?. En este nuevo post de nuestra serie IoT4All, hablaremos de la importancia de la interoperabilidad. El significado de la interoperabilidad La interoperabilidad está impresa en el ADN de Internet. De hecho, la conexión y comunicación entre dispositivos o sistemas para intercambiar información es lo que da sentido a la World Wide Web. También es la base que da soporte a la Internet abierta, donde los usuarios pueden conectarse, hablar, compartir e innovar. Pero, en la práctica esta interoperabilidad es compleja, porque ocurre en distinta medida en las distintas capas de la pila de protocolos de comunicación entre dispositivos. Y puede no ser siempre recomendable. Por poner un ejemplo, algunos fabricantes de dispositivos consideran más interesante crear ecosistemas cerrados de productos propietarios compatibles, ya que crean clientes "cautivos" de sus soluciones. Desde este punto de vista, forzar legalmente una estandarización podría desmotivar la inversión en innovación. Los defensores de la interoperabilidad, por su parte, consideran que este tipo de ecosistemas suponen una barrera a la innovación y la competencia, ya que limitan la capacidad de crear nuevos productos basados en infraestructuras ya existentes. También defienden que los consumidores deberían ser libres de cambiar a otra marca o elegir componentes de otros proveedores. Por ejemplo, que las bombillas de un proveedor fueran interoperables con los interruptores de otro. Y no hablamos sólo de los dispositivos. También deberían poder migrar sus datos al cambiar de un proveedor de servicios a otro. Para ello, éstos deberían estar accesibles y en un formato abierto estándar. Impacto económico Hace ya unos cuantos años, en 2015, el McKinsey Global Institute publicó un informe en el que sostenía que la interoperabilidad es clave para impulsar el desarrollo de Internet de las Cosas, y por tanto, permitirle desplegar todo su potencial económico. Defendía, frente a las empresas que consideran los sistemas propietarios más ventajosos y competitivos, que en un mercado de silos, las oportunidades económicas se ven muy limitadas. La interoperabilidad bien construida, aumenta el valor económico del mercado al fomentar una innovación más abierta y ofrecer eficiencias a quienes fabrican los dispositivos. Por otra parte, la creación de nuevos estándares, así como el uso de los ya existentes, permite reducir barreras de entrada, crear nuevos modelos de negocio y construir economías de escala. Desafíos para los fabricantes En ocasiones, diseñar e incluir características de interoperabilidad en un producto y probar su conformidad con los estándares puede resultar más costoso para un fabricante. Sin embargo, si el análisis costo-beneficios se amplía al ciclo de vida más amplio de un producto interoperable, el resultado puede ser totalmente diferente. Por otra parte, aunque en ocasiones, el cronograma de un nuevo producto se adelante a la disponibilidad de estándares de interoperabilidad, y la ventaja comercial de ser el primero que saca determinado producto al mercado sea clara, se corren ciertos riesgos. Desarrollar dispositivos sin estándares que sirvan de guía, puede traducirse en la creación de productos fallidos, capaces impactar de forma negativa sobre las redes de acceso a Internet, o incluso sobre la propia Internet. En definitiva, la incorporación de estándares genéricos, abiertos y ampliamente accesibles al diseño de sistemas y productos, no sólo implica un menor riesgo técnico. También aporta ventajas, como facilitar el acceso al talento técnico, a herramientas de software y. como consecuencia, la reducción de los costes de desarrollo. (RFC 7452, “Architectural Considerations in Smart Object Networking”). Desafíos para los usuarios Como ya hemos comentado antes, la interoperabilidad para los usuarios, se traduce en una mayor libertad de elección en la adquisición de dispositivos y servicios. También hay otro aspecto nada desdeñable, que tiene que ver con la usabilidad de estos. Cada día aumenta el número de dispositivos que manejamos. Por ello, es fundamental disponer de herramientas, métodos o interfaces de configuración que nos permitan modificar la configuración de nuestros dispositivos en red de forma cómoda, sencilla y segura. Otros desafíos La emergencia sanitaria originada por el coronavirus ha puesto de relieve la importancia de Internet como vehículo de conexión, información y comunicación de la sociedad, así como la necesidad de disponer de redes de telecomunicaciones fuertes que la sustenten. Hemos visto cómo el libre flujo mundial de datos en la Internet abierta e interconectada nos ha permitido seguir la evolución del virus, compartir buenas prácticas para luchar contra él y nos ha ayudado a gestionar esta crisis global. Sin embargo, vemos también cómo está surgiendo una peligrosa tendencia hacia la fragmentación, una disociación tecnológica (decoupling) que puede poner en peligro el ecosistema mundial de Internet. Gobiernos de países como Rusia e Irán están adoptando medidas para evitar que sus ciudadanos se conecten a la red mundial. Por tanto, no se trata sólo de una división en el acceso a los contenidos (capa social), sino también en las capas tecnológica y lógica de Internet. Esta diferenciación en la infraestructura -- hardware, software y protocolos-- puede conducir a islas tecnológicas independientes o autosuficientes, no interoperables ni interconectables, que acabarían con Internet tal y como la conocemos. Probablemente, en este ejemplo nos sea más fácil identificar cómo de negativo sería el impacto de la falta de interoperabilidad sobre la economía, la innovación, el conocimiento y la cooperación humana. Puedes encontrar todos los post del nuestra serie IoT4All aquí. Referencias: La Internet de las Cosas— Una breve reseña (ISOC) El valor de la conectividad y el internet abierto (Revista Telos) Para mantenerte al día con Telefónica Tech AIofThings, visita nuestra página web, o síguenos en Twitter, LinkedIn o YouTube.
16 de abril de 2021
AI & Data
Drones contra plagas en cultivos ecológicos
Cada día nos encontramos con una nueva e interesante aplicación del tándem IA of Things, a nuestra realidad más cercana. En este caso, los protagonistas son sencillos drones dirigidos por tecnología inteligente y cámaras especiales que escanean el espacio aéreo en invernaderos para combatir las plagas de polillas sin tener que recurrir al uso de pesticidas. El problema La Plutella xylostella , palomilla dorso de diamante o polilla de la col, es un lepidóptero con una distribución continua y global, que se ha convertido en la plaga más destructiva de cosechas de plantas alimentarias de la familia crucíferas. Esta extensa familia está formada por muchas especies de gran importancia económica, tanto para el consumo humano, como para usos ornamentales, oleaginosos, forrajeros. Ejemplos del tipo de cultivos más afectados son: brócoli, repollo, coliflor, col, col rizada, mostaza, rábano, nabos etc. Se trata de una plaga difícil de controlar, ya que ha desarrollado resistencia a distintos plaguicidas. El uso indiscriminado de insecticidas sintéticos a partir de los años 50, no sólo acabó eliminado los enemigos naturales de p. xylos tella, sino que además dio lugar a un indeseado proceso de selección natural. Como consecuencia, P. xylostella se convirtió en el primer insecto que desarrolló resistencia al DDT en 1953, y es resistente a muchos otros insecticidas sintéticos más recientes e incluso es la primera especie que capaz de desarrollar resistencia a toxinas de B. thuringiensis. Cultivos ecológicos Por otra parte, los productores que quieran obtener una certificación de cultivo ecológico, no pueden emplear sustancias químicas que podrían ser perjudiciales para nuestro planeta e incluso nuestra salud. Por tanto, pesticidas y fertilizantes no son una opción. ¿Cómo librarse entonces de las hambrientas larvas de polilla que pueden llegar a arruinar sus cultivos? Igual que en este otro post os contamos cómo de una conversación casual en una boda entre la ecóloga Annie Schmidt, y el ingeniero Mac Schwager, surgió una ingeniosa solución para controlar la buena salud de las colonias de pingüinos en la Antártida, la idea para controlar plagas de Plutella xylostella tuvo también un origen curioso. Un grupo de estudiantes de la universidad de Delft se planteó si sería posible usar pequeños drones para acabar con los mosquitos que se colaban en su habitación. De esta forma, lo que empezó como un divertido pasatiempo, se acabó convirtiendo en el origen de una startup de tecnología inteligente para control de plagas sin pesticidas en invernaderos. AI OF THINGS Drones y conservación de especies 3 de febrero de 2021 Drones inteligentes contra polillas Los propios drones son muy básicos, pero están dirigidos por tecnología inteligente y cámaras especiales que escanean el espacio aéreo de los invernaderos. Cuando las cámaras detectan una polilla, el dron se lanza como un kamikaze contra el insecto y lo destruye con sus rotores. El sistema está aún en desarrollo, pero los resultados son prometedores. Pequeños drones escanean de forma autónoma el espacio aéreo del invernadero durante la noche, eliminado de forma selectiva a las polillas. Es en ese punto donde entra en juego la inteligencia artificial. No hay que eliminar cualquier insecto, sólo las polillas. Por tanto, mediante técnicas de visión artificial, las cámaras del dron son capaces de distinguir entre los insectos beneficiosos (abejorros y mariquitas) y los que no lo son. Otras aplicaciones Hay otras curiosas relaciones entre drones y polillas. Investigadores de la Universidad de Boston y de la Universidad de Washinton han publicado un artículo en la revista PLOS Computational Biology, en el que plantean la aplicación de estrategias de navegación de polillas para desarrollar programas que ayuden a los drones a navegar de forma autónoma por entornos desconocidos. Otros post sobre drones contra plagas en nuestro blog: AI OF THINGS Machine Learning, satélites y drones contra “plagas bíblicas” 8 de abril de 2020 Para mantenerte al día con Telefónica Tech AIofThings, visita nuestra página web, o síguenos en Twitter, LinkedIn o YouTube.
15 de abril de 2021
AI & Data
Aprendizaje federado: IA con privacidad
¿Podemos beneficiarnos de las ventajas de la IA en nuestros smartphones sin ceder nuestros datos a las grandes tecnológicas mundiales? Porque, efectivamente, gracias a ello recibimos, por ejemplo, recomendaciones personalizadas, si; pero también anuncios. Por otra parte, esos datos pueden ser compartidos por terceros, poniendo en riesgo nuestra privacidad. Veamos cómo el aprendizaje federado propone una forma alternativa de entrenar los modelos de aprendizaje Según el portal de estadísticas Statista, para 2030 habrá cerca de 50.000 millones de dispositivos conectados. Se dice pronto... 50.000 millones de dispositivos, no sólo móviles inteligentes, sino también, ordenadores, teléfonos, coches, relojes, wearables, neveras, aspiradoras etc generando datos. El dónde, el cómo y el qué se haga con esos datos va a ser muy relevante. Tan relevante como un volumen de 27.800 millones, estimado para negocio mundial de análisis de IoT en 2022 por la consultora Market Reports. ¿Dónde se almacenan, tratan y analizan todos los datos? El mercado de la IA esta dominado por gigantes tecnológicos como Google, Amazon y Microsoft, que ofrecen soluciones API e IA basadas en la nube. En los métodos tradicionales de IA, los datos confidenciales del usuario se envían a los servidores de estas grandes empresas, y es allí donde se entrenan los modelos. El aprendizaje federado propone un nuevo enfoque, basado en un modelo de inteligencia artificial descentralizada. Permite que el aprendizaje automático se lleve a cabo en nuestros dispositivos móviles en tiempo real, sin comprometer su funcionalidad y sin tener que compartir nuestros datos. Así, mientras usas tu teléfono móvil, parte de su energía sobrante se puede invertir en tareas de aprendizaje automático. Definición de Aprendizaje Federado El Aprendizaje Federado es un paradigma de Machine Learning dirigido al aprendizaje colaborativo de modelos de datos descentralizados, como los datos ubicados en los teléfonos inteligentes de los usuarios, en hospitales, o en bancos, y que asegura la privacidad de los datos. ¿Cómo lo consigue? Muy sencillo. Entrenando el modelo localmente en cada nodo (por ejemplo, en cada teléfono inteligente), compartiendo los parámetros actualizados del modelo (no los datos) y agregando de forma segura estos parámetros para construir un mejor modelo global. En otras palabras, El aprendizaje federado es un aprendizaje colaborativo que consiste en crear un modelo global entrenado con actualizaciones calculadas en los dispositivos móviles mientras se mantienen los datos de los usuarios a nivel local. ¿Qué ventajas tiene? La ventaja más atractiva del aprendizaje federado es la protección de la privacidad. Los modelos locales se agregan y contribuyen a un modelo global, pero al no ser necesario compartir los datos en bruto, se garantiza la confidencialidad. Por otra parte, al entrenarse de forma local con los datos del usuario, le ofrecen una gran personalización. Al mismo tiempo, se reducen las latencias y el coste de intercambiar datos de forma continua con un servidor. ¿Qué dificultades enfrenta? El aprendizaje federado está en sus orígenes, y tiene por delante muchos desafíos que afrontar. Aunque en la actualidad, muchos teléfonos inteligentes y dispositivos IoT son capaces de ejecutar algoritmos de aprendizaje automático, este tipo de aprendizaje estará siempre condicionado por las limitaciones de los dispositivos locales en los que se ejecute. Otras dificultades tienen que ver con la dificultad en disponer de datos etiquetados para el entrenamiento en local, el mayor tiempo de convergencia de estos modelos comparados con el aprendizaje automático tradicional, o los problemas de confiabilidad, cuando no todos los dispositivos participan en el proceso de aprendizaje federados por problemas de conectividad u otros motivos. Tampoco hay que olvidar las presiones que puedan ejercer en su contra las grandes empresas interesadas en acaparar los grandes silos de datos propios de los modelos de aprendizaje automático centralizado. ¿Cuáles son los frameworks más populares? Entre los frameworks más populares, podemos destacar: TensorFlow Federated, un entorno de código abierto de Google para aprendizaje automático y otros cálculos con datos descentralizados. PySyft, una biblioteca de codigo abierto construida sobre PyTorch para el aprendizaje profundo cifrado y la privacidad Federated AI Technology Enabler (FATE), un proyecto de codigo abierto iniciado por el grupo de inteligencia artificial de Webank Sherpa.ai Federated Learning and Differential Privacy Framework, framework de código abierto desarrollado para facilitar la investigación y experimentación abierta en el Aprendizaje Federado y la Privacidad Diferencial etc ¿Para qué se utiliza? Los escenarios de uso están caracterizados principalmente por los aspectos de seguridad y confidencialidad. Por ejemplo en aplicaciones de recomendaciones personalizadas o de salud, que deben proporcionar mecanismos de privacidad de datos para aprender de un conjunto de usuarios, mientras los datos sensibles permanecen en cada dispositivo del usuario. En entornos industriales, en aplicaciones para mejorar la gestión y la cadena de suministro. En este tipo de entornos, los datos se encuentran en silos. Sin embargo, un fabricante de recambios de automóvil, por ejemplo puede beneficiarse de modelos que aprenden de los datos de los demás sin tener que revelar los suyos. Otros entornos sometidos a normativas de protección de la privacidad, como bancos o empresas de telecomunicaciones, pueden beneficiarse de modelos que aprenden de datos distribuidos en varias entidades, sin compartir registros individuales de sus clientes. El aprendizaje federado también facilita el Edge Computing, mejorando los modelos de Machine Learning en los dispositivos distribuidos al compartir información global entre nodos. Al mismo tiempo, asegura la privacidad de los datos en cada dispositivo. CLOUD AI OF THINGS Edge Computing y Machine Learning, una alianza estratégica 7 de julio de 2022 Conclusión A pesar de los desafíos que tiene que afrontar este nuevo paradigma de aprendizaje automático, la tendencia actual de intentar devolver al usuario el poder sobre sus datos, y las legislaciones que surgen en pos de la protección de la confidencialidad, suponen un gran impulso para este tipo de modelos.
17 de marzo de 2021
AI & Data
Ciencia Ciudadana e IA para luchar contra la soledad
Ante el aumento de personas mayores en riesgo de soledad, el proyecto Serena propone una interesante alianza entre Psicología, Inteligencia Artificial y Ciencia Ciudadana. Veamos cómo el aprendizaje automático puede usarse para mejorar la calidad de vida de la personas mayores y sus cuidadores. ¿Qué es la Ciencia Ciudadana? La "Ciencia Ciudadana" es un concepto abierto que abarca las distintas formas en las que el público general participa en la ciencia. Hay dos características definitorias: Los ciudadanos contribuyen activamente a la ciencia, con su esfuerzo intelectual , conocimientos, herramientas o recursos; en colaboración con científicos o profesionales. La obtención de resultados que se traduzcan en conocimiento científico, acciones de conservación o iniciativas políticas. El objetivo de la ciencia ciudadana es mejorar las interacciones entre la ciencia, la sociedad y la política, para lograr una investigación más democrática, basada en la toma de decisiones fundamentadas en la evidencia. Tanto los campos de actuación, como la escala son muy variados. Proyectos locales o globales; breves o con desarrollos que se extienden durante décadas. En campos como la medicina, astronomía, ecología, informática, historia etc. Serena, un chatbot contra la soledad El proyecto Gerontec, de 'Aprendizaje automático como herramienta de ciencia ciudadana para mejorar la calidad de vida de las personas mayores y sus personas cuidadoras', desarrollado por el equipo de investigación GIANT (Machine Learning for Smart Environments) de la Universitat Jaume I de Castelló es una iniciativas financiadas por FECYT. La Fundación Española para la Ciencia y la Tecnología (FECYT), promueve en sus convocatorias la realización de acciones que acercan la ciencia a la población y también la hacen partícipe de ella. El objetivo final del proyecto es la creación de un chatbot conversacional diseñado para hablar con las personas y evaluar sus sentimientos de soledad: Serena. Un problema de salud pública Las evidencias de efectos adversos de la soledad no deseada en las personas mayores son muy numerosas. Y la situación de alerta sanitaria por la COVID-19 no ha hecho sino aumentar el aislamiento social de un gran número de ellas. Tanto es así, que los especialistas han llegado a considerarlo un problema de salud pública. Para poder llevar a cabo cualquier estrategia de mitigación de este problema, un paso previo ineludible es la detección de estas personas en riesgo de soledad. Con este objetivo, el equipo GIANT creó Serena, un chatbot diseñado para hablar con las personas y evaluar sus sentimientos de soledad. Serena es un eficaz herramienta que permite a alertar a los profesionales de la salud de situaciones en las que es necesaria su intervención. La herramienta ha sido desarrollada por un equipo interdisciplinario en los campos de la Psicología y las Ciencias de la Computación y aprovecha la tecnología para recoger la colaboración de la población, en el marco de la Ciencia Ciudadana. Así, una investigación científica sobre el análisis de constructos como la soledad, el aislamiento social, el bienestar o el estrés; se realiza de forma accesible a la ciudadanía, y se enriquece con su participación, gracias a herramientas de aprendizaje automático. ¿Cómo? El proyecto, que se desarrolló entre octubre de 2019 y junio de 2020, se articula en tres fases: captación de datos, procesamiento y etiquetado, entrenamiento y puesta en marcha de la plataforma web. Primera fase: Recogida de información En esta fase, personas voluntarias (mayores y cuidadores/as) respondieron a cuestionarios estandarizados y preguntas de respuesta abierta de forma natural y sencilla: a través de la voz y el uso de teléfonos móviles y aplicaciones tipo chat-bot. Figura 1: Cuestionario La herramienta utilizada para la programación del chat-bot, la recolección de locuciones y la transcripción de las respuestas de voz a texto, es DialogFlow1 de Google. Para la difusión y captación de personas voluntarias, se contó con el apoyo de instituciones públicas y privadas de Castellón, además de empresas del sector del cuidado de personas mayores. En esta primera fase se prestó especial atención a la protección de los datos, así como a la confiabilidad y trazabilidad de los mismos. A partir de las locuciones de las respuestas a las preguntas realizadas por el chat-bot, se obtuvo gran volumen de datos no etiquetados. Segunda fase: Etiquetado colaborativo de los datos Una vez recogidos los datos en la fase uno, se anonimizaron, eliminando cualquier información que permita identificar a la persona que los generó. A continuación, y para que los algoritmos de aprendizaje automático "aprendieran" a detectar cuando un determinado mensaje indica que una persona está en situación de riesgo, era necesario etiquetar los datos. Figura 2: Ejemplo de etiquetado de datos En esta segunda fase, se recurrió nuevamente a la ciencia ciudadana para la realización de un etiquetado colaborativo a través de la plataforma Zooniverse. De esta forma, fueron personas voluntarias las que leyeron un determinado mensaje como "Mi hija se ha ido de viaje y mi mujer lleva días llegando tarde de trabajar" y lo etiquetaron como "Expresa soledad" o "No expresa soledad". A continuación, con un gran volumen de datos etiquetados, ya se pudo entrenar los algoritmos de aprendizaje automático para que aprendieran a etiquetar audios de forma automática e indicar si éstos expresan soledad, aislamiento, estrés, bienestar etc Tercera fase: Entrenamiento de los algoritmos de aprendizaje automático En la tercera fase, y siguiendo una metodología de co-diseño, en la que los usuarios finales participan en toda las fases del proyecto, se creó una plataforma web accesible tanto para los profesionales de salud, como para la ciudadanía en general. A través de esta plataforma, los algoritmos de aprendizaje automático entrenados con los datos etiquetados en la fase anterior se pusieron a disposición de los usuarios como herramienta de valoración de situaciones de riesgo emocional. De esta forma, los algoritmos ya entrenados, seguían aprendiendo, mejorando su eficacia. Si quieres colaborar o comprobar cómo funciona... Habla con Serena. Figura 3: Plataforma web "Habla con Serena" Conclusión Con este proyecto vemos un ejemplo más de cómo distintas disciplinas científicas se alían con la colaboración ciudadana y tecnologías basadas en el aprendizaje automático para ayudar a resolver un problema tan humano como la soledad no deseada. Si eres trabajador de Telefónica y quieres contribuir a mitigar al soledad no deseada de las personas mayores, puedes colaborar con el proyecto "Conectando Personas" de Voluntarios Telefónica. Si no eres trabajador de Telefónica, puedes hacerlo directamente, con Cruz Roja, a través de su página de voluntariado.
11 de marzo de 2021
AI & Data
Florence Nightingale, pionera en el uso de datos para la salud
Florence Nightingale es conocida por sentar las bases de la profesionalización de la enfermería. Sin embargo, mucha gente desconoce que fue su trabajo visionario en el campo de la estadística médica el que le permitió salvar muchas más vidas. Fue una auténtica pionera en el uso de los datos para mejorar la salud de la población. Si Florence Nightingale viviera en el siglo XXI, seguro que estaría encantada ayudarnos a comprender y modelizar los datos para prevenir la propagación del COVID19 con las potentes herramientas actuales. Una joven observadora que hace listas y listas Florence Nightingale nació en 1820, en el seno de una familia inglesa de clase alta. Fue educada en casa por su padre, y mostró desde muy joven una habilidad natural para clasificar, analizar y documentar datos. Sus primeras cartas a menudo incluían listas y tablas de información sobre todo tipo de cosas. Especímenes florales meticulosamente catalogados, transcripciones de poemas , colecciones de conchas y monedas etc. En seguida se dio cuenta de la importancia de disponer de datos precisos y ordenados para poder entender cómo y por qué sucedían las cosas. A pesar de la firme oposición inicial de su familia, que consideraba que el destino de su hija era el matrimonio, consiguió que le permitieran estudiar matemáticas. Estudió con el Dr. William Farr, un pionero en estadística, con quien creó los primeros gráficos circulares, "coxcombes". Se trataba de unos diagramas estadísticos para ilustrar sus conclusiones de forma clara y accesible. Años más tarde, en 1837, se convenció de que Dios la había "llamado" a su servicio para ayudar a reducir el sufrimiento humano y decidió hacerse enfermera. Un hospital británico en Turquía En 1854, durante la Guerra de Crimea, fue destinada como enfermera a un hospital militar británico en Turquía, donde descubrió con horror las penosas condiciones en que se hallaban los pacientes, y la falta de registros hospitalarios claros. Utilizando sus conocimientos estadísticos, Nightingale se puso a trabajar para introducir nuevas directrices sobre cómo registrar las enfermedades y la mortalidad en los hospitales militares. El análisis de estos registros le permitió entender mejor tanto las cifras como las causas de las muertes. (Ahora, en todo el mundo, existen normas similares para registrar las enfermedades, como la Clasificación Internacional de Enfermedades.) La escasez de médicos, el hacinamiento, la falta de higiene y ventilación, la alimentación inadecuada etc, eran la causa de que las muertes por enfermedad superaran con creces las muertes por heridas de combate. Se pusieron en práctica medidas, en cuanto a la alimentación e higiene, que mejoraron la eficiencia del hospital. Sin embargo, no consiguieron reducir significativamente la tasa de muertes. Fallaba algo más. Figura 0:Una sala del hospital de Scutari donde trabajaba Nightingale, de una litografía de 1856 de William Simpson ( fuente) Para averiguarlo, en 1855, el gobierno británico envió una Comisión Sanitaria cuyo objetivo era investigar las condiciones de Scutari. Descubrieron que el abastecimiento de agua del hospital estaba contaminado. Al resolver este problema, la tasa de mortalidad se redujo ¡un 99% en un sólo año!. Una aliada muy "real" A la vista de los resultados y, obsesionada por cómo evitar tantas muertes innecesarias, Florence Nightingale buscó el apoyo de la reina Victoria. Gracias a ello, convenció al Gobierno para que creara una Comisión Real sobre la salud del Ejército. Con ayuda de los estadísticos William Farr y John Sutherland, de la Comisión Sanitaria, analizaron grandes cantidades de complejos datos del ejército. Las conclusiones fueron demoledoras. De 18.000 muertes, 16.000 se debieron a enfermedades evitables, atribuibles a las malas condiciones sanitarias. Había que actuar, y rápido. Florence Nightingale utilizó sus habilidades de comunicación estadística para convencer al parlamento británico de la necesidad de reformar las prácticas hospitalarias con el objetivo de reducir la mortalidad. En lugar de listas o tablas, su "diagrama de rosas" mostraba el fuerte descenso de las muertes tras el trabajo de la Comisión Sanitaria. El diagrama era tan fácil de entender que fue ampliamente reeditado. Gracias a ello, el público comprendió qué estaba fallando y la necesidad urgente de un cambio. A la luz del trabajo de Florence, y para mejorar la atención sanitaria en el ejército se crearon nuevos departamentos de medicina, y estadística hospitalaria. Figura 1: Este "Diagrama de las causas de mortalidad en el ejército en el Este" fue publicado en Notes on Matters Affecting the Health, Efficiency, and Hospital Administration of the British Army en 1858. Indica el número de muertes que se produjeron por enfermedades evitables (en azul), las que fueron resultado de heridas (en rojo) y las debidas a otras causas (en negro). Datos para salvar vidas En 1860 creó la Escuela de Entrenamiento Nightingale (Nightingale Training School) en el hospital Saint Thomas, que sigue funcionando en la actualidad. También, escribió artículos sobre las ventajas de los diseños de edificios hospitalarios tipo pabellón. La configuración de pequeñas alas, o pabellones, que salen de un pasillo central, resultaba más práctica para el personal de enfermería y favorecía una buena ventilación. Figura 2: Florence Nightingale en Saint Thomas (FormerBBC, CC BY-SA 4.0) Durante toda su vida, se esforzó por poner la atención médica al alcance de todo el mundo, convirtiéndose en una de las precursoras del Servicio Nacional de Salud. También se preocupó por mejorar las condiciones médico-sanitaras en los territorios coloniales de aquel entonces (India, Australia). Para ello, obtenía los datos que necesitaba escribiendo cartas a su amplia red de contactos. Fue una corresponsal muy prolífica, de la que se conservan más de 12.000 cartas. Su iniciativa reformadora no se limitó al ámbito sanitario. También impulsó reformas sociales destinadas a paliar la hambruna en la India, a abolir injustas leyes de prostitución y a promover la incorporación de las mujeres a la fuerza laboral. De la estadística a la Ciencia de Datos En 1858 Florence Nightingale fue la primera mujer admitida en la Royal Statistical Society británica. (Tuvieron que pasar más de 100 años para el nombramiento de la segunda, Stella Cunliffe’s , en 1975). También fue miembro honorario de la American Statistical Association. Ya hemos visto cómo sus grandes dotes para la comunicación y las matemáticas, ayudaron a reformar la sanidad militar y civil y salvaron a miles de personas de una muerte espantosa. Pero, probablemente, lo más relevante fue su tenacidad, su gran determinación, que le permitió superar las grandes limitaciones a que estaban sometidas las mujeres en la época victoriana. Incluso las que, como ella, procedían de familias acomodadas. ¿Qué hubiera hecho Florence Nightingale en 2020 cuando estalló la pandemia del COVID19? Lo primero, seguramente, habría sido llevarse las manos a la cabeza ante el caos de datos inicial. Todos recordamos la gran confusión de los datos, que tenían formatos y seguían criterios distintos según qué autoridad sanitaria los ofrecía. En un primer momento, como le pasó a Florence Nightingale cuando llegó a Scutari, ni siquiera se disponía de una cifra fiable de fallecimientos. Una ver normalizada la toma de datos y, aprovechando los avances en machine learning, a finales de los años 90, y el desarrollo de las tecnologías Big Data, nuestra Florence del siglo XXI trabajaría en la modelización de los contagios. O en la aplicación de redes neuronales para diagnosticar la enfermedad, en el análisis de la movilidad de la población, la modelización con PLN de las mutaciones del virus... En redes sociales circula una curiosa definición de "científico de datos" como "estadístico que trabaja en San Francisco". Por lo que sabemos de Florence Nightingale, podríamos estar seguros de que, de haber nacido unos 150 años más tarde, sería una científica de datos del siglo XXI. Referencias: Florence Nightingale: Saving lives with statistics Eight little-known facts about Florence Nightingale The healing power of data: Florence Nightingale’s true legacy Conoce Movistar Salud, una apuesta más de Telefónica por la transformación digital de la sanidad, donde creemos que la telemedicina va a seguir cobrando protagonismo.
8 de marzo de 2021
Conectividad e IoT
Iot4All: Los desafíos que debe enfrentar la IoT
Internet de las cosas, IoT, está presente en numerosos escenarios y casos de uso. No sólo está en la base de la transformación digital de la industria, y otros sectores como la sanidad, la seguridad o la educación. También es clave en el desarrollo de las Smart cities. Pero, como toda tecnología en proceso de maduración, debe de hacer frente a distintos retos o desafíos con orígenes diversos. Veamos cuáles son. Desafíos técnicos Empecemos por los aspectos técnicos, que, como veremos, son muy relevantes, pero no los únicos. Vienen determinados, en gran medida, por dos características intrínsecas a internet de las cosas: la escalabilidad y la heterogeneidad. Para abordarlos, habrá que desarrollar o actualizar normas y tecnologías adecuadas, incluidos los protocolos de red y las normas de agregación de datos. Uno de los objetivos principales, debe ser garantizar la interoperabilidad. En todas las etapas. Desde la recopilación de los datos, hasta su transmisión, almacenamiento y análisis. La falta de estandarización de los servicios en la nube, o la variedad en cuanto a protocolos máquina a máquina (M2M), sistemas operativos o firmware, son ejemplos de problemas en la interoperabilidad. Sus efectos son una menor flexibilidad, al quedar "atados" a proveedores o tecnologías muy concretas, y mayores costes. En resumen, los principales desafíos técnicos son los siguientes: Escala: La conexión de miles de millones de dispositivos IoT activos es un gran reto. En este contexto, las tecnologías emergentes de IoT, como la red descentralizada de IoT (la computación en el borde o edge computing, por ejemplo), las comunicaciones entre pares y el blockchain facilitan en gran medida a escalabilidad. Grandes volúmenes de datos: Los dispositivos conectados generan de forma continua y simultánea grandes volúmenes de datos de todo tipo y formato. Por ello, las interfases IO deben ser capaces de gestionarlos y procesarlos a velocidades adecuadas, buscando muchas veces la mayor aproximación a la respuesta en "tiempo real". Heterogeneidad: La variedad de los datos no es más que un reflejo de la variedad de los dispositivos, interfases y protocolos de comunicación que son la esencia de IoT. Para poder gestionarlos adecuadamente, es necesario crear una forma común de abstraer toda la heterogeneidad subyacente. Sensores: Técnicamente, los sensores deben ser baratos, precisos y eficientes energéticamente. Redes: A pesar de funcionar en entornos muchas veces hostiles (ruidos, expuestos a inclemencias meteorológicas, peligrosos...), la transferencia de datos y comandos debe ser segura, fiable y robusta. Desafíos organizativos y de liderazgo Las dificultades tecnológicas son siempre las primeras que nos vienen a la cabeza, pero, como ya hemos adelantado en el punto anterior, no son las únicas importantes. Para afrontar los retos de la implantación de Internet de las Cosas en una organización es preciso poder dar respuesta a preguntas clave. Preguntas sobre asunción de costes, por ejemplo, en la adquisición de hardware IoT, o el software necesario. O sobre responsabilidad del servicio, como la solución de problemas de hardware o software, la monitorización y realización de informes. También, hay que abordar cuestiones como qué hacer con los sistemas heredados (legacy) o soluciones especializadas. Todo ello, sin olvidad que la organización sigue adaptándose y creciendo. Por tanto, las soluciones propuestas deben adaptarse a las necesidades actuales, pero teniendo en cuenta las necesidades futuras, y manteniendo en todo momento un nivel adecuado de calidad de la producción. Veamos cuáles son las principales: Privacidad: Todos los datos recogidos deben mantenerse seguros y anónimos, garantizando el cumplimiento de la normativa al respecto (GDPR). Propiedad de los datos: ¿Quién es el propietario de los datos generados por las máquinas? La entidad propietaria del dispositivo IoT o el fabricante del mismo. Para entenderlo mejor, pensemos en un ejemplo concreto: un coche conectado. ¿de quién son los datos?¿del propietario del coche, o del fabricante? Responsabilidad legal: ¿Quién es responsable cuando algo va mal con un algoritmo o una decisión automatizada?. Otro ejemplo interesante, si un coche autónomo atropella a un peatón ¿Quién es el responsable? Análisis: Los datos deben ser interpretados y analizados adecuadamente con fidelidad a su significado, especialmente si se toman acciones automatizadas basadas en los resultados de los datos. Interoperabilidad: la gran competencia en este sector lleva a algunos actores a intentar imponer soluciones propietarias que "atan" a sus clientes. Es importante optar por modelos que garanticen la interoperabilidad para poder escoger en todo momento la solución más adecuada a las necesidades de la empresa. Desafíos de seguridad El último obstáculo, y quizás el más importante, será resolver los problemas asociados a la seguridad. Son conocidos hackeos o accesos no autorizados a varios dispositivos del Internet de las Cosas, tanto de particulares, como de entidades públicas y privadas de distintos países. El control del acceso a los dispositivos es una preocupación creciente que ya se está abordando. Los mayores desafíos que podemos encontrar en cuanto a seguridad son: La mayor exposición de dispositivos finales o "endpoints" y, por tanto, de la infraestructura en general, por acceso remoto. La integración con entornos legados, que deberán coexistir con los actuales. Entre las soluciones de ciberseguridad que permiten superar estos desafíos, podemos hablar de protecciones perimetrales para una correcta segregación de infraestructuras (IT - OT - IoT), operación no presencial de equipos finales (por ejemplo brazos robóticos o AGVs), monitorización de ciberseguridad partir del análisis del tráfico de red y/o otras fuentes, protección del "endpoint" para evitar la suplantación de identidad o manipulación con intenciones maliciosas etc. Si te perdiste los post anteriores de la serie IoT4All, los puedes encontrar aquí. Para mantenerte al día con el área de Internet of Things de Telefónica visita nuestra página web o síguenos en Twitter, LinkedIn y YouTube
1 de marzo de 2021
AI & Data
Drones e IA para detectar síntomas de COVID19
La Universidad de Australia de Sur, UniSA ha diseñado una tecnología pionera en el mundo que combina ingeniería, drones, cámaras e inteligencia artificial para monitorizar a distancia constantes vitales. Esta investigación pone de manifiesto el enorme potencial del vídeo en streaming para la detección a distancia de muchas enfermedades, entre ellas, la COVID19. Tecnología para supera desafíos Australia, la isla continente, es un extenso territorio prácticamente desierto con una densidad de población muy baja. A pesar de ello, la creatividad de sus habitantes frente a los desafíos que plantea su geografía y su clima extremo les ha llevado a convertirse en una próspera nación. La tecnología ha sido la gran aliada para superar retos como llevar la educación a todos los rincones del país (aquí nació "Moodle"), o monitorizar a distancia la salud de poblaciones remotas. Monitorizar signos vitales con sensores e inteligencia artificial El Dr. Al-Naji y el profesor Chahl, desde la cátedra de Sistemas de Sensores del Grupo DST de la UniSA, trabajan desde hace años en el desarrollo de sistemas especializados de sensores y visión por ordenador para la monitorización de signos vitales. En un primer momento, su investigación, de la que ya hablamos en este otro post, se concibió para detectar señales de vida en zonas de guerra y catástrofes naturales. AI OF THINGS Drones que usan IA para salvar vidas 14 de enero de 2021 Posteriormente, se puso a prueba para la monitorización sin contacto en las salas de neonatos, sustituyendo los electrodos adhesivos y reduciendo de esta forma los riesgos de infección. Otra de sus aplicaciones fue la realización de chequeos de salud, mediante una cámara digital, de algunos "residentes" del Zoo de Adelaida. En particular, un panda gigante, un león africano, un tigre de Sumatra, un orangután, un babuino, un koala, un canguro rojo, una alpaca y un pequeño pingüino azul . Todos ellos se ahorraron el trance de tener que ser anestesiados para verificar su estado de salud. Aplicación al COVID19 Los primeros trabajos se centraron en la monitorización de temperatura y ritmo cardiaco. En 2020, la Universidad del Sur de Australia unió fuerzas con el fabricante de drones Draganfly Inc, para diseñar una tecnología que sumara a éstas constantes aquellas que detectan síntomas clave del COVID-19: la frecuencia respiratoria y cardíaca, la temperatura y los niveles de oxígeno en sangre. La saturación de oxígeno en sangre La saturación de oxígeno en sangre, SpO2 es una medida de la capacidad de los pulmones para absorber oxígeno y del sistema circulatorio para transportar la sangre oxigenada. Esta variable se ha convertido en determinante para la detección del COVID19. Hasta ahora, el nivel de SpO2 de una persona se medía medirse mediante sensores conectados que proyectan luz a través de un dedo o del lóbulo de la oreja. No existía ningún medio para evaluarlo sin contacto. Ahora, gracias a esta tecnología, en sólo 15 segundos se puede medir el ritmo cardíaco, la frecuencia respiratoria y, los niveles de oxígeno en sangre sin ningún tipo de contacto. Tan sólo son necesarias: Una cámara web, que grabe el rostro de la persona Y una cámara térmica que mida su temperatura Resultados En septiembre de 2020, la Universidad Estatal de Alabama puso en práctica esta tecnología para detectar los síntomas del COVID-19 en su personal y sus estudiantes y aplicar el distanciamiento social. Gracias a ello, su tasa de infección por COVID fue de las más bajas de cualquier campus estadounidense. Como vemos, el potencial de aplicación de los drones es tan amplio, que cada día descubrimos una nueva forma en la que esta tecnología nos puede hacer la vida mas fácil. Para mantenerte al día con el área de Internet of Things de Telefónica visita nuestra página web o síguenos en Twitter, LinkedIn y YouTube.
22 de febrero de 2021
AI & Data
Un gemelo digital para salvar el Mar Menor
El Mar Menor, la mayor laguna salada de Europa sufre una gran degradación debida a distintos factores socioambientales. El proyecto Smartlagoon, finaciado por la Comisión Europea, inicia su andadura para lograr la sostenibilidad de la laguna. A pesar de tratarse de un ecosistema de gran valor medioambiental y socioeconómico, las fuertes presiones climáticas y antropocéntricas que sufre el Mar Menor desencadenaron un auténtico colapso medioambiental en octubre de 2019. Los efectos de una DANA que azotó la región en aquel momento, sumados al grave problema de eutrofización de sus aguas, se tradujeron en la desoladora imagen de toneladas de peces muertos por asfixia. Sumado a su interés ecológico, el Mar Menor tiene asimismo un gran valor cultural, y atesora importantes vestigios de patrimonio paleontológico, arqueológico, histórico y antropológico. Es por ello que resulta de vital importancia comprender cómo se ha llegado a esta situación y ponerse manos a la obra para revertirla. Figura 1: Espacios Naturales del Campo de Cartagena (Murcia)- (Nanosanchez-- Ampliar) ¿Cómo se llegó a esta situación? A lo largo de su historia, el Mar Menor ha sufrido un proceso de transformación, por la intervención humana, que ha ido modificando sus características físicas y naturales. Los principales causantes de su difícil situación actual son, entre otros: La contaminación por residuos orgánicos y fertilizantes, los rellenos y obras costeras, los dragados para extraer arenas, un crecimiento urbanístico acelerado y poco planificado, y una gran presión turística. Puertos deportivos y playas artificiales donde antes había balnearios. Humedales y riberas alteradas. Fondos marinos enfangados. Proliferación descontrolada de algas por exceso de nutrientes procedentes drenajes agrícolas ilegales. Vertidos de aguas fecales. Degradación de sistemas dunares. Espacios naturales desbordados por la presión turística... Figura 2: Deterioro de las salinas del Mar Menor (CapitanHadock, CC BY-SA 4.0) Las causas parecen claramente identificadas, pero ¿Cómo se puede resolver esta difícil situación? El proyecto SmartLagoon El proyecto SMARTLAGOON, financiado por la Comisión Europea en el marco del programa de investigación e innovación Horizon2020, combinará las nuevas tecnologías de detección, basadas en inteligencia artificial e IoT para crear un gemelo digital de la laguna. Se trata de un proyecto internacional, coordinado por la Universidad Católica de Murcia, en el que participan las siguientes instituciones y empresas: la Universidad Politécnica de Valencia y Vielca Ingenieros S.A (España), WaterITech ApS (Dinamarca), Uppsala University (Suecia), Norwegian Institute for Water Research (Noruega), Università di Bologna (Italia) y Photrack, AG (Suiza). Como ya os contamos en nuestro blog, un gemelo digital no es más que un innovador modelo virtual de la laguna. Su objetivo principal es comprender en profundidad las interrelaciones socioambientales que afectan a las lagunas costeras y su ecosistema. Para ello, combinará datos procedentes de sensores Iot y datos de satélites, con datos de comportamiento humano (datos de redes sociales, datos económicos etc) , datos procedentes de repositorios abiertos (opendata) y ciencia ciudadana. Así, combinando las nuevas tecnologías de detección, basadas en inteligencia artificial con infraestructuras IoT , el gemelo digital de la laguna replicará los procesos físicos que se producen en ella. De esta forma, se podrá conocer por anticipado la repercusión de cada una de las acciones realizadas por los sectores implicados. CLOUD AI OF THINGS Digital Twins, Machine Learning e IoT 13 de octubre de 2020 La herramienta Smartlagoon, financiada por la Comisión Europea tiene un presupuesto de 3.972.000 euros. Será desarrollada conjuntamente con los ciudadanos, las responsables políticos y otras partes interesadas para así recoger sus necesidades y requisitos. Se seguirá una metodología ágil que garantice resultados prácticos y útiles para este escenario particular en primera instancia, pero con el objetivo de extenderse a otras lagunas costeras a continuación. Estaremos muy pendientes de los resultados. No sólo por la importancia. a todos los niveles, de la recuperación del Mar Menor; sino también por cómo la aplicación combinada de tecnologías de datos, IoT e Inteligencia Artificial nos pueden ayudar a conservar nuestro medioambiente. Referencias: Mar Menor: historia profunda de un desastre La causa de la muerte de los peces en el Mar Menor Innovative modelling approaches for predicting Socio-environMentAl evolution in highly anthRopized coasTal LAGOONs https://empresas.blogthinkbig.com/video-post-20-gemelos-digitales-o-digital-twins/embed/#?secret=jsbz5IUVtW Para mantenerte al día con el área de Internet of Things de Telefónica visita nuestra página web o síguenos en Twitter, LinkedIn y YouTube
19 de febrero de 2021
Conectividad e IoT
Redes neuronales en dispositivos IoT
¿Cómo podemos dotar de inteligencia a nuestros dispositivos IoT? Funciones como reconocimiento facial 3D, control por voz, detección de piezas defectuosas, falsificaciones etc son aplicaciones que requieren CPUs potentes con GPUs igualmente potentes para ejecutar predicciones en redes neuronales profundas. Si a esto le sumamos la necesidad de ejecutar estas funciones de forma offline, sin acceder a potentes servidores en la nube, comprenderemos la importancia de investigar sobre nuevas redes neuronales capaces de funcionar en microcontroladores (MCU) con poca RAM. Para comprenderlo mejor, basta un pequeño cálculo. En un ordenador normal, la RAM se calcula en gigabytes, mientras que, por ejemplo, un chip microcontrolador Atmega328 tiene una RAM del orden de 1-2KB. Figura 1: Microcontrolador ATmega328P-PU ( Fuente) LogNNet Andrei Velichko, de la Universidad Estatal de Petrozavodsk (Rusia), ha creado una nueva arquitectura de red neuronal LogNNet, que utiliza filtros caóticos deterministas para las señales de entrada. El sistema mezcla aleatoriamente la información de entrada, pero al mismo tiempo extrae datos valiosos de la información que no son visibles inicialmente. Es un mecanismo similar a que usan las redes neuronales tipo reservorio ("reservoir computing"). Reservoir computing Un "reservorio" representa un conjunto de unidades conectadas de forma recurrente que se conectan de forma aleatoria. La computación de reservorio utiliza una red neuronal recurrente (RNN) pero, en lugar de actualizar todos los parámetros de la red, sólo lo hace con algunos de ellos, manteniendo los demás fijos tras elegirlos aleatoriamente. Esto permite utilizar algoritmos de aprendizaje mucho más rápidos De la misma forma, en la arquitectura LogNNet, el procesador reduce considerablemente el consumo de memoria al calcular secuencialmente los coeficientes de peso necesarios durante el funcionamiento de la red, utilizando para ello la ecuación analítica del mapeo logístico. De esta manera, se introduce el factor "caos". (La aplicación o ecuación logística se utiliza habitualmente en biología de poblaciones y es un ejemplo típico de ecuación simple a partir de la cual calcular una secuencia de valores caóticos.) Resultados experimentales Para poner a prueba su red neuronal, Velichko utilizó un dataset clásico para el entrenamiento de redes neuronales en reconocimiento de imágenes: MNIST. La base de datos, con más de 70.000 dígitos escritos a mano, se particionó en un conjunto de entrenamiento con 60.000 dígitos, y otro de prueba de 10.000. La precisión de los resultados mejoraba cuanto más neuronas y más caos tenía la red, llegando a una precisión máxima de un 96,3%, con un consumo de no más de 29 KB de RAM. Lognet demostró resultados prometedores utilizando tamaños de RAM aún más pequeños, del orden de 1-2kB. Por lo tanto, esta red puede utilizarse en implementaciones de inteligencia artificial basadas en dispositivos con limitaciones de memoria , que son la base de la inteligencia ambiental en los entornos IoT. Y no sólo esto. Desde una perspectiva de investigación, LogNNet puede contribuir a la comprensión de la influencia del caos en el comportamiento de las redes neuronales de tipo reservoir. Ejemplos de aplicación que ya son una realidad En la feria Embeded World 2019 ya se presentaron algunas iniciativas basadas en la ejecución de redes neuronales profundas en microprocesadores con interesantes aplicaciones prácticas. En una de las demostraciones se vio cómo predecir el fallo de motores en electrodomésticos como lavadoras, frigoríficos y aparatos de aire acondicionado mediante una placa con un microcontrolador (MCU) RX66T, que utiliza dos entradas de sensores que recogían: La vibración del motor, medida con un acelerómetro. Y su consumo eléctrico. Cuando los rodamientos se desgastan, la fricción del tambor giratorio es mayor, por tanto, el motor consume más corriente. Otros posibles predictores de avería son una vibración demasiado fuerte, o ruidos extraños y fuertes procedentes del motor. Al embeber redes neuronales en los sensores, éstos son capaces de identificar comportamientos anómalos como probables precursores de averías, y generar alertas de mantenimiento antes de que éstas lleguen a producirse. Como vemos, el mantenimiento predictivo es una de las aplicaciones más interesantes que puede tener la incorporación de inteligencia a los dispositivos. Pero es fácil darse cuenta del universo de oportunidades que abre al desarrollo de aplicaciones IoT va mucho más allá. ¿Cómo lo aplicarías tú? Referencias: Neural Network for Low-Memory IoT Devices and MNIST Image Recognition Using Kernels Based on Logistic Map Running Neural Networks on Microcontrollers Recent advances in physical reservoir computing: A review El «reservoir computing» para sensores multitarea Para mantenerte al día con el área de Internet of Things de Telefónica visita nuestra página web o síguenos en Twitter, LinkedIn y YouTube.
18 de febrero de 2021
AI & Data
Python para todos: Matplotlib y la curva corazón
Hoy os proponemos aprender a realizar visualizaciones sencillas con Python. Y, como siempre nos gusta hacer un guiño a San Valentín (reconozcámoslo, es muy cursi, pero tiene su gracia ;), vamos a trabajar sobre curvas corazón. Para poder decir "Te quiero", con matemáticas, y con Python. ¿Conoces matplotlib? Matplotlib es la librería de visualización más popular de Python. Aunque es algo antigua, fue creada en 2003, se ha instaurado como la librería de referencia para visualizaciones. Es cierto que, con el paso de los años, otras librerías como seaborn, ggplot, Bokeh, o Plotly ofrecen visualizaciones más atractivas o una interfaz mucho más cómoda. Sin embargo, estas otras librerías de más alto nivel no siempre ofrecen toda la funcionalidad que nos interesa. En estos casos, siempre podemos recurrir directamente a matlotlib. No en balde, se han desarrollado sobre ella. En definitiva, aunque matplotlib es una librería de bajo nivel que puede resultar algo confusa en ocasiones, pero es tan potente y extensa que merece la pena aprender a utilizarla. Además, su gran compatibilidad con diferentes sistemas operativos y entornos de ejecución, ayudó a su rápida adopción por parte de la comunidad. Esto facilita mucho encontrar respuesta a cualquier duda o problema que nos pueda surgir. Podemos acceder a la documentación completa en el sitio web oficial de matplotlib.org. Un ejemplo sencillo Empecemos con un ejemplo sencillo. Como siempre, para poder hacer uso de cualquier función de una librería, tenemos que importarla. Podemos importar la sub-librería pyplot, que contiene la mayoría de las funciones, import matplotlib.pyplot as plt o la librería completa: import matplotlib as mpl Para este ejemplo, importaremos también la libreía numérica NumPy. Para dibujar un corazón podemos recurrir a distintas ecuaciones. En la web podemos encontrar varias páginas muy interesantes y entretenidas sobre este tema, como ésta Heart Curve, o esta otra de WolframAlpha. En este primer ejemplo, elegimos la ecuación: $latex x^2 + (y-\sqrt{x^2})^2 = 1$ Si despejamos la y nos quedarán las siguientes expresiones: $latex y_1=\sqrt{x^2}+\sqrt{1-x^2}$ $latex y_2 =\sqrt{x^2}- \sqrt{1-x^2}$ Y la visualizamos con Python. La función plot crea automáticamente los ejes de coordenadas y muestra la gráfica de la función (en este caso son dos), para los valores de x definidos por la función numpy.linspace. #Ejemplo sencillo de curva corazón #En primer lugar, importamos las librerías import numpy as np import matplotlib.pyplot as plt #Para ver la gráfica en esta misma ventana %matplotlib inline # Definimos los valores para x según la sintaxis # numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0) x = np.linspace(-1,1,1000) # Ecuación de la curva superior y1 = np.sqrt(x * x) + np.sqrt(1 - x * x) #Ecuación de la curva inferior y2 = np.sqrt(x * x) - np.sqrt(1 - x * x) #Dibujamos las curvas para cada valor de x, con el color c y anchura lw plt.plot(x, y1, c='r', lw = 2) plt.plot(x, y2, c='r', lw = 2) #Mostramos la gráfica plt.show() Ya tenemos nuestro primer corazón: Aplicando estilos Las versiones más recientes de matplotlib permiten aplicar estilos que dan un aspecto más atractivo a las gráficas. Podemos ver los estilos disponibles con esta instrucción: plt.style.available: Aplicarlos, es muy sencillo. Con esta pequeña modificación del código, import numpy as np import matplotlib.pyplot as plt plt.style.use("dark_background") %matplotlib inline x = np.linspace(-1,1,1000) #numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0) y1 = np.sqrt(x * x) + np.sqrt(1 - x * x) y2 = np.sqrt(x * x) - np.sqrt(1 - x * x) plt.plot(x, y1, c='r', lw = 2) plt.plot(x, y2, c='r', lw = 2) plt.show() Nuestra gráfica tiene ahora este aspecto: Personalizando: tamaño, título, color Podemos personalizar nuestras gráficas aún mas. Por ejemplo, podemos cambiar el tamaño con el parámetro figsize. Los valores por defecto son [6.4, 4.8] pulgadas ancho/alto. Con las funciones facecolor y suptitle, definimos el color del fondo de la gráfica, y añadimos un título. #Cambio tamaño, Título, color etc plt.div(figsize=(3.2, 2.4), facecolor="#009933") y1 = np.sqrt(x * x) + np.sqrt(1 - x * x) y2 = np.sqrt(x * x) - np.sqrt(1 - x * x) plt.plot(x, y1, c='r', lw = 2) plt.plot(x, y2, c='r', lw = 2) plt.suptitle('Corazón en Python', fontsize=16) plt.show() Y nos quedaría algo así: Como siempre, es cuestión de ir explorando las distintas opciones, probar. Y plantearse un desafía algo más difícil cada vez. Probamos otras curvas corazón Después de estas sencillas nociones sobre matplotlib, no nos podemos resistir a probar la visualización de otras curvas cuya representación gráfica se asemeja a un corazón. Segunda curva corazón Por ejemplo, si probamos con la segunda curva corazón de WolframAlpha, vemos que resulta sencillo copiar las fórmulas (con la opción de "Plain text") y transformarlas para dibujarlas con Python. En este caso, vamos a usar al librería sympy para matemática simbólica y la función plot_parametric:. También necesitaremos cargar la librería math para poder usar las funciones trigonométricas. Sin embargo, resulta muy sencillo crear esta visualización. Las ecuaciones paramétricas copiadas como texto plano: x(t) = a sin(t) cos(t) log(abs(t)) y(t) = a (t^2)^(3/20) sqrt(cos(t)) Sólo requieren la adición de signos "*" para representar las operaciones de producto y potencia. from sympy import * from sympy.plotting import plot_parametric import math t = symbols('t') a=1 x = a*sin(t)*cos(t)*log(abs(t)) y = a*(t**2)**(3/20)*sqrt(cos(t)) print ("Corazon 2") plot_parametric(x, y, (t, -a, a)) Cuarta curva corazón. Para la cuarta curva, es prácticamente igual. En este caso, elegimos la fórmula expresada en coordenadas polares, la copiamos como texto plano y la adaptamos a nuestro código Python añadiendo los signos "*", como en el ejemplo anterior. r(θ) = a ((sin(θ) sqrt(abs(cos(θ))))/(sin(θ) + 7/5) - 2 sin(θ) + 2) from sympy import * from sympy.plotting import plot_parametric import math %matplotlib inline t = symbols('t') a=1 r = a* ((sin(t)* sqrt(abs(cos(t))))/(sin(t) + 7/5) - 2* sin(t) + 2) print ("Corazon 4") plot_parametric( r*cos(t), r*sin(t), (t, 0, 2*pi)) Obtenemos la siguiente gráfica: Quinta curva corazón Terminamos con la quinta curva. Volvemos a recurrir a las ecuaciones paramétricas. Como en los casos anteriores, nos fijamos en el rango de valores que hay que especificar para t: (t, -pi, pi) from sympy import * from sympy.plotting import plot_parametric import math t = symbols('t') x = 16*(sin(t))**3 y = 13*cos(t) - 5*cos(2*t) - 2*cos(3*t) - cos(4*t) print ("Corazon 5") plot_parametric(x, y, (t, -pi, pi)) Esperamos que estos ejemplos os animen a probar cómo visualizar funciones matemáticas en Python, con todo tipo de fines: recreativos, prácticos, de investigación etc ¿Se atreve alguien con las ecuaciones de la curva de Batman? ;) (aquí puede encontrar una solución) Si quieres echar un vistazo a los post que hemos publicado en años anteriores por estas fechas: PLN con Python: Tokens, stop words y ngrams ¿Por qué nunca tendré novia? Especial San Valentin: ¿Podemos predecir la infidelidad con IA? Predictor de infidelidad (II): ¿Qué es la regresión logística? Predictor de infidelidad (III): Un ejemplo de regresión logística sobre el dataset “Affairs”
12 de febrero de 2021
AI & Data
Inteligencia Artificial y el origen del Universo
Hoy, Día Internacional de la Mujer y la Niña en la Ciencia, vamos a hablar de cómo la inteligencia artificial es una especie de "varita mágica" que revoluciona todo lo que toca. En particular, veremos cómo se aplica al estudio del origen del Universo, uno de los misterios más grandes de la Ciencia. Pero también hablaremos de la importancia de quien maneja la "varita". En este caso, la investigadora, Cora Dvorkin, que empezó desde niña a hacerse preguntas. Y que hoy sigue defendiendo que "Hacer ciencia es la permanente búsqueda, no solo de respuesta sino también igual de importante, de la pregunta correcta. De niña curiosa a Doctora en Cosmología En una TEDxRíodelaPlata, la Dra, Cora Dvorkin, especialista en Cosmología del Departamento de Física de la Universidad de Harvard, nos explica cómo su equipo de investigación utiliza la inteligencia artificial para aprender sobre algo que está ahí aunque no lo veamos: la materia oscura. También nos cuenta cómo, de niña, acompañaba a su padre a visitar a un amigo muy sabio, al que ambos admiraban mucho. Manuel Sadosky, matemático, considerado por muchos como el padre de la computación en Argentina, le transmitió su pasión por la ciencia y el conocimiento, y le enseñó a plantearse las preguntas adecuadas. Aprendió a disfrutar de cómo cada respuesta, cada avance, planteaba un nuevo desafío. Con el paso de los años, se graduó en Física, por la Universidad de Buenos Aires, y encontró en la Cosmología el espacio para juntar su pasión por las Matemáticas, la Física y la Filosofía. ¿Por qué estudiar la materia oscura? Hay muchas razones por las que es importante estudiar el Universo, y, en particular, la materia oscura. Pero sin profundizar en implicaciones históricas, basta con tener en cuenta un dato. El 85 % de materia de todo el universo es materia oscura. El 85 % y aún hoy seguimos sin entender qué es. Cora Dvorkin nos explica de forma muy sencilla, cómo los cosmólogos, al igual que los arqueólogos, estudian el pasado para poder comprender mejor el futuro. Así, investigando la luz que nos llega de una estrella, podemos ver cómo era ésta en el pasado; ya que puede tardar millones de años en llegar a nosotros. Y cuanto más lejos esté la estrella, más atrás en el tiempo podemos llegar. Por tanto: Estudiar el universo lejano es como viajar en el tiempo. Así, los cosmólogos investigan sobre en origen del Universo, estudiando la radiación cósmica de fondo, conocida como el "eco del Big Bang". Una "interferencia" inexplicable En 1965, los astrónomos de Bell Labs, Arno Penzias y Bob Wilson, descubrieron accidentalmente, como tantas veces sucede en la historia de la ciencia, algo fundamental. Ellos habían construido una antena para detectar ondas de radio y trabajaban para reducir al máximo cualquier interferencia. Pero había una señal de origen desconocido, que no había forma de eliminar. Habían detectado la radiación cósmica de fondo. Con los años, el desarrollo de la Cosmología dio lugar a un modelo que explicaba el origen del Universo de forma elegante y simple. Usando la teoría estándar de Física de Partículas y la teoría de la Relatividad, explicaba la abundancia de hidrógeno y helio en el Universo, así como la existencia de esta radiación de fondo, emitida cuando el universo tenía tan solo 400.000 años de edad. Algo que no se ve, pero está ahí Pero había algo que no cuadraba. Para que funcionara el modelo, hacía falta mucha más materia de la que se podía detectar. En concreto, más de un 85%. Además, una materia "especial", sólo detectable por sus efectos gravitacionales. Para explicarla, son necesarios nuevos tipos de partículas elementales. Es por ello que hoy día, en todo el mundo, se llevan a cabo numerosos experimentos, como el proyecto EUCLID, de la Agencia Espacial Europea. Primeras evidencias de la existencia de la materia oscura Años después, en los 70, a la astrónoma Vera Rubin, que estudiaba la velocidad de rotación de las estrellas en distintas galaxias, tampoco le salían las cuentas. Al igual que ocurre con los planetas que giran alrededor del sol, esperaba observar velocidades de rotación más bajas cuanto más lejos se encontrara la estrella del centro de la galaxia. Sin embargo las observaciones mostraban otra cosa y la velocidad era constante. Fue la primera evidencia científica de la existencia de la materia oscura. Estos trabajos permitieron explicar muchas observaciones, incluida la conocida sinfonía cósmica del Big Bang. ¿Cómo detectar la materia oscura? Aunque en 2019, los cosmólogos consiguieron el mapa más completo de materia oscura a través de la historia del Universo, cuando tratamos de detectarla a menor escala, como en el seno de una galaxia, su influencia o huella en el espacio es mucho más pequeña y difícil de cartografiar. Figura 1: Este mapa tridimensional ofrece un primer vistazo a la distribución de la materia oscura a gran escala, como si fuera una red, tal y como se ha cartografiado con el mayor estudio del Universo realizado por el telescopio espacial Hubble, el Cosmic Evolution Survey ("COSMOS"). Fuente En este caso, los investigadores plantean hipótesis que les permitan medir su impacto sobre algo observable. Por ejemplo, si se plantea la hipótesis de que el paso de materia oscura frente a un objeto brillante distorsiona su brillo, este sí es un efecto que podemos medir a escala de una galaxia. IA para detectar materia oscura El grupo de investigación de la Dra, Cora Dvorkin, en Harvard, investiga sobre la materia oscura basándose en el fenómeno conocido como "efecto de lente gravitacional". La masa de la materia oscura deforma el espacio-tiempo. Por ello, en su presencia, la luz que nos llega de una galaxia no viene en línea recta, sino que se desvía creando arcos en el cielo que SI podemos observar. Por tanto, para localizar cúmulos livianos de materia oscura, analizan imágenes buscando las pequeñas fluctuaciones que éstos generan en los arcos que vemos en el cielo. El método tradicional para detectar estas pequeñas perturbaciones era analizar las imágenes una a una, a mano. Era un método muy lento, les podía llevar varios meses, pero factible cuando las imágenes a analizar se contaban por decenas. Sin embargo, con los nuevos telescopios, de decenas se ha pasado a decenas de miles, por lo cuale este análisis se convirtió en una tarea inabordable. Machine Learning al rescate Entonces el grupo se planteó aplicar a su campo de investigación técnicas de visión artificial. Así, entrenaron modelos de machine learning con miles de simulaciones de imágenes de galaxias, de forma que éstos aprendieron a detectar los patrones propios de los cúmulos de materia oscura. Los resultados fueron tan buenos que apenas se lo podían creer. En menos de un segundo podían detectar cúmulos tan pequeños que antes consideraban indetectables. IA para investigación en Física El éxito del proyecto les animó a crear, junto con colegas de la Universidad de Harvard, MIT y otras universidades del área, un Instituto de Inteligencia Artificial, el IAIFI , en el que físicos de distintas disciplinas usan este tipo de herramientas. De esta forma, gracias a la inteligencia artificial y la gran cantidad de datos de los que podemos disponer hoy en día, iremos encajando poco a poco las piezas del rompecabezas, y encontrando respuesta a nuestras preguntas. Y lo mejor de todo, nuestra curiosidad innata nos llevará a plantearnos preguntas nuevas que nos ayudarán a seguir avanzando en el conocimiento con mayúsculas. Referencias: Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
11 de febrero de 2021
AI & Data
Drones y conservación de especies
En el post de hoy os contamos cómo los profesionales de la Ecología y Conservación de Especies utilizan drones para verificar el bienestar de las poblaciones de pingüinos en la Antártida. Para que los ecólogos puedan determinar la salud de una colonia de pingüinos, es muy importante conocer el número de polluelos. Pero contar miles de ellos, en las duras condiciones de la Antártida supone un auténtico desafío. El proceso habitual consiste en hacer una estimación de las parejas anidadoras, tomando como muestra una serie de fotografías tomadas desde un helicóptero. En el caso de colonias muy grandes, como la de Cabo Crozier, en el punto más al este de la isla de Ross, en la Antártida, este método resulta del todo insuficiente. Figura 1: Isla de Ross (fuente) Una nueva forma de contar pingüinos La ecóloga Annie Schmidt, le comentó el problema al ingeniero Mac Schwager, con el que coincidió ¡en una boda! (los caminos de la Ciencia también son inescrutables), y éste le propuso una alternativa interesante. El equipo de Schwager puso en marcha un nuevo sistema de imágenes operado por una flotilla de autónoma de cuatro drones cuyas rutas eran optimizadas por un algoritmo. El algoritmo dividió el área analizada en una cuadrícula y seleccionó las rutas que cubrían todos los puntos. También tuvo en cuenta las limitaciones en cuanto a duración de batería, altitud y espacio aéreo. Así, con cuatro drones multirrotor tomaron más de 2.000 imágenes que se unieron después para montar una imagen del área monitorizada. En tan solo tres horas, recopilaron los datos de la colonia más grande: 300.000 parejas anidadoras en un área de dos kilómetros cuadrados en Cabo Crozier. Usando drones dirigidos por humanos, habrían necesitado tres días para realizar esta labor. Figura 2: Gran colonia de pingüinos en la Antártida Resultados Gracias a estas fotografías, Schmidt y su equipo han creado un modelo que permite conocer cómo influyen las características del terreno donde las aves anidan con su capacidad para sacar adelante la nidada. Otra de las ventajas de este sistema de drones autónomos es el hecho de que resulta mucho menos invasivo para los pingüinos que los sistemas anteriores. También, el hecho de que, a pesar de las limitaciones por el COVID19 se puedan seguir llevando a cabo los trabajos. En un análisis publicado en Science Robotics, Marija Popović, investigadora del Imperial College de Londres, afirma que “El uso de varios drones en lugar de uno puede ofrecer más flexibilidad y eficiencia de tiempo y rentabilidad, especialmente, en entornos grandes y complejos”. Referencia bibliográfica: Kunal Shah, Grant Ballard, Annie Schmidt y Mac Schwager. “Multidrone aerial surveys of penguin colonies in Antarctica”, Science Robotics 5, 28 de octubre de 2020. DOI: 10.1126/scirobotics.abc3000. Otros post sobre aplicaciones de drones en nuestro blog: AI OF THINGS Machine Learning, satélites y drones contra “plagas bíblicas” 8 de abril de 2020 AI OF THINGS Drones que "ven bajo tierra" 10 de diciembre de 2020 AI OF THINGS Drones que usan IA para salvar vidas 14 de enero de 2021 AI OF THINGS Drones e IA, las nuevas herramientas de Indiana Jones 9 de enero de 2020
3 de febrero de 2021
AI & Data
PLN para predecir mutaciones del COVID19
El PLN (procesamiento de lenguaje natural) es una técnica de aprendizaje automático que se utiliza para todo tipo de aplicaciones relacionadas con texto y lenguaje. Recientemente, se ha empezado a aplicar al campo de la Biología, en particular, a la predicción de mutaciones de virus como el COVID19. En el post de hoy os contamos cómo. Un artículo publicado en la revista Science, Learning the language of viral evolution and escape, abre una interesante vía de investigación para predecir los mecanismos de escape viral del COVID19. Entender y poder predecir los mecanismos que utiliza el virus para evadir la respuesta inmunitaria del huésped es crucial para el diseño de tratamientos antivirales, y la producción de vacunas. Lo novedoso de esta investigación, es la aplicación de técnicas de machine learning para procesamiento de lenguaje natural (PLN) para la detección de mutaciones del virus, basándose en las sorprendentes similitudes entre el código genético y el lenguaje verbal. El lenguaje de la Biología La importancia de las matemáticas como "lenguaje" para explicar el universo es ampliamente conocida. En palabras de Galileo Galilei, «El gran libro de la naturaleza está escrito con símbolos matemáticos» Y la Biología, como ciencia de la naturaleza, también se apoya en las matemáticas para el tratamiento y modelado de todo tipo de procesos biológicos. Ya en 1865, Mendel avanzó el concepto de gen, como unidad de "encapsulación" de rasgos hereditarios y descubrió algunas leyes matemáticas que explicaban la transmisión de rasgos hereditarios. Pero hasta la publicación en 1953 por Watson y Crick del artículo “A structure for deoxyribose nucleic acid”, no se comprendió cómo se organiza la información genética. Como ya vimos en este otro post, el ADN (ácido desoxirribonucleico) es una molécula compleja que se encuentra dentro de cada célula de nuestro cuerpo y contiene todas las instrucciones necesarias para crear y mantener la vida. Los componentes básicos del ADN Los cuatro componentes básicos del ADN son los nucleótidos: adenina (A), timina (T), guanina (G) y citosina (C), y se unen de un modo muy concreto, A con T, y C con G. Para entender qué es el ADN, imaginemos dos cadenas que se unen formando una doble hélice. Muchos, miles, millones de adeninas, timinas, guaninas y citosinas se unen formando una secuencia que sigue un orden determinado como por ejemplo: AAATTCGAGTCAATTGCCTATCCTCGAGTCAACCTATCCA Figura 1: Animación de la doble hélice del ADN ( fuente) El poder representar la información genética en forma de largas cadenas de caracteres dio lugar, ya hace décadas, a discusiones filosóficas sobre su posible consideración como "lenguaje" . Sin embargo, es ahora cuando los avances en computación molecular (en los años 90) y en métodos de lectura-edición del código genético, han permitido saltar de la filosofía al laboratorio. Así, las teorías que relacionan la biología con el lenguaje, han dado pie a la aplicación de técnicas de machine learning para procesamiento de lenguaje natural (PLN) a investigaciones de procesos biológicos como la predicción de mutaciones. Cómo "leer" un virus El objetivo de la investigación consiste en detectar las mutaciones de escape, es decir, aquellas que conservan la infectividad viral, pero pasan desapercibidas para el sistema inmunitario. Cuando se aplican técnicas de PLN a grandes corpus de texto de lenguas como el inglés o el español, se trabaja con secuencias de palabras que codifican significados complejos (componente semántico), que se combinan mediante reglas también complejas (gramática). Una mutación es un cambio en el significado del virus (por tanto semántico) que cumple las reglas biológicas (la gramática) por las que conserva la infectividad y la aptitud evolutiva. Por tanto, las mutaciones que permiten al virus engañar al sistema inmunológico son aquellas que cambian el significado del virus sin hacerlo gramaticalmente incorrecto. ¿Cómo funcionan los modelos lingüísticos? Existe un tipo de modelos de PLN, los modelos de Word Embeding, que codifican palabras en un espacio matemático y son capaces de agruparlas según su significado o campo semántico, y de predecir su probabilidad de aparición en un determinado contexto. AI OF THINGS Word Embeddings: cómo la IA nos muestra la evolución de las palabras 5 de junio de 2019 En este caso, en lugar de entrenar el modelo lingüístico sobre una secuencia de palabras, por ejemplo, en inglés, se entrena sobre una secuencia de aminoácidos. Así, la capacidad de agrupar tokens según su significado o campo semántico, se traduce en capacidad de agrupar virus en función de la similitud de sus mutaciones. Por otra parte, la capacidad infectiva del virus se basa en el hecho de que cumpla la gramática. El sistema inmunológico no lo detecta porque "entiende la frase", no "salta ninguna alarma". El modelo Para la modelización se partió de las siguientes hipótesis: El cambio semántico codificado en el modelo de lenguaje corresponde al cambio antigénico. Es decir, cambio semántico=mutación. La gramaticalidad del modelo de lenguaje captura la aptitud viral. Por tanto, los virus peligrosos respetan las reglas (gramática biológica) Tanto el alto cambio semántico como la gramaticalidad ayudan a predecir el escape viral: el objetivo del modelo. El modelo, una red neuronal biLSTM, fue entrenado para "completar" qué aminoácido faltaba en una secuencia. Durante el proceso, el modelo generó "embeddings" que representan las relaciones entre las secuencias. A continuación, generaron secuencias mutadas, cambiando un aminoácido cada vez. Por último, para clasificar una determinada mutación, se basaron en las hipótesis anteriores. Tomaron una suma ponderada de la probabilidad de que el virus mutado conservara una gramática infecciosa y el grado de diferencia semántica entre las incrustaciones de la secuencia original y la mutada. Entrenamiento y resultados Para el entrenamiento de la red neuronal, los investigadores trabajaron con miles de secuencias genéticas tomadas de tres virus diferentes: 45.000 secuencias únicas para una cepa de la gripe, 60.000 para una cepa de VIH y entre 3.000 y 4.000 para una cepa de Sars-Cov-2, el virus que causa la COVID-19. Los investigadores compararon las mutaciones mejor valoradas de su modelo con las de los virus reales según el área bajo la curva (AUC), donde 0,5 es aleatorio y 1,0 es perfecto. El modelo logró un AUC de 0,85 en la predicción de variantes del SARS-CoV-2 altamente infecciosas y capaces de evadir los anticuerpos. En el caso del VIH, alcanzó un AUC de 0,69, y en el de dos cepas de la gripe, de 0,77 y 0,83 respectivamente. De esta forma, utilizando únicamente datos de secuencia, estos modelos lingüísticos de las proteínas virales de la hemaglutinina de la gripe, la glicoproteína de la envoltura del VIH-1 (HIV Env) y el coronavirus del síndrome respiratorio agudo severo 2 (SARS-CoV-2) permiten predecir con exactitud los patrones estructurales de escape.. Conclusiones La aplicación de conceptos y técnicas de procesamiento de lenguaje natural al campo de la biología abre la puerta a revolucionarios avances sobre evolución viral. Dada la situación actual de pandemia por el COVID19, el impacto que estos trabajos pueden tener sobre nuestra salud y bienestar es más que evidente. AI OF THINGS Almacenamiento en ADN: todos los datos de internet cabrán en una caja de zapatos 24 de abril de 2020 Learning the language of viral evolution and escape Código genético y lenguaje verbal, Gemma Bel Enguix - M.a Dolores Jiménez López, Universitat Rovira i Virgili Un algoritmo predice las peores mutaciones del coronavirus con PLN
1 de febrero de 2021
Conectividad e IoT
IoT4All: Las 5 tendencias que impulsan el IoT
En los post anteriores de nuestra serie IoT4All, hemos hablado de las distintas formas de definir “internet de las cosas”, y sobre cómo se conectan y comunican los dispositivos. Hemos visto que la IoT, es fruto de la convergencia de distintas tendencias que se vienen dando desde hace muchos años, tanto en las áreas de la computación, como en la conectividad. Veamos cuáles son las principales. 1. Ubicuidad de la conectividad Hoy día, prácticamente todo es conectable. En especial, gracias a gran cantidad de servicios y tecnologías inalámbricas (con y sin licencia) que ofrecen una conectividad ubicua, a gran velocidad y bajo coste. 2. Adopción del protocolo IP como estándar dominante En los años 90, gracias a los avances en tecnología inalámbrica, surgió un gran número de soluciones “máquina a máquina” (M2M) con implementaciones técnicas propietarias de IoT. Estas soluciones, poco o nada flexibles, dificultaban la interoperabilidad de productos y servicios, y generaban situaciones indeseadas de "lock-in" ("atarse a un proveedor"). En los últimos años, la adopción generalizada de estándares genéricos y ampliamente disponibles, como el protocolo IP, ha impulsado la innovación y las oportunidades en este sector. En particular, ha puesto a disposición de los usuarios una plataforma bien definida y ampliamente implementada de software. Así como herramientas que se pueden incorporar de forma sencilla y económica todo tipo de dispositivos. 3. Mayor capacidad de cómputo, a menor precio Según la ley de Moore (1965) el número de transistores alojados por un circuito integrado se duplica aproximadamente cada dos años. En los últimos 50 años, hemos visto cómo esta ley ha marcado el paso de la revolución digital, gracias a la disponibilidad de un a potencia de cálculo cada vez mayor, con un coste y consumo energético menores. Este hecho ha posibilitado vertiginosos avances en tecnologías de la computación, big data, inteligencia artificial e internet de las cosas. Aunque esta disminución de tamaño se ha ido ralentizando con los años, la la industria ha desarrollado nuevas estrategias para seguir aumentando su potencia. Así, TSMC, el mayor fabricante de chips del mundo, empezó ya en 2020 la producción a gran escala de chips de 5nm, y espera lanzar al mercado los de 3nm en 2022. Para el siguiente paso, los 2nm se están considerando otros materiales, más allá del silicio, que permitan arquitecturas menores, como los nanotubos de carbón. 4. Miniaturización Los avances anteriores han hecho posible incorporar tecnologías de cómputo y comunicación en objetos cada vez más pequeños. Esto ha permitido crear una gran variedad de sensores muy pequeños y de bajo costo, que han impulsado todo tipo de aplicaciones de la IoT. 5. Nuevo paradigma: Dispositivos conectados a la nube Gracias a este nuevo paradigma, pequeños dispositivos distribuidos se conectan a potentes sistemas remotos, que ofrecen interesantes capacidades analíticas, de soporte y de gestión basadas en tecnologías IA&BigData. De esta forma, estos pequeños dispositivos se convierten en objetos inteligentes que, con una mínima intervención humana, son capaces de generar, intercambiar y consumir datos. Las capacidades analíticas de los sistemas remotos permiten analizar estos datos y tomar "decisiones inteligentes" de soporte, mantenimiento preventivo, seguridad etc. Conclusión En la actualidad, vemos como las tecnologías IoT se van incorporando a todo tipo de sectores. Desde la automoción, a la salud; de la educación a la investigación, la electrónica de consumo o la seguridad. Esto está generando un cambio en la forma en la que interactuamos en internet. Evolucionando desde la participación activa propia de la web 2.0, donde los usuarios generan, intercambian y descargan contenidos a través de sus computadoras o teléfonos inteligentes; a un modelo nuevo. Un modelo donde ya no son las personas directamente, sino los objetos y los dispositivos inteligentes los que envían y reciben los datos en su nombre y a su servicio. Una auténtica "Internet de las cosas". AI OF THINGS Iot4All:¿Cómo se conectan y comunican los dispositivos? 3 de diciembre de 2020
27 de enero de 2021
AI & Data
ENIA, la nueva Estrategia Nacional sobre IA
Desde el pasado 2 de diciembre, España cuenta con una nueva Estrategia Nacional de Inteligencia Artificial, ENIA, dotada con un presupuesto de 600 millones de euros para medidas relacionadas con la inteligencia artificial. Veamos en qué consiste y cuáles son sus ejes principales. ENIA ENIA forma parte del Plan de Recuperación, Transformación y Resiliencia de la economía española, y es una de las propuestas fundamentales de la Agenda España Digital 2025. Su objetivo principal es crear un ecosistema nacional de inteligencia artificial innovador, competitivo y ético. Para ello, son necesarios grandes volúmenes de datos y metadatos de calidad, accesibles, seguros, completos, interoperables y respetuosos con la privacidad. Figura 0: Imagen oficial ENIA Ejes de actuación Para lograrlo, se han planteado 6 ejes de actuación, en torno a los que se agrupan un total de 30 medidas a desarrollar en el período 2020-2025. Estos son los siguientes: Impulsar la investigación científica, la innovación y el desarrollo de tecnologías basadas en inteligencia artificial. Promover las capacidades digitales para potenciar el talento nacional, así como intentar atraer talento global. Desarrollar plataformas de datos e infraestructuras que den soporte a la inteligencia artificial. Integrar la inteligencia artificial en las cadenas de valor, con el objeto de transformar el tejido económico Potenciar el uso de la inteligencia artificial en la Administración Pública y en las misiones estratégicas nacionales. Establecer un marco ético y normativo que garantice la inclusión y el bienestar social. Figura 1: Ejes de actuación de la ENIA (Ampliar imagen) Los datos abiertos en España Los datos abiertos, en los que España se ha convertido en un referente europeo, son claves para crear servicios de valor para la sociedad y la economía basados en la Inteligencia Artificial. Las medidas contempladas en este eje (3) se resumen en los siguientes puntos: Desarrollo de un marco regulatorio para la publicación y acceso a los datos públicos de las Administraciones Públicas. Creación de una Oficina del Dato a nivel estatal. Designación de un Chief Data Officer. Creación de un grupo multidisciplinar de datos abiertos en el sector público estatal. Desarrollo de repositorios accesibles. Orientación a empresas para definir sus estrategias de datos abiertos. Proyectos de Datos para el Bien Social (Big Data for Good). Figuta 2: Medidas relacionadas con los datos abiertos (Ampliar) Además de estas acciones relacionadas con los datos abiertos, se emprenderán otras como: Fomentar la incorporación de la IA en Administración Pública, impulsar la investigación científica y el talento, y ofrecer ayudas a empresas para desarrollar soluciones en este ámbito. Como novedad, en esta estrategia se contempla la creación de observatorios de evaluación ética y jurídica de los sistemas algorítmicos y el desarrollo de la Carta de Derechos Digitales. ENIA no solo supone el impulso del crecimiento de la IA en España, sino también el de nuestra sociedad y economía, mejorando así nuestra competitividad internacional. Aprendamos a usar la #InteligenciaArtificial para construir un futuro mejor. Referencia: El papel de los datos abiertos en la nueva estrategia Nacional de Inteligencia Artificial (Datos.gob.es) Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
18 de enero de 2021
AI & Data
Drones que usan IA para salvar vidas
Cada día encontramos nuevos usos para los drones. Si a sus ventajas que de por sí nos ofrecen, le sumamos la aplicación de técnicas de machine learning, las posibilidades se multiplican. Si quieres saber cómo usan los drones técnicas de IA para salvar vidas, te lo contamos en este post. Los sistemas de aeronaves pilotadas remotamente (RPAS) o drones son muy versátiles. Frente otros medios de emergencia tradicionales, como puedan ser los helicópteros, los drones llegan con facilidad a lugares antes inaccesibles, son muy estables y pueden recoger imágenes en alta definición. Usos habituales de los drones Por ello, suponen un gran avance a la hora de reconocer el terreno y vigilar desde el aire eventos con gran afluencia de público, captar imágenes aéreas en zonas de difícil acceso, realizar labores de apoyo en el transporte de mercancías, o incluso, tareas de control de contaminación. Recientemente, distintos cuerpos de seguridad también los están usando para detectar plantaciones ilegales de marihuana, semi-ocultas entre otros cultivos, o entre viviendas , como en la tristemente famosa urbanización ilegal de la Cañada Real, en Madrid. Pero el uso que más se está expandiendo en la actualidad es el relacionado con seguridad y situaciones de emergencia. Rescates en el mar El verano pasado, la Agencia Europea de Seguridad Marítima (EMSA), junto con la Sociedad Estatal de Salvamento Marítimo (Sasemar), probaron por primera vez el uso de drones en misiones la búsqueda y el rescate de personas en el mar. Equipados con radar marítimo, y cámaras termográficas y de visión nocturna son capaces de detectar rápidamente personas desaparecidas en áreas muy extensas. Rescates en bosques Otro sistema desarrollado por investigadores del MIT permite a drones explorar el terreno bajo gruesas cubiertas forestales donde la señal de GPS no es fiable. Varios drones autónomos podrían penetrar entre el dosel del bosque para "peinarlo" de la misma forma que lo haría un escáner, realizar este tipo de búsquedas. Cada dron, equipado con posicionadores laser, genera un mapa individual del terreno en 3D. Combinando los mapas individuales de los distintos drones, se genera un mapa 3D global que permitirá a los equipos de emergencia detectar y socorrer a las personas perdidas en el bosque. Detección de supervivientes en caso de desastres naturales En octubre de 2019, se publicó en Remote Sensing un interesante estudio de la Universidad de Australia del Sur realizado por Javaan Chahl, investigador en sistemas de sensores. Se trata de un sistema de detección de supervivientes basado en visión artificial. El uso de drones con este fin no es nuevo. En anteriores experimentos, se intentó identificar signos vitales basándose en cambios sutiles del color de la piel, susceptibles de indicar flujo sanguíneo. Pero no funcionó. Este nuevo sistema se basa en tratar de identificar en las imágenes capturadas por el dron, sutiles cambios asociados al movimiento de la respiración. Aplica técnicas de machine learning para medir cambios en la luz reflejada en la parte de la región del pecho donde el movimiento sería más evidente. Luego determina si los cambios de intensidad son consistentes con una persona viva y que respira. Los investigadores probaron el sistema satisfactoriamente sobre imágenes de nueve sujetos: ocho humanos vivos y un maniquí con peluca y maquillaje. Sin embargo, las condiciones reales en caso de desastre natural, pueden afectar mucho al resultado. A pesar de estas limitaciones, se trata de una línea de trabajo muy interesante, que permitirá hacer un uso más efectivo de los recursos de ayuda en situaciones de emergencia en las que tener perfectamente identificado dónde puede haber personas vivas y dónde no, resulta vital. Ref: "Triage Takes Flight" in Scientific American 322, 2, 16-17 (February 2020) doi:10.1038/scientificamerican0220-16
14 de enero de 2021
Conectividad e IoT
Los mejores post de 2020 en Telefónica IoT & Big Data
Este año, como ningún otro, tenemos muchas ganas de arrancar la última hoja del calendario y empezar el del 2021 que, visto lo visto, lo tiene fácil para ser mejor. Sin embargo, el 2020 también ha traído algunas cosas buenas y nos ha dado muchas alegrías en nuestro blog. En 2020 continuamos muchas de las nuestras series "clásicas" sobre: Inteligencia artifical "para todos los públicos", donde hablamos sobre conceptos básicos de la IA, machine learning, deep learning, Hadoop ..etc Las matemáticas del machine learning , Scifi e IA Tutoriales, como los de "Cómo entrenar tu IA para jugar a videojuegos", "Deep Learnign vs Atari", "Deep Learning con Python", Raspberry Pi, "Tu primer proyecto IoT Cloud", "Machine Learning con Teachable Machine" , Power BI, etc Casos de éxito, IA y deportes La serie "Cómo tranformar una compañía" Pero también hemos empezado series nuevas, sobre: Blockchain Gobierno del Dato Iot4All, Conectividad IoT, aplicaciones de IoT a todo tipo de industrias y circunstancias etc Los favoritos de 2020 Entre todos estos contenidos, ha habido 5 claros favoritos de la audiencia, que son los siguientes: En mayor protagonismo este año ha sido para Python, con el post: AI OF THINGS Las 5 razones por las que todo el mundo quiere aprender Python 5 de febrero de 2020 En segunda posición, un interesante tutorial de uno de nuestros colaboradores más fieles, Enrique Blanco: AI OF THINGS Crea tu modelo Machine Learning con Teachable Machine 27 de enero de 2020 En tercera posición tenemos una interesante recopilación de cursos gratuitos para aprender sobre IoT: AI OF THINGS Cursos gratuitos online para aprender IoT (Internet de las Cosas) en 2023 15 de marzo de 2023 En 4 lugar, una reflexión sobre la problemática educativa en tiempos de COVID19, de Víctor González Pacheco: AI OF THINGS La educación post COVID-19: 6 claves y 3 retos 6 de mayo de 2020 Y en quinto lugar, un completo post sobre la Historia de Internet de las Cosas: AI OF THINGS Breve historia de Internet de las cosas (IoT) 22 de septiembre de 2020 Seguido muy de cerca por uno de los post de la nueva serie sobre "Blockchain": BLOCKCHAIN AI OF THINGS Desmontando el mito de Blockchain 9 de junio de 2020 Si quieres tener perfectamente controlado todos nuestro contenido, seguro que te son útiles los "mapas del blog" que publicamos a finales de 2018 y 2019. AI OF THINGS Lo mejor de 2019 en LUCA 30 de diciembre de 2019 AI OF THINGS Las series en el Blog de LUCA: Post técnicos, tutoriales, de divulgación... ¿cuál es tu favorita? 28 de diciembre de 2018 Aprovecho la ocasión para agradecer, tanto a nuestra querida audiencia, como a nuestros no menos queridos autores, su fidelidad, su colaboración y las ganas de aprender y compartir conocimiento. ¡Feliz 2021! Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
30 de diciembre de 2020
AI & Data
Python para todos: crea tu árbol de Navidad
Para estas fechas navideñas, nos hemos propuesto jugar un poco con Python para ver cómo podríamos dibujar un árbol de Navidad. Empezaremos con algo muy sencillito y luego probaremos con la librería gráfica Turtle. La idea es animaros a experimentar y crear vuestro propio árbol, según vuestro nivel de conocimientos. AI OF THINGS Las 5 razones por las que todo el mundo quiere aprender Python 5 de febrero de 2020 1. Un sencillo bucle for Para crear este primer árbol usaremos dos sencillos bucles for, y las funciones random y print. El bucle for que no es más que una estructura de control que repite un bloque de instrucciones, el cuerpo del bucle, un número predeterminado de veces. Cada repetición es una iteración. La sintaxis del bucle for es la siguiente: for variable in elemento iterable (lista, cadena, range, etc.): cuerpo del bucle El cuerpo del bucle se ejecuta tantas veces como elementos tenga el elemento iterable (elementos de una lista o de un range(), caracteres de una cadena, etc.). No es necesario definir la variable de control "i" antes del bucle, pero se puede utilizar una variable ya definida en el programa. También usaremos la función range, que devuelve una secuencia de números entre el valor inicial (start) y el final (stop), con un intervalo dado (step), y la función print, que muestra el objeto que se le pasa como parámetro en el dispositivo de salida elegido. Su sintaxis es: print(object(s), sep=separator, end=end, file=file, flush=flush) El código para nuestro árbol es el siguiente: #Primer bucle, range(start,stop,step) for i in range(1,30,2): print(('^'*i).center(30)) for leg in range(3): print(('|||').center(30)) print(('\_____/').center(30)) print(' '+30*'-') print('(¨¨¨)¡Feliz Navidad! (¨¨¨)') Y el resultado: Reconozcámoslo, es un árbol muy sencillo, pero para empezar, no está mal ¿no?. Vamos a por el siguiente. 2. Nuestro árbol con Turtle Los gráficos de tortuga (Turtle graphics) formaban parte del lenguaje de programacion Logo, desarrollado por por Wally Feurzeig, Seymour Papert y Cynthia Solomon en 1967. Por su sencillez y atractivo, se han usado mucho para enseñar programación utilizado como método para enseñar programación a través de coordenadas relativas a niños y mayores. Cómo dibujar con Turtle Graphics La "tortuga (turtle) es un objeto que se desplaza sobre el plano de coordenadas x-y y nos permite dibujar todo tipo de figuras. Tiene 3 atributos esenciales: Posición: Respecto al centro de coordenadas. Orientación: Dirección hacia donde mira la tortuga. Pluma: Rastro que puede dejar la tortuga al desplazarse. Para desplazar nuestro objeto turtle disponemos de funciones como: forward(distance): Avanzar una determinada cantidad de píxeles. backward(distance): Retroceder una determinada cantidad de píxeles. left(angle): Girar hacia la izquierda un determinado ángulo. right(angle): Girar hacia la derecha un determinado ángulo. A menos que especifiquemos lo contrario, al desplazarse la tortuga pinta un rastro. Si queremos que se desplace sin dejar rastro, podemos usar las funciones: home(distance): Desplazarse al origen de coordenadas. goto((x, y)): Desplazarse a una coordenada en concreto. penup(): Subir el lápiz para no mostrar el rastro. pendown(): Bajar el lápiz para mostrar el rastro. También podemos cambiar el color, grosor o forma y tamaño de la punta del lápiz: shape('turtle'): Cambia al objeto tortuga. pencolor(color): Cambiar al color especificado. pensize(dimension): Tamaño de la punta del lápiz. Árbol de Navidad con Python Turtle Python es un lenguaje que soporta el paradigma de Programación Orientada a Objetos, y en este caso nuestro objeto va a ser el puntero (turtle) que vamos a utilizar para dibujar una figura. Como siempre, lo primero que tenemos que hacer es importar la librería que permite utilizar las funciones de movimiento de la tortuga. #Importamos el módulo turtle que permite crear gráficos de tortuga import turtle A continuación, creamos la ventana para dibujar, indicando sus dimensiones y posición. También podemos ponerle el título que queramos. Para que no quede el fondo blanco, hemos buscado un fondo navideño, y lo hemos guardado en el directorio de trabajo. (Si no tenemos claro cuál es, podemos averiguarlo con os.getcwd()). Para no complicarnos demasiado con los tamaños, hemos ajustado el tamaño de la ventana al de la imagen. Esta es la imagen de nuestro fondo: # Generamos una instancia de la clase screen de turtle screen = turtle.Screen() # Con los métodos setup y title establezco propiedades (tamaño y nombre de la ventana) screen.setup(1200,700,0,0) screen.title("Nuestro árbol de Navidad en Python") # Con el método bgpic cambiamos el atributo "fondo" (el fichero png debe estar en el directorio de trabajo, os.getcwd()) screen.bgpic("fondonavidad.png") # Al definir el tamaño de la ventana ya hemos tenido en cuenta el del fondo que hemos elegido El siguiente paso será definir nuestro lápiz o tortuga ("turtle"). Le daremos distinta forma y color según lo que queramos dibujar. Para dibujar el árbol, veremos que las formas estándar "square" y "circle" nos vienen bien. #Definimos el lápiz con el que vamos a dibujar el árbol y sus adornos # Generamos una instancia de la subclase Turtle (pen) de turtle, es decir un "lápiz" # Con los métodos shape, colour y speed, definimos su aspecto y a qué velocidad se va a mover (más adelante, en el bucle) # Levantamos el cursor para que no pinte hasta que le digamos dónde debe hacerlo lapiz = turtle.Turtle() lapiz.up() Vamos a definir una imagen no estándar para la estrella que corona el árbol. Para ello, usaremos el método register_shape y un gif con tamaño adecuado. (También podíamos haber ajustado el tamaño desde dentro del programa, pruébalo si quieres investigar un poco más). Una vez definido el lápiz como "estrella", dibujamos la estrella con el método stamp. # Empezamos por ¡el tejado!: la estrella # Definimos una forma especial para el "pen" basado en un gif con estrella con fondo transparente mediante el método register_shape # El gif, con el tamaño adecuado, en este caso 50*50 píxeles, debe estar en el directorio de trabajo screen.register_shape("star5.gif") lapiz.shape('star5.gif') #Lo llevamos a la posición que queremos y pintamos lapiz.goto(0,310) lapiz.stamp() A partir de la estrella, continuamos dibujado el árbol. Para ello usaremos un bucle que dibujará 16 filas de cuadrados verdes. Definimos el lápiz como cuadrado verde, y dibujamos la parte derecha del árbol. A continuación, dibujamos la parte izquierda. Una vez dibujado el árbol en sí, lo adornaremos con bolas rojas y amarillas. Pondremos bolas rojas en las filas que son múltiplos de 3, por ejemplo, y amarillas en las múltiplos de 5. Por último, volvemos a definir el lápiz como cuadrado marrón para dibujar el tronco con un último bucle muy sencillo. (Para elegir los colores, seguro que os viene bien esta página) # Para pintar el árbol vamos a usar un bucle # Inicializo k, el árbol lo forman 16 filas de cuadrados verdes k = 0 for i in range(1, 17): y = 30*i # Definimos lapiz cuadrado y verde #138808 lapiz.shape('square') lapiz.color('#138808') lapiz.speed('fastest') for j in range(i-k): x = 30*j # Dibujamos la parte derecha del árbol, lapiz.goto(x,-y+300) lapiz.stamp() # Dibujamos la parte izquierda del árbol lapiz.goto(-x,-y+300) lapiz.stamp() # Colocamos las bolas rojas en las filas que son múltiplos de 5. Definimos lapiz redondo y amarillo (##ffff31) if i % 5 == 0: x = 30*(j+1) lapiz.shape('circle') lapiz.color('#ffff31') lapiz.speed('fastest') lapiz.goto(-x,-y+300) lapiz.stamp() lapiz.goto(x,-y+300) lapiz.stamp() k += 3 # Colocamos las bolas rojas en las filas impares. Cambiamos color del lapiz a rojo (red) if i % 3 == 0: x = 30*(j+1) lapiz.shape('circle') lapiz.color('red') lapiz.goto(-x,-y+300) lapiz.stamp() lapiz.goto(x,-y+300) lapiz.stamp() # Dibujamos el tronco del árbol. Volvemos a lapiz cuadrado, y color marrón lapiz.shape('square') lapiz.color('#cc5500') for i in range(14,20): y = 30*i for j in range(2): x = 30*j lapiz.goto(x,-y+200) lapiz.stamp() lapiz.goto(-x,-y+200) lapiz.stamp() turtle.exitonclick() Eh voilá!, ya tenemos nuestro arbolito navideño. ¡Felices Fiestas!
23 de diciembre de 2020
AI & Data
Drones que "ven bajo tierra"
Estamos acostumbrados a leer sobre el uso de drones en seguridad vial, conservación del medio ambiente, en el mundo de la construcción, usos recreativos, militares, para espantar aves en los aeropuertos, para transportar medicamentos…etc. Pero también son componentes habituales de las soluciones SmartAgro. Incluso, para cultivos que crecen bajo tierra, como patatas, también mandioca, zanahorias, rábanos o cualquier tubérculo o raíz comestible de interés económico. En el post de hoy vamos a hablar de una de ellas en particular. El problema Los tubérculos son uno de los alimentos más nutritivos, económicos y versátiles de la naturaleza. De hecho, la patata, un alimento básico en todo el mundo, ocupa el cuarto lugar en la producción mundial de alimentos, después del maíz, el arroz y el trigo. Este tipo de cultivos tiene un problema. Al crecer bajo tierra, es habitual que enfermedades o deficiencias que afectan a su crecimiento, pasen desapercibidas al agricultor. En ocasiones, plantas enfermas en la raíz, tienen un aspecto exterior verde y sano. Esto plantea serias dificultades a los fitomejoradores, que investigan el desarrollo de los cultivos para poder determinar qué variedades ofrecen un mayor rendimiento, son más apropiadas para un determinado clima, o se adaptan mejor a la sequía o a los cambios de temperatura. Uno de los grandes misterios para los fitomejoradores es si lo que ocurre en la superficie es lo mismo que lo que ocurre en la parte inferior Michael Selvaraj, coautor de Alliance of Bioversity International y del CIAT Para saber qué está sucediendo bajo tierra, y si el cultivo está sano, son necesarios muchos ensayos para recopilar datos sobre el dosel de las plantas, su altura y otras características físicas, lo cual resulta muy costoso en tiempo y recursos. Una solución: drones+aprendizaje automático Un estudio publicado recientemente en la revista Plant Methods plantea el análisis de imágenes de alta resolución tomadas por drones, mediante técnicas de aprendizaje automático que permiten construir modelos para predecir, sobre el terreno y en tiempo real, cómo reacciona las plantas frente a distintos estímulos. En lugar de esperar hasta la temporada de cosecha, se recogen datos sobre la cubierta vegetal e índices de vegetación en distintos momentos del ciclo de crecimiento, a partir de las imágenes multiespectrales tomadas por los drones. El procesamiento de estas series temporales mediante técnicas de aprendizaje automático permite extraer modelos de predicción del crecimiento de las raíces a partir de las imágenes. Ubicación del trabajo de campo y plataforma de teledetección. a) Las pruebas uno y dos se llevaron a cabo en (CIAT). b)Dron, DJI S1000s. c) Cámara multiespectral, Micasense RedEdge 3. d) Arduino nano. e) Punto de control terrestre (GCP). f) GCP instalado en la prueba uno. g) RTK-GPS ( Ampliar Imagen) Para acelerar el procesamiento de imágenes, se desarrolló la plataforma de análisis automático de imágenes CIAT Pheno-i. A partir de datos tomados sobre el terreno y los índices de vegetación obtenidos por un sensor multiespectral se construyeron modelos de regresión lineal múltiple en las distintas etapas clave del crecimiento de la mandioca. Posteriormente, los índices espectrales/características se combinaron para desarrollar modelos de predicción del crecimiento de la raíz de mandioca usando diferentes técnicas de aprendizaje automático. Entre ellas, los modelos que mostraron mejor rendimiento fueron los basados en los algoritmos k-neighbours, bosque aletorio y máquina de vectores de soporte. Ya son muchos los estudios que demuestran cómo las tecnologías avanzadas de teleobservación, combinadas con métodos de aprendizaje automático, permiten predecir de forma precisa datos valiosos sobre distintos tipos de cultivos. Esta técnica aplicada al cultivo de la yuca puede aplicarse también a otros cultivos de tubérculos para acelerar el trabajo de fenotipado digital llevado a cabo por el CIAT (Centro Internacional de Agricultura Tropical, Cali). Gracias a esta tecnología, los fitomejoradores pueden ahora reaccionar de forma inmediata ante la falta de agua, o de un nutriente en particular, mejorando de esta forma la eficiencia de los cultivos. Estos datos también permiten a los investigadores aconsejar a los productores sobre qué variedades resisten mejor las perturbaciones climáticas, para que cultiven las más adecuadas en cada lugar. Referencias: Selvaraj, M.G., Valderrama, M., Guzman, D. et al. Machine learning for high-throughput field phenotyping and image processing provides insight into the association of above and below-ground traits in cassava (Manihot esculenta Crantz). Plant Methods 16, 87 (2020). Para mantenerte al día con el área de Internet of Things de Telefónica visita nuestra página web o síguenos en Twitter, LinkedIn y YouTube.
10 de diciembre de 2020
Conectividad e IoT
Iot4All:¿Cómo se conectan y comunican los dispositivos?
En el primer post de "IoT4all" exploramos distintas definiciones de Internet de las Cosas y el el motivo por el cuál no existe una que podamos considerar como definición canónica. Hoy vamos a hablar de cómo se conectan y comunican los dispositivos IoT, para lo que sí existe un marco perfectamente definido, la RFC7452. En marzo de 2015, el Comité de Arquitectura de Internet (IAB) publicó esta directiva que describe los cuatro modelos de comunicación que vamos a explicar a continuación. https://empresas.blogthinkbig.com/?p=126528 1 Dispositivo a dispositivo, el más común en el hogar En este modelo, los dispositivos se comunican directamente entre sí, sin necesidad de tener un servidor de aplicaciones intermedio. Esta comunicación puede tener lugar sobre redes IP (Internet), u otro tipo de redes. Muchas veces se utilizan otros protocolos como Bluetooth, Z-Wave o ZigBee. Este modelo se usa habitualmente en sistemas IoT residenciales como, por ejemplo, bombillas, interruptores, termostatos, cerraduras etc. Estos sistemas envían pequeñas cantidades de información en forma de mensaje de bloqueo de una puerta, o de comando para encender una luz, por lo que sus requisitos en cuanto a tasa de transmisión, son bajos. Un inconveniente de este modelo es que algunos fabricantes desarrollan mecanismos de seguridad o de confianza propios que integran en los dispositivos, o bien, utilizan modelos de datos específicos. Esta falta de estandarización, puede limitar la capacidad de elección de los usuarios. Si quieren que un nuevo dispositivo se comunique con los que tiene ya instalados, éste debe ser de la misma familia. Por tanto, el usuario se ve "atado" al fabricante de los dispositivos que escogió en primer lugar. Figura 1: Modelo de comunicación dispositivo a dispositivo (Ampliar) 2 Dispositivo conectado a la nube, como en tu Smart-TV En este segundo modelo, el dispositivo se conecta directamente a un servicio en la nube, usando conexiones Wi-Fi o red ethernet (los mecanismos de comunicación de que se disponga) para conectarse a la red IP. Este modelo, aporta más valor al usuario, ya que amplía las capacidades del dispositivo más allá de sus características nativas. Por ejemplo, un termostato inteligente conectado a la nube puede ser controlado de forma remota, a través de un teléfono móvil o una interfaz web. También puede recibir actualizaciones remotas de software. Y, otro aspecto muy interesante para el usuario: la base de datos en la nube que almacena los datos transmitidos por el termostato, ofrece analíticas de consumo que permiten mejorar su eficiencia. Por tanto, un termostato inteligente nos permite ahorrar energía y abaratar así la factura. Otro ejemplo muy conocido son las SmartTV, que utilizan la conexión a Internet para poder hacer cosas como activar el reconocimiento de voz de la televisión. Como siempre, la integración de dispositivos de distintos fabricantes puede crear problemas de interoperabilidad. Por ejemplo, cuando se utilizan protocolos de datos propietarios en la comunicación entre el dispositivo y el servicio en la nube, el usuario puede quedar "atado" a ese proveedor (vendor lock-in). Este hecho no sólo afecta a la capacidad de elección del usuario a la hora de conectar nuevos dispositivos, sino también, a cuestiones relacionadas con la propiedad o el acceso a los datos. Figura 2: Modelo de comunicación dispositivo a la nube (Ampliar) 3 Dispositivo a puerta de enlace, como en los wearables para deportes En este tercer modelo de comunicación, los dispositivos se conectan a la nube a través de otro dispositivo que hace de puerta de enlace o intermediario. Éste último puede ser un smartphone o un dispositivo tipo hub, en el que un software de aplicación provee de funcionalidades de seguridad o traducción de protocolos o datos. Un ejemplo de dispositivos que utilizan este modo de conexión son los dispositivos vestibles (o wearables) que se utilizan para hacer deporte. Estos dispositivos no suelen tener capacidad nativa para conectarse a Internet. Como puerta de enlace local, utilizan un teléfono inteligente con una aplicación que facilita la comunicación y transmisión de datos entre el dispositivo y un servicio en la nube. De esta forma, por ejemplo, puedes registrar y controlar tus entrenamientos, compartirlos con quien tu quieras o colaborar con una causa solidaria, convirtiendo tus pasos en donaciones. Este modelo permite reducir los problemas de interoperabilidad entre dispositivos, ya que un mismo hub puede tener instalados transceptores de distintas familias de dispositivos. También, permite conectar objetos que no utilizan el protocolo IP, y por tanto no pueden conectarse directamente a Internet. O integrar nuevos dispositivos que sólo soportan IPv6, con dispositivos y servicios antiguos que utilizan la versión anterior IPv4. Sin embargo, este modelo también tiene su contrapartida. La principal es el mayor coste y complejidad asociados al desarrollo del software y el sistema para la puerta de enlace de capa de aplicación. No obstante, si se consigue que en el diseño de nuevos dispositivos IoT se utilicen protocolos genéricos, en el futuro se desplegarán más puertas de enlace genéricas, con una estructura más sencilla y un menor costo, que facilitará la interconexión entre dispositivos. Figura 3: Modelo de comunicación dispositivo a puerta de enlace (Ampliar) 4 Dispositivo conectado a través de back-end Este cuarto modelo es una extensión del modelo 2, comunicación de un dispositivo único a la nube, permitiendo que los usuarios exporten y analicen datos de objetos inteligentes de un servicio en la nube en combinación con datos de otras fuentes. Esta estrategia permite romper los silos de datos que se generan en el modelo "dispositivo conectado a proveedor de servicios de internet único". Figura 4: Modelo de intercambio de datos a través de un back end (Ampliar) Una arquitectura de intercambio de datos a través del back-end permite , acceder y analizar fácilmente en la nube a los datos producidos por toda la gama de dispositivos desplegados en un edificio. Por otra parte, este tipo de arquitectura facilita la portabilidad de los datos, permitiendo a los usuarios mover sus datos al cambiar de servicio IoT. Conclusión Además de por ciertas consideraciones técnicas, el uso de uno u otro modelo tendrá mucho que ver con la naturaleza abierta o propietaria de los dispositivos IoT que se conecten en la red. Lo que está claro, es que las interoperabilidad entre dispositivos y el uso de estándares abiertos son aspectos clave en el diseño de sistemas de la Internet de las Cosas. Por otra parte, los modelos que permiten la aplicación de analíticas machine learning a los datos de dispositivos almacenados en la nube, generan mucho valor para el usuario final, ya que le permiten hacer uso de nuevas formas de usar la información. No obstante, no hay que olvidar el coste que puede tener el conectar los dispositivos a la nube en regiones donde los costes de conectividad son elevados. Estos nuevos flujos de datos se pueden aprovechar para diseñar nuevos productos y servicios que actúen como auténticos catalizadores de la innovación. Referencias: La Internet de las Cosas— Una breve reseña (ISOC) https://www.iotcentral.io/blog/the-iot-architecture-at-the-edge Para mantenerte al día con el área de Internet of Things de Telefónica visita nuestra página web o síguenos en Twitter, LinkedIn y YouTube.
3 de diciembre de 2020
AI & Data
El COVID19 como catalizador de la digitalización
Según una encuesta llevada a cabo por McKinsey entre ejecutivos de todo el mundo, la digitalización de sus interacciones con los clientes, cadena de suministro y operaciones internas se ha acelerado 3 o 4 años debido al COVID19. La proporción de productos digitales o habilitados digitalmente en sus portfolios se ha acelerado aún más, estimándose en unos impactantes siete años. Desafíos planteados por el COVID19. La pandemia del COVID19 nos ha dejado desafíos para todos los gustos. Médicos, productivos, educativos, éticos, sociales… etc. Pero uno de los primeros en hacerse patente fue el que enfrentan las cadenas de suministro. ¿Cómo mantener los lineales llenos y los negocios abiertos? En los años 80 y 90 hubo una clara apuesta por la globalización. La Unión Europea, la Asociación de Naciones del Asia Sudoriental, la Organización Mundial de Comercio, el Tratado de Libre Comercio de América del Norte y otras entidades reorganizaron el orden económico mundial creando nuevas cadenas de valor. Sin embargo, incluso antes de la pandemia, ya estaba en marcha un proceso de “desglobalización” que comenzó cuando las empresas se dieron cuenta de la importancia de disponer de cadenas de suministro más cortas y robustas. Por ello, se propusieron acelerar su transición a mercados de producción y distribución más locales. Al mismo tiempo, elaboraban estrategias para llevar sus productos al mercado mundial utilizando la tecnología IoT para compensar los costes localizados con una mayor visibilidad y eficiencia en esas nuevas cadenas de suministro. Tecnología para adaptarse a los cambios. La tecnología también es la clave para que las empresas sean capaces de adaptarse a cambios rápidos en las necesidades de los clientes, que la pandemia no ha hecho sino poner de relieve. A medida que más compañías desarrollen estrategias de transformación digital y desplieguen IoT, veremos evolucionar los casos de uso para la IA, 5G y el Edge Computing. CLOUD AI OF THINGS Edge Computing y Machine Learning, una alianza estratégica 7 de julio de 2022 Por ejemplo, la Inteligencia Artificial se está usando en la búsqueda de vacunas contra el virus, o en los servicios de telesalud, donde el 5G facilita conexiones más rápidas para reuniones o consultas médicas virtuales. Son solo un par de ejemplos de que las nuevas tecnologías basadas en BigData, Inteligencia Artificial, tecnologías Cloud e IoT nos pueden ofrecer. AI OF THINGS Videoatención médica gracias a IoT 6 de febrero de 2019 Conclusión. En resumen, el COVID19 es el motivo por el cual, se han redoblado los esfuerzos y la inversión en aprovechar las ventajas que la tecnología aporta para lograr una mayor resiliencia y capacidad de adaptación a un mercado cambiante. Para mantenerte al día con el área de Internet of Things de Telefónica visita nuestra página web o síguenos en Twitter, LinkedIn y YouTube
1 de diciembre de 2020
Conectividad e IoT
Monitorización inteligente de grandes infraestructuras de Obras Públicas con sensores IoT
¿Sabías que los sensores IoT pueden ser importantes aliados para garantizar la seguridad de grandes infraestructuras como: puentes, presas, oleoductos, turbinas eólicas, etcétera?. En este post, te explicamos cómo. En agosto de 2018, 43 personas fallecieron por el colapso del puente Morandi, en Génova. Ese mismo año, en España, el Ministerio de Fomento reconocía la existencia de 66 puentes con graves problemas de seguridad. La causa más probable de esta situación es que, durante los peores años de la crisis, de 2009 a 2014 — no se destinó un solo euro a proyectos de mantenimiento. Por fortuna, no hubo que lamentar ningún accidente fatal como el sucedido en Génova. Pero sí que se dispararon las actuaciones de emergencia. Figura 1: Puente Morandi, en rojo, la sección que colapsó (Autor: Phoenix7777 ) El problema Cada cierto tiempo, expertos supervisan estas grandes estructuras sobre el terreno. El problema está en que muchas patologías no se detectan hasta que no aparecen signos externos del deterioro, pudiendo ser los daños ya graves. Otro problema habitual consiste en minusvalorar la importancia de estas revisiones (y las actuaciones de mantenimiento derivadas de ellas) en situaciones de crisis económica, como la mencionada anteriormente. Los avances en tecnologías IoT permiten garantizar la seguridad de estas infraestructuras de forma más eficiente, económica y sostenible. Veamos cómo. ¿Cómo medir la salud de una infraestructura? Las grandes infraestructuras de hormigón que se usan en obras publicas suelen estar sometidas a condiciones extremas de temperatura, humedad. En ocasiones, se hayan en ambientes químicamente agresivos o con presencia de fuertes campos electromagnéticos. Para estimar si están en buen estado, hay que controlar cinco parámetros esenciales: temperatura, humedad, índice de corrosión, PH y fracturas por esfuerzos. En el pasado, técnicos especializados realizaban las lecturas de estos parámetros de forma manual, aproximando los lectores a los puntos donde habían sido ubicados los sensores. Hoy día, las nuevas generaciones de sensores permiten enviar estas lecturas través de las redes NB-IoT. Estas redes permiten transmitir pequeños volúmenes de datos, con un consumo muy bajo de energía. Este bajo consumo de baterías es un aspecto clave para que la vida útil de estos sensores incrustados en la estructura de hormigón sea lo suficientemente larga. La conexión de los sensores a Iot no sólo va a permitir lo monitorización remota en tiempo real. También va a permitir crear modelos estructurales aplicando tecnologías de inteligencia artificial. Los datos recogidos por los sensores IoT se combinan con otras fuentes de información como pueden ser: datos meteorológicos, datos sobre las cargas , daños, o posibles deficiencias detectadas en la construcción original. Como ocurre con cualquier modelo de aprendizaje automático, estos modelos de corrosión y salud estructural se van haciendo mejores, cuanto mayor es el conjunto de datos con el que se entrenan. De esta forma, se puede llevar a cabo una detección precoz de anomalías, reduciéndose de forma drástica los costes de mantenimiento. También, por supuesto, permite alargar la vida útil de la estructura, mejorando su seguridad y sostenibilidad. Tipos de sensores Hay muchos tipos de sensores. La elección de cuál es el más adecuado para cada situación dependerá del tipo de datos que se quiere registrar, las condiciones físicas de la infraestructura, la vida útil del sensor, sus necesidades de calibración y mantenimiento etc Veamos algunos ejemplos de los sensores que se usan en este ámbito. Piezoeléctricos, que pueden detectar la compresión, tracción y agrietamiento. Electroquímicos, pueden detectar, por ejemplo, iones de cloruro en las armaduras de acero de las estructuras de hormigón. De esta forma, es posible detectar indicios de corrosión en el interior de la estructura cuando aún no se perciben desde el exterior. De temperatura, muy importantes para controlar que proceso de fraguado del hormigón se realice de forma adecuada. También para medir el impacto de condiciones meteorológicas y climáticas sobre la salud de la estructura. De humedad, para detectar agua que puede causar corrosión, carbonatación y otros daños, como las grietas producidas por ciclos de congelación-descongelación. De acidez, para detectar variaciones del PH. Si la acidez es excesiva, se pueden generar alertas que permitan detectar incipientes procesos de corrosión o carbonatación. De fibra óptica, que, al ser químicamente inertes, y resistentes a altas temperaturas y campos electromagnéticos, permiten la monitorización en ambientes peligrosos, por riesgo de explosión, uso de materiales corrosivos/inflamables etc, Miden deformaciones en la estructura causadas por diferentes motivos. Etc Un ejemplo concreto, los sensores de fibra óptica La fibra óptica es ideal para medir la deformación de los materiales de construcción con el paso del tiempo. Las variaciones en variables externas como temperatura, presión, o desplazamientos producen deformaciones en los materiales. También deforman la propia fibra, afectando a cómo transmite la luz, lo que resulta muy sencillo de medir. Para ello, se utilizan instrumentos específicos situados en los extremos del cable. Esto permite realizar una monitorización remota. Ya no es preciso desplazarse, ni hay que preocuparse por la duración de las baterías de los sensores. El propio cable de fibra óptica cable se convierte en un sensor en toda su extensión, permitiendo establecer distintos puntos de medida con un único cable. Así, “un sensor distribuido de fibra óptica tiene la ventaja de transformar un cable como el que lleva el internet a las casas en un gran número de sensores”. En la actualidad estos sensores de fibra óptica se suelen utilizar para detectar posibles fugas en gaseoductos y oleoductos, con extensiones de cientos de kilómetros. También se usan para monitorizar redes de alcantarillado o parques de turbinas eólicas marinas. Otra de las ventajas de este tipo de sensores es que los cables de fibra óptica que llevan internet a los hogares ya están instalados en muchas infraestructuras, como puentes y vías férreas. Este hecho facilita la incorporación de un cable adicional que permita monitorizar la propia estructura por el mismo hueco. Estructuras inteligentes En el pasado, los concursos para las grandes obras públicas solían ganarlos aquellas constructoras que presentaran el plan de construcción más económico. Hoy día, gracias a los avances tecnológicos que permiten una monitorización inteligente de éstas, el objetivo es construir infraestructuras más eficientes y con menores costes de mantenimiento. Así, además de encontrar dispositivos IoT en nuestros hogares, industrias, vehículos, incluso sobre nosotros mismos, podemos encontrarlos en puentes, presas, oleoductos, y grandes infraestructuras de obras públicas de nuestro entorno. Para mantenerte al día con el área de Internet of Things de Telefónica visita nuestra página web o síguenos en Twitter, LinkedIn y YouTube.
26 de noviembre de 2020
Conectividad e IoT
IoT4All: ¿Por qué hay tantas definiciones de Internet de las Cosas?
Comenzamos una nueva serie, “IoT4All”, en la que iremos desgranando poco a poco los conceptos básicos de Internet de las Cosas para hacerlas accesibles a todo aquel que quiera introducirse en este mundo, apasionante, sí, pero para qué negarlo, también complejo. En este primer post definiremos el concepto de Internet de las Cosas, IoT, y nos encontraremos con la primera sorpresa: No existe una definición única de IoT Distintas definiciones Que los ciudadanos de a pie no tengamos una definición clara sobre lo que es IoT, es normal. Lo que puede resultar extraño, es que organizaciones, empresas, fabricantes, etc no compartan una definición única sobre lo que es Internet de las Cosas. Veamos algunos ejemplos: IBSG de Cisco: Según el Grupo de Soluciones Empresariales para Internet (IBSG) de Cisco, el IoT es simplemente el momento en el que hay más "cosas u objetos" que personas conectados a Internet. A partir de datos como el número de dispositivos conectados según el Forrester Research, y datos de la población mundial de la Oficina del Censo de EE. UU el IBSG de Cisco estima que el IoT "nació" en algún momento entre 2008 y 2009 IBM: Para IBM, Internet de las cosas se define como "el concepto de conectar cualquier dispositivo u objeto físico a Internet y a otros dispositivos conectados". IBM también se refiere a la “creciente gama de dispositivos conectados a Internet que capturan o generan una enorme cantidad de información cada día". International Data Corporation: IDC define la Internet de las Cosas como "una red de redes de puntos finales identificables que se comunican sin interacción humana usando conectividad IP (local o global)" Gartner: Para Gartner "la IoT es la red de objetos físicos que contienen tecnología para comunicarse y sentir o interactuar con sus estados internos o el ambiente externo" Telefónica: Para nosotros, IoT es un universo de dispositivos u objetos físicos conectados e internet o a otros dispositivos, que interactúan con su entorno. La aplicación de tecnologías Big Data e Inteligencia artificial transforma estos datos en información de gran valor para las empresas, que se puede traducir en mejoras en la productividad, ahorros de costes y nuevas oportunidades/modelos de negocio. ¿Qué tienen en común todas estas definiciones? Si nos paramos a analizarlas, podemos ver que no se contradicen entre sí. Más bien, ponen el foco en distintos aspectos o casos de uso. Así, esta dificultad de llegar a una definición común se debe al hecho de que la IoT representa la convergencia, en los últimos años, de distintas tendencias y avances tecnológicos, tanto en el ámbito de la computación, como en el de la conectividad. Tecnologías convergentes La conectividad generalizada, que convierte a casi cualquier cosa, en un “objeto conectable”, con velocidades de conexión altas a costes asequibles. La adopción generalizada de redes basadas en el protocolo IP. Al haberse convertido en un estándar dominante, resulta muy sencillo y económico conectar todo tipo de dispositivos a internet. No obstante, no es la única opción, ya que todavía perviven muchas de las primeras soluciones corporativas e industriales M2M (Machine to machine communication), basadas en redes dedicadas y estándares propietarios o específicos de una industria. Los avances en miniaturización. Objetos pequeños y de bajo costo pueden incorporar tecnología de cálculo y comunicaciones, impulsando gran cantidad de aplicaciones de la IoT El abaratamiento de la capacidad de cálculo. Según lo predicho por la ley de Moore, cada vez disponemos de velocidades de procesamiento mayores, a precios más bajos y con un menor consumo de energía. La computación en la nube. Permiten a los dispositivos distribuidos interactuar con potentes servidores remotos que ofrecen capacidades analíticas y de gestión. Claves comunes Por tanto, cuando intentamos definir qué es Internet de las Cosas, tenemos que hablar de: dispositivos u objetos conectados (“las cosas”), de conectividad (protocolos, redes), de volúmenes variables de datos (recogidos del entorno, enviados, recibidos) de plataformas de servicios IOT , donde se toman las primeras decisiones y acciones, y de inteligencia (analíticas de datos, machine learning). Todo ello configurado como un ecosistema muy heterogéneo, dinámico, de enorme escala, donde además la privacidad y la seguridad deben de estar garantizadas en todo momento extremo a extremo. ¿Dónde está el foco? Así, según queramos poner más foco en uno u otro de los 4 pilares fundamentales de Internet de las cosas: Cosas con sensores y capacidad de relación Interconexión para la interacción Soluciones para la mejora de procesos Explotación de los datos , llegaremos a definiciones ligeramente distintas. Pero todas ellas son igualmente válidas, porque lo importante no es cómo lo definamos, sino adónde nos lleva: el camino IoT. En el siguiente post de “IoT4All” seguiremos avanzando en nuestro conocimiento sobre Internet de las Cosas, hablando de los distintos modelos de conectividad. AI OF THINGS Iot4All:¿Cómo se conectan y comunican los dispositivos? 3 de diciembre de 2020 Para mantenerte al día con el área de Internet of Things de Telefónica visita nuestra página web o síguenos en Twitter, LinkedIn y YouTube.
24 de noviembre de 2020
AI & Data
Sesgos cognitivos en los datos (IV): Disponibilidad
Terminamos nuestra serie sobre sesgos cognitivos en los datos con un sesgo bien conocido por todos, el sesgo de disponibilidad. El sesgo de Disponibilidad ¿Te has planteado alguna vez cuál es el animal más peligroso para el ser humano? Seguramente tu mente no va a repasar uno a uno todos los animales que conozcas y su posible peligrosidad, sino que “tomará un atajo”. Sutilmente, cambiarás la pregunta. Ya no será ¿Qué animales peligrosos existen?, sino ¿Qué animales peligrosos recuerdo/conozco? Entonces, vendrán a tu cabeza películas como “Tiburón”, “Piraña”, “Anaconda”; la noticia que leíste sobre unos montañeros atacados por un oso pardo, o el documental que viste sobre los cocodrilos marinos australianos. Este sutil cambio en la pregunta, nos conduce a una respuesta sesgada y, muchas veces errónea. Como lo son las respuestas más comunes, las primeras que nos vienen a la cabeza: tiburón, cocodrilo, serpiente, araña etc. Los animales más letales del mundo son… los mosquitos. (Sí, incluso las muertes por “selfies temerarios” ya superan las producidas por un ataque de tiburón). Figura1: Los animales más letales para el hombre (fuente) Nuevamente hemos sido víctimas de un sesgo cognitivo: el sesgo de disponibilidad. El sesgo de disponibilidad consiste en basar nuestras decisiones en información que ya tenemos, o escuchamos a menudo sin buscar alternativas que puedan ser útiles. En resumen, decidir basándonos en lo primero que nos viene a la cabeza. Como resultado, nos limitamos a un subconjunto muy específico de información, descartando otras fuentes de datos que potencialmente podrían mejorar nuestra respuesta. Un poco más en detalle Cuando estimamos la probabilidad de ocurrencia de determinados acontecimientos basándonos en la mayor o menor facilidad con que podemos construir ejemplos de ese acontecimiento, estamos empleando la heurística de disponibilidad. Esta heurística generalmente está asociada a nuestra perspectiva y experiencia personal, por lo que claramente, está limitada por factores subjetivos. Por tanto nos conduce a un sesgo en la evaluación o interpretación de la probabilidad de ocurrencia de un evento. Por ejemplo, si la primera vez que vamos a un restaurante no nos atienden bien, podemos pensar que es un establecimiento malo. Sin embargo, si siempre nos han atendido bien, y un día recibimos un mal servicio, no pensaremos lo mismo. Otros ejemplos Encontramos otro ejemplo muy claro en la publicidad. De hecho, el sesgo de disponibilidad es uno de los principales motivos por los que la publicidad funciona. Al tomar una decisión de compra en el día a día, no nos preguntamos ¿Cuál es el mejor producto/servicio para mí?, sino ¿Cuál es el mejor producto/servicio que conozco? Los consumidores cada vez disponemos de menos tiempo para este proceso de búsqueda y análisis, por lo que muchas veces nos descantamos por la “marca conocida”. Otro ejemplo. ¿Por qué compramos lotería, cuando en el fondo sabemos que es casi imposible que nos toque? Muy sencillo, porque recordamos las imágenes en prensa, televisión y redes de los felices (y escasos) ganadores, pero no tenemos en consideración la inmensa mayoría de personas que juegan, y no ganan. En este vídeo de de CogSai podemos encontrar más ejemplos de este sesgo explicados de forma sencilla. ¿Cómo evitarlo? En Ciencia de Datos, el sesgo de disponibilidad surge cuando los científicos de datos crean modelos basándose únicamente en los datos más recientes, o en aquellos a los que pueden acceder con mayor facilidad. Al dar mayor relevancia a un conjunto limitado de datos, los resultados obtenidos tendrán también un alcance/efectividad limitados. Para superar este sesgo es muy importante establecer altos estándares de pensamiento crítico: cuestionar con rigor, amplitud y profundidad las fuentes de información y los conjuntos de datos que usaremos para entrenar nuestros modelos. Podemos resumirlo en dos reglas muy sencillas: Buscar datos relevantes: tratar de encontrar múltiples fuentes acreditadas, considerar las estimaciones de incertidumbre, y explorar los datos nosotros mismos cuando estén disponibles. Actúa como "abogado del diablo", no te conformes sólo con las pruebas que confirman tus creencias, probablemente te aporte información interesante buscar aquellas que las rebatirían. En definitiva, pensamiento crítico, apertura de miras, y no basar nuestras decisiones/modelos en conjuntos de datos poco fiables, o limitados. Post de la serie “Sesgos cognitivos en los datos” Sesgos cognitivos en los datos (I): El sesgo de supervivencia Sesgos cognitivos en los datos (II): Confirmación Sesgos cognitivos en los datos (III): Coste hundido Sesgos cognitivos en los datos (IV): Disponibilidad Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
10 de noviembre de 2020
Cloud
Conectividad e IoT
Digital Twins, Machine Learning e IoT
En este post, vamos a contar qué son los Digital Twins, qué papel juegan en la Industria 4.0, y su relación con el Machine Learning, IoT y, por ende, el concepto de “hiperautomatización”. La creación de gemelos digitales o “digital twins” es un recurrente en los informes de tendencias tecnológicas más relevantes de las principales consultoras en los últimos años. (Gartner los incluye en sus “Top 10 Strategic Technology Trends” para 2017, 2018 y 2019. Y eso que, como hemos comentado antes, no son algo nuevo. (Por cierto que seguro que os preguntáis qué pasa con el informe de 2020. En el informe de 2020 no aparece explícitamente, sino integrado en el concepto de hiperautomatización) Aunque el término en sí mismo surgió en 2003, en una presentación de Michael Grieves sobre la gestión del ciclo de vida de un producto, el origen del concepto fue un par de décadas anterior. En este vídeo, vamos a contar qué son los Digital Twins, qué papel juegan en la Industria 4.0, y su relación con el Machine Learning, IoT y, por ende, el concepto de “hiperautomatización”. Figura 1: Modelo del Gemelo Digital, Grieves 2003 (fuente) Un poco de historia En los años 80, NASA fue la primera organización en crear simulaciones sobre el comportamiento de las naves o equipamientos para asegurar la viabilidad y seguridad de sus misiones de exploración espacial. De hecho, fue esta estrategia la que permitió el rescate de la misión Apolo 13, en abril de 1970. (¿Recordáis?: "Houston, tenemos un problema"). Esta tecnología consiste en realizar un “emparejamiento” entre la cápsula en el espacio, y una réplica en tierra. El control de la misión simula sobre ésta última cualquier problema que pueda surgir en la que está en el espacio para averiguar rápidamente cómo corregirlo. Lanzamiento Apolo13 en abril de 1970 Rescate de la tripulación en el mar Figura 2: Imágenes de la misión de la NASA Apolo13 ¿Qué es un Gemelo Digital o “Digital Twin”? Un gemelo digital no es más que una réplica virtual de un proceso, producto o servicio que simula el comportamiento de su homólogo físico. La monitorización del gemelo virtual permite adelantarse a posibles problemas que puedan surgir, probar, sin correr riesgos distintas soluciones (“las pruebas, con gaseosa” ;) y mejorar de esta forma su rendimiento y eficacia. ¿Para qué se utilizan? Este poder probar sin correr riesgos, el poder hacer prácticamente todo lo que queramos en un entorno virtual, y saber cómo se comportará al llevarlo al entorno real, ha convertido a los gemelos digitales en una de las claves de la transformación de los procesos industriales. De hecho, se han incorporado con pleno derecho a la estrategia de empresas dedicadas a la innovación y diseño de productos de la industria 4.0. Figura 3: Ejemplo de gemelo digital : turbina La traslación del mundo físico al virtual gracias a los gemelos digitales hace posible disponer de gran cantidad de información sobre los sistemas de producción. Saber sacarle partido a esta información, se traduce en encontrar nuevas formas de reducir costes, monitorizar activos, optimizar el mantenimiento, reducir el tiempo de inactividad etc... En definitiva, mejorar la eficiencia operativa. ¿Cómo funcionan? El funcionamiento de los gemelos digitales se basa en la confluencia de distintas tecnologías que nos resultan bien conocidas: Tecnologías IoT: sensores y herramientas que recopilan información en tiempo real sobre los procesos, productos o servicios Sistemas cloud: los componentes físicos deben estar conectados a un sistema basado en la nube, que recibe y procesa la información, comparándola con los parámetros adecuados al contexto. Herramientas de Inteligencia Artificial: los gemelos digitales "aprenden" continuamente, gracias al uso de algoritmos de machine learning y software de análisis de datos. También aprende del pasado, mejorando el modelo digital con datos "históricos". Las réplicas virtuales ofrecen un feedback inmediato de la actividad, gracias al cual es posible aplicar las correcciones que sean precisas en un tiempo récord. Por este motivo, los gemelos digitales son especialmente útiles para el mantenimiento de máquinas y equipos conectados que generan y analizan grandes volúmenes de datos. AI OF THINGS Movistar Car: convierte tu vehículo en un coche conectado 22 de enero de 2019 Algunos ejemplos de aplicación de gemelos digitales No hace falta irse a la NASA para encontrar ejemplos de aplicación de los gemelos digitales. Uno de los más cercanos es el coche conectado. Hoy día, muchas personas disponen de vehículos conectados a la nube (sistemas cloud), donde se crea una simulación digital del vehículo, con información útil como el consumo de combustible, el kilometraje, los registros de sustitución de piezas y la ubicación. Este último dato, la ubicación, es uno de los retos que debe superar el desarrollo de los gemelos digitales, especialmente en interiores. Esto ha llevado a una intensa investigación en el desarrollo de aplicaciones de robótica para almacenes basadas en tecnologías de microlocalización. Por ejemplo, Siemens, ya se están preparando para convertir sus plantas industriales en fábricas de datos con su gemelo digital, y afirman ser capaces de crear la mayoría de los productos en el mundo virtual. El siguiente paso consistirá en transferir esa información, en tiempo real, a las instalaciones de producción, donde los operadores humanos, asistidos por robots semiautónomos, convertirán esos datos en objetos físicos. Por tanto, estas nuevas plantas de producción funcionarán como un Internet de las Cosas autoorganizado y basado en la inteligencia artificial. También han aplicado esta tecnología fabricantes tan conocidos como Airbus, para fabricar su A-320, General Electric, para monitorizar virtualmente la cadena de suministro, McLaren para optimizar su Formula 1 para la competición y Masseratti para el diseño de sus nuevos modelos. Un ejemplo propio: Torre Outlet Zaragoza La Torre Outlet Zaragoza, cuyo "encendido digital" tuvo lugar el pasado 22 de septiembre, se ha convertido en el primer centro comercial a nivel mundial con un gemelo digital 3D. La recreación virtual del mismo desarrollada por Imascono, estudio aragonés especializado en realidad extendida permite, entre otras cosas, pasear por el centro, descubrir sus tiendas y, en un futuro, realizar compras (e-commerce 3D) así como reunirse con amigos y conocer a nuevas personas (red social 3D). Figura 4: Torre Outlet Zaragoza Hiperautomatización Las empresas que emprenden el camino de la hiperautomatización, combinan herramientas de automatización de procesos robóticos, software de gestión empresarial e Inteligencia Artificial, con el objeto de basar las decisiones de negocio en insights de datos. Esto se traduce, en muchas ocasiones, en la creaciñon de un gemelo digital de la organización (DTO) que permite visualizar cómo interactúan las funciones, los procesos y los indicadores clave de rendimiento para impulsar el valor. Disponer de información continua y en tiempo real es clave para impulsar importantes oportunidades de negocio. Conclusión Los gemelos digitales no son más que réplicas virtuales de objetos reales, como pueden ser la turbina de un avión, la fachada de un edificio, o un robot en una planta de producción. Estos objetos disponen de sensores IoT que captan datos en tiempo real y los envían a sistemas cloud. Allí, son procesados por algoritmos de machine learning que permiten tomar las mejores decisiones a partir de los insights obtenidos. En resumen, esta combinación de tecnologías de IA, Big Data, Iot y Cloud es clave para el desarrollo de la industria 4.0. Si eres de los que prefieren ver a leer, puedes encontrar el mismo contenido en este video-post: AI OF THINGS Video Post #21: Gemelos digitales o Digital Twins 17 de septiembre de 2020
13 de octubre de 2020
AI & Data
Robots, mayores y dependencia
¿Puede un robot ayudar a mejorar la autonomía de las personas dependientes y los mayores? Aunque la ecuación mayores - robótica puede plantear dudas a primera vista, vamos a conocer un interesante proyecto del Grupo de Sistemas Inteligentes (GSI) de la Universidad de Alcalá (GSI-UAH) que nos puede hacer cambiar de opinión. Los cuidados facilitados por otras personas (familiares o profesionales) son fundamentales para nuestro bienestar físico y emocional, especialmente en etapas de mayor dependencia o vulnerabilidad. Sin embargo, este hecho no debe impedir que los cuidadores utilicen aquellas soluciones tecnológicas que les puedan facilitar su labor. Soluciones como el proyecto LARES, donde GSI-UAH propone una aplicación de tele-asistencia y tele-medicina basada en sus investigaciones en inteligencia artificial y robótica, financiadas por la Agencia Espacial Europea, la Junta de Comunidades de Castilla-La Mancha y la Iniciativa de Empleo Juvenil del Fondo Social Europeo. ¿Qué es LARES? LARES es un sistema de tele-asistencia que combina robótica, sensores e inteligencia artificial para la detección inteligente de emergencias en el hogar, mejorando así la autonomía de las personas dependientes y mayores. ¿Cómo funciona? Está compuesto por tres componentes principales: un pequeño robot autónomo, una red de sensores distribuidos por el hogar y una plataforma web. La figura 1 muestra los componentes de LARES. Los sensores permiten monitorizar de forma no intrusiva al paciente, recogiendo datos sobre la temperatura, humedad, luminosidad o presencia de personas en una habitación. La información recogida es procesada en la plataforma web mediante algoritmos de aprendizaje automático. Estos algoritmos permiten aprender cuáles son los patrones de comportamiento habitual de la persona, y generar informes médicos o alertas cuando se detecten anomalías que pueden deberse a una situación de emergencia. Cuando salta una alerta, el robot se desplaza de forma autónoma a la habitación donde está la persona y establece una conexión bidireccional de audio y vídeo con los servicios de tele-asistencia a través de internet. Con esta información en tiempo real, los profesionales de tele-asistencia pueden movilizar los recursos necesarios de forma mucho más eficaz, minimizando así los tiempos de respuesta y la carga de estrés de los familiares. Al mismo tiempo, las personas dependientes se sienten más autónomas, sin tener que sacrificar por ello su seguridad. Aunque el robot puede funcionar de forma autónoma, también puede ser controlado por los cuidadores de forma remota desde la propia plataforma web. Figura 1: Esquema de funcionamiento del sistema LARES. (con permiso del autor) ¿Qué ventajas tiene respecto a otros sistemas de teleasistencia? Los sistemas tradicionales de tele-asistencia se basan en dispositivos telefónicos con altavoz que la persona dependiente lleva a modo de collar y que le permiten contactar con los servicios de emergencia en caso de necesidad. El principal inconvenientes de estos sistemas es que se trata de sistemas activos. En caso de emergencia, es la propia persona dependiente la que debe solicitar ayuda pulsando el botón del dispositivo. Esto no es tan sencillo cuando pensamos en personas que puedan sufrir deterioros cognitivos, como es el caso de los enfermos de Alzheimer. Otro handicap importante de estos sistemas es el hecho de que, para algunas personas, resulta muy penoso tener que llevar siempre encima el dispositivo de tele-asistencia, ya que lo perciben como un estigma de su situación de dependencia. El sistema LARES es un sistema pasivo. Esto significa que no es necesario que la persona, de forma activa, solicite ayuda sino que es capaz de detectar posibles situaciones "anómalas" y contactar automáticamente con los servicios de emergencia para comprobar si se trata de falsa alarma o es preciso intervenir. Aunque no resulta imprescindible para su funcionamiento, el sistema de sensores se puede completar con un discreto dispositivo en forma de reloj que resulta muy útil para detectar posibles caídas. En el siguiente vídeo se explica con más detalle cómo funciona el sistema. https://www.youtube.com/watch?v=6cSWPd1M_pA LARES Conclusión La combinación de una red de sensores, un robot autónomo y técnicas de aprendizaje automático aplicadas a una importante base de datos, puede ser de gran ayuda para detectar accidentes, y ofrecer soluciones a necesidades no cubiertas en el mercado, que se traducen en claras mejoras de la calidad de vida de las personas dependientes y sus cuidadores. El proyecto LARES sigue en activo. El grupo, dispone de un prototipo funcional que se ha desplegado ya en dos pilotos, con pacientes con perfiles muy diferenciados y trabaja en la mejora del este sistema mediante la retroalimentación de empresas de teleasistencia y usuarios reales. En la página web del proyecto está disponible toda la información. Se trata de un ejemplo más de cómo, la inteligencia artificial nos puede hacer la vida más fácil. Referencia: LARES: An AI-based teleassistance system for emergency home monitoring. Cognitive Systems Research, 56: 213-222, 2019 .
1 de octubre de 2020
AI & Data
La Inteligencia Artificial, una gran aliada para las personas sordas
Las personas sordas se comunican entre ellas mediante lengua de signos. Pero ¿Cómo pueden comunicarse con las personas que no tienen dificultades auditivas? El lenguaje escrito, y la lectura de labios han sido las únicas alternativas hasta hace muy poco. No obstante, son opciones bastante limitantes, tanto por el esfuerzo requerido, como por los resultados obtenidos. En este post veremos con la aplicación de algoritmos de inteligencia artificial a la interpretación del lenguaje de signos supone un gran avance para garantizar los derechos de las personas sordas. Las personas sordas en el mundo Según estimaciones de la OMS, 360 millones de personas sufren pérdida auditiva, 328 millones de adultos y 32 millones de niños. Estas cifras suponen más del 5% de la población mundial. Según la Convención de las Naciones Unidas sobre los Derechos de las Personas con Discapacidad, para respetar el derecho de las personas (en este caso sordas) a acceder a la información, la educación y la cultura, es preciso crear un ecosistema tecnológico que permita superar las barreras con que se encuentran estas personas. Y es con este objetivo con el que surgió el proyecto Content4All, dentro del programa marco de investigación e innovación de la Unión Europea Horizonte 2020. El objetivo de Content4All es aplicar las últimas tecnologías y avances en inteligencia artificial a la automatización de la interpretación del lenguaje de signos. Las lenguas de signos Según la Federación Mundial del Sordo, 70 millones de personas utilizan el lenguaje de señas como primer idioma o lengua materna. En otros casos, usan la lengua convencional de su país, con ayuda de audífonos o implantes cocleares. Aunque existe un Sistema de Señas Internacional (SSI), formado por señas propias, consensuadas, procedentes de las diferentes lenguas, lo habitual es que en distintos países se utilicen distintas lenguas de signos. Se diferencian tanto en léxico (señas y gestos), como en su gramática, y evolucionan con el tiempo al igual que lo hacen los lenguajes orales. En los países de habla hispana, se usa el alfabeto latino, gracias a lo cual, las personas sordas utilizan un mismo alfabeto manual, común para todos los países, con algunas variaciones en la forma de algunas letras. Pero en el caso de países de habla inglesa, existen notables diferencias. La principal es que el lenguaje de signos en Reino Unido usa un alfabeto bimanual, mientras que en Estados Unidos, utilizan sólo una mano. Inteligencia Artificial para interpretar lengua de signos Ya sabemos que la inteligencia artificial tiene un enorme potencial para la interpretación de lenguas. En este mismo blog hemos hablado de su aplicación en traducción automática de distintas lenguas (incluso lenguas muertas, o "lenguaje animal"). AI OF THINGS Traductores automáticos basados en IA: ¿Nos permitirán comunicarnos también con nuestras mascotas? 8 de octubre de 2018 Como vemos, el desafío de automatizar la interpretación de las distintas lenguas de signos, es importante, ya que no se trata sólo de interpretar la posición de las manos, sino también gestos o determinadas posiciones del cuerpo. Por ejemplo, levantar las cejas y mirar hacia abajo, significa que se está haciendo una pregunta. Por todo ello, el aprendizaje de los algoritmos se basará en una combinación de técnicas de visión artificial, machine learning y algoritmos de procesamiento de lenguaje natural (PLN) sobre estos datos de posición/movimiento de la parte superior del cuerpo, expresiones faciales y signos hechos con las manos. Y, como siempre, la clave para el éxito de la herramienta será disponer de suficientes datos con la calidad adecuada. Figura 1: Datos sobre los que se entrena el algoritmo ( fuente) Un ejemplo interesante para lengua de signos americana: SignAll Por ejemplo, la startup húngara SignAll ofrece un dispositivo en el mundo que permite la comunicación entre una persona sorda y otra oyente a través de la tecnología de traducción automática de ASL(lengua de signos americana). La persona sorda lleva un par de guantes de colores y ejecuta los signos frente a una la cámara. Los colores ayudan diferenciar los signos con mayor precisión. Otras tres cámaras capturan información adicional, como expresiones faciales y otros gestos. La persona oyente simplemente habla con normalidad y su discurso es traducido a la pantalla de la persona sorda usando un procesamiento de lenguaje natural. SignAll contó con la gran ventaja de poder entrenar sus algoritmos con una base de datos de 250.000 imágenes anotadas manualmente procedente de la Universidad Gallaudet (GU). Esta universidad fue la primera institución de educación superior para sordos y personas con problemas de audición en el mundo. Este tipo de herramientas pueden hacer de la lengua de signos americana (ASL) una segunda lengua de interés para personas sordas de otros países, de la misma forma que lo es el inglés como lenguaje oral. La iniciativa europea: Content4All Volviendo a territorio europeo, el proyecto Content4All aborda el problema desde un enfoque diferente. En este caso, plantean la creación Realatar, un humano virtual en 3D de alta calidad. Se trata de una réplica digital que se crea a partir de grabaciones de intérpretes reales que se expresan en lenguaje de signos y que puede después mostrarse en todo tipo de dispositivos: televisión, portátiles o tabletas. Tan sólo se precisa de una cámara para grabar su rostro y un sensor tipo Microsoft Kinect que perciba sus movimientos. El problema ahora es encontrar los datos para entrenar el modelo. Porque, datos para reconocimiento de reconocimiento de lenguaje (speech recognition) sí que hay. Pero datos visuales de la parte gestual, apenas hay. Por tanto, uno de los tareas más importantes del proyecto es generar esos datos de entrenamiento. Para construir esta base de datos se recurre a una fuente muy curiosa: los programas de noticias (¡el telediario!) y espacios de pronóstico meterológico. ¿Por qué? Muy sencillo, porque en estos programas, el repertorio lingüístico es relativamente limitado y claro dando poco espacio a los errores de interpretación. Una vez generada la base de datos, se entrena la IA aplicando algoritmos de Procesamiento del Lenguaje Natural (PNL) y de Aprendizaje Profundo, de forma que se traduzca el lenguaje hablado, gestos y expresiones de lenguaje de signos que el Realatar puede ejecutar. Por último, gracias a las tecnologías de HbbTV, el Realatar se superpone sobre el navegador o la señal de televisión original, del mismo modo que se hace con los subtítulos. Conclusión Aunque el desafío es claro y aun queda mucho camino por delante, es evidente que las tecnologías basadas en la inteligencia artificial han supuesto un salto cualitativo en este campo, y pueden ser de gran ayuda para garantizar el derecho de acceso a la educación, la información y la cultura de las personas con discapacidad.
23 de septiembre de 2020
AI & Data
Python para todos: 5 formas de generar datos aleatorios
En el primer post de esta miniserie, explicamos el motivo por el cual necesitamos generar conjuntos de datos aleatorios para entrenar nuestros modelos de aprendizaje automático. En el post de hoy, veremos 5 formas distintas de hacerlo con Python. AI OF THINGS Python para todos: ¿Por qué usamos números aleatorios ? 23 de marzo de 2022 Módulo random En el módulo random de la librería estándar de Python, podemos encontrar un un conjunto de funciones que permiten obtener números aleatorios (para ser rigurosos, en realidad son "pseudo-aleatorios"), de distintas formas. Para ello, utiliza un generador de números pseudo-aleatorios (PRNG) conocido como Mersenne Twister. Genera un número aleatorio a partir de otro número de damos como valor de entrada o semilla (seed). Se trata de un generador determinístico, ya que, a partir de la misma semilla, se obtiene siempre el mismo resultado. En el post anterior ya comentamos que estos números pseudo-aleatorios son perfectamente válidos para la mayor parte de problemas que modelizamos mediante algoritmos de machine learning. Sin embargo, no nos sirven para trabajar en entornos de criptografía y seguridad. En estos casos, se utiliza el módulo "secrets" que permite generar números verdaderamente aleatorios (true-random number generators (TRNG). 5 formas distintas de generar números aleatorios randint(): devuelve un número entero comprendido entre los valores indicados. Los valores de los límites inferior y superior también pueden aparecer entre los valores devueltos. Para números decimales (float) se usa la función uniform() randrange(): devuelve números enteros comprendidos entre un valor inicial y otro final, separados por un valor "paso" determinado choice() y choices(), permiten seleccionar valores de una lista de forma aleatoria. Toman una lista como argumento y seleccionan aleatoriamente un valor (o valores en el caso de choices()). También, se puede aplicar una matriz con pesos para aumentar la probabilidad de que determinado valor sea elegido. shuffle(): "baraja" una lista. Esta función 'mezcla' o cambia aleatoriamente el orden de los elementos de una lista antes de seleccionar uno de ellos gauss(): genera un conjunto de números aleatorios cuya distribución de probabilidad es una distribución gaussiana o normal (muy frecuente en el mundo real). Existen funciones similares para otros distribuciones diferentes. Ejemplos prácticos Veamos unos sencillos ejemplos de aplicación de las funciones anteriores. En el manual de Python, se puede encontrar toda la información sobre éstas y las demás funciones del módulo random. Recordamos que, como ocurre con todas las bibliotecas, antes de utilizar una función se debe importar la función o la biblioteca entera. # Para importar la biblioteca random al completo import random # Para importar sólo determinadas funciones (randrange y choice) from random import randrange, choice Función randint() La función randint(a, b) genera un número entero entre a y b, ambos incluidos. a debe ser inferior o igual a b. Por ejemplo, para generar un número aleatorio del 1 al 10 pondríamos: # Generar un número entero aleatorio entre 10 y 20 (incluidos) print(random.randint(1, 10)) Función randrange() La función randrange() admite hasta tres argumentos (inicio, fin, paso). Por ejemplo. # Generar un número entero aleatorio entre 10 y 110 con paso 2 print(random.randrange(10, 110, 2)) Funciones choice(), choices() Estas funciones permiten elegir uno (o varios) elementos de una lista. También, como en este ejemplo, permite trabajar con cadenas de caracteres (strings) # Elegir aleatoriamente uno (o varios, en este caso 2) colores de la lista color=( ['rojo', 'amarillo', 'verde', 'azul', 'marrón', 'negro']) # Un color print (random.choice(color)) # Una pareja de colores print (random.choices(color,k=2)) Si queremos que uno de los elementos tenga mayor probabilidad de salir elegido, aplicamos una matriz "peso". En este ejemplo, pedimos que saque 10 combinaciones de 3 colores, y que el color azul, sea 5 veces más probable que el resto: for _ in range(10): print('Combinación de 3 colores al azar=>',random.choices(color,weights=[1,1,1,5,1,1],k=3)) Función shuffle() Con la función Shuffle, “barajas” o cambiar de posición aleatoriamente los elementos de una lista cualquiera. # "Barajamos" con shuffle una lista de números lista = [5, 3, 45, 27, 2, 10, 82] # La lista tal cual print('Lista original=>',lista) random.shuffle(lista) # La lista mezclada print('Lista mezclada=>',lista) Función gauss() La función gauss() usa como argumentos la media y la desviación estándar, para generar valores aleatorios que sigan una distribución normal. En este ejemplo, generamos un conjunto de números (pseudo)-aleatorios que siguen una distribución gaussiana, con media 0 y desviación estándar 1. for _ in range(10): print((random.gauss(0,1))) Si queremos ver la gráfica, para, por ejemplo, 1000 valores, import random import matplotlib.pyplot as plt %matplotlib inline campana=[random.gauss(1,0.5) for i in range(1000)] plt.hist(campana, bins=15) plt.show() Si quiere probar a implementar tu propio generador de números aleatorios lo más “verdadero” posible una Raspberry Pi, no te pierdas este otro post.
8 de septiembre de 2020
AI & Data
Deep learning para clasificar polen
¿Sabías que el Deep Learning te puede evitar pasar un mal rato por la alergia, detectar si la miel está adulterada, o ayudar a resolver un crimen? Esta ductilidad del deep learning, su capacidad de facilitar nuestro día a día gracias sus aplicaciones en gran cantidad de campos es, precisamente, el secreto de su éxito. Deep Learning y alergia ¿Cómo puedo el deep learning mejorar la vida de las personas alérgicas?. La clave está en el polen. En poder contar y clasificar cuántos granos de cada tipo hay en una muestra determinada. Anteriormente, esta tarea se realizaba de forma manual. El problema es que algunos granos resultan prácticamente indistinguibles. Por ello, los porcentajes de acierto no eran especialmente buenos, situándose en torno al 63,5%. Figura 1: Euphorbia-pulcherrima-polen (Wikipedia) Un equipo de investigadores de la UNED, liderado por José Luis Aznarte ha desarrollado un algoritmo que utiliza redes neuronales convolucionales para clasificar de forma automática hasta 46 especies diferentes de polen en una muestra. El porcentaje de acierto es un 98%, lo cual supone una excelente noticia para ese (estimado) 40% de la población mundial que moquea, lagrimea, o incluso puede tener dificultades para respirar debidas a la rinitis alérgica por exposición a polen. Clasificación de pólenes Para prevenir o contrarrestar estos episodios, de mayor o menor gravedad, es preciso saber cuántos granos se encuentran suspendidos en el aire y en qué planta germinan. Por ello es necesario clasificarlos por especies. Pero la clasificación automática de polen no es sólo útil para alertar a la población alérgica, o establecer protocolos en los centros sanitarios para atender mejor sus síntomas. También se aplica a otros campos. Paleobotánica Los paleontólogos examinan granos de polen fosilizados en sedimentos antiguos para reconstruir cómo era la flora en un lugar hace milenios. Figura 2: Lepidodendron aculeatum (Wikipedia) Palinología forense El polen también puede ser una interesante referencia forense para ubicar el lugar dónde se ha cometido un delito, ya que puede usarse como biomarcador capaz de conectar personas y objetos a lugares y espacios de tiempo determinados. Industria alimentaria Y en la industria alimentaria, distinguir, por ejemplo, si está adulterada esa “miel pura” que acabamos de comprar. La miel “ultrafiltrada” es producto de someterla a temperaturas muy altas, y añadirle agua para sacarle mayor rendimiento al producto. El resultado es la pérdida del polen, y con ello sus propiedades nutritivas y saludables. Por ello, es muy interesante poder detectar si una miel está adulterada de forma automática. Vemos, nuevamente, como el Deep Learning se cuela en nuestro día a día para hacernos la vida más fácil. Referencia: Precise automatic classification of 46 different pollen types with convolutional neural networks. Víctor Sevillano, Katherine Holt, View ORCID ProfileJosé L. Aznarte Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
4 de septiembre de 2020
AI & Data
Biosensores de grafeno para detectar Covid19
En un post anterior ya vimos cómo las propiedades físico-químicas del grafeno lo convierten en un material clave en la evolución del 5G, internet de las cosas (IoT) y la industria 4.0. Hoy vamos a hablar de un interesante proyecto del Centro de Investigaciones Biológicas Margarita Salas (CIB-CSIC), que plantea el uso de bio-sensores portátiles de grafeno para diagnosticar la covid de forma rápida, fiable, barata y accesible. AI OF THINGS Grafeno, un supermaterial para IoT 8 de julio de 2020 Dos estrategias en la lucha contra la covid En la lucha contra la pandemia hay claramente definidas dos estrategias complementarias, pero diferentes. Por un lado, la búsqueda de una vacuna capaz de enseñar a nuestro organismo cómo defenderse de la enfermedad. Y, por otro, encontrar un método diagnóstico barato, eficaz, fiable y accesible para las personas, sin necesidad de recurrir a médicos o laboratorios. La rápida propagación, debida al gran número de asintomáticos, ha convertido la detección en un factor crucial para controlar el virus. Un virus que ha puesto en emergencia sanitaria a prácticamente todo el planeta, con más de 21,8 millones de contagios y 774.000 muertos (según el recuento de la Universidad Johns Hopkins). ¿Cómo se detecta el virus? En la actualidad, se realizan dos tipos de pruebas: PCR (en inglés de “Reacción en Cadena de la Polimerasa”) Test serológicos o de anticuerpos Veamos en qué consiste cada una de ellas y cuáles son sus limitaciones. PCR Estas pruebas se utilizan desde hace años en todo tipo de crisis de salud pública relacionadas con enfermedades infecciosas. Se basan en la detección de material genético (ARN) del virus, patógeno o microorganismo, a partir de una muestra naso-faríngea. Son pruebas muy específicas (distinguen microorganismos muy cercanos evolutivamente), sensibles, y capaces de detectar el virus en las primeras fases respiratorias. Como contrapartida, deben ser realizadas por personal especializado en laboratorios de Microbiología de hospitales, centros de investigación o universidades, y se puede tardar entre cuatro horas y varios días en obtener un resultado. Es por ello, que, a pesar de su eficacia, son necesarias pruebas diagnósticas más rápidas y baratas. Test serológicos Los test serológicos no identifican el ARN del virus, sino que sino que detectan: Anticuerpos, proteinas generados por nuestro organismo para combatir al virus a partir de una muestra de sangre Antígenos, detectan una molécula del virus, como por ejemplo, las espículas (S), a partir de muestras respiratorias de exudado nasofaríngeo Fuente: CORONAVIRUS- TIPOS DE TESTS de BioChapas (vídeo completo al final del post) Estos test son muy rápidos y pueden ofrecer resultados en tan sólo 15 minutos. Para la detección de anticuerpos se basan en técnicas inmunocromatografía, cuyo funcionamiento es similar a los de los test de embarazo. Se deja caer una pequeña muestra de sangre en el dispositivo y, en unos minutos, se puede apreciar a simple vista la presencia (o no) de anticuerpos por medio de líneas de distinto color. Los tests serológicos miden los niveles de Inmunobglobulina M (IgM) e Inmunoglobulina G (IgG). Los anticuerpos M (IgM), indican un proceso de infección aguda, mientras que los G (IgG), son los anticuerpos protectores que indican que el cuerpo ya ha desarrollado inmunidad. El problema está en que una persona infectada de COVID 19 necesita una o dos semanas para empezar a producir anticuerpos. Por tanto, si se hace un test de este tipo durante esos días, el resultado sería un "falso negativo". Figura 1: Los inmuno-ensayos de flujo lateral son dispositivos simples que pueden detectar anticuerpos en la sangre Fiabilidad de las pruebas Hemos visto, por tanto, que la fiabilidad de cada test depende mucho del momento de la infección. En los primeros días de evolución de la enfermedad, resultan más fiables las PCR. Sin embargo, a partir de los 7-10 días de enfermedad, se reduce la cantidad de virus en la nasofaringe, y resulta más fiable el diagnóstico por test serológicos. La siguiente tabla, extraída del documento Interpretación de las pruebas diagnósticas frente a SARS-CoV-2 publicado por el Ministerio de Sanidad, resume la interpretación adecuada de cada prueba, según la fase de la enfermedad. Figura 2: Tabla de interpretación de las pruebas diagnósticas frente a SARS-CoV2 Una posible solución basada en grafeno Lo ideal sería poder detectar las inmunoglobulinas A (IgA), es decir, los anticuerpos presentes antes de que lleguen los síntomas, lo que permitiría detectar contagios en la fase inicial de la infección. El equipo de Luisa Botella, del Centro de Investigaciones Biológicas Margarita Salas (CIB-CSIC), se ha puesto en marcha hace meses para encontrar una solución fiable, que dé la respuesta en unos segundos y en la fase inicial de la infección, antes de que el paciente infectado muestre los primeros síntomas. El objetivo del estudio es crear un biosensor portátil, con una sensibilidad y precisión similar a las de las pruebas PCR, pero con la rapidez y sencillez de un test serológico. Para crear este sensor, se plantearon utilizar un sistema microfluídico integrado en una matriz de sensores de grafeno. ¿Por qué el grafeno? Se eligió el grafeno, por sus especiales características que lo convierten en un material muy sensible, capaz de vehiculizar muchas más reacciones que otros soportes y de permitir que se acoplen muchas nanopartículas con las proteínas. Paso 1: Fabricar y purificar la proteína S El primer paso de la investigación se centró en fabricar y purificar la proteína S, spike o espícula del virus, que es la que le permite "conectarse" con el receptor celular y liberar su genoma en el interior de la célula que va a infectar. En el siguiente vídeo publicado por La Vanguardia, se resume de forma sencilla el proceso de contagio. Paso 2: Acoplar la proteína a nanopartículas provistas de nanosensores de grafeno A partir de ahí, los biotecnólogos acoplan esa proteína a unas nanopartículas (lipídicas o artificiales) que llevan nanosensores eléctricos. Estos nanosensores producen una señal cuando detectan la unión entre el anticuerpo y el antígeno S, es decir, cuando la muestra pertenece a una persona infectada con el virus Paso 3: Puesta a prueba con muestras de control Puesta a prueba del dispositivo con muestras de plasma procedentes de población control, libres de SARS-CoV-2. Una vez verificada su eficacia, se llevará a cabo la misma experiencia con plasmas de pacientes contaminados a diferentes etapas de la infección. En palabras de la investigadora: “El dispositivo permitiría la detección de la infección temprana (incluso asintomática) cuantificando las inmunoglobulinas IgA en la saliva; también permitirá determinar el curso de la infección en la fase aguda mediante la medición de la concentración de inmunoglobulinas IgM; y permitirá detectar la superación de la infección y la potencial inmunización del individuo mediante la determinación de inmunoglobulinas IgGs en plasma” Luisa Botella Conclusión Este nuevo método diagnóstico basado en sensores de grafeno es rápido, eficiente y accesible. No será preciso recurrir a un médico o laboratorio y permitirá detectar los contagios en las fases más tempranas de la enfermedad. Estaremos pendientes de los avances de la investigación, que probablemente ofrezca ya un prototipo para 2021. Terminamos con un interesante video-resumen, en el que, a pesar del tono cercano e informal, se explica de forma muy clara y precisa varios de los puntos que hemos tocado en este post. https://www.youtube.com/watch?v=Tbr5r-dwvkY Referencias: Investigadores del CSIC participan en el desarrollo de un biosensor portátil de grafeno de detección rápida de Covid-19 Interpretación de las pruebas diagnósticas frente a SARS-CoV-2 Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
2 de septiembre de 2020
AI & Data
Sesgos cognitivos en los datos (III): Coste hundido
En esta tercera entrega de nuestra serie sobre sesgos cognitivos en los datos, vamos a hablar de otro muy habitual, el sesgo de coste hundido, también llamado sesgo costo perdido o del Concorde. El sesgo de Coste Hundido ¿Te ha pasado alguna vez eso de pedirte el "postre especial de la casa“, para luego darte cuenta de que es enorme, y estás muy lleno; pero aún así comerte hasta la última cucharada aunque sepas que te vas a sentir mal porque...lo vas a tener que pagar igual? ¿O empeñarte en acabar ese libro que no te gusta nada porque "ya llevas más de la mitad"? En ese caso, nuevamente has sido víctima de un sesgo cognitivo: el sesgo de coste hundido. El sesgo de coste hundido se refiere a la toma de decisiones basada en lo que ya se ha invertido en un proyecto, no en su rentabilidad actual. Se trata, por tanto, de un sesgo cognitivo cuyo origen es nuestra adversión a las pérdidas y a reconocer nuestros errores. El precio pagado, el esfuerzo ya invertido se convierten en un marco de referencia para el valor, cuando en realidad deberían ser irrelevantes. De hecho, la principal consecuencia de tomar decisiones bajo el prisma de este sesgo, es precisamente, generar mayores pérdidas. Muchas veces es mejor pararse, cuando te empiezas a dar cuenta de que la cosa va mal, que seguir invirtiendo más y más, para tener que acabar de la misma forma semanas, meses o años después. Esto sucede a menudo con los proyectos de ciencia de datos. Proyectos que duran mucho más de lo previsto sin ofrecer resultados, pero cuyos responsables son incapaces de tomar la decisión de pararlos por todo el tiempo, esfuerzo y dinero invertidos en ellos. Como si se pudiera recuperar todo lo invertido cuando las evidencias muestran que no es una estrategia adecuada. En esos casos, es mejor asumir esas pérdidas que dejarse llevar por este sesgo e incurrir en costes mayores. Un poco de historia: la falacia del Concorde La Falacia del Concorde, proviene, evidentemente, del famoso avión de pasajeros anglo-francés llamado a revolucionar los vuelos transoceánicos gracias a su velocidad supersónica. A pesar de estar considerado como un icono de la aviación y una maravilla de la ingeniería, como negocio, era ruinoso. No obstante, se mantuvo en servicio entre 1976 y 2003 ya que lo mucho que había costado ponerlo en marcha y las ilusiones depositadas en él, pesaron más que las evidencias de su falta de rentabilidad. Figura 1: El Concorde, orgullo de la aviación europea Otros ejemplos No es difícil encontrar situaciones en las que lo más racional sería tirar la toalla, pero se sigue adelante para no tener que reconocer, ante nosotros mismos y ante los demás, que nos hemos equivocado. Un ejemplo doloroso, son los argumentos que justifican la prolongación de una guerra por la tristemente conocida “falacia de nuestros-muchachos-no-han-muerto-en-vano”. Por no admitir que unos cientos de jóvenes americanos habían muerto en vano, la prolongación de la guerra de Vietman condujo a que los muchachos-muertos-en-vano fueran cerca de 60.000. ¿Cómo evitarlo? Una forma de protegerse frente a este sesgo cognitivo es centrarse en los beneficios y costes futuros en lugar de los costos pasados. Hay que evitar que el conocimiento de lo ya invertido en el proyecto, lastre nuestras decisiones, alejándonos de la más racional. Saber parar a tiempo, reconocer los errores, aprender de ellos y asumir que los fracasos forman parte de la carrera del éxito. Post de la serie "Sesgos cognitivos en los datos" Sesgos cognitivos en los datos (I): El sesgo de supervivencia Sesgos cognitivos en los datos (II): Confirmación Sesgos cognitivos en los datos (III): Coste hundido Sesgos cognitivos en los datos (IV): Disponibilidad Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
1 de septiembre de 2020
Conectividad e IoT
Inteligencia artificial e IoT para salvar a las abejas
¿Sabías la población mundial de abejas está amenazada y su mortalidad no para de aumentar? Si quieres saber cómo la Inteligencia Artificial, el IoT y el trabajo colaborativo pueden usarse para monitorizorizar su salud y prevenir su extinción, sigue leyendo. Las abejas son vitales para los ecosistemas silvestres, pero también como polinizadoras en la agricultura. De hecho, según un estudio de la Universidad de Berkeley, un tercio de los alimentos que comemos, depende de su polinización. Una empresa social para salvar a las abejas En 2015 surgió una empresa social, OSBeehives, que desarrolla software y hardware para lucha por la conservación de Apis mellifera, la polinizadora más conocida. Este software analiza las frecuencias de audio que generan sus zumbidos y, mediante algoritmos de machine learning, las correlaciona con su estado de salud. Figura 1: Posibles estados de salud de la colmena Para capturar la información, colocan en las colmenas sensores conectados diseñados por ellos mismos, los dispositivos BuzzBox. Figura 2: Sensores de zumbidos que se introducen en las colmenas Los algoritmos de inteligencia artificial analizan estas grabaciones en busca de patrones que permitan identificar las principales amenazas para la salud de las colmenas: pesticidas, avispas, enfermedades y parásitos, y el conocido como problema del colapso de colonias. La información se traslada a una app móvil para que el apicultor pueda reaccionar en tiempo real. La aplicación ya tiene más de 2.000 usuarios de más de 20 países de todo el mundo, que han generado más de un millón de grabaciones. Figura 3: App móvil El dispositivo es económicamente asequible y se ofrece en código abierto, lo que contribuye a una evolución más rápida. Gracias a esta iniciativa, Tristan Copley Smith, cofundador y director de comunicaciones de OSBeehives, ha sido ganador de Innovadores menores de 35 Europa 2019 de MIT Technology Review
31 de julio de 2020
AI & Data
Sesgos cognitivos en los datos (II): Confirmación
Si recordamos, en el primer post de esta serie, ya introdujimos el concepto de sesgo cognitivo como patrón de desviación de nuestro juicio que se produce en determinadas situaciones y que conduce a la distorsión de la percepción, a un juicio inexacto o a una interpretación ilógica. En otras palabras, un "atajo mental". Y explicamos en qué consiste el sesgo de supervivencia y cómo puede afectar al científico de datos. En esta segunda entrega, continuaremos con otro sesgo muy frecuente: el sesgo de confirmación. El sesgo de confirmación ¿Cuántas veces te has dicho a ti mismo: "Siempre que lavo el coche, llueve"? Cuando llueve justo después de que hayas lavado tu coche, recuerdas otras ocasiones en la que pasó lo mismo. De lo que no te acuerdas es de las veces que también lo lavaste y no llovió, porque tu cerebro, directamente, decide no registrar esa información. En ese caso, nuevamente has sido víctima de un sesgo cognitivo: el sesgo de confirmación. El sesgo de confirmación se produce cuando, de forma inconsciente, buscamos y damos preferencia a la información o a las pruebas que confirmen nuestras hipótesis o creencias, mientras ignoramos o menospreciamos los resultados adversos o atenuantes. Se trata, por tanto, de un sesgo cognitivo que representa un error de inferencia inductiva hacia la confirmación de la hipótesis en estudio. El sesgo de confirmación está estrechamente relacionado con otro sesgo conocido como "falacia de evidencia incompleta" o cherry picking. Aunque, en muchos casos su significado es muy similar, el cherry picking tiene un carácter deliberado, se selecciona la información que nos interesa, ignorando conscientemente la que no. El sesgo de confirmación, por su parte, está más relacionado con nuestras motivaciones y creencias. Los científicos de los datos exhiben sesgo de confirmación en la recogida de pruebas, cuando buscan activamente y le dan mayor relevancia a aquéllas que confirman su hipótesis, al tiempo que ignoran o subestiman las que podrían rebatirla. Pero estos sesgos no se limitan a la recogida de pruebas: también puede darse en su interpretación. Por ejemplo, cuando se interpretan evidencias ambiguas como confirmatorias. Un poco de historia El término «sesgo de confirmación» fue acuñado por el psicólogo inglés Peter Cathcart Wason en los años 60. Realizó un experimento en el que retaba a los participantes a tratar de demostrar una hipótesis falsa, para comprobar que la mayoría de las personas, en lugar de intentar refutarla, tendió a buscar su confirmación. La tarea de selección de Watson Este sencillo experimento, es un problema de lógica muy sencillo, pero, sorprendentemente, muy poca gente acierta a la primera. El investigador, colocó 4 cartas sobre una mesa. Por una cara, mostraban un número. Por la otra, un color. Y planteó una hipótesis: "Si la carta muestra un número par, entonces la cara opuesta es roja" Y una pregunta: ¿A qué dos cartas debería dar vuelta para comprobar la veracidad de esta hipótesis? Consideraba incorrectas las respuestas que identificaran una tarjeta que no necesita ser volteada, o que, por el contrario, no identificara una tarjeta que sí hubiera de serlo. Sólo el 10% de los sujetos del experimento dieron con la respuesta correcta. La única forma de invalidar esta hipótesis es encontrar una carta par que no sea roja. Si la carta 3 es roja (o marrón), no invalida la hipótesis, ya que ésta no hace afirmaciones sobre números impares. Si la tarjeta roja es impar (o par), tampoco la invalida porque el color rojo no es exclusivo de las cartas pares Pero tanto si la carta marrón es par, como si el 8 no es roja, se rebate la hipótesis. Por tanto, esta es la respuesta correcta. La explicación más coherente a estos resultados la aportó otro experimento, en este caso llevado a cabo por Evans y Lynch, en el que postularon la existencia de un "sesgo de emparejamiento" o matching bias. Los sujetos de experimento eligieron mayoritariamente las cartas que se mencionaban en el resultado (roja, par). En definitiva, este experimento demostró que, a la hora de demostrar si la hipótesis era correcta o no, la mayoría de las personas eligió la estrategia equivocada: tratar de confirmarla. Otros ejemplos No es complicado encontrar ejemplos de este sesgo, incluso en nuestra vida cotidiana. Porque no se trata sólo de buscar siempre los datos que nos den la razón y nos reafirmen en nuestras creencias u opiniones. Sino también en la forma en cómo interpretamos lo que nos ocurre. Como ocurría en el ejemplo del coche. En los últimos años, este sesgo se ha hecho mucho más evidente en las redes sociales, ya que ahora resulta mucho más fácil consumir la información únicamente desde aquella fuentes (páginas web, canales de youtube, blogs, redes...) que confirman nuestras creencias. De esta forma, damos crédito automáticamente a informaciones sin ningún tipo de comprobación previa. ¿Cómo evitarlo? Los científicos de datos, como cualquier otra persona, son susceptibles a sufrir este tipo de sesgo cognitivo. El problema es que, aferrarse a los datos que confirman tus hipótesis, y hacer caso omiso de las pruebas contradictorias, puede conducir a la toma de decisiones erróneas. Por tanto, es muy importante la creación de procesos de control que ayuden a evitar este tipo de sesgo. Tener una mente abierta, usar el método científico para intentar sopesar todas las pruebas, aportar transparencia en todo el proceso (datos, métodos, errores). Aunque nos incomode, porque las "certezas" nos dan sensación de seguridad, hemos de salir de nuestra zona de confort. Hacer, de vez en cuando, el saludable ejercicio de poner en duda nuestras creencias y poner en práctica una de las premisas básicas del método científico: Tratar de probar que lo que crees es falso. Para esta labor, puede sernos muy útil leer la regla número 8, sobre la calidad de los datos y las evidencias del Codigo de Conducta del Científico de Datos publicado por la Data Science Association. Post de la serie "Sesgos cognitivos en los datos": Sesgos cognitivos en los datos (I): El sesgo de supervivencia Sesgos cognitivos en los datos (II): Confirmación Sesgos cognitivos en los datos (III): Coste hundido Sesgos cognitivos en los datos (IV): Disponibilidad Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
22 de julio de 2020
Conectividad e IoT
Internet de las Cosas…arqueológicas
A finales de 2019, según IoT Analytics, había ya 9.500 millones de dispositivos conectados para consumidores, empresas y científicos. Las previsiones para 2025 triplican esta cifra, porque la fórmula: grandes volúmenes de datos + analíticas + conocimiento experto en un dominio sirve… para casi cualquier cosa. Desde gestionar dispositivos en el hogar, hasta controlar la contaminación o el tráfico en las ciudades, usar de forma más eficiente el agua en la agricultura, o ayudar a controlar la expansión de un virus. En el post de hoy veremos cómo también se puede usar para proteger nuestros tesoros arqueológicos, con un ejemplo mundialmente conocido: El Valle de los Reyes en Egipto. Soluciones IoT para Geología: prevención de catástrofes Normalmente, las soluciones IoT para Geología monitorizan el medio natural con el objeto de predecir y prevenir catástrofes naturales. Así, existen soluciones orientadas a predecir desbordamientos en ríos, hundimientos en túneles, o movimientos de tierras. Otras aplicaciones están orientadas a conocer el impacto del cambio climático sobre la estabilidad de determinadas formaciones rocosas. La importancia de este estudio es evidente cuando estas “formaciones rocosas” forman parte de uno de los sitios arqueológicos más importantes del mundo, como es el Valle de los Reyes, situado en las afueras de Luxor, a orillas del Nilo. El Valle de los Reyes es una necrópolis del antiguo Egipto, donde se encuentran las tumbas de la mayoría de faraones del Imperio Nuevo. Entre ellas, la más conocida es la KV62, la tumba de Tutankamón (c. 1342 - c. 1325 a.C.), descubierta por Howard Carter en 1922. Para garantizar la mejor conservación de las tumbas y la seguridad de los millones de turistas que las visitan cada año, es fundamental controlar la estabilidad de las formaciones calizas que rodean el valle y que pueden verse impactadas tanto por fenómenos sísmicos, como meteorológicos. El proyecto del Valle de los Reyes Para saber más, un equipo de la Universidad de York (Canadá), el Departamento de Ciencias de la Tierra de la ETH Zurich y la Universidad de Basilea realizó un estudio sobre la estabilidad del acantilado rocoso sobre la tumba KV42. Los investigadores desarrollaron una modelización matemática del comportamiento de la roca, analizando factores como la absorción de humedad, cambios de volumen debidos a cambios de temperatura, desplazamientos/fracturas provocadas por pequeños movimientos sísmicos o lluvias torrenciales etc. El papel de los sensores IoT Los investigadores instalaron un conjunto de sensores IoT para monitorizar la roca y su entorno y generar los datos para entrenar el modelo. En particular, se instaló una estación meteorológica Plug & Sense Smart Agriculture Pro, de uno de nuestros partners, la empresa Libelium. La estación permite medir la velocidad y dirección del viento, volumen de precipitaciones, radiación solar, temperatura (del aire y de la roca), y grado de humedad. A la estación, alimentada por energía solar, se agregaron sensores adicionales: Un dendrómetro, para medir cómo influye el crecimiento de los árboles en la apertura de la fractura Un sismómetro Figura 1: Sensores monitorizando la grieta (fuente) Los sensores registran datos cada 15 minutos, los graban en memoria y posteriormente los envían a servidor remoto a través de una red celular (3G/4G). De esta forma, se pueden controlar el impacto de la erosión sobre la grieta, y generar una alerta temprana en caso de riesgo de fractura, garantizando así la preservación del patrimonio histórico y la seguridad de los visitantes. Conclusión Las tecnologías de monitorización de grietas en materiales sólidos, cobran cada día mayor relevancia, no sólo en sitios históricos sino en cualquier otro tipo de estructuras naturales o humanas debido al impacto negativo que tienen sobre ellas fenómenos relacionados con el cambio climático. Referencias: Alcaino-Olivares, Rodrigo & Perras, Matthew & Ziegler, Martin & Maissen, Jasmin. (2019). Cliff stability at tomb KV42 in the Valley of the Kings, Egypt: A first approach to numerical modelling and site investigation. Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
29 de junio de 2020
AI & Data
Sesgos cognitivos en los datos (I): Supervivencia
Cuando hablamos de decisiones basadas en datos (data driven decisions), queremos creer que se trata de decisiones objetivas, basadas en datos y precisos modelos matemáticos. Y ciertamente lo son, pero siempre que seamos conscientes de los posibles sesgos, y definamos estrategias para evitarlos. ¿Qué son los sesgos cognitivo? Un sesgo cognitivo no es más que un atajo que toma nuestro cerebro para ahorrar tiempo o energía en la toma de decisiones. Especialmente cuando se enfrenta a estos cuatro problemas: Demasiada información Falta de sentido Prisas Averiguar lo importante, qué conviene recordar Cuando la información nos satura, tendemos a fijarnos más en aquello que nos resulta familiar, que podemos "conectar" con algo conocido. También las cosas que llaman la atención por su originalidad o rareza. O simplemente porque han cambiado. En estos casos, también seleccionamos de forma inconsciente la información que refuerza lo que creemos (nuestra teoría, nuestras convicciones). Nuestro cerebro intenta dar sentido a lo que ve, aunque se trate de datos dispersos. "Convierte" las nubes en objetos u animales, "rellena" los huecos en la información "extrapolando" a partir de estereotipos, generalizaciones o simplificaciones de la realidad que le resultan conocidas. Después, por desgracia, tiende al olvidar, qué era dato, y qué extrapolación. La urgencia en la toma de decisiones, las prisas, son causantes, en ocasiones, de excesos de confianza. O de priorizar lo urgente, sobre lo importante. También nos lleva a seguir adelante con proyectos en los que llevamos invertido mucho esfuerzo y tiempo, o conformarnos con "lo malo conocido", aunque no sea realmente la mejor opción. Por último, nuestro cerebro no puede recordarlo todo: tiene que elegir. Por eso, recuerda según el contexto de los acontecimientos, se queda con lo general frente a lo específico, reduce listas y eventos a unos elementos clave, y edita los recuerdos. ¿No te ha pasado nunca recordar una experiencia común con otra persona y sorprenderte al comprobar cómo cada una lo recordaba de una forma distinta? Cognitive Bias Code x Los sesgos cognitivos en los datos Como cualquier otro humano, el científico de datos es susceptible a los sesgos cognitivos. Estos sesgos le pueden llevan a tomar decisiones basadas en creencias preexistentes, datos limitados o simplemente preferencias irracionales. En esta "miniserie" sobre sesgos cognitivos en los datos, aprenderemos a identificar los más habituales y cómo trabajar para evitarlos en la medida de lo posible. De esta forma, tomaremos mejores decisiones basadas en los datos. El sesgo de supervivencia ¿Alguna vez has pensado: qué mala es la música de ahora, con lo buena que era en los 80? Si es así, sin darte cuenta, ha sido "víctima" del sesgo del superviviente. El "sesgo del superviviente" consiste en el acto de sacar conclusiones de un conjunto incompleto de datos porque esos datos han "sobrevivido" a algunos criterios de selección. En nuestro ejemplo musical, está claro que, cuando decimos que la música de los 80 era mejor que la de ahora, en realidad no estamos comparando con toda la música de esa época. En realidad lo hacemos con una muestra de esa música en la que ya ha sido filtrada la música mediocre que directamente, no sobrevivió al olvido. Un poco de historia Durante la II Guerra Mundial, Abraham Wald, matemático húngaro experto en análisis estadístico y econométrico, geometría y teoría de la decisión, sorprendió con su respuesta al problema que le plantearon los expertos del Centro de Análisis Naval. Habían llevado a cabo un estudio de los daños sufridos por los aviones que regresaban de misiones bélicas con el objeto de decidir qué partes del fuselaje convenía blindar para reforzar la seguridad de los pilotos. Figura 2: Las zonas dañadas muestran los lugares donde el impacto de los proyectiles no impide regresar al avión; los que son golpeados en otros lugares no sobreviven. ( fuente) Los militares propusieron distintas alternativas de refuerzo en las zonas de acumulación de impactos. Sin embargo, Wald les hizo ver que había que interpretar el gráfico justo al revés. Como la muestra sólo consideraba los aviones que habían podido regresar de las misiones, los agujeros del fuselaje indicaban las zonas en las que el avión podía ser alcanzado sin comprometer su seguridad. Sin embargo, las zonas que aparecían intactas en los aviones de la muestra eran las que había que reforzar. Un impacto en estas zonas críticas resultaba letal. Desde entonces este problema conoce como “sesgo de supervivencia” o “sesgo del superviviente”. Surge cuando, en un análisis consideramos sólo a las personas o elementos supervivientes, obviando tener en cuenta a los desaparecidos por no ser observables en una muestra (que deja de ser, por tanto, representativa de la población). Este sesgo está relacionado en el ámbito de la estadística con lo que se conoce como “efecto composición”, que surge cuando, al variar los componentes de una muestra, las medidas centrales y de dispersión se ven alteradas, desvirtuando por tanto el análisis. Otros ejemplos Podemos encontrar otro ejemplo muy claro en el sector financiero, en los estudios de resultados sobre fondos de inversión. La mayoría de estos análisis sólo incluyen los fondos que existen en la actualidad, sin tener en cuenta otros que han ido desapareciendo. Como consecuencia, el análisis se está realizando sólo sobre los fondos que han tenido mejor resultado. Por tanto, este sesgo tiende a sobreestimar su rendimiento. Otra consecuencia de este sesgo en la selección, como hemos adelantado antes, es que la muestra no es aleatoria. Por tanto, los resultados obtenidos a partir de su análisis no son representativos. En marketing, encontramos este sesgo en las encuestas. Las empresas, normalmente, preguntan a sus clientes qué características de su producto valoran más. Sin embargo, sería más práctico averiguar qué características tendría que tener el producto para convencer a los "no clientes". Se trata de una información de gran valor para la empresa que no se está teniendo en cuenta en ese análisis. Cómo evitarlo Una forma de mitigar este sesgo es, en lugar de empezar a trabajar directamente con los datos que tenemos, tratar de analizar de forma rigurosa el problema con el objeto de identificar cualquier tipo de datos que pueda ayudar a resolverlo. Para ello, puede ser muy interesante hacer una lluvia de ideas. De esta forma, al tener claros qué datos faltan en nuestro análisis, podemos tenerlos en cuenta en en el enfoque de nuestra solución e incluirlos en nuestras conclusiones. Post de la serie "Sesgos cognitivos en los datos" Sesgos cognitivos en los datos (I): El sesgo de supervivencia Sesgos cognitivos en los datos (II): Confirmación Sesgos cognitivos en los datos (III): Coste hundido Sesgos cognitivos en los datos (IV): Disponibilidad Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
24 de junio de 2020
AI & Data
¿Por qué fallan algunos modelos Machine Learning?
En este blog siempre hablamos de las mil y una aplicaciones de la Inteligencia Artificial a todo tipo de actividades y campos de conocimiento. Sin embargo, sabemos que en ocasiones, nuestros modelos basados en algoritmos de Machine Learning, fallan, no ofrecen los resultados esperados. ¿Cuál es el motivo? Motivos, puede haber muchos, pero vamos a centrarnos en los tres principales. Sobre dos de ellos ya hemos hablado en otras ocasiones en nuestro blog. 1 Los datos Cuando hablamos de modelos de aprendizaje automático, hablamos de modelos que aprenden de los datos. Por tanto, juegan un papel fundamental en todo el proceso. Tendremos que hacernos una serie de preguntas: ¿Tenemos un volumen de datos suficiente? ¿Son representativos? ¿Pueden presentar algún tipo de sesgo? ¿Son fiables? ¿Tienen la calidad suficiente? ¿Qué fuentes utilizamos? AI OF THINGS ¿La clave del éxito del Machine Learning? Datos de calidad 24 de abril de 2018 Merece la pena prestar a los datos toda la atención necesaria, ya que no se puede construir un modelo sólido sobre pilares endebles. Y sin datos de calidad, los modelos no podrán ofrecer resultados de valor. No sólo eso. Las tareas previas de exploración, depuración y normalización de los datos tienen un papel fundamental a la hora de definir las variables del modelo. Unos análisis estadísticos previos pueden dar pistas interesantes sobre correlación de variables, o su mayor o menor relevancia sobre los resultados. 2 Las preguntas Este punto tiene mucho que ver con el anterior. Porque para hacer las preguntas adecuadas, es vital comprender bien los datos. Esta es la situación más habitual cuando se trabaja con datos propios. Hace unos meses ya os hablamos del proyecto "The 100 Questions" , impulsado por The GovLab, un centro de investigación de la Universidad de Nueva York. Basándose en la premisa: “Tus datos son tan valiosos como bien planteadas estén las preguntas que les hagas” su objetivo es ayudar a identificar, de forma participativa, las preguntas más relevantes, y aprender a priorizar aquéllas que son de mayor impacto, más novedosas o más factibles. AI OF THINGS Data Science: ¿Cómo hacer las preguntas adecuadas? 12 de diciembre de 2019 También puede darse la situación inversa. Podemos tener muy claras las preguntas, pero no tanto cómo localizar los datos que ayuden a darles respuesta. En este otro post hicimos un repaso a las principales fuentes de datos que pueden sernos de utilidad para dar respuesta a esas preguntas. AI OF THINGS Machine Learning para todos: Datos para aprender 22 de enero de 2020 3 Los modelos Llegamos al tercer punto clave: los modelos. Es, curiosamente, el aspecto que recibe mayor atención en cualquier foro sobre machine learning. ¿Qué modelo es mejor? ¿Acaso Tiene sentido hacerse esta pregunta? Veremos que no. Ya hemos visto que lo primero y fundamental es comprender los datos, y definir qué información queremos obtener de ellos (¡las preguntas!). Puede que los avances en determinadas áreas de investigación "pongan de moda" determinados modelos en un momento dato. Pero no hay soluciones universales, modelos "talla única" que sirvan para casi cualquier problema. Sí que hay modelos muy fáciles de aplicar. Unas sencillas líneas de código para crear datos de entrenamiento y datos de test, otras para definir el modelo, entrenarlo, hacer predicciones, medir su exactitud... El problema es que muchas veces no somos conscientes de los supuestos previos en que se basa el modelo. Por ejemplo, el modelo puede asumir que los datos siguen una distribución normal. Es cierto que es un tipo de distribución muy frecuente en la naturaleza, pero no la única. Por tanto, si no se cumple esta premisa, el modelo no es apropiado para ese conjunto de datos. Conocer las premisas en que se basan los modelos, o sus limitaciones (por ejemplo, si tienen tendencia al sobreajuste (overfitting), o el tipo de distancia en que se basan; nos permite anticiparnos a los problemas y definir estrategias para limitar su impacto. Por tanto, no podemos decir qué algoritmo es mejor o peor en general, sino cuál es el más apropiado para cada problema o tipo de problema. De hecho, una estrategia habitual es entrenar modelos distintos basados en algoritmos diferentes y analizar después cuál ofrece mejores resultados. No obstante, y aunque no haga falta ser un matemático experto para trabajar con modelos machine learning, comprender las matemáticas de los modelos es importante para poder elegir el más adecuado, el más eficiente, comprender si tienen o no sentido los resultados. Y si no lo tienen, ser capaz de analizar el por qué y buscar cuál puede ser la mejor alternativa. Conclusión Frente a las últimas tendencias de automatización del Machine Learning, vemos cómo la intervención humana no es algo de lo que se pueda prescindir fácilmente. Las decisiones sobre estos 3 aspectos son claves. Si no son las adecuadas, nuestros modelos de aprendizaje automático serán rápidos, precisos, y eficientes ... pero totalmente inservibles. Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
3 de junio de 2020
AI & Data
Machine learning para recuperar la inmunidad colectiva
Hoy, científicos de todo el mundo trabajan para intentar encontrar una vacuna contra el COVID19. Lo curioso es ver cómo resurgen otras enfermedades para las que hace años que disponemos de ellas. Veamos cómo el machine learning puede ayudar en esta lucha. La vacuna contra el sarampión, que cada año provocaba la muerte de 2,6 millones de niños menores de 5 años, se encontró en 1963. La enfermedad fue controlada durante décadas, gracias a las campañas de vacunación masiva, pero hoy, está resurgiendo. Enfermedades que "vuelven" En 2018, hubo 140.000 muertes por sarampión en todo el mundo debidas a la pérdida de la “inmunidad de rebaño” en muchos países. Esta inmunidad colectiva protege a las personas que no pueden recibir la vacuna por sufrir ciertas patologías o ser demasiado jóvenes. Pero, para que esta inmunidad colectiva funcione, el 95% de población debe recibir dos dosis de la vacuna. La OMS denuncia que, en 34 de los 53 países europeos, esta inmunidad se ha perdido por caídas en las tasas de vacunación de las dosis de recuerdo. Motivaciones religiosas, teorías conspirativas y pseudocientíficas propagadas por famosos, bulos impermeables a fundadas argumentaciones de la comunidad científica… estos son los motivos que llevan rechazar las vacunas. Estas bienintencionadas familias que rechazan las vacunas, pueden exponer a sus vecinos y comunidades al riesgo de enfermedades graves y muerte. Por eso, es importante identificarlas, y tratar de hacerles entender la importancia de vacunar a sus hijos. Machine Learning para predecir el abandono del plan de vacunación La Universidad de Chicago puso en marcha un proyecto que utilizaba algoritmos de machine learning para predecir la probabilidad de que los niños sean vacunados al acabar el primer año escolar. Trabajaron con registros sanitarios electrónicos de 48.000 niños croatas de primer curso de educación infantil, correspondientes al periodo 2011-2018. Tras comparar distintos modelos de aprendizaje, optaron por el de regresión logística LASSO, reduciendo las variables a 25. Este modelo, elegido por su mejor precision e Interpretabilidad, identificó a las familias que habían dejado de recibir vacunas con una precisión del 72%, permitiendo así crear un “Sistema de monitorización y alerta temprana”. Gracias a este sistema, el personal médico de atención primaria puede intervenir eficazmente con las familias que dudan en vacunar a sus hijos, contrarrestando con información contrastada la recibida por otras fuentes y ayudando así a mejorar las tasas de vacunación. Conclusión Como vemos, lo importante no es sólo encontrar las vacunas, sino vacunarnos contra la desinformación. Para esto, como para tantas otras cosas, lo más importante es el sentido común. Pero el aprendizaje automático también nos puede echar una mano. AI OF THINGS Cómo detectar Fake News con Machine Learning 8 de mayo de 2019 Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
25 de mayo de 2020
AI & Data
Phyton para todos: 5 formas de detectar "missing values"
En este nuevo post de la serie Phyton para todos, vamos a ver un ejemplo práctico sobre cómo detectar "missing values", o campos vacíos en nuestros datos de trabajo. Los pasos que vamos a dar son los siguientes: Localizar los datos de trabajo en Google Dataset Search y descargarlos (en este ejemplo desde Kaggle) Cargar los datos en un dataframe Renombrar columnas Investigar si faltan datos: ¿hay missing values? -- lo veremos de 5 formas distintas Localizar los datos de trabajo En este ejemplo, vamos a utilizar el buscador de datasets de Google. Vamos a trabajar con dos datasets diferentes: el del Titanic y el de clasificación de chocolates. Tan sencillo como poner las palabras "chocolate" y "Titanic" para acceder los datos que haya publicados sobre estos temas. Figura 1: Google Dataset Search En ambos casos, nos interesan los datasets de Kaggle, así que los descargaremos desde ahí mismo en formato csv. Figura 2: Localizamos los datos que nos interesan en Kaggle Abrimos un Jupyter notebook para trabajar con ellos. A continuación, abrimos un Jupyter notebook para empezar a trabajar. Si no habéis trabajado nunca con esta herramienta, en este post os explicamos cómo hacerlo de forma muy sencilla. AI OF THINGS Python para todos (2): ¿Qué son los Jupyter Notebooks? 19 de marzo de 2018 (Por supuesto que podéis trabajar con el editor Python que os resulte más cómodo). Iremos paso a paso explicando cada sección, y al final incluiremos el Jupyter notebook completo. Importación de librerías y carga de datos El primer paso, como siempre, es cargar las librerías, Importaciones import os import pandas as pd import seaborn as sns import missingno as msno Comprobar el directorio de trabajo donde deben estar los csv que hemos descargado os.getcwd() Como queremos ver las gráficas en el propio notebook, añadimos: %matplotlib inline Cargamos los datos en un dataframe y echamos un vistazo a las cabeceras de las columnas: choco_data = pd.read_csv('flavors_of_cacao.csv') print(choco_data.columns) titanic_data = pd.read_csv('train.csv') print(titanic_data.columns) Vemos que los nombres de las columnas del primer dataset son demasiado largos, los vamos a acortar un poco. Figura 3: Nombres de columnas de ambos datasets También, echamos un vistazo a la información de contexto de los datos: Número de registros, significado de cada columna, escala de valoración etc. Para la valoración de chocolates, la podemos encontrar en este enlace. Figura 5: Imagen (parcial) de la información sobre el dataset flavors_of_cacao.csv La información sobre el dataset del Titanic la podemos ver en este otro enlace: Figura 6: Imagen (parcial) de la información sobre el dataset train.csv Modificación columnas Renombramos las columnas del dataset flavors usando columns. Con columns, cambiamos todas. Si queremos cambiar sólo una,es mejor usar la función rename. choco_data.columns = ['Company','Bar name','REF', 'Date','Cooa percent','C Location','Rating','Bean','Origin',] Para ver los 5 primeros registros: choco_data.head(5).T titanic_data.head(5) En el primero, observamos que la fila "Bean" aparece en blanco. ¿Faltarán valores? Figura 7: Primeros 5 valores del dataset flavours_of_cacao En este otro dataset observamos valores "NaN"="not a number", por tanto, si hay valores faltantes. Figura 8: Primeros 5 valores del dataset titanic_data.csv Detección de valores que faltan: "missing values" Vamos a tratar de identificar los valores que faltan de 5 formas distintas: Con la función isnull de pandas Con el método info de pandas Con un mapa de calor seaborn Con la librería missingno Con un gráfico de barras 1. Con la función isnull de pandas La función isnull de pandas, da como resultado "True" cuando falta un dato. Veamos qué ocurre al aplicarla a estos conjuntos de datos. choco_data .isnull() Figura 9: Resultado de aplicar isnull sobre flavours_of_cacao Nos llama la atención que, aparentemente, no faltan datos. Todos los valores, incluso en la columna Bean, son "False". En el otro dataset si podemos apreciar algunos valores "True". En la columna "Cabin" vemos unos cuantos. (Recordemos que en esta columna había valores "NaN"). titanic_data .isnull() Figura 10: Resultado (parcial) de aplicar isnull sobre titanic_data.csv 2. Con el método info de pandas Éste método nos da una información más resumida. En el resumen obtenido para el dataset, vemos que de 891 entradas, hay campos para los que el número de valores es menor. Por ejemplo, 204 para "Cabin", 714 para "Age", 889 para "Embarked". titanic_data.info(verbose=True,null_counts=True) Figura 11: Información resumida del dataset titanic_data Para el otro dataset: choco_data.info(verbose=True,null_counts=True) Nuevamente, parece que no faltan datos, ya que de 1795 entradas, hay 1795 valores no nulos para cada columna. Figura 12: Información resumida del dataset flavours_of_cacao.csv Está claro que con este dataset para algo raro, ya que los resultados no son consistentes. Antes de seguir probando métodos para ver qué pasa volvemos sobre nuestros pasos y abrimos con excel el fichero original. Enseguida vemos que en la columna correspondiente a "Bean" aparece el carácter "Â". Figura 12: Abrimos el csv en excel y vemos un carácter extraño Puede tratarse de un error de codificación. Si este mismo csv lo abrimos con el bloc de notas, vemos que, efectivamente, ese carácter está enmascarando un espacio en blanco, por tanto, datos que faltan. Figura 13: Al abrirlo en el bloc de notas, vemos que se trata de un espacio en blanco Para resolver este problema, podemos abrir el csv con el bloc de notas, sustituir ", ," por "NULL" y volver a cargar el fichero. Si volvemos a aplicar la función isnull, vemos que ahora sí que identifica correctamente los campos vacíos como nulos: BeanType True choco_data.isnull() Figura 14: Ahora la función isnull si detecta correctamente los valores que faltan 3. Con un mapa de calor seaborn Una vez "resuelto el misterio" del dataset del cacao, vamos a seguir viendo otras formas de detectar "missing values". En esta ocasión, vamos a usar los mapas de calor de seaborn, que, si recordamos, cargamos al principio, junto al resto de librerías. sns.heatmap(titanic_data.isnull(), cbar=False) Figura 15: Vemos cómo faltan datos en Age y Cabin Para el otro dataset: sns.heatmap(choco_data2.isnull(), cbar=False) Figura 16: En este caso los datos que faltan corresponden a la variable "Bean type" En este caso no es muy relevante, pero en ocasiones, puede ser importante saber si estos "missing values" están localizados en una parte determinada del dataset. O bien si hay alguna correlación entre los valores que faltan en una u otra variable. 4. Con la matriz de nulidad missingno Al igual que con seaborn, importamos la librería missingno al principio del todo. La matriz de nulidad msno.matrix los patrones de "completitud" de los datos. A simple vista, en el dataset del Titanic, vemos cómo prácticamente todas las variables tienen valores completos, salvo "Age" y, en mayor medida, "Cabin". La columna de la derecha resume de forma general el grado de "completitud" de los datos y señala las filas con mayor y menor número de "missing values" del conjunto de datos. Esta visualización funciona bien con un máximo de 50 variables etiquetadas. msno.matrix(titanic_data) Figura 17: Matriz de nulidad para el dataset del Titanic Para el dataset de clasificación de cacao, el resultado es bien diferente. msno.matrix(choco_data) Figura 18: Matriz de nulidad para el dataset del cacao También podemos visualizar los valores nulos por columnas con msno.bar. Por ejemplo, para los datos del dataset del cacao se aprecia claramente qué variable es la que tiene más valores que faltan: Bean Type. msno.bar(choco_data2) Figura 19: Valores nulos por columnas 5. Con un mapa de calor Por último, vamos a ver el mapa de calor de correlación de nulidad, que nos indica en qué medida la presencia o ausencia de una variable afecta a otra. Un valor cercano a -1 significa que si una variable aparece, es muy probable que la otra variable no aparezca Un valor cercano a 0 significa que no hay dependencia entre la aparición missing values de dos variables. Un valor cercano a 1 significa que si aparece una variable es muy probable que la otra esté presente. msno.heatmap(titanic_data) En este ejemplo podemos observar que la correlación entre valores que faltan para las distintas variables es prácticamente nula (valores cercanos a cero). Podría haber una ligera correlación positiva entre "Age"y "Cabin", y negativa entre "Cabin" y "Embarked". Pero, en este ejemplo, no es relevante. Figura 21: Mapa de calor de correlación de missing values Puedes encontrar el código completo en este gist. Una vez detectados los valores que faltan en un dataset, el siguiente paso es decidir qué hacer con ellos. Pero eso, lo dejamos para otro post. Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
19 de mayo de 2020
AI & Data
Python para todos: Diferencia entre método y función
Cuando damos nuestros primeros pasos en Python, nos encontramos con dos conceptos muy similares que nos pueden llevar a confusión: funciones y métodos. En este post, intentaremos aclarar esta duda de forma muy sencilla. Funciones en Python Como en otros lenguajes de programación, una función no es más que una porción o bloque de código reutilizable que se encarga de realizar una determinada tarea. Resulta muy cómodo trabajar con funciones, porque no es necesario reescribir ese código cada vez que nos enfrentamos a dicha tarea. Tan solo, llamar a la función. "Built-in" functions En Python hay funciones ya creadas (built-in functions), que pueden requerir o no parámetros, como por ejemplo, la función help(), que ofrece la ayuda del sistema sobre determinado comando, la función abs(), que devuelve el valor absoluto de un número etc... Figura 1: ejemplo de uso de la función help() Figura 2: ejemplo de uso de la función abs() Crear funciones en Python Si no existe ya la función que necesitamos, resulta muy sencillo crearla en Python. Primero la declaramos con def (nombre función), y luego definimos su contenido (código indentado dentro de la función). Por ejemplo, podemos crear una función que sume dos números. Después, hacemos una llamada a la función, facilitándole los valores de los dos parámetros: Figura 3: ejemplo de definición de la función sumar() Hasta aquí, todo muy claro. Pasamos a introducir el segundo concepto. Veremos que un método, es algo parecido a una función, una porción de código que realiza determinada tarea, pero no es exactamente lo mismo. Métodos en Python Python es un lenguaje multiparadigma, que soporta programación orientada a objetos (POO), siendo las clases y los objetos sus principales bloques de desarrollo. Las clases son los modelos sobre los cuáles se construirán nuestros objetos, mientras que los objetos son instancias de esa clase. Por ejemplo, vamos a crear la clase "Persona", con dos atributos, "nombre" y "edad". A continuación, creamos un objeto de esa clase: Pablo, 30 años. Figura 4: ejemplo de definición de una clase y un objeto Los métodos son acciones o funciones que puede realizar un objeto. Al igual que Python ofrece una serie de funciones "built-in", también pone a nuestra disposición un conjunto de métodos ya creados. Estos métodos dependen del tipo de objeto con el que estemos trabajando. Los objetos en Python pueden ser de distintos tipos: cadena de caracteres (string) booleanos (booleans) números enteros (integer) números decimales (float) listas (list) Por ejemplo, para los objetos tipo cadena de caracteres, tenemos métodos como : capitalize(), que convierte en mayúscula la primera letra de la cadena index(), que busca determinado carácter en la cadena y devuelve su posición split(), que divide la cadena según el separador que indiquemos y la convierte en un lista title(), que convierte el primer carácter de cada palabra en mayúsculas etc También hay métodos ya creados para otro tipo de objetos, como listas, diccionarios, tuplas, sets o incluso ficheros. Si no nos sirve ninguno para nuestro objetivo, siempre podemos crearlo nosotros mismos, como ocurre con las funciones. Para acceder a los métodos y propiedades de un objeto, Python utiliza una sintaxis muy simple: el nombre del objeto, seguido de punto y la propiedad o método al cuál se desea acceder. Por ejemplo, vamos a probar los métodos title() y count() sobre el string "primavera": Figura 5: ejemplo de uso de métodos de string Métodos vs funciones ¿Cuál es entonces la diferencia entre métodos y funciones?. La principal diferencia es que un método es parte de una clase, es decir, es parte de la funcionalidad que le damos a un objeto. Por tanto, siempre va a estar asociado a un objeto. Sin embargo, las funciones en Python, están definidas por si mismas y no pertenecen a ninguna clase. Al ser intrínsecos al objeto en sí, cada objeto tiene sus propios métodos. Incluso aunque se llamen igual, pueden tener un significado distinto. Por ejemplo, el método index está disponible para los objetos string y list. Sobre una cadena de caracteres, da el índice de la letra en esa palabra, sobre una lista, da la posición de un elemento en una lista
13 de mayo de 2020
AI & Data
Redes neuronales contra el fraude en alimentación
¿Sabías que la inteligencia artificial, y en particular, las redes neuronales, nos pueden ayudar a detectar fraudes alimentarios? Es un tema importante ya que, según la Red de fraude alimentario de la Comisión Europea, las alertas por la falsificación de alimentos crecen año a año. Un equipo de investigadores de la UCM liderado por el químico José Torrecilla ha ideado un método que permite detectar de forma ágil y económica uno de los fraudes más habituales: el del arroz. Producción de arroz en el mundo Según la FAO, el arroz ocupa el tercer lugar en la producción mundial de cereales y España es el segundo productor europeo de este cereal. El fraude del arroz, por suerte, no pone en riesgo la salud de los consumidores, pero sí su bolsillo. Tampoco es que nadie se vaya a arruinar por comprar arroz. Pero si un consumidor quiere darse el capricho de comprar variedades de mayor calidad/precio, como el basmati, quiere recibir el producto por el que está pagando. Hasta ahora, para detectar este tipo de fraudes había que recurrir a complejos y costosos estudios de ADN. Sin embargo, gracias a la inteligencia artificial, con una simple foto se puede detectar si la variedad de arroz es la correcta. La inteligencia artificial revoluciona los controles de calidad alimentarios El equipo de Torrecilla generó una base de 27.000 imágenes de puñados de granos y harinas a partir de 5 variedades distintas de arroz, una de ellas con denominación de origen. Después, entrenó con ellas una red neuronal convolucional como las que se usan en sistemas de reconocimiento facial o de diagnóstico por imagen de tumores. El algoritmo aprendió cómo determinado pixel o combinación de colores eran característicos de una u otra variedad, siendo así capaz de distinguirlas. El desarrollo del modelo ha sido lento, pero una vez entrenado, es capaz de dar una respuesta en décimas de segundo. Así, de una forma rápida, cómoda y barata, la inteligencia artificial está revolucionando las técnicas de control de calidad y se convierte en una gran aliada contra el fraude alimentario.
11 de mayo de 2020
Conectividad e IoT
Cloud, IoT y machine learning en tu ascensor
Seguro que cada día viajas en ascensor unas cuantas veces: en tu casa, en el metro, en el trabajo etc. Desde que, en 1857, el inventor neoyorquino Elisha Otis creó el primer ascensor, estos dispositivos, claves para la expansión vertical de las ciudades y el desarrollo de los rascacielos, han sufrido una gran evolución. Sin embargo, al estar tan presentes en nuestro día, muchas veces no somos conscientes de cómo gracias al IoT, los algoritmos machine learning y el almacenamiento de datos en la nube, nuestros ascensores ahora son ascensores inteligentes. Primeros años: operados por ascensoristas Igual que hablamos de “profesiones del futuro”, podemos hablar de “profesiones desaparecidas”. Y una de ellas era la de “ascensorista”. Los primeros ascensores eran “pilotados” por operadores humanos. En la década de 1950, los interruptores eléctricos tomaron en control. Como curiosidad, algunos edificios históricos como la Smith Tower de Seattle mantuvieron a estos profesionales hasta 2017. Figura 1: Ascensoristas de la Smith Tower ( Joe Mabel, wikimedia) Los ingenieros tuvieron que diseñar reglas para indicar al ascensor a qué planta ir en qué momento. Lo más sencillo, era definir un recorrido de paradas fijas a horas determinadas. Algo parecido a coger el autobús, lo cual, evidentemente, era muy poco práctico e ineficiente. Empezamos a hablar de algoritmos En los años 60, los ascensores incorporaron botones de llamada. Si querías coger el ascensor, no tenías más que pulsar el botón de llamada, y el ascensor paraba en esa planta para recogerte. El problema entonces era gestionar las llamadas simultáneas. ¿Dónde hacer la siguiente parada? ¿En la planta más próxima o en aquella desde la que se recibió la primera llamada? ¿Qué priorizar? ¿un servicio rápido o menor consumo energético? Surgieron los primeros algoritmos. Uno de los primeros, conocido como “algoritmo de control colectivo” o simplemente el “algoritmo del ascensor”, se basaba en dos reglas muy sencillas: Mientras haya alguien dentro o esperando el ascensor que quiera ir en el sentido actual (subida o bajada), siga en ese sentido. Si no hay más peticiones en el sentido actual, y hay una petición en sentido contrario, cambie de sentido. De lo contrario, deténgase y espere una llamada. Estos son los típicos ascensores que tienen dos botones en el exterior: de subida y de bajada. Su sencillez y razonable eficiencia, hace que todavía sean muy habituales, sobre todo en edificios residenciales. Figura 2: Sistema de llamada de 2 botones Sin embargo, en grandes edificios, con un gran número de ascensores, este sistema era muy ineficiente. Los ingenieros idearon distintas estrategias como comunicar los ascensores entre sí (si se recibe una llamada desde la planta baja y el ascensor 1 está subiendo, atiende la llamada el ascensor 2); o asignar grupos de ascensores a plantas determinadas. O la estrategia de “aparcamiento” que envía a los ascensores libres a una planta determinada, por ejemplo, la baja, a esperar pasajeros. Los avances computacionales en los años 70 permitieron crear simulaciones de software para poner prueba la eficiencia de este tipo de estrategias. Algunos de los algoritmos más utilizados fueron: Ascensor más cercano (Nearest car), optimiza por distiancia Priorización de llamadas coincidentes Estimación del tiempo de llegada (Estimated time of arrival), optimiza por tiempo de trayecto El algoritmo de control de destinos (Destination dispatch) En los rascacielos de los años 90 se impuso el algoritmo de “control de destinos” (destination dispatch). En los sistemas de control basados en el destino (también conocidos como asignación de llamadas), los pasajeros indican el piso de destino en el rellano y el sistema responde indicando qué ascensor debe utilizarse. Este modelo fue creado a principios de los años 60 por el ingeniero Port de Sydney, pero no fue posible implementarlo de forma eficiente hasta el desarrollo del microprocesador. Figura 3: Panel exterior de selección de destino ( fuente) Cuando se usa este algoritmo, el proceso de optimización dará lugar a que los pasajeros que viajen a los mismos pisos sean agrupados. Al hacer menos paradas, el viaje de ida y vuelta de los ascensores es más rápido. Esto significa que pueden mover más personas, en otras palabras, tienen una mayor "capacidad de manejo". Figura 3: Ejemplo de funcionamiento del algoritmo "control de destinos" (con permiso) Primeras aplicaciones del aprendizaje automático en ascensores Con todas estas posibles estrategias, el problema principal de los ingenieros pasó a ser qué algoritmo elegir. Pero, nuevamente, los avances en computación permitieron aplicar técnicas de machine learning para el desarrollo de una nueva herramienta: el control de grupo (elevator group control) El control de grupo de ascensores es el algoritmo que se utiliza para asignar/adjudicar las solicitudes de parada para las distintas cabinas del grupo de ascensores minimizando una determinada función de coste. A medida que el controlador de grupo recibe más información, puede tomar mejores decisiones. Las informaciones que pueden estar disponibles (además de las nuevas llamadas recibidas a asignar) son, por orden de importancia: Posición de todas las cabinas Sentido de movimiento de cada una (subida o bajada) Patrón de tráfico (pico de subida/bajada, valle) Número de pasajeros en cada cabina Destino de los pasajeros dentro de la cabina Llamadas asignadas a cada cabina Las funciones de coste que busca minimizar el algoritmo pueden ser: Duración del trayecto Tiempo de espera del usuario Acumulación de ascensores en una zona concreta del edificio (bunching) El problema es que, según sea el tipo de tráfico, unos algoritmos funcionan mejor que otros a la hora de minimizar estas funciones de coste. Ventajas del algoritmo control de grupos No obstante, el control de grupos permite reducir tiempos de espera, tiempos de viaje y consumo energético. A partir de los patrones de uso aprendidos por el sistema, por ejemplo, cuáles son las horas pico/valle, (¿entrada/salida, hora de comer?), los pisos de mayor preferencia (¿cafetería?) etc, éste selecciona de forma automática que cabina es más adecuada para atender cada petición de servicio. Con este sistema, también se pueden asignar más ascensores a los pisos congestionados de manera flexible, o detectar que un ascensor ya está lleno y no asignarle más paradas. También se maneja la prioridad entre la eficiencia de operatividad en las horas pico y la eficiencia energética en las horas con menos afluencia de usuarios. Ascensores sensorizados y conectados a la nube A finales de 2015, ThyssenKrupp lanzó lo que llamó "la primera solución de mantenimiento predictivo en tiempo real basada en la nube" basada en la nube Microsoft Azure. En 2017 se sumaron Kone, con su "Servicio conectado 24/7", y Schindler, con "Schindler Ahead". El último de "los grandes" en sumarse fue Otis, que lanzó su "ascensor conectado" en 2018. En 2019 Telefónica y Schindler anunciaron su alianza de conectividad digital, por la cual Telefónica se convirtió en el socio de IoT y de conectividad de red para la oferta digital de ascensores y escaleras mecánicas inteligentes Schindler Ahead. Dotar a los ascensores y escaleras mecánicas de dispositivos de IO conectados a la nube y aplicar técnicas de machine learning a las lecturas de los dispositivos permite predecir cuándo puede producirse una avería y enviar a los técnicos a repararla antes de que se interrumpa el servicio. Datos recogidos por sensores en las puertas, que dan información sobre su funcionamiento (¿pueden detectarse pequeños fallos en algún contacto, ligeros retrasos, se abren las puertas más de lo normal...?), del sistema de control que despacha las llamadas, de la funcionalidad de los botones (¿falla algún botón?), del comportamiento de parada y aceleración, la posición y el movimiento en el eje (¿alguna molesta vibración horizontal debida a un fuerte viento o movimiento sísmico?), el tiempo que se tarda en llegar, el volumen de uso etc.. Toda esa información se envía a la nube, donde los algoritmos de machine learning detectan comportamientos anómalos que alertan sobre posibles averías futuras. También se pueden instalan sensores que controlan la humedad, la temperatura o las vibraciones. Este tipo de sensores permiten obtener insights más complejos, en los que el fallo se deba a una combinación particular de circunstancias. Por ejemplo, "Las puertas están tardando más en cerrarse, pero sólo ocurre en días húmedos y se asocia con la vibración en otra parte del ascensor", que permiten a los ingenieros detectar rápidamente el origen de problemas persistentes. En definitiva, la combinación de tecnologías IoT, Cloud y Machine Learning, permite que los ascensores no sólo sean más cómodos y eficientes, sino también más seguros. Estas importantes mejoras en el transporte vertical han dado un gran impulso a la construcción de grandes rascacielos. Algunos datos curiosos para terminar Los ascensores pueden alcanzar grandes alturas. Un ejemplo de esto son los ascensores del Burj Khalifa, en Dubai, que recorren 163 pisos; un increíble total de 828 metros. También pueden alcanzar velocidades considerables, siempre respetando el confort de las personas que viajan en ellos. Los ascensores más rápidos del mundo se encuentran en el Shangai Tower en China,y alcanzan los 20.5 m/s, lo que se traduce en 74 km/h. Esta velocidad es 13 veces mayor a la que puede alcanzar un ascensor en cualquier edificio residencial. En Madrid, la Torre de Cristal con 249 metros, es el edificio mas alto de España, y cuenta con 27 ascensores para dar servicio a sus 50 pisos. Otro dato curioso sobre ascensores, es que España el país con mayor concentración de ascensores del mundo, como podemos ver en este análisis elaborado por Quartz en 2014. Referencias: The hidden science of elevantors Introduction to Elevator Group Control Understanding the benefits and limitations of destination dispatch Impact of Machine Learning on Elevator Control Strategies Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
7 de mayo de 2020
AI & Data
Humor computacional: ¿Puede la Inteligencia Artificial hacernos reír?
La inteligencia artificial permite que una computadora realice todo tipo de tareas no sólo “como lo haría un humano”, sino incluso mejor: de forma más rápida y eficiente. Pero algunas áreas de la actividad humana son mucho más complejas de emular de forma artificial. Hoy vamos a hablar de una de ellas: el humor. ¿Qué es el humor computacional? El humor computacional es una rama de la lingüística computacional y la inteligencia artificial que utiliza las computadoras en la investigación del humor. Gracias al desarrollo del Procesamiento de Lenguaje Natural (PLN), las máquinas pueden comunicarse con las personas en su propio lenguaje, aprenden a hablar con nosotros como si fueran otra persona. Esto nos permite aplicaciones tan interesantes como los sistemas de traducción automática, conocer las opiniones o sentimientos de las personas a través de los mensajes que publican en redes sociales, o crear bots que estén a disposición de nuestros clientes 24*7. Por tanto, ya sabemos cómo enseñar a las máquinas a hablar con las personas, pero ahora queremos ir un poco más allá: conseguir que sean capaces de hacernos reír. Este es precisamente el objetivo del humor computacional. ¿Qué es la risa? A las personas, nos gusta reír. La risa es una expresión emocional no verbal, que, hay que reconocerlo, nos hace emitir ruidos bastante extraños. Todos tenemos algún amigo o amiga cuya escandalosa risa nos arrastra irremediablemente a reír también. Por otra parte, la risa como expresión no verbal asociada a una emoción básica, tiene carácter universal. Es identificada como tal incluso si la persona que se ríe pertenece a una cultura completamente ajena a la nuestra. Sea cual sea su origen, lo cierto es que la risa no sólo nos hace sentir mejor, gracias a la liberación de endorfinas, sino que tiene otros muchos efectos físicos beneficiosos para nosotros. Desde la reducción de los niveles de estrés y ansiedad, hasta los de colesterol o presión sanguínea. Los humanos necesitamos reírnos, nos sienta bien. De hecho, si lo pensamos, siempre ha existido una “industria” dedicada a hacernos reír. Desde los bufones medievales hasta los memes de hoy en día. Pero ¿qué nos hace reír? Hacernos reír no es tan fácil como parece, aunque, en ocasiones, casi cualquier cosa es capaz de disparar nuestras carcajadas. Pero si queremos entrenar una inteligencia artificial para que nos haga reír, tendremos que definir de alguna manera qué es el humor. En su "Psicología del Humor" , Willibald Ruch, catedrático de Psicología de la Universidad de Zurich, propone clasificar los tipos de humor en tres grupos: Humor absurdo Humor basado en el efecto sorpresa Humor ofensivo o tabú En realidad, todos ellos tienen que ver con el factor sorpresa o resolver una disonancia cognitiva, como ocurre con los juegos de palabras, dobles sentidos etc. ¿Por qué nos interesa una IA que nos haga reír? No se trata de que Siri o Alexa, por ejemplo, sean capaces de contarnos un chiste cuando se lo pidamos. (Por cierto, que sería interesante investigar qué puesto ocupa la petición "Siri, cuéntame un chiste", entre las más solicitadas). Por supuesto que nos van a contar algún chiste, si nos hará gracia o no, ya es cosa nuestra. La cuestión es que, un bot capaz de interactuar con los usuarios de forma natural, de mostrar empatía a través de la ironía o el humor, va a ser una poderosa herramienta de fidelización para cualquier negocio. Si lo pensamos, es como un buen comercial. No sólo tiene que conocer a fondo el producto, sino ser capaz de conectar con cliente, hacerle sentir que está ahí para ayudarle, para ofrecerle la mejor solución a su problema o demanda. Y, sin duda, el humor es una de las mejores formas de conectar con otras personas. Algoritmos del humor ¿Se pueden diseñar algoritmos que creen un chiste?¿o que sean capaces de entenderlo? Podemos entrenar un sistema de inteligencia artificial para que aprenda a manejar las reglas gramaticales y sintácticas de un idioma concreto. Podemos incluso, hacer que un bot identifique el uso de determinadas palabras, como un tono de conversación más informal, y adapte el tono de sus respuestas al mismo registro, haciéndolas más naturales y espontáneas. Podemos entrenar algoritmos para crear chistes, o juegos de palabras, tanto fonéticos, como en este ejemplo tomado de twitter: Como semánticos, como este otro ejemplo: En lo ejemplos, sobre todo en el primero, es fácil ver la importancia que tienen las ambigüedades, excepciones, matices y, sobre todo el contexto. Si no conoces la canción ¿Qué pasará?, es imposible entender la broma. Así, igual que la inteligencia artificial es capaz de ganar al campeón del mundo de ajedrez o de Go, sin saber realmente lo que es jugar; un bot entrenado con bromas y comentarios graciosos, puede acertar y crear un chiste divertido dando respuestas absurdas, o probando con variaciones fonéticas. O no acertar en absoluto. Pero al igual que una IA nunca escribirá una obra maestra, difícilmente superará el ingenio de los mejores humoristas humanos. ¿Test de Turing? El hecho de que el humor, al menos el bueno, dependa tanto de aspectos tan complejos de descifrar para un sistema automático como son los matices y encontrar el momento adecuado, puede ser clave en los futuros test de Turing. Si recordamos, estos test suponen la prueba definitiva de la inteligencia de las máquinas, que consiste en ver si un evaluador independiente puede decir si está interactuando con una persona o una computadora. Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
5 de mayo de 2020
AI & Data
Almacenamiento en ADN: todos los datos de internet cabrán en una caja de zapatos
Según el informe Top 10 emerging technologies 2019 del World Economic Forum, “se estima que para 2020 se crearán 1,7 megabytes de datos por segundo y persona en todo el mundo”. Para una población mundial de unos 7.800 millones de habitantes, esto se traduce en unos 418 zettabytes en un solo año (418.000 millones de información en un disco duro de un terabyte). En este post veremos cómo el almacenamiento de datos en ADN puede ser la solución del futuro. Tres problemas: volumen, durabilidad, consumo energético Es evidente que el crecimiento constante del volumen de datos que manejamos, va a suponer, a corto plazo, un problema. Pero no es el único. A pesar de los grandes avances en tecnologías de almacenamiento de datos, que han permitido la evolución desde los dispositivos magnéticos, a los ópticos, hasta llegar a los chips de memoria flash, todos estos dispositivos tienen fecha de caducidad. En el caso de los discos magnéticos, la durabilidad está relacionada con el desgaste mecánico. En los discos flash (SSD o de estado sólido), por su parte, tiene que ver con la degradación de los semiconductores. Aunque los más optimistas estiman esta posible vida útil en unos 100 años, los informes de empresas reales que ofrecen servicios cloud, indican que, en los 4 primeros años de uso, un 20% de los discos falla (aunque los datos son de 2013 y habrán mejorado, sigue siendo un porcentaje relevante). El otro factor a tener en cuenta es el crecimiento paralelo en el consumo energético de los centros de datos. Por ello, las empresas que ofrecen "servicios cloud" buscan alternativas que les permitan ofrecer sus servicios de forma más respetuosa con el medio ambiente (“centros de datos verdes”). AI OF THINGS ¿Contamina internet?: Centros de datos "verdes" 18 de septiembre de 2019 Líneas de investigación Como en tantas otras ocasiones, la naturaleza es la mejor inspiración para los avances científicos y tecnológicos. Así, las últimas tendencias en almacenamiento de datos se basan en la forma en que se almacena la información en los seres vivos: el ADN. El ADN (ácido desoxirribonucleico) es una molécula compleja que se encuentra dentro de cada célula de nuestro cuerpo y contiene todas las instrucciones necesarias para crear y mantener la vida. Los cuatro componentes básicos del ADN son los nucleótidos: adenina (A), timina (T), guanina (G) y citosina (C), y se unen de un modo muy concreto, A con T, C con G. Para entender qué es el ADN, imaginemos dos cadenas que se unen formando una doble hélice. Muchos, miles, millones de adeninas, timinas, guaninas y citosinas se unen formando una secuencia que sigue un orden determinado como por ejemplo: AAATTCGAGTCAATTGCCTATCCTCGAGTCAACCTATCCA. Figura 1: Animación de la doble hélice del ADN ( fuente) Esa secuencia de sustancias químicas compone nuestro código genético. ¿Cómo almacenar datos en ADN? La idea principal es representar los datos traduciendo del código binario de las máquinas (0s y 1s) al código genético expresado como combinación de nucleótidos (As, Ts, Cs y Gs). Por ejemplo, 00=A, 01=G, 10=C, 11=T. Este código genético se sintetiza en una molécula real , y el proceso de "codificación" se completa. No es complicado, ya que, gracias a los últimos avances en genética y biotecnología, la secuenciación (lectura), síntesis (escritura) y copia del ADN es una tarea habitual. La recuperación de datos es un poco más compleja. Deben darse dos pasos: el "procesamiento" y la "decodificación". El PCR (reacción en cadena de la polimerasa )es un protocolo de laboratorio que se utiliza para duplicar ADN. De forma parecida a como funciona la memoria RAM, el PCR se concentra en una sección específica de la secuencia, que luego se replica, se secuencia, se decodifica y ajusta los errores para recuperar los datos originales. Al trabajar de forma selectiva sobre una secuencia concreta y no sobre todo el conjunto de datos, el proceso puede llevarse a cabo de forma eficiente. La intensa investigación que se está llevando a cabo en este campo ha permitido mejorar las técnicas de lectura y escritura de ADN, e incrementar la longitud de las hebras de ADN, incrementando de forma paralela la cantidad de datos que se puede almacenar en ADN. Un ejemplo interesante de cómo se pueden almacenar de forma estable datos en el genoma de células vivas es este estudio publicado en Nature, donde codifican una película digital en el genoma de una población de bacterias vivas. Figura 2: Proceso de codificación de un GIF en bacterias (con permiso del autor Jeff Nivala) ¿Es el ADN la solución? El almacenamiento de datos en ADN es una solución muy interesante porque da respuesta a los tres problemas mencionados. El ADN es hiperdenso, fácil de replicar y estable durante milenios. Su altísima densidad permite almacenar enormes cantidades de datos en volúmenes muy pequeños. Por ejemplo, una simple bacteria de Escherichia coli, tiene una densidad de almacenamiento de unos 1019 bits por centímetro cúbico. Por otra parte, se ha podido recuperar ADN en perfectas condiciones de animales extintos hace más de 500.000 años. Por tanto, no habrá que preocuparse en absoluto por la durabilidad del almacenamiento. Y, en tercer lugar, las técnicas de trabajo con el ADN son procesos conocidos y habituales en la investigación biotecnológica. No sólo no revisten dificultad, sino que también son procesos de bajo consumo energético. ¿Qué más podemos pedir? Un futuro no tan lejano En 2019, investigadores de Microsoft y de la Universidad de Washington mostraron elprimer sistema totalmente automatizado para almacenar y recuperar datos en el ADN artificial - un paso clave para trasladar la tecnología del laboratorio de investigación a los centros de datos comerciales. Figura 3: Demostración de la automatización integral del almacenamiento de datos de ADN (con permiso del autor Luis Ceze) En palabras de Karin Strauss, investigadora en Microsoft, usando las técnicas de almacenamiento de datos en ADN, sería posible almacenar toda la información accesible en internet, en una “caja de zapatos”. “Think of compressing all the information on the accessible Internet into a shoebox,” says Karin Strauss, a principal researcher at Microsoft. “With DNA data storage, that’s possible.” Karin Strauss, trabaja junto con Luis Ceze, profesor de Ingeniería y Ciencias de la Computación de la Universidad de Washington, en el Laboratorio de Sistemas de Información Molecular (MISL) desarrollando métodos para el almacenamiento de datos a largo plazo utilizando ADN sintético. Usando moléculas de ADN sintético, el equipo ha almacenado con éxito más de un gigabyte de información en distintos formatos como por ejemplo, los 100 mejores libros del Proyecto Gutenberg, vídeos en alta definición, o el proyecto #MemoriesInDNA. En el siguiente video (en inglés) los investigadores responsables del proyecto explican en qué consiste. https://www.youtube.com/watch?time_continue=3&v=60Gi5lqL-dA&feature=emb_logo Este equipo considera que si esta tecnología sigue avanzando al ritmo actual, el almacenamiento en ADN puede estar al servicio del público en general en tan solo una década. Reto Sin embargo, todavía queda un desafío importante que superar. Aunque ya existen empresas como Twist Bioscience, que colabora con el MISL proporcionándole ADN "a medida", el coste actual ronda los 1000$ por megabyte almacenado. Demasiado caro para poder considerarlo a gran escala. El objetivo de Twist es llegar a los $100 per terabyte. Habrá que estar atentos a los avances en este campo en los próximos años. Shipman, Seth L et al. “CRISPR-Cas encoding of a digital movie into the genomes of a population of living bacteria.” Nature vol. 547,7663 (2017): 345-349. doi:10.1038/nature23017 Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
24 de abril de 2020
AI & Data
La inteligencia colectiva, clave para superar la epidemia
En LUCA hablamos muchas veces de la Inteligencia Artificial, de la Inteligencia Cognitiva y de sus aplicaciones. Pero hoy vamos a hablar de otra inteligencia que va a ser una nuestras armas más poderosas para luchar contra la pandemia: la Inteligencia Colectiva Ya hemos visto cómo la IA fue capaz de predecir el brote y expansión del coronavirus a comienzos de este año. Hace pocos días, se hizo público en Kaggle el dataset CORD-19 para que los expertos en IA puedan ayudar a la comunidad médica a buscar respuestas a esta difícil situación. Los ciudadanos de a pie también aportamos nuestro granito de arena en esta lucha de una manera que es fácil, pero a la vez muy difícil: quedándonos en casa. Es fácil, porque no tenemos que hacer mucho más, pero también difícil, porque somos series sociales y sociables. "Efectos colaterales" del aislamiento social Y se sabe, desde hace mucho tiempo, que las cuarentenas, el aislamiento en general, puede provocarnos depresión, tristeza, ansiedad, e incluso ira.Los seres humanos somos muy vulnerables a la patología mental si perdemos tres de nuestros rasgos más característicos: la capacidad para decidir el sentimiento de comunidad y conexión con otros y la realización, sentir que avanzamos, que hacemos algo útil en nuestra vida. El aislamiento social, la sensación de vulnerabilidad o de pérdida de control, se traduce en esos extraños comportamientos que hemos podido observar estos días: el acaparamiento de papel higiénico, o los accesos de ira frente a los que no cumplen las norma, o a los que sí. Estantes vacíos en los supermercados El miedo Y luego está el miedo. Miedo a contraer el virus, a que lo hagan nuestros familiares o amigos, a las consecuencias de la enfermedad, a las consecuencias económicas. No podemos evitar el miedo, porque estamos programados biológicamente para sentirlo en situaciones de peligro. El miedo es bueno cuando nos ayuda a concentrar nuestra atención y nuestros esfuerzos en superar esa situación de peligro. Pero si es demasiado intenso, nos paraliza, nos impide pensar con claridad y reaccionar de forma adecuada. Pero hay algo que nos provoca mucha más desazón que un peligro conocido: la ambigüedad, la incertidumbre. Por ello, para reducir el miedo, lo mejor es cambiar esta ambigüedad e incertidumbre por información autorizada, contrastada y veraz sobre el peligro real. El cerebro humano tiene capacidad de soportar la adversidad y crear resiliencia. Cómo superarlos Por tanto, disponer de información clara y constante por parte de las autoridades va a ser clave. Pero también, vamos a ver cómo la Inteligencia Colectiva nos ayuda a superar día a día los “efectos secundarios” de esta tan necesaria reclusión. Redes comunitarias, aplicaciones de mensajería por proximidad como Nextdoor, carteles en edificios ofreciendo ayuda, los recursos on y offline refuerzan los lazos que nos unen como comunidad. El mismo conocimiento social que llena la red de memes graciosos sobre el papel higiénico, se manifiesta como inteligencia colectiva con nuestros grupos de confianza en Whatsapp que filtran o matizan las muchas fake news que circulan en redes. Ya hemos visto cómo difundir información que genere ambigüedades e incertezas produce más miedo que difundir la que genere seguridades, aunque no sea la que más nos gustaría oír. Algunos ejemplos prácticos Mantenernos activos, con objetivos vitales, del tipo que sean, resulta imprescindible. Es importante mantener rutinas saludables, hacer ejercicio, hablar con los amigos, arreglar cosas en casa, pintar, aprender algo nuevo, cocinar con gusto y calma, jugar, charlar. Vemos como, en las redes, la inteligencia colectiva se convierte en un tsunami de creatividad que nos aporta ideas, nos entretiene, nos acompaña, nos hace reír... Vemos así cómo empatía y la solidaridad pueden ser también uno de los principales acicates para ganar resiliencia en la adversidad y volver a recuperar la normalidad. Meme sobre los efectos de la cuarentena En palabras de Dolors Reig, “Ser sociables, poder ponerlo en práctica de forma abundante en esta sociedad aumentada gracias a las TIC, nos hace más fuertes, más unidos cuando volvemos a estar juntos, en los nuevos espacios públicos, en las nuevas ágoras de internet.” Cuando la tormenta termine El cómo salgamos de esta tormenta, dependerá del impacto que haya tenido en nuestro entorno más cercano: aliviados, tristes, enfadados... pero seguro que distintos, y, probablemente, un poco más sabios. «…y una vez que la tormenta termine, no recordarás como lo lograste, como sobreviviste. Ni siquiera estarás seguro que la tormenta ha terminado realmente. Pero una cosa si es segura, cuando salgas de esa tormenta, no serás la misma persona que entró en ella. De eso trata esta tormenta». Haruki Murakami Referencias: Frente al coronavirus: información contrastada y veraz, aunque nos duela Efectos psicológicos del aislamiento y remedios para combatirlos Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
13 de abril de 2020
AI & Data
Machine Learning, satélites y drones contra “plagas bíblicas”
Los datos y los "insights" que podemos extraer de ellos gracias a la inteligencia artificial, son herramientas clave en la lucha contra algunos de los problemas más graves que tiene que enfrentar la Humanidad. Lo hemos visto estos días difíciles en los que el COVID-19 ha infectado a más de 534.000 personas en 188 países del mundo (datos del 27/3/20). Pero vamos a ver que también nos pueden ayudar a combatir un grave problema que nos viene azotando desde la antigüedad: las plagas de langostas. Un problema desde la antigüedad En el Antiguo Testamento, la plaga de langostas era una de las ocho “plagas bíblicas” que Jehová envió para “ablandar el corazón del faraón” y que permitiera al pueblo elegido, dirigido por Moisés, huir de la esclavitud en Egipto. Hay muchas teorías que intentan explicar si las plagas bíblicas están basados en hechos reales o no. Pero, sin duda, la plaga de langostas es, de todas ellas, la más sencilla de explicar. Por dos motivos muy sencillos. El primero, porque es sabido que, aunque este tipo de insectos suele actuar de forma individual, hay épocas en su vida en las que tienden a unirse en grupos gigantescos. El segundo y principal, porque estas plagas han seguido apareciendo de forma recurrente durante siglos, afectando amplias zonas de África y otros países. La última plaga de langostas en África, entre los años 2003 y 2004, abarcó dos o tres generaciones de insectos, llegó a veintitrés países africanos, y tardó dos años en ser controlada. El problema hoy Aunque la crisis del COVID19 ha relegado a un segundo lugar las noticias referentes a este tema, extensas zonas África oriental y el Yemen, así como en los Estados del Golfo, el Irán, el Pakistán y la India se están enfrentando a la peor plaga de langostas (Schistocerca gregaria) de los últimos 70 años. Las condiciones meteorológicas y climáticas inusuales, incluidas las lluvias generalizadas y fuertes desde octubre de 2019, están detrás de este nuevo brote. La langosta del desierto es la plaga migratoria más peligrosa del mundo. Según datos de la FAO, un enjambre de langostas de 1 kilómetro cuadrado puede devorar la misma cantidad de alimentos en un día que 35 mil personas. Por ello, su reciente reaparición supone una grave amenaza para la seguridad alimentaria y los medios de subsistencia en muchos países son economías, ya de por sí, extremadamente frágiles. Figura 1: Mapa de distribución plaga (Observatorio de langostas de la FAO) ¿Cómo combatirlo? Las estrategias más eficaces contra las plagas de langostas, se basan en la combinación de armas biológicas, como la fumigación aérea y terrestre, y armas tecnológicas, como el uso de drones, satélites y técnicas de machine learning para el control de los enjambres Armas biológicas Hasta mediados del siglo XX no se comprendió que el insecto solitario de color marrón claro que vive en el desierto es de la misma especie que las langostas rojas y amarillas de las plagas. Ya conocidas sus características biológicas, se empezó a usar la fumigación aérea para luchar contra esta plaga. Sin embargo, el uso de pesticidas a gran escala también suponía un riesgo para la salud humana y el medio ambiente. Figura 2: Ciclo de vida de las langostas (Ministerio de Agricultura de Uganda) Por ello, se han llevado a cabo diferentes investigaciones en pesticidas biológicos, que han supuesto importantes avances. Por poner algunos ejemplos: El Phenylacetonitrilo -o PAN es una feromona que, con menos de 10 milímetros por hectárea, hace que los insectos se disgreguen y vuelvan a un comportamiento solitario. Green Muscle ® es un biopesticida cuyo principio activo son las esporas del hongo natural Metarhizium anisopliae varacridum. Este hongo germina en la piel de las langostas jóvenes, perfora su dermatoesqueleto, y destruye sus tejidos desde dentro. Se utiliza con éxito en Australia, pero presenta algunos problemas de usabilidad y coste que hasta ahora han limitado su uso en otras áreas. Los Reguladores del Crecimiento de Insectos (IGR), que regulan la habilidad de los insectos jóvenes para mudar de piel y crecer y carecen de efectos tóxicos sobre los vertebrados. Son efectivos durante varias semanas después de su aplicación y se utilizan en los denominados tratamientos de “barrera”, que se aplican en forma perpendicular a la dirección de marcha de los insectos. Pero para que estas “armas biológicas” sean efectivas, es fundamente hacer una monitorización continua de distintos parámetros en las posibles zonas de cría, y un seguimiento de los enjambres. A partir de estos datos, se crean modelos de machine learning que permiten la detección temprana de los brotes, clave para luchar contra esta plaga y minimizar su impacto sobre la población y el medio ambiente. Armas tecnológicas: Machine learning, drones y satélites Uno de los principales problemas en la obtención de datos fiables sobre el terreno es que las zonas de cría de las langostas se encuentran en los lugares más remotos y hostiles del mundo. Por ello, el uso de satélites, aviones o drones de reconocimiento, puede ser de gran ayuda. Captación de datos El eLocust2 es un dispositivo desarrollado por la Agencia Espacial Francesa que, en tan solo unos minutos, envía información sobre condiciones ambientales y datos vitales de la langosta a los centros nacionales de lucha contra la plaga en los países afectados. Modelado de los datos Existen distintos modelos de predicción de brotes basados en machine learning. Los primeros usaban como variables predictoras datos sobre precipitaciones o el índice de cubierta vegetal obtenidos por satélite. Modelos más recientes, que incorporan otros parámetros como el grado de humedad del suelo, y valores de temperatura en superficie y de humedad en la cubierta vegetal; han conseguido excelentes resultados en países como Mauritania. Figura 3: Resultados del modelo predictivo Tareas de reconocimiento sobre el terreno También en Mauritania, la ONU está poniendo a prueba el uso de drones en las tareas de vigilancia contra plagas. El uso de drones permite dedicar los aviones que antes se destinaban a tareas de reconocimiento y vigilancia de enjambres, a las tareas de fumigación. Dados que los aviones son bienes escasos en muchos de estos países, el poder dedicar un mayor número de ellos a las tareas de fumigación representa un gran avance. Otras armas biológicas más "familiares": gallinas y patos Distintos medios, como la BBC, Bloomberg, Time y Daily Mail con cita al medio chino Ningbo Evening News— han divulgado la noticia del supuesto envío de un ejército de 100.000 patos de China a Pakistán para ayudar a combatir la peor plaga de langostas en décadas en ese país. Sin embargo, según expertos de la FAO, esta nueva "arma biológica" resulta del todo insuficiente, como podemos ver en este artículo de la agencia Reuters. No obstante, dada la importancia de este problema, es interesante explorar nuevos enfoques a la hora de combatirlo. Conclusión Como hemos visto en tantas ocasiones, siempre que hay un problema que se puede resolver con datos, la inteligencia artificial, y como en este caso, el aprendizaje automático, se convierten en nuestros mejores aliados. Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
8 de abril de 2020
AI & Data
Aprovecha la cuarentena: cómo usar algoritmos Deep Learning en una aplicación sin ser experto
Tercera semana, tercer reto. El de la semana pasada fue, no difícil, pero si un poco largo. Para compensar, y porque ya se va notando el peso de los días, hoy os proponemos algo sencillo, rápido (no os llevará más de una hora u hora y media), y muy entretenido. Se trata de crear una sencilla aplicación que utiliza una API de Deep Learning de Algorithmia, una especie de "supermercado de inteligencia artificial" en internet, para dar color a una foto en blanco y negro. Para ello, recuperamos este post que publicamos a comienzos de 2019 en el que cogimos como ejemplo una foto del cumpleaños de LUCA. ¡Cómo pasa el tiempo! Si no tienes a mano ninguna foto en blanco y negro para probar, puedes encontrar unas cuantas en este banco de imágenes. ¿Qué, te animas? AI OF THINGS Deep Learning fácil: Crea una Aplicación que “colorea” fotos en unos minutos 22 de enero de 2019
2 de abril de 2020
AI & Data
Lo mejor en el primer trimestre de 2020
Terminamos este extraño mes de marzo, en el que tanto han cambiado nuestras vidas, retomando algo habitual, nuestros resúmenes con lo mejor del blog. Aprendiendo sobre ciencia de datos e inteligencia artificial con nuestros tutoriales, explorando todo tipo de aplicaciones de la IA a nuestras vidas, y explorando cómo nos puede ayudar en nuestros negocios. Los post de LUCA del primer trimestre de 2020, cómodamente agrupados en el post de hoy. ¡No te lo pierdas! Tutoriales: Analiza tus datos con Embedding Projector de Tensorflow Crea tu modelo Machine Learning con Teachable Machine PLN con Python: Tokens, stop words y ngrams Machine Learning para todos: Datos para aprender Machine Learning for kids: Construye con tus hijos un bot experto en su animal favorito Aprovecha la cuarentena para aprender Hadoop Artículos de divulgación: Computación cuántica e Inteligencia Artificial Edge Computing y Machine Learning, una alianza estratégica Las matemáticas del Machine Learning: Redes Neuronales (II) 5 Cursos de datos gratuitos y en español que empiezan ¡ya! ¿Cómo hablar a los niños de Inteligencia Artificial? Las 5 razones por las que todo el mundo quiere aprender Python ¿Cómo crear una Inteligencia Artificial “verde”? La cultura del teletrabajo en LUCA: una virtud convertida en necesidad Artículos sobre negocio: Caso de éxito Fundación Telefónica: Big Data para equilibrar oferta y demanda de empleo en España Caso de éxito BCP: datos para reforzar la imagen de marca y aumentar el tráfico móvil Caso de éxito Mahou San Miguel: Inteligencia Artificial para alcanzar objetivos de negocio Caso de éxito: Big Data para mejorar la calidad de vida en las favelas Artículos sobre aplicaciones IA-Big Data: Análisis de la DANA que azotó el Levante español en 2019 La Inteligencia artificial, una gran aliada para las personas sordas Ciencia de Datos y mujer: Avances en el procesamiento del genoma y el diagnóstico precoz del parkinson Machine Learning: dime cómo bailas y te diré quién eres Inteligencia artificial contra pandemias Una radio cada día más inteligente gracias a la IA Reto 2020: Enseñar a hablar correcto español a la IA Cómo luchar contra la pobreza con datos: Nobel Economía 2019 Drones e IA, las nuevas herramientas de Indiana Jones ¿Cómo usan la IA las plataformas de streaming? .
28 de marzo de 2020
AI & Data
Aprovecha la cuarentena para aprender sobre Azure Machine Learning Studio
Para esta segunda semana de cuarentena os proponemos un nuevo reto. En este caso, se trata de realizar, un pequeño "experimento de aprendizaje automático para todos los públicos" sobre la plataforma Azure Machine Learning Studio. Crearemos un modelo de predicción de supervivencia a partir de un dataset muy popular: el de los pasajeros del Titanic. Cargaremos, exploraremos y pre-procesaremos los datos, crearemos un modelo, lo entrenaremos, lo validaremos y lo pondremos en producción. Veremos que no hace falta saber programar, sino ponerse manos a la obra con este sencillo tutorial distribuido en cuatro post. ¿te animas a probar? Titanic: Tu primer experimento en Azure ML Studio Workbench (I) En el primer post, veremos cómo acceder a la herramienta, cómo localizar los datos de trabajo y dónde encontrar algunos ejemplos para empezar a utilizar Azure ML Studio Workbench. También aprovecharemos para aclarar algunos conceptos iniciales. También os contamos qué es kaggle en qué consisten sus desafíos. Por cierto que la semana pasada se abrió el COVID-19 Open Research Dataset Challenge (CORD-19), para desarrollar herramientas basadas en datos que ayuden a luchar contra la pandemia. AI OF THINGS Titanic: Tu primer experimento en Azure ML Studio (I) 14 de noviembre de 2017 El caso del Titanic (II): Preparando los datos En este segundo post está centrado en la fase de exploración y preprocesamiento de los datos. Veremos qué tipo de datos contiene el dataset, si hay valores faltantes, definiremos las variables categóricas y la variable objetivo (tarjet). AI OF THINGS Tu primer experimento en Azure ML Studio: El caso del Titanic (II): Preparando los datos. 22 de noviembre de 2017 El caso del Titanic (III): Entrenando el modelo Ha llegado el momento de construir nuestro modelo de aprendizaje automático. Para ello, dividiremos el dataset de forma aleatoria en dos conjuntos de datos: un 70% como datos de entrenamiento, y el 30% restante, como datos de test que nos permitan evaluar la eficacia de nuestro modelo a la hora de predecir valores futuros o desconocidos. Seleccionaremos el algoritmo, y entrenaremos el modelo. Por último, veremos cómo evaluarlo y lo compararemos con otros modelos basados en algoritmos diferentes. AI OF THINGS Tu primer experimento en Azure ML Studio: El caso del Titanic (III): Entrenando el modelo 29 de noviembre de 2017 El caso del Titanic (IV y fin) ¿Vivirán? : Prueba y puesta en producción del modelo En este último post veremos cómo convertir el experimento de entrenamiento en un experimento predictivo, implementándolo como servicio web. AI OF THINGS Tu primer experimento en Azure ML Studio: El caso del Titanic (IV y fin) ¿Vivirán? : Prueba y puesta en producción del modelo 14 de diciembre de 2017 Cada semana, un reto Te animamos a seguir el proceso completo, paso a paso, porque es la mejor forma de aprender: Probando. Acepta el reto y aprende Machine Learning sobre Azure ML Studio con nosotros. Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
24 de marzo de 2020
AI & Data
Aprovecha la cuarentena para aprender Hadoop
En estos momentos inciertos, en los que muchos nos vemos obligados quedarnos en casa por unas semanas, necesitamos estar ocupados, intentar mantener cierta normalidad y sentir que hacemos algo útil. Y lo estamos haciendo, ya que quedarnos en casa es nuestro granito de arena en la lucha contra la expansión del coronavirus. Pero, a pesar de los cambios necesarios que esta situación ha incorporado a nuestras rutinas, son precisamente estas "nuevas rutinas" las que más nos ayudarán a sobrellevar esta situación. Por ello, os proponemos un reto sencillo, viable e interesante para estos días: aprender Hadoop. ¿Te apuntas al reto? ¿Cómo empezar?: Hadoop para torpes Pues igual que muchas veces, antes de ver una película, echamos un vistazo al "trailer", ¿qué os parece abrir boca con una sencilla introducción? Con estos vídeos "para todos los públicos" de nuestro canal en Youtube, en menos de 30 minutos, podéis haceros una idea general de qué es Hadoop, para qué sirve y cómo funciona. https://www.youtube.com/watch?v=j8ehT1_G5AY&list=PLi4tp-TF_qjM_ed4lIzn03w7OnEh0D8Xi&index=3&t=0s Aquí podéis encontrar la lista completa: Video Post #2: Hadoop para torpes (I)-¿Qué es y para qué sirve? Video Post #3: Hadoop para torpes (II)-¿Cómo funciona? HDFS y MapReduce Video Post #4: Hadoop para torpes (III y fin)- Ecosistema y distribuciones Algunas personas prefieren aprender leyendo que viendo vídeos. Si es tu caso, puedes encontrar este mismo contenido en estos otros post: Big Data y Hadoop: Episodio (I) Hadoop por dentro (II): HDFS y MapReduce El Ecosistema Hadoop (III) : Una gran diversidad “biológica” Cloudera, MapR, Hortonworks…¿Qué distribución Hadoop necesitas? (IV y fin) Para los que quieran profundizar Los vídeos anteriores están muy bien para tener una idea general, pero seguramente muchos de vosotros os habréis quedado con ganas de profundizar. MOOCs sobre IA, Big Data, Python etc Sabréis que, de vez en cuando, publicamos en nuestro blog selecciones de cursos gratuitos y, si es posible, en español para aprender sobre Big Data, Inteligencia Artificial, Phyton etc. Algunos son unos auténticos "clásicos" de las principales plataformas de MOOCs, a los que podemos engancharnos en cualquier momento.Nno está de más echarles un vistazo, por si hay algo que os llame la atención. Os dejamos aquí el último. Pero lo bueno de los MOOC, es que podemos hacer la la parte que nos interese, sin complejos. Cuando nuestro objetivo es obtener una certificación, tendremos que hacer el curso completo, y pagar por el certificado. Pero si lo que buscamos es aprender algo nuevo, o ver otra forma de explicar algún concepto que se nos resiste, no hace falta hacer el curso completo. Por ello os vamos a proponer ver dos partes concretas de dos cursos mucho más amplios. Por supuesto que, si alguno se anima, puede hacer los cursos completos, pero, para nuestro reto de aprender Hadoop, nos bastará con estos temas. 2º curso del Programa especializado en Big Data de la UAB (Coursera) El curso, Big Data: adquisición y almacenamiento de datos, forma parte de Programa Especializado - Big Data – Introducción al uso práctico de datos masivos. Con una duración aproximada de 19 horas, en el curso se plantea una introducción a herramientas como Hadoop, Spark o Hive. También propone su aplicación a retos de análisis de datos. Para realizar los ejercicios es necesario utilizar una máquina virtual que deberá ser instalada en tu ordenador. Como hemos comentado antes, según el nivel al que queramos profundizar, decidiremos si lo hacemos completo, o nos quedamos con los primeros temas. Sección 5 del programa Big Data Fundamentals de la Universidad de Adelaida (edX) Este curso (en inglés), también forma parte de un programa de micro-master. En particular, nos interesa el tema 5: Computación paralela y distribuida usando MapReduce. Aprenderemos cómo funciona la arquitectura para la computación masiva distribuida y paralela; cómo aplicar MapReduce usando Hadoop; o cómo calcular PageRank usando MapReduce. Hadoop 101, Cognitive Class En la plataforma Cognitiveclass.AI de IBM, podemos encontrar este sencillo curso para principiantes que se puede realizar en una mañana. En este caso, los contenidos están en inglés, pero están explicados con gran claridad y sencillez. Puedes verlo en este enlace. Si también te interesan los aspectos éticos de la IA Entonces tenemos otra propuesta muy interesante para tí. Santiago Morante, y Álvaro Alegría , compañeros de LUCA, y colaboradores habituales de nuestro blog, han escrito un libro sobre el tema, que va a estar disponible de forma gratuita en Amazon del 16 al 20 de marzo. ¡Una lectura interesante para estos días! Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
17 de marzo de 2020
AI & Data
Ciencia de Datos y mujer: Avances en el procesamiento del genoma y el diagnóstico precoz del parkinson
En el mundo de la Ciencia de Datos, como otros ámbitos de la Ciencia y la Tecnología en general, la brecha de género es un hecho. Una de las formas de luchar contra esta desigualdad es darle la mayor visibilidad posible, especialmente en semanas como ésta. Pero la segunda y la mejor, es dar a conocer cómo, a pesar de las dificultades, muchas mujeres demuestran día a día su gran talento en el mundo de la Ciencia de Datos y en tantas otras áreas profesionales. Porque, según apuntan distintos estudios, tener referentes de liderazgo femenino es crítico en el desarrollo profesional futuro, tanto de hombres como de mujeres, y contribuye a una ciencia de mayor calidad. Como ejemplo, vamos a hablar de dos jóvenes investigadoras españolas que han sido seleccionadas por la revista del MIT Technology en español como Innovadores menores de 35 en Europa (2019) : Idoia Ochoa y Teresa Arroyo-Gallego. Idoia Ochoa Idoia Ochoa es profesora adjunta del departamento de Ingeniería Eléctrica e Informática de la Universidad de Illinois en Urbana-Champaignx (EE. UU.) Su ámbito principal de investigación es la industria genómica, que se está convirtiendo en uno de los pilares de la medicina personalizada. El análisis de la ingente cantidad de información que almacena el genoma humano abre un nuevo mundo de posibilidades en investigación, búsqueda de nuevos tratamientos y desarrollo de innovadoras técnicas de diagnóstico precoz de enfermedades. Figura 1: Idoia Ochoa El reto Sin embargo, esa gran riqueza, supone también un gran desafío. Los archivos genómicos (en bruto) con los que se trabaja actualmente ocupan volúmenes de cientos de GB. Por ello, la industria genómica es uno de los sectores que requerirá una mayor capacidad de procesamiento de datos en todos los aspectos implicados: almacenamiento, intercambio y análisis. Una solución innovadora La investigadora Idoia Ochoa ha diseñado nuevos formatos digitales que facilitan el almacenamiento, transmisión, visualización y análisis de los datos de genoma. Su objetivo es avanzar en la personalización de los tratamientos médicos, mediante metodologías adaptables que permitan analizar el genoma de cada paciente. Para ello, ha creado distintos algoritmos (QualComp, QVZ, GeneComp, AliCo, FaStore y SPRING son algunos de ellos), que facilitan la lectura del genoma, conservando la calidad de los datos. Por ejemplo, el algoritmo SPRING permite reducir el volumen de datos de trabajo de unos 196 a 7 Gb. Para que estos algoritmos puedan ser utilizados por cualquier institución, y sean compatibles con las herramientas e infraestructuras existentes, es fundamental definir estándares. Por ello, Ochoa trabaja, junto a otros expertos, en el desarrollo de un estándar de representación genómica bajo la norma ISO MPEG-G. El estándar incluye especificaciones que determinan cómo representar los datos de genoma. La participación de la investigadora en la definición del estándar ha estado centrada en definir formatos que ocupen poco espacio y al mismo tiempo faciliten el acceso de forma fácil y rápida a secciones concretas del genoma. "El proyecto de la investigadora Idoia Ochoa tiene un gran impacto, muestra ingenio, es muy oportuno y ayudará a que la sociedad del futuro mejore la toma de decisiones y los tratamientos médicos". -------------------------------------- Tiina Hynninen, miembro jurado de Innovadores menores de 35 Europa 2019 de MIT Technology Review Teresa Arroyo-Gallego Teresa Arroyo-Gallego, dirige el equipo de Ciencia de Datos en nQMedical, cargo que compatibiliza con su trabajo como investigadora visitante RLE, el Laboratorio de Investigación en Electrónica de MIT. En el RLE se enfocó en las áreas de machine learning, procesamiento de señales y análisis de datos del proyecto neuroQWERTY, centrado en la integración de sistemas de detección y análisis de señales de tecleado en dispositivos de pantalla táctil. Figura 2: Teresa Arroyo El reto La enfermedad de Parkinson, es el segundo trastorno neurodegenerativo más frecuente y afecta a más de 10 millones de personas en el mundo. Se trata de una enfermedad incurable, cuyos síntomas son tan sutiles que los pacientes que la sufren pueden tardar años en darse cuenta de qué les sucede. Tampoco existe ninguna prueba que proporcione un diagnóstico específico y que permita un seguimiento objetivo de la evolución de la enfermedad. Una solución innovadora La investigadora Teresa Arroyo-Gallego está desarrollando una una tecnología, nQMedical, que analiza la interacción de las personas con sus dispositivos inteligentes para obtener información sobre su salud cerebral. Para ello, utiliza algoritmos de machine learning que analizan los patrones de uso del teclado de móviles, los compara con el comportamiento habitual del usuario y detecta de esta forma posibles anomalías psicomotrices propias de las enfermedades neurogenerativas. Esto permite obtener marcadores digitales que revelan con precisión la presencia de estas enfermedades. Así, mediante un análisis en segundo plano de los patrones naturales de tecleado, esta tecnología permite evaluar de forma objetiva, transparente y en tiempo real variaciones en el estado psicomotor características de la enfermedad de Parkinson. Este diagnóstico temprano permite tomar decisiones más ágiles y mejor informadas que con los métodos actuales. De cara al futuro, su objetivo es poder aplicar estas técnicas al diagnóstico de otras enfermedades como como el alzhéimer, la esclerosis múltiple y la esclerosis lateral amiotrófica. "Teresa Arroyo-Gallego es una candidata excepcional, que está haciendo un trabajo extremadamente pionero y que merece un reconocimiento" -------------------------------------- Daniel Dickens, miembro jurado de Innovadores menores de 35 Europa 2019 de MIT Technology Review Como vemos, los datos y la inteligencia artificial, pueden ayudarnos a mejorar nuestras vidas cuidando de nuestra salud, bien facilitando el diseño de nuevos medicamentos, o en la detección precoz de enfermedades, como te contamos en este hilo de nuestra biblioteca de Twitter. https://twitter.com/LUCA_D3/status/1085862665086517250?s=20 Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
6 de marzo de 2020
AI & Data
PLN con Python: Tokens, stop words y ngrams
En el post de hoy vamos a introducirnos en el mundo del Procesamiento de Lenguaje Natural (NLP, Natural Language Processing, en inglés) y probaremos algunas de las primeras técnicas de depuración de texto: tokenización, stopgrams y ngrams. Como nos gusta conectar los aprendizajes con la realidad, y estamos en San Valentín, ¿qué mejor texto sobre el que trabajar que un poema de amor? Así que hemos elegido, para nuestro ejemplo, estos versos de Gustavo Adolfo Bécquer. Podrá nublarse el sol eternamente; Podrá secarse en un instante el mar; Podrá romperse el eje de la Tierra Como un débil cristal. ¡Todo sucederá! Podrá la muerte Cubrirme con su fúnebre crespón; Pero jamás en mí podrá apagarse La llama de tu amor Bromas aparte, en este post : Definiremos qué es PLN y para qué se usa Hablaremos de las principales librerías Explicaremos qué es la tokenización Haremos un sencillo ejemplo con estos versos Sacaremos nuestras propias conclusiones ¿Qué es PLN? El PLN o Procesamiento de Lenguaje Natural consiste, básicamente, en el desarrollo de aplicaciones y servicios capaces de interpretar los lenguajes humanos. Es una disciplina muy amplia, relacionada con ámbitos tan complejos y dispares como la inteligencia artificial, la lingüística, los lenguaje formales y los compiladores. Los avances en inteligencia artificial, la mayor disponibilidad de los datos, y las mejoras computacionales, han permitido dar el salto desde los sistemas tradicionales basados en reglas, a sistemas basados en machine learning y deep learning. Usos del PLN Cada día se generan millones de gigabytes en blogs, páginas webs o redes sociales. Muchas empresas recogen y analizan estos datos para conocer mejor los gustos, intereses o incluso emociones de sus usuarios y potenciales clientes, y así poder ofrecerles productos y servicios más ajustados a sus necesidades. Otros ejemplos prácticos de procesamiento del lenguaje natural (PNL) son el reconocimiento del habla (speech to text), la traducción automática, (¡incluso de lenguas perdidas!), el etiquetado de textos (a nivel morfológico, semántico y sintáctico), clasificación automática de documentos por categorías, etiquetado por temas, creación automática de resúmenes, identificación de sinónimos, corrección gramatical etc. Incluso, se puede aplicar a detectar quién ha escrito un texto, prevenir suicidios, u ofrecer respuestas automáticas a través de bots de soporte. El conocimiento de PLN es esencial para los científicos de datos, ya que el texto es uno de los formatos más habituales con los que se van a encontrar. Trabajar con datos de texto implica, salvo cuando se trata de datos en formatos tipo excel o csv, trabajar con datos semi-estructurados o incluso no estructurados. Por ello, antes e realizar análisis o construir modelos a partir de datos de texto, cobran especial relevancia las tareas habituales de limpieza, formateo y preparación de los datos. Más adelante, veremos un ejemplo práctico de algunas de estas tareas. Herramientas PLN En la actualidad, hay disponibles distintos paquetes de herramientas de amplia distribución destinadas al procesamiento lingüístico de carácter general. Estos paquetes están disponibles en distintos idiomas. Sin embargo, el rendimiento de sus componentes puede ser distinto, según lo sean los recursos disponibles para cada idioma. Algunas de las bibliotecas de código abierto de Procesamiento del Lenguaje Natural (PNL) más conocidas son: Las bibliotecas Open NLP de Apache y Core NLP de Standord, desarrollados en Java, incluyen una serie de procesadores lingüísticos basados en aprendizaje automático. La biblioteca más popular, por su facilidad de uso y gran comunidad de soporte es NLTK (Natural Language Toolkit), escrita en Python. Es la que usaremos en nuestro pequeño ejemplo. En este documento del Plan TL de impulso de las tecnologías del lenguaje, se puede encontrar información detallada sobre herramientas, frameworks y plataformas PNL. Un ejemplo práctico Instalación de Python y NTLK Pongámonos manos a la obra. Vamos a trabajar con Jupyter notebooks en Python. Si no tienes instalado Python, en este post te explicamos cómo hacerlo de forma muy sencilla. AI OF THINGS Atrévete con Python: un experimento para todos los públicos 12 de marzo de 2018 Si ya estás utilizando anaconda, lo más probable es que ntlk ya se haya descargado en la raíz (aunque puede ser necesario descargar varios paquete manualmente). Para comprobarlo: conda list Comprobamos que, en nuestro caso, sí está instalado y la versión es la 3.2.4. Si no lo tenemos instalado, podemos hacerlo fácilmente con: Conda install –c ntkk=3.2.4 Tokenizar con Python y NTLK Las herramientas de procesamiento que usamos en Data Science normalmente trabajan con números. Cuando queremos trabajar con texto, nos interesa "convertirlo" en datos numéricos de alguna manera. Es ahí donde entra en juego el proceso de tokenización. Consiste en la segmentación del texto en frases o palabras. Además de separar una frase en "tokens" o grupos de tokens (ngrams), podemos identificar su frecuencia de aparición; identificar si se trata de sustantivos, verbos, etc; eliminar palabras habituales que no aportan significado (stop-words); realizar correcciones ortograficas etc Parece simple, pero no lo es. Por ejemplo, "Alcalá de Henares" podría "romperse" en 3 tokens. Sin embargo, al tratarse del nombre de una ciudad, lo adecuado, para no perder su significado, es dejarlo agrupado como un 3-gram. Un pequeño experimento Primero, explicaremos brevemente en qué va a consistir nuestra prueba. Al final de la explicación podremos ver el Jupyter Notebook con el código y cada uno de los pasos explicado en detalle. Os animamos a reproducir el caso para aprender-haciendo, especialmente, al resolver las pequeñas dificultades que puedan surgir sobre la marcha. Carga de librerías, y carga de datos Empezamos importando las librerías y descargando todos los paquetes necesarios. A continuación, cargaremos los datos. En este caso, se trata de unos versos de Gustavo Adolfo Bécquer. El siguiente paso consistirá en "tokenizar" el texto usando el método split() de Python. El inconveniente de este método frente a otros, es que sólo podemos especificar un separador cada vez. Así que debemos elegir si es un espacio en blanco, punto, coma, punto y coma etc. Tokenizamos usando NTLK A continuación tokenizaremos con NTLK, por palabras, con word_tokenize, y por frases, con sent_tokenize. Como siempre, lo primero que habrá que hacer es importar la librería. También descargaremos los paquetes necesarios con los siguientes comandos: # Carga de librerías import nltk nltk.download() from nltk.tokenize import word_tokenize, sent_tokenize Figura 1: Debemos elegir con qué paquetes vamos a trabajar Figura 2: Podemos comprobar que las stopwords están ya descargadas Tras la tokenización con NTLK, vamos a investigar un poco el tema de las stopwords. Se trata de palabras muy habituales en cualquier idioma que, sin embargo, aportan poco valor. Por ello, es interesante identificarlas y "excluirlas". Es una forma de "limpiar" el texto. Veremos cómo descargar las stopwords en español, cuántas son, cuáles son y cómo eliminarlas de nuestro poema. Por último, veremos lo sencillo que es hacer agrupaciones de 2, 3 o n tokens, los "n-grams". Conclusiones Aunque la tokenización parece algo sencillo, en realidad no lo es tanto. Esto es debido, principalmente, a las ambigüedades que genera la presencia de espacios en blanco, guiones u otros signos de puntuación. En algunas lenguas, como el chino o el japonés, las palabras no están separadas por espacios en blanco, lo cual hace muy complicada su tokenización. Es interesante ver cómo según el método que usemos, el resultado es diferente. Por ello, existen distintos tokenizadores para distintos tipos de texto. Por ejemplo: Tokenizador de tweets, capaz de detectar “sentimiento” Tokenizador MWE (multi-world expression), que identifica grupos de palabras que suelen ir juntas como “United States of America”, “not only” etc Tokenizador de expresiones regulares, que permite definer expresiones patrón para separar tokens Tokenizador de espacios en blanco. Reconoce espacios en blanco, saltos de línea o tabuladores como separadores de tokens Tokenizador “word punkt”, que separa un texto en una lista de caracteres alfabéticos, no alfabéticos o numéricos Por tanto, es fundamental analizar en primer lugar el tipo de datos con los que vamos a trabajar, para poder decidir qué estrategia o herramienta es la más adecuada en cada ocasión. Otros post "para enamorados" en nuestro blog: AI OF THINGS ¿Por qué nunca tendré novia? 14 de febrero de 2018 AI OF THINGS Especial San Valentin: ¿Podemos predecir la infidelidad con Inteligencia Artificial? 14 de febrero de 2019
14 de febrero de 2020
AI & Data
Las 5 razones por las que todo el mundo quiere aprender Python
Python es, en estos momentos, el lenguaje de programación más popular. Personas tan distintas como niños, estudiantes, profesores, investigadores de todo tipo (Ciencias Sociales, Biología, Medicina, Economía…), expertos en Finanzas, Seguros, Marketing, desarrolladores, analistas o científicos de datos lo aprenden y lo utilizan en sus campos de interés. En el post de hoy, vamos a intentar explicar el porqué. El lenguaje de programación más popular en estos momentos. ¿Cómo se mide la popularidad de un lenguaje de programación? Depende de quien lo pregunte. Los desarrolladores lo hacen calculando el número de preguntas que se hacen sobre él en webs como StackOverflow. Se trata de webs donde consultan sus dudas y comparten conocimiento con la comunidad. Así, aunque JavaScript sigue siendo el lenguaje con mayor número de preguntas acumuladas desde la creación de Stack Overflow, Python se ha convertido en el lenguaje que más interés ha despertado en lo que va de año. Image Credit: Stack Overflow (Los desarrolladores más "puristas" prefieren consultar índices como el PYPL o rankings como el del IEEE.) Y, a los no programadores, seguro que esta frase, de The Economist les sirve para hacerse un idea: “En los últimos 12 meses, en EEUU, se han realizado más búsquedas en Google de Python que de Kim Kardashian” “Python has brought computer programming to a vast new audience” ¿De verdad que Python es más popular que Kim Kardashian en EEUU?. Pues parece que sí ;-) Veremos alguna de las razones, pero antes de nada, explicaremos qué es Python. Python en pocas palabras Para "calentar motores", empecemos por un dato curioso. ¿Recordáis “La vida de Brian”? ¿El famoso spot del "Spam"? El nombre de Python no tiene ninguna connotación zoológica, sino que es un homenaje de su autor al inolvidable grupo cómico inglés Monty Python, protagonista de una de las mejores comedias de la historia del cine. De Eduardo Unda-Sanzana - Flickr, CC BY 2.0, Retomamos la seriedad para empezar con una definición técnica que iremos “desgranando” poco a poco: Python es un lenguaje de programación interpretado de código abierto, multiparadigma, aunque principalmente orientado a objetos de alto nivel. Su sintaxis hace énfasis en la legibilidad del código, lo que facilita su depuración y, por tanto, favorece la productividad. Ofrece la potencia y la flexibilidad de los lenguajes compilados con una curva de aprendizaje suave. By The people from the Tango! project. - A partir de esta definición, analizaremos las 5 razones por las que Python ha ganado tanta popularidad en los últimos años. 1. Python es un lenguaje interpretado Python fue creado por Guido Van Rossum en 1991 como lenguaje de programación interpretado de uso general. ¿Qué significa que un lenguaje de programación sea interpretado? Los lenguajes de bajo nivel, como lenguaje máquina o ensamblador, pueden ejecutarse directamente en una computadora. Los de alto nivel, como Java, C, C++ o el propio Python, por su parte, tienen que ser reinterpretados (compilados) como lenguajes de bajo nivel antes de poder ser ejecutados. Esto hace que los tiempos de ejecución normalmente sean más lentos. Sin embargo, hoy día, esto no es un problema ya que los avances en computación en la nube (cloud computing), permiten disponer de capacidades de cálculo a medida a costes muy asequibles. También influye cómo de optimizado está el código. Con Python, programar es sencillo Programar en código máquina es costoso y difícil. Python ofrece una sintaxis mucho más sencilla y cercana a la lógica de los humanos. Un código más legible resulta más sencillo de generar, depurar, y mantener. Por ello, la curva de aprendizaje de los lenguajes interpretados es mucho más suave. 2. Python es potente, flexible y versátil Veamos el por qué de esta potencia y versatilidad. Argumentos, no nos faltan. Es un lenguaje de propósito general Al ser un lenguaje de propósito general, y no creado específicamente para desarrollo web, Python permite crear todo tipo de programas y herramientas. Es compatible con otros lenguajes de programación Su interoperabilidad con otros lenguajes de programación como C, Java, R, etc., es otro de los factores que han ayudado a su gran difusión en distintos ámbitos. Permite trabajar con distintos modelos de programación En Python, todo es un objeto. No obstante, aunque sea un lenguaje principalmente orientado a objetos, combina propiedades de distintos modelos o paradigmas de programación (imperativa, funcional, procedural o reflexiva). Ofrece librerías y entornos especializados en temas muy diversos Por otra parte, Python ofrece librerías y entornos de desarrollo muy potentes para Machine Learning, Ciencias, visualización de datos etc. Por ejemplo: Matemáticos y científicos utilizan SciPy y NumPy en sus investigaciones Los lingüistas analizan textos con NLTK (the Natural Language Tool Kit), Los estadísticos, usan Pandas para analizar datos Los equipos de IT configuran y gestionan recursos en la nube con OpenStack Los desarrolladores usan Django para crear aplicaciones web etc. Es el lenguaje de referencia en Data Science y Machine Learning De hecho, se ha convertido en el lenguaje de referencia en Data Science, siendo el preferido por un 57% de los científicos de datos y desarrolladores. Si tenemos en cuenta la evolución de los dos últimos años de entornos Python para Deep Learning, incluyendo la creación de Tensorflow y otras librerías especializadas, no nos extrañará que haya dejado atrás otros lenguajes como R, Julia, Scala, Ruby, Octave, MATLAB y SAS. Es lenguaje de referencia en Educación El hecho de que sea un lenguaje tan sencillo como para que lo puedan usar desde principiantes a programadores profesionales también lo ha convertido en el lenguaje de programación por excelencia en entornos educativos. Y no sólo por su sencillez, sino también por el hecho de que se pueda ejecutar en distintos sistemas operativos (Microsoft Windows, Mac OS X, Linux, o usando el intérprete correspondiente). También es accesible a través de servicios web como Python Anywhere. Esto es especialmente importante para el sector educativo porque se puede usar desde los equipos del aula de informática de las escuelas, o incluso desde casa, sin necesidad de instalar software adicional. Gracias a esto, Python ha estado en el centro de distintos proyectos educativos muy interesantes, como los que veremos a continuación. En 2015, la BBC lanzó el proyecto MicroBit project. Se trata de un pequeño dispositivo programable, micro:bit, cuyo objetivo es inspirar a una nueva generación de creadores, makers y coders, dirigido a niños a partir de 11 años de edad. Otros proyectos, como MicroPython project, permiten trabajar con otros pequeños dispositivos, como Raspberry Pi, y usarse como base de muchos interesantes y entretenidos proyectos de electrónica para controlar pantallas, altavoces, micrófonos, motores etc. Incluso, crear sencillos robots. En resumen, Python, sirve para crear todo tipo de herramientas, se puede ejecutar sobre distintos sistemas operativos, es compatible con otros lenguajes de programación y ofrece librerías y frameworks especializados en distintas áreas de conocimiento. 3. Python es un proyecto de software libre (free software) Python Project nació como un proyecto de código libre (free software). Hasta hace muy poco, todavía era dirigido por su creador, Guido van Rossum, quien, nuevo guiño a Monty Python, ejerció durante casi tres décadas el rol de "benevolente dictador vitalicio" (Benevolent dictator for life) de la PSF. By Alessio Bragadini - originally posted to Flickr as Guido van Rossum ¿Qué caracteriza al software libre? El software libre, “free software” no es necesariamente siempre gratuito (aunque Python sí lo sea), sino que se caracteriza por el escrupuloso respeto a las conocidas como “4 libertades”: La libertad de usar el programa, con cualquier propósito. (libertad 0) La libertad de estudiar cómo funciona el programa, y adaptarlo a tus necesidades. (libertad 1) La libertad de distribuir copias, con lo que puedes ayudar a tu vecino. (libertad 2) La libertad de mejorar el programa y hacer públicas las mejoras a los demás, de modo que toda la comunidad se beneficie. (libertad 3) Para que las libertades 1 y 3 sean posibles es necesario que los usuarios puedan tener acceso al código fuente de los programas. En resumen, software libre son aquellos programas que una vez obtenidos pueden ser usados, copiados, estudiados, modificados y redistribuidos libremente. Por tanto, la “libertad” del software está relacionada con los permisos que su autor ofrece y no con su precio. Python se publica bajo la licencia Python Software Foundation License . La PSF es una organización sin ánimo de lucro, que fue creada en 2001 con el objetivo de gestionar el proyecto (desarrollo, administración de derechos, recaudación de fondos etc). Y es compatible con la GPL de GNU ( Licencia Pública General de GNU ,a partir de la versión 2.1.1). 4. Python es un lenguaje de código abierto (open source) Además de libre, Python es un lenguaje de código abierto, que es parecido, pero no es lo mismo. Según Richard Stallman, tanto el software libre como el código abierto persiguen un objetivo común: dar mayor libertad y transparencia al mundo del software. Sin embargo, difieren en la manera de llevarlo cabo. El software libre se define por su ética. Se considera software libre no sólo los programas cuyo código esté abierto, sino todos aquellos programas que respetan la cuatro libertades esenciales del usuario definidas por la Free Software Foundation (1985). El concepto de software abierto surgión en 1998, cuando se creó la OSI (Open source initiative) como una escisión del software libre. En este caso, en lugar de las 4 libertades del software libre, se definieron 10 requisitios. que debe cumplir un software para ser considerado abierto. La diferencia principal entre uno y otro tipo de software es sutil. El software libre prioriza los aspectos éticos, mientras que el software de código abierto prioriza los de índole técnica. Por ello, es normalmente menos estricto, de modo que todo el software libre es también de código abierto, pero no necesariamente a la inversa. En cualquier caso, Python es libre y es abierto. Y en esto radica una de las claves del éxito de Python: la comunidad Python. Se trata de una comunidad amplia y muy activa, que contribuye al desarrollo y mejora del código fuente, según las necesidades y demandas de los usuarios. Porque, aunque muchas empresas y organizaciones, como Google, Microsoft o Red Hat, utilizan mucho este lenguaje y tienen influencia en su evolución, ninguna ejerce un control sobre el mismo. Este carácter libre y abierto, sin duda también ha facilitado la versatilidad, flexibilidad y potencia mencionadas en el punto anterior, ya que además de todo lo mencionado anteriormente, Python es un lenguaje multiplataforma. Es decir, podemos ejecutarlo en diferentes sistemas operativos como Windows o Linux simplemente usando el intérprete correspondiente. 5. Y además… es gratis Como hemos apuntado antes, a pesar de la confusión que puede generar el hecho de que, en inglés, “free”, además de libre, significa gratis, el software libre no tiene por qué ser necesariamente gratis. Sin embargo, sí se puede afirmar, que para programar en Python, no es necesario pagar ningún tipo de licencia. Sin embargo, no debemos olvidar nunca que cualquier código no desarrollado por nosotros mismos puede estar sometido a algún tipo de licenciamiento. Conclusión En resumen, la sencillez, versatilidad, y potencia de Python le han convertido en ese lenguaje de programación todoterreno que puede ayudar a impulsar la alfabetización digital de amplios sectores de la población, haciendo accesible la programación a personas y profesionales de todo tipo. ¿Y tú? ¿te atreves con el Python? Si te animas, puedes empezar por aquí: AI OF THINGS Atrévete con Python: un experimento para todos los públicos 12 de marzo de 2018 Para mantenerte al día con LUCA, visita nuestra .
5 de febrero de 2020
AI & Data
Inteligencia artificial contra pandemias
¿Sabes cómo la Inteligencia Artificial nos puede ayudar a luchar contra pandemias como el coronavirus 2019-nCoV? En el post de hoy os contamos cómo puede convertirse en una gran aliada de para las autoridades nacionales e internacionales de salud. El coronavirus 2019-nCoV La startup canadiense BlueDot, alertó a sus clientes del estallido de un brote epidémico de gripe en la ciudad china de Wuhan una semana antes de fuera detectado por las autoridades sanitarias de USA y la Organización Mundial de la Salud. Este coronavirus, aun sin clasificar, ha infectado a 7700 personas en apenas un mes, y es responsable del fallecimiento de 170 enfermos. Todo ello a pesar de que se está produciendo el mayor acopio mundial de recursos humanos y estratégicos para detenerlo. 60 millones de personas han sido sometidas a restricciones de movilidad y transporte en un intento de frenar la expansión de la epidemia. A pesar de ello, la OMS se ha visto obligada a declarar la situación de emergencia internacional. Según el Reglamento Sanitario Internacional, la declaración de la emergencia debe hacerse cuando un evento "constituye un riesgo para la salud pública de otros Estados a causa de la propagación internacional de una enfermedad" y este "podría exigir una respuesta internacional coordinada" . ¿Qué es un virus? Los virus son microorganismos mucho más pequeños que las bacterias. Sólo podemos verlos a través de un microscopio electrónico. Para multiplicarse, necesitan un hospedador. Por ello, surgieron en nuestro planeta al mismo tiempo que los seres vivos. Se estima que, en la Tierra, hay unos 2 millones de especies de virus distintas. Son, por tanto, los seres ¿vivos? más números y diversos que existen. Por otro lado, nuestro planeta está poblado por 7.700 millones de personas, en continuo crecimiento demográfico. Vivimos en un mundo globalizado, y, como consecuencia el flujo de personas, animales y mercancías no sólo entre países, sino incluso entre continentes, es permanente. Y con ellos, viajan los virus. Por ejemplo, el virus estacional de la gripe salta de un continente a otro aprovechándose de los desplazamientos de las aves migratorias. Otros, como ocurrió con el VIH, que afectaba a los monos, salen de los nichos naturales en los que estaban confinados, y empiezan a propagarse entre los humanos. ¿Cómo luchar contra los virus? Para luchar contra ellos, es fundamental desarrollar antivirales y terapias basadas en anticuerpos capaces de parar la infección en las personas afectadas. También es muy importante el uso de vacunas preventivas en personal sanitario o en riesgo de contagio, para evitar así su avance. Por tanto, la detección temprana de nuevas enfermedades es clave en la lucha contra las pandemias globales. Es en este punto, donde la inteligencia artificial nos puede ayudar a luchar contra los virus. Inteligencia articial contra los virus BlueDot, se fundó en en 2014 con el objetivo de ofrecer a los trabajadores de salud alertas tempranas para identificar y tratar más eficazmente a las personas que pueden sufrir enfermedades infecciosas epidémicas, colaborando de esta forma a frenar su expansión. Para ello, se basan en técnicas de procesado de lenguaje natural que cada día analizan unos 100.000 artículos en 65 idiomas para rastrear información sobre más de 100 enfermedades infecciosas. Sus algoritmos de machine learning escanean noticias, informes oficiales, blogs y foros relacionados con enfermedades que puedan afectar a personas, animales y plantas. También analizan información meteorológica o sobre movilidad, que les permite predecir cuál será el próximo “salto” de la enfermedad. Por ejemplo, el algoritmo predijo correctamente que el virus saltaría de Wuhan a Bangkok, Seúl, Taipei y Tokio en los días siguientes a su aparición inicial. Los epidemiólogos de BlueDot analizan esta información y emiten informes que alertan a sus clientes (empresas, gobiernos, ONGs), que los trasladarán a los centros de salud y responsables de salud pública de una docena de países. De esta forma, les ayudan a reaccionar de forma más ágil y eficiente ante estas emergencias. La detección precoz es clave en la lucha contra las pandemias y, como vemos, la inteligencia artificial puede ser una gran aliada en esta lucha.
3 de febrero de 2020
AI & Data
5 Cursos de datos gratuitos y en español que empiezan ¡ya!
Enero es un excelente momento para afrontar nuevos retos: de aprendizaje, profesionales y personales. Por ello, hemos hecho una breve selección de cursos que nos han parecido interesantes. Todos ellos en español, para aprender a tu ritmo, y gratuitos (salvo si queremos un certificado). Nuestros 5 cursos recomendados Big Data sin misterios El próximo 13 de febrero comienza una nueva edición del MOOC Big Data sin misterios, desarrollado por el Banco Interamericano de Desarrollo en colaboración con Telefónica. En este curso aprenderás a transformar los datos en valor y a explorar el potencial de Big Data para aumentar la eficiencia y eficacia de tu organización. Introducción a la visión por computador: desarrollo de aplicaciones con OpenCV El análisis de imágenes es uno de los campos de la inteligencia artificial más innovador, del que surgen innumerables aplicaciones practicas. En este curso de la Universidad Carlos III de Madrid aprenderás los conceptos básicos de visión por computador, e implementarás de forma práctica algoritmos de análisis de imágenes por ordenador utilizando la biblioteca de funciones OpenCV. Gobernanza de datos personales en la era digital El objetivo de este curso de la Universidad Javeriana es aprender qué es la gobernanza de datos personales y desarrollar habilidades para diseñar e implementar leyes y políticas públicas en materia de datos personales en la era digital. Visualización de Datos y Storytelling Este curso forma parte de un programa de certificación del Tecnológico de Monterrey. En él aprenderás que es la visualización de datos, sus usos; los elementos que la conforman y la forma de poder utilizarla para el apoyo en la toma de las mejores decisiones para las empresas basadas en el análisis de datos. Diseña, fabrica y programa tu propio robot Este curso te enseñará a diseñar, fabricar y programar tu propio robot (DYOR: Do Your Own Robot) con Arduino , una excelente forma de iniciarse en el mundo Maker. Usa una metodología que lleva años implementándose en asignaturas de robótica de la Universitat Politècnica de València Puedes encontrar todos estos cursos en la plataforma edX. Programas de certificación en inglés Si no tienes problema con el inglés, o estás interesado en hacer algún programa de certificación, no te pierdas estos otros post de nuestro blog, donde os presentamos cursos de Coursera que tienen la inscripción abierta de forma permanente, u os hablamos de cómo funcionan el Microsoft Professional Program in Data Science y el Professional Certificate Program in Data Science de HarvardX (ambos en edX), o los Nanodegrees de Udacity. CLOUD AI OF THINGS Cursos gratuitos en inglés y en español sobre Data Science, Bitcoin, IoT que empiezan ¡ya! 25 de octubre de 2018 AI OF THINGS Cursos gratis de Ciencia de Datos para esta primavera 27 de marzo de 2019 Aprender en el blog de LUCA Si lo que quieres es aprender sobre Ciencia de Datos, Machine Learning, Deep Learning, Big Data, etc. también puedes hacerlo en nuestro blog. Tienes una amplia colección de Tutoriales , con experimentos completos explicados paso a paso. También puedes encontrar post de divulgación de conceptos, y video post. Tú eliges la forma. ¡Lo importante es aprender!
30 de enero de 2020
AI & Data
Machine Learning para todos: Datos para aprender
Cuando estás empezando en el mundo de la Ciencia de Datos y el aprendizaje automático, uno de las primeras preguntas que te haces es: ¿De dónde saco los datos para aprender?. Porque para entrenar algoritmos, necesito conjuntos de datos que cumplan determinados requisitos de volumen, estructura etc. Empecemos por los repositorios de datos abiertos en la web. Lo más accesible, aunque, como veremos, pueden resultar demasiado complejos para un principiante. 1 Cargar los datos desde repositorios públicos en internet. Hay muchos repositorios de datos disponibles en la web. Por ejemplo en Open Science Data Cloud, podemos encontrar petabytes de datos abiertos sobre genética, medio ambiente, imágenes por satélite etc. También Amazon ofrecen datasets públicos con datos tan variados como trayectos en taxi en la ciudad de Nueva York, transacciones en la bolsa alemana, datos meteorológicos, datos sobre calidad del aire, química del suelo, genoma humano, población de aves, opiniones de clientes sobre productos, etc… Por su parte, Google, ofrece un directorio de datos públicos en abierto, con interesantes conjuntos de datos publicados por el Banco Mundial, Eurostat, Naciones Unidas, instituciones nacionales de estadística de distintos países etc. Por supuesto, las principales ciudades e instituciones de todo el mundo también ofrecen interesantes portales de datos en abierto. Por ejemplo, en este post, usamos un dataset sobre las salidas por rescate animal de los bomberos de Londres para experimentar con la herramienta de visualización PowerBI. AI OF THINGS ¿Cuánto gastan los bomberos londinenses en salvar gatitos?: El Open Data responde 26 de abril de 2017 En este otro, usamos datos sobre el uso del servicio público de bicicletas de Madrid, Bicimad para ver cómo se pueden depurar datos con Excel. AI OF THINGS ¿Pedaleas en la ciudad?: Analiza con Excel la seguridad de los ciclistas en Madrid 13 de septiembre de 2017 Estos repositorios son muy interesantes para llevar a cabo todo tipo de proyectos, pero…. ¿y si lo que quiero es algo mucho más sencillo? Encontrar datos que ya estén de alguna manera filtrados de forma que pueda localizar fácilmente los más adecuados para realizar una prueba determinada. Por ejemplo, un problema de clasificación con el que quiero probar la técnica de regresión logística. Para ello, tendremos dos opciones: los repositorios de aprendizaje y pruebas, y los conocidos como “toy datasets” que vienen integrados en librerías. 2. Repositorios de datos para aprender. Algunos de los repositorios más conocidos pertenecen a Universidades. Por ejemplo, el repositorio Machine Learning UCI.del Center for Machine Learning and Intelligent Systems de la Universidad de California, tiene casi 500 datasets clasificados según el tipo de tarea para el que son más adecuados(clasificación, regresión, clustering u otros), el tipo de atributo (categórico, numérico o mixto), el tipo de dato (texto, una variable, multivariable, series temporales etc), el número de instancias, atributos, tipo de formato, área de conocimiento etc. Por tanto, es muy fácil localizar conjuntos de datos adecuados para una tarea concreta. En el experimento que hicimos sobre clasificación de flores usando la técnica de análisis de componentes principales (PCA), por ejemplo, nosotros utilizamos este repositorio AI OF THINGS Python para todos: Tutorial de PCA en 5 sencillos pasos 12 de junio de 2018 Aunque no podamos usar filtros para seleccionarlos, la selección de datasets ofrecida por ¡sorpresa!, Wikipedia, nos ofrece una interesante recopilación de conjuntos de datos citados en revistas científicas (con revisión por pares), y convenientemente clasificados. La Universidad de Standford también nos ofrece otro repositorio interesante, SNAP, con datos de todo tipo, aunque no podemos filtrarlo como en el caso de la UCI. Otra de las opciones más interesante, cuando estás aprendiendo es el repositorio de datasets de Kaggle. Kaggle es, definitivamente, uno de los sitios donde todo futuro Data Scientist debe estar. En el experimento que hicimos sobre cómo usar Azure Machine Learning Studio en un problema de clasificación (¿Sobrevivirán?), descargamos el conocidísimo dataset de los pasajeros del Titanic desde Kaggle. AI OF THINGS Titanic: Tu primer experimento en Azure ML Studio (I) 14 de noviembre de 2017 Además de los datos, en Kaggle podemos encontrar muchos ejemplos para aprender, una comunidad con la que compartir tus experimentos, consultar dudas, etc. y estimulantes competiciones. Una precaución que hay que tener, es que a veces, los datasets son versiones reducidas de otros más amplios, e igual no nos interesa descargarlos de ahí. Por ejemplo, en nuestro experimento sobre regresión logística (que, con la broma de publicarlo por San Valentín, convertimos en un “predictor de infidelidad”), no descargamos el dataset affairs desde Kaggle por tratarse de una versión reducida. En su lugar, lo hicimos a partir de la librería Statsmodel, como veremos en el siguiente punto. 3 “Toy datasets” en las librerías. Algunas librerías de Phyton como Seaborn, Sklearn o Statsmodels traen “de serie” datasets de prueba. Esto nos facilita mucho la vida, ya que resulta muy sencillo cargar una de ellas en un dataframe de pandas y empezar a trabajar. 3.1 Seaborn Seaborn, por ejemplo, se usa para hacer gráficos y visualizaciones de datos más atractivas. Pero también incorpora 13 ejemplos de estos “toy datasets” o “datasets para jugar”. Podemos ver cuáles son usando la función get_dataset_names(): import seaborn as sns sns.get_dataset_names() Cargarlos en un dataset pandas es muy sencillo con la función load.dataset() df_planets = sns.load_dataset('planets') df_planets.head() 3.2 Scikit-learn Sin embargo, esta opción no se usa mucho porque esos datasets apenas tienen información adicional a los datos. Los 7 datasets precargados en Sci-kit-learn sí que resultan algo más completos. Podemos encontrar algunos tan conocidos como el del precio de la vivienda en Boston, el de clasificación de lirios, el de vinos, o los datos sobre diagnóstico de cancer de mama en Wiscosin. No obstante, son demasiado pequeños para asemejarse a datos reales. Por esto, es más habitual usar las funciones generadoras de datos que ofrece esta librería (de las que hablaremos en el último punto), que los datasets precargados. En cualquier caso, la forma de acceder a ellos y cargarlo en un dataset pandas también resulta muy sencilla: from sklearn.datasets import load_boston boston = load_boston() data = boston.data column_names = boston.feature_names import pandas as pd df = pd.DataFrame(boston.data, boston.feature_names) 3.3 Statsmodel Hemos dejado para el final la librería más interesante, en cuanto a datasets precargados se refiere. La librería Statsmodel es la librería de modelado estadístico. Permite a los usuarios explorar datos, hacer estimaciones de modelos estadísticos y realizar test estadísticos. Esta librería ofrece dos tipos de datasets (para R y para Python) a los que se puede acceder fácilmente deste el módulo statsmodels.api.datasets. Los datasets disponibles para trabajar en Python son los siguientes: Cada submódulo tiene un conjunto de metadatos que se puede consultar con los atributos con los atributos DESCRLONG yNOTE y que nos ofrecen información detallada sobre ese conjunto de datos en particular. Si conocemos el nombre del submódulo donde están los datos que nos interesan, resulta muy sencillo cargarlos en un dataframe de pandas: import statsmodels.api as sm #Cargamos la librería nile = sm.datasets.nile #Elegimos el dataset sobre las crecidas del Nilo print(nile.DESCRLONG) #Para ver la descripción y características del dataset sm.datasets.nile.load_pandas().data #Cargamos el dataset en un dataframe de pandas En el experimento que mencionamos anteriormente sobre regresión logística, usamos el dataset "fair" para crear un "predictor de infidelidad" ;-) Puedes ver el experimento completo aquí: AI OF THINGS Especial San Valentin: ¿Podemos predecir la infidelidad con Inteligencia Artificial? 14 de febrero de 2019 4 Crear tu propio dataset Cierto es que una de las alternativas es crear tu propio dataset, por ejemplo, usando la librería NumPy, el paquete fundamental para computo científico en Python. En Numpy podemos encontrar funciones que permiten simular variables discretas, continuas y categóricas, de manera aleatoria: numpy.randint() -> Docs numpy.uniform() -> Docs numpy.choice() -> Docs Podemos encontrar un ejemplo de cómo hacerlo aquí. Como es habitual, tenemos más alternativas. Por ejemplo, en la librería Scikitlearn, que de hecho está construida sobre la librería NumPy, podemos encontrar una gran variedad que de módulos de alto nivel sobre ciencia e ingeniería que nos ofrecen todo tipo de funciones. Por ejemplo, para generar datasets aleatorios, podemos usar las funciones: make_blobs -> Docs, para problemas de clustering make_regression -> Docs, para problemas de regresión make_classification -> Docs, para problemas de clasificación Por ejemplo, si lo que queremos es generar un conjunto de datos aleatorios para un problema de clasificación binaria (2 clases) con 100 muestras, 5 características (1 de ellas redundante), y un cluster por ejecución, la sintaxis sería la siguiente: X, y = datasets.make_classification(n_samples=100, n_features=5, n_informative=4, n_redundant=1, n_classes=2, n_clusters_per_class=1) No obstante, si no encuentras en las librerías de Python el tipo de “generador” de datos que necesitas, puedes crear un propio. Por ejemplo, a partir de la función randint incluida en el módulo random de Numpy. Como veis, por datos, no será. Os animamos a hacer vuestros propios experimentos siguiendo nuestros ejemplos, o a usarlos como guía trabajando con otros datasets que sean de vuestro interés-. En nuestra sección "Tutoriales IA Big Data" podréis encontrar estos ejemplos y mucho más. Para mantenerte al día con LUCA visita nuestra
22 de enero de 2020
AI & Data
Computación cuántica e Inteligencia Artificial
La computación cuántica ha saltado de los entornos de investigación básica y los departamentos de innovación de las grandes tecnológicas a los medios de comunicación. Aunque no pretendamos hablar de igual a igual con uno de los personajes de “The big bang Theory”, vamos a intentar explicar de forma clara en qué consiste la computación cuántica, por qué despierta tanto interés hoy en día y cuál puede ser su impacto en el ámbito de la inteligencia artificial. La computación cuántica, al igual que la inteligencia artificial, no es algo nuevo. Surgió en 1981, cuando Paul Benioff propuso aplicar las leyes cuánticas al mundo de la computación. Hoy día, el interés de esta propuesta es mucho más relevante ya que la computación tradicional está llegando a un límite en el que hay que cambiar las reglas (leyes físicas) del juego. También, como veremos más adelante, porque la computación cuántica tiene el potencial de ofrecer más potencia de cálculo, y más capacidad de memoria, con un menor consumo de energía que los ordenadores tradicionales. Esto nos va a permitir resolver problemas que antes eran totalmente inabordables. Los límites de la ley de Moore La Ley de Moore, enunciada en 1965 predijo que el número de transistores en un microprocesador se duplicaría aproximadamente cada 24 meses. Se ha cumplido con asombrosa precisión, reduciendo gradualmente el tamaño de los transistores para producir microchips cada vez más pequeños y logrando, de esta forma, mayores velocidades de proceso. Actualmente, los transistores más modernos se fabrican con tecnología de 14 nm (1nm = 1 mil millonésima de metro) y puede que se consigan alcanzar los 5nm en 2020. A medida que se reduce el tamaño es más complicado disipar el calor. Y no sólo eso. A esta escala las leyes de la física clásica dejan de funcionar, y los electrones, que son partículas cuánticas, se pueden ir “por donde no deben”. Si una partícula clásica se encuentra con un obstáculo que no puede atravesar, rebota. Un electrón es una partícula cuántica, puede comportarse como una onda y, si el obstáculo es lo suficientemente delgado, puede atravesarlo. Como resultado, el chip “deja de funcionar” por lo que se conoce como “efecto túnel”, debido al cual una parte de la corriente eléctrica puede saltar de un circuito a otro a través de un aislante. Figura 2: Efecto túnel de una partícula sobre un potencial V>E Por ello, debemos empezar a trabajar con las leyes de la física cuántica que, si recordamos, es la rama de la ciencia que estudia las características, comportamientos e interacciones de partículas a nivel atómico y subatómico. La computación cuántica es una nueva forma de computar que aplica las leyes de la mecánica cuántica. Para entender mejor en qué consiste, lo compararemos con la computación tradicional. Computación clásica: bits La teoría de computación clásica se basa en trabajar con voltajes eléctricos que se traducen en dos estados: “no señal” = 0 “señal” = 1 Trabajar con dos estados es muy interesante porque permite aplicar un formalismo matemático muy potente, el Algebra de Boole, sobre el cual se define la toda teoría de computación. Así, en un ordenador convencional la información se representa como cadenas de bits 0 o 1. En cada momento, el estado del ordenador lo describen los estados de sus bits. Por ejemplo, en un sistema de dos bits, el conjunto de todos los estados tiene 4 elementos y es {00, 01, 10, 11}. Para cambiar de un estado a otro, el sistema aplica a los bits lo que se conoce como puertas lógicas de Boole. Por ejemplo, NAND es una puerta lógica universal a partir de la cual se pueden construir las otras puertas lógicas de dos bits AND, OR, NOR, XOR, XNOR. Figura 2: Puerta lógica de Boole NAND Computación cuántica: qubits En computación cuántica, en lugar de trabajar a nivel de voltajes eléctricos, se trabaja a nivel de cuantos y por tanto entran en juego las leyes de la Física Cuántica. Entre ellas, nos van a interesar en particular dos: la superposición de estados y el entrelazamiento. A continuación vamos a ver en qué consisten y qué ventajas aportan a un ordenador cuántico. ¿Qué es la Superposición (superposition)? La superposición de estados consiste en la capacidad de una partícula de encontrarse en dos estados distintos al mismo tiempo. Gracias a esta propiedad la capacidad de procesar información de un sistema cuántico es mucho mayor que la de un sistema digital clásico. El ejemplo clásico del estado de superposición es el experimento (teórico) del gato de Schrödinger, que estaba "vivo y muerto" al mismo tiempo. Figura 3: Representación del experimento de imaginario de Schröedinger que refleja en qué consiste el estado de superposición cuántico (Christian Schirm) Al igual que en un ordenador clásico la información se almacena en bits, en un ordenador cuántico se almacena en qubits. La diferencia entre un bit y un qubit es que el qubit puede encontrarse en un estado intermedio entre 0 y 1 con una probabilidad respectiva para cada valor que en conjunto deben sumar el 100%. Comprendiendo los qubits El estado cuántico general de un qubit puede representarse mediante una superposición lineal de sus dos estados base ortonormales. Esta base se puede denotar como |0⟩ y |1⟩, siendo $latex {\displaystyle |0\rangle ={\bigl [}{\begin{smallmatrix}1\\0\end{smallmatrix}}{\bigr ]}}$ y $latex {\displaystyle |1\rangle ={\bigl [}{\begin{smallmatrix}0\\1\end{smallmatrix}}{\bigr ]}}$. Cada uno de estos estados corresponde al 0 y 1 del bit clásico. Como comentábamos arriba, un qubit puede encontrarse en un estado de superposición cuántica combinación de esos dos estados. $latex {\psi = {\displaystyle \alpha |0\rangle +\beta |1\rangle }}$ Cumpliéndose que $latex \langle \psi | \psi \rangle = 1 \rightarrow \alpha^* \alpha \langle 0 |0 \rangle + \beta^* \beta \langle 1 |1 \rangle + \alpha^* \beta \langle 0 |1 \rangle + \beta^* \alpha \langle 1 |0 \rangle$, ergo es fácil cancelar los dos últimos términos y derivar que $latex |\alpha|^2 + |\beta|^2=1$. Jugar con los bra-kets en mecánica cuántica facilita mucho la vida. En resumen: un bit puede contener un valor (0 ó 1), o contener ambos valores (0 y 1). La esfera de Bloch es una representación geométrica del espacio de estados puros de un sistema cuántico de dos niveles. Cualquier punto de la esfera de Bloch es un estado cuántico o qubit y se puede representar como una combinación lineal de los estados |0⟩ y |1⟩ Figura 3: Esfera de Bloch ( MuncherOfSpleens ) En cada instante del tiempo el qubit se encuentra en una superposición de los estados |0⟩ y |1⟩. Sin embargo, cuando se realiza una medida el estado se colapsa a uno de los dos valores. En el experimento del gato de Schödinger, mientras la caja estaba cerrada, el gato podía estar “vivo y muerto” en determinado porcentaje, al abrir la caja=medir, el gato estaba en uno de los dos estados. De la misma forma, un qubit no vale sólo 1 o 0 como un bit normal, sino que puede ser, por ejemplo, un 1 en un 40% y un 0 en un 60%. Sin embargo, cuando lo leemos, sólo podemos obtener 1 o 0 (la medida se “colapsa” a un valor, como indicamos antes) y las probabilidades que tenía cada valor de salir se pierden porque al medirlo lo hemos modificado. Esta es la razón por la cual la información que puede manejar un sistema cuántico es mucho mayor que la que maneja un sistema digital clásico, ya que no sólo contiene cero o uno sino una descripción de la probabilidad de que cada bit se encuentre en cero o uno al realizar una medida. Y no sólo esto. El número de qubits indica la cantidad de estados que pueden estar en superposición. Así, con un qubit podemos tener 2 estados; con dos qubits, 4, con tres qubits 8… Es decir, la capacidad de cálculo aumenta de manera exponencial ($latex 2^n$) con cada qubit que agreguemos. En resumen, gracias a la superposición, los computadores cuánticos tienen más capacidad de cálculo y de memoria que los tradicionales. Entrelazamiento (entanglement) El entrelazamiento, tiene que ver con el hecho de que, en un sistema cuántico las partículas y sus interacciones no pueden considerarse por separado como si fuesen bolas en una mesa de billar sino que hay que tratar todo el sistema en conjunto. Según esta propiedad, si aplicamos un pulso de microondas sobre dos o más parejas de qubits, éstos pasan a formar un sistema único, que se conoce como entrelazamiento cuántico. Esto permite a los científicos cambiar el estado de ambos qubits modificando el estado de tan sólo uno de ellos, aunque estén separados por grandes distancias. Esto es lo que Einstein llamaba, "la espeluznante acción a distancia" (spooky action at a distance). En el siguiente vídeo de Fermilab se explica de forma clara y sencilla en qué consiste la "acción a distancia". https://www.youtube.com/watch?v=JFozGfxmi8A Pero, para que estos qubits en superposición pueden entrelazarse, es necesario que se den unas condiciones físicas muy exigentes, ya que son muy sensibles a las perturbaciones y al ruido. Deben estar rodeados de vacío y a temperaturas muy bajas, próximas el cero absoluto (-273 K). Cuando no se dan estas condiciones, se pasa de un estado cuántico a un estado mecánico-clásico en lo que se conoce como decoherencia cuántica. Las empresas líderes en computación cuántica afrontan el desafío de la decoherencia con distintas estrategias. Por ejemplo, Google, e IBM utilizan circuitos semiconductores a muy bajas temperaturas. Microsoft investiga sobre un tipo de partícula muy concreta, los fermiones de Majorana. Otras compañías como IonQ trabajan con trampas de iones. Los qubits son muy frágiles y pierden coherencia a medida que interactúan con el entorno. Por ello, es muy importante encontrar un equilibrio entre la fiabilidad del sistema y su escalabilidad, ya que al aumentar el número de qubits, la tasa de error también se incrementa. Es fácil imaginar cuánto complican estas condiciones la creación de computadoras cuánticas y por qué se descarta que los ordenadores cuánticos se conviertan en dispositivos de uso doméstico a corto o medio plazo. Figura 3: Trampa de iones utilizada en una computadora cuántica (Wikipedia) ¿Por qué es interesante el entrelazamiento cuántico? Gracias al entrelazamiento, un aumento en el número de qubits (n) se traduce en un incremento exponencial (2^n) en la potencia de computación de un ordenador cuántico, lo que permite realizar cálculos en grandes cantidades de datos a la vez. Este incremento en la velocidad de cálculo de los ordenadores cuánticos ha sido clave para el desarrollo de dos algoritmos muy importantes cuyas aplicaciones prácticas son de un interés incuestionable: el algoritmo de temple cuántico en 1989 y el algoritmo de Shor en 1994 . El algoritmo de Shor sirve para descomponer factorialmente números muy grandes en sus factores primos a gran velocidad. Puede sonar a mera curiosidad matemática, pero en realidad, es la base de los sistemas de encriptación y cifrado de datos que se usan actualmente. De ahí la preocupación de individuos, empresas y gobiernos porque en un futuro no tan lejano, un ordenador cuántico con suficientes qubits deje obsoletos estos sistemas de cifrado. El algoritmo de temple cuántico (Quantum annealing) se utiliza para problemas de búsqueda local en contextos de optimización multivariable. Estos problemas generalmente consisten en encontrar el máximo o el mínimo de una función de coste, compuesta de muchas variables independientes con gran número de instancias. Este algoritmo abre un interesante campo de aplicaciones prácticas de la computación cuántica relacionadas con la optimización de todo tipo de procesos. Por ejemplo, calcular, en un tratamiento de radioterapia, cuál es el mínimo de radiación suficiente para eliminar un tumor, causando los menores efectos secundarios al paciente. Aplicaciones de la computación cuántica Puede parecer algo muy abstracto, pero la computación cuántica podrá tener aplicaciones prácticas a corto plazo en distintas áreas de la industria y la tecnología, como la química cuántica, diseño de nuevos materiales, optimización de procesos etc. Veamos algunos ejemplos: Por ejemplo, podría usarse para descubrir materiales superconductores a temperatura ambiente que permitirían la transmisión de energía sin pérdidas. Para generar simulaciones biomédicas, capaces de crear, simular y modelar estructuras moleculares que pueden ser la base de nuevos y potentes fármacos. Para optimizar complejos procesos logísticos Elaborar complejos modelos financieros y de gestión de riesgos Modelar complejas reacciones químicas que tienen grandes costes energéticos y medioambientale. Por ejemplo, el método Haber-Bosch de fijación del nitrógeno ambiental para la obtención de fertilizantes, fundamental para mejorar la producción mundial de alimentos. Para crear sistemas de aprendizaje automático más rápidos y precisos que los que se pueden crear con ordenadores tradicionales. En resumen, las aplicaciones principales de la computación cuántica están relacionadas con la simulación de sistemas cuánticos (reacciones a nivel molecular), la optimización cuántica (resolver problemas minimizando las funciones de coste) y los relacionados con la física estocástica (simular procesos aleatorios). Computación cuántica y machine learning Cuando hablamos de inteligencia artificial y de aprendizaje automático, estamos hablando de trabajar con grandes cantidades de datos. Por ejemplo, en aprendizaje automático, problemas tan habituales como los problemas de clasificación, suelen resolverse con métodos basados en máquinas de vectores de soporte (SVMs). Estos algoritmos son muy potentes, pero, cuando el espacio de características es grande, la velocidad de cálculo se convierte en una gran limitación. El uso de ordenadores cuánticos para el cálculo de estos algoritmos podría hacer desaparecer esta limitación. Por otra parte, en los problemas de optimización cuántica se utiliza la aplicación del algoritmo de temple cuántico a la función que representa la tasa de error de una red neuronal, para obtener ese valor mínimo para el cual esa red neuronal es más eficiente. El aprendizaje automático también puede ser clave para hacer más fiables los ordenadores cuánticos, ya que mantener estados cuánticos y manipular de forma segura los qubits es un auténtico desafío. En particular, pueden ser muy útiles para aportar nuevos enfoques a la gestión de errores en los qubits. Conclusión La computación cuántica no revolucionará a corto plazo la informática en nuestros hogares pero si generará cambios disruptivos en nuestra forma de vivir. Para hacernos una idea de cómo la Física Cuántica ha cambiado el modo en que vemos la información y los usos que hacemos de ella, os recomendemos ver este vídeo (18 minutos) en el que Antonio Acín nos lo explica de forma clara e incluso divertida. Por cierto que, el vídeo es de 2016, y hoy día sí que existen computadores cuánticos. En enero de este año (2019) IBM presentó el IBM Q System One, el primer ordenador cuántico para uso comercial. Éste combina computación cuántica con computación "tradicional" para ofrecer un sistema de 20 qubits, al que se puede acceder incluso en modo abierto.
14 de enero de 2020
AI & Data
Machine Learning y relaciones de pareja
Si el Machine Learning, uno de los campos de la Inteligencia Artificial de los que más se habla últimamente en Internet, es capaz de elaborar predicciones sobre tendencias financieras, crear sistemas de navegación inteligentes para coches, detectar spam, diagnosticar enfermedades, o detectar emociones… ¿por qué no usarlo para prevenir/evitar los enfrentamientos de pareja? Machine Learning para predecir peleas conyugales. Parece una broma, pero ¿por qué no? Danor Aharon, en un divertido post de Datascience-central nos plantea cómo sería una hipotética i-Relation app capaz de enviarnos alertas como ésta: Figura 1: Ejemplo mensajes alerta generados por i-Relation. Podría: Advertirnos del riesgo de tener un enfrentamiento con nuestra pareja Analizar posibles motivos: “Cumpleaños/aniversario/cita importante olvidada” Proponer posibles salidas: “Envío urgente de flores, bombones, tarjeta con corazones…” Advertir sobre el uso/abuso de las “salidas”: “Cuidado, en el último mes has enviado ya cuatro cajas de bombones a tu novia” Y así, gracias a esta estupenda aplicación evita-peleas, las parejas usuarias de la app podrían ser “felices y comer perdices”. ¿Puede existir algo así? Vamos a ver cómo funcionaría la app i-Relation propuesta por Aharon. ¿Cómo funciona el Machine Learning? Tenemos un programa que “aprende” a partir de un conjunto de datos (lo que llamamos “training dataset”) que recogen determinadas características o “features”, seleccionadas por su relevancia. Estas características se pueden combinar de muchas formas posibles, pero lo importante es que se “clasifiquen” de forma adecuada. El programa, “entrenado” con un gran número de casos que le hemos ido facilitando, “aprende” a clasificar una determinada combinación de características “nueva”, basándose en lo aprendido con el “training dataset”. Por ejemplo, en una aplicación médica, si para cada paciente tenemos una serie de características (temperatura corporal, presión sanguínea, ritmo cardíaco, dolor, inflamación…) y hemos entrenado nuestro sistema etiquetando distintas combinaciones de estas variables como “probable infección”, “riesgo de infarto”, etc… Cuando le planteamos un nuevo caso, si las características (o variables) fueran: Fiebre alta = SI Inflamación = SI Dolor = SI Sería capaz de diagnosticar “Infección”. Es decir, asignar (=predecir) la etiqueta que encaja mejor con esa determinada combinación de variables.Este sería un buen ejemplo de aprendizaje supervisado, en el que tenemos un objetivo definido (target), que en este caso es el diagnóstico. Una vez la “Machine” (el programa) ha “aprendido” todos los datos de síntomas de pacientes (features) que le hemos facilitado, y el diagnóstico (target) correspondiente a cada combinación de esos síntomas o características, usará un clasificador (por ejemplo, un árbol de decisión, o un bosque aleatorio) para asignar el diagnóstico que encaje mejor con el conjunto de síntomas, basado en lo aprendido de casos anteriores. Está claro que habría que llevar a cabo otros procesos de depuración/filtrado de los datos, prevención del sobreajuste (overfitting) etc. para mejorar la precisión de la predicción, pero en este caso los vamos a obviar por simplicidad. El problema. El problema es claro: si las parejas supieran cómo evitar las discusiones, sin duda alguna, lo harían. Sin embargo, no es tan fácil detectar los detonantes de una buena bronca. ¿Cuáles son las causas más habituales? ¿Cuáles van a ser las “características” cuya combinación nos conduce a un target pelea=SI? Características/Features: Para poder reaccionar prácticamente en tiempo real, vamos a tener que manejar muchos datos en poco tiempo. Estos datos, según sus posibles combinaciones, le darán a la app la pista sobre si se avecina (o no) un conflicto. Se trata de datos sobre: Comportamiento humano Estado de ánimo Causas externas Y otras causas genéricas como: Distintos criterios de gasto Problemas con los niños etc. ¿Cuál sería la base de la App? Como cualquier app estándar, sabría de nosotros mucho más de lo que nos imaginamos. Recibiría información de los distintos dispositivos y sensores que nos acompañan en nuestra vida diaria y podría saber desde lo que comemos, hasta cuánto hemos dormido, cuándo son tus días fértiles o qué enfermedad tuviste la semana pasada… También debería recoger toda esta información sobre nuestra media naranja. ¿Cómo aprendería? Primero, tendríamos recoger datos para entrenar el sistema, pongamos que durante dos o tres meses. Después habría que seleccionar las características más significativas para cada caso, eliminando así información redundante o irrelevante. A continuación, habría decidir qué algoritmo aplicar. Se trata de una tarea de clasificación, en el que la respuesta buscada es binaria: “Se avecina tormenta” o “Todo OK”. (en versiones posteriores se podrían incluir las “recomendaciones” de mitigación en forma de bombones, flores etc, ampliando así el rango de posibles respuestas). Obviando procesos de pre-procesamiento de datos, validaciones, técnicas de Deep Learning y análisis estadísticos, ésta app podría basarse en un algoritmo de regresión logística. Así, podría predecir el valor de una variable categórica (el target) en función de variables independientes o predictoras (las características). Está claro que no se podría garantizar un 100% de precisión en la predicción. Aunque ésta se ha incrementado notablemente en algunos campos de aplicación de la Inteligencia Artificial (por ejemplo, el reconocimiento de caras), todavía hay muchas áreas de mejora. ¿Qué os parecería levantaros por la mañana y poder recibir una notificación como ésta? Figura 2: Tú café de la mañana con el informe de riesgo de discutir con tu novio. Fuente. Bromas aparte, esta app imaginaria es un ejemplo más de cómo podemos aplicar el Machine Learning a la elaboración de predicciones sobre… casi cualquier cosa. Aunque si tu pareja necesita un app para saber cómo te sientes ¡Cambia de pareja!
27 de diciembre de 2019
AI & Data
Machine Learning for kids: Construye con tus hijos un bot experto en su animal favorito
Para estos días de estar en casa, recuperamos uno post que preparamos para hacer algo interesante con los peques durante las pasadas vacaciones de Navidad. Os propusimos pasar una tarde entretenida haciendo un sencillo experimento de Machine Learning con nuestros niños. Es importante que los niños conozcan cómo que funciona nuestro mundo. ¿Y qué mejor manera de comprender las capacidades e implicaciones del ubicuo aprendizaje automático que poder construir algo utilizando esta tecnología ellos mismos? Usaremos una herramienta basada en web, (no hay que instalar nada, ni configurar nada complejo), que nos permitirá introducir a los niños en el mundo del entrenamiento de sistemas de aprendizaje automático y el tipo de cosas que se puede construir con ellos. Y de la forma que más les gusta aprender a los niños (y a los mayores también): ¡jugando!. Si no tienes hijos, ni ningún pequeño amigo más o menos a mano, no hay problema: puedes recuperar al niño/niña de tu infancia, y pasar un buen rato probándolo contigo mismo. ¿Qué te parece el plan?. (Por cierto, os confirmamos que lo hemos probado con un auténtido "kid" de 13 años montamos un bot en aproximadamente 1,5 horas.) La herramienta fue diseñada por Dale Lane utilizando APIs de IBM Watson Developer Cloud para usar en colegios o clubes de programación para niños. Ofrece un sencillo entorno que entrenamiento de modelos de aprendizaje automático para clasificación de texto, números o reconocimiento de imágenes. Los niños pueden crear proyectos o construir juegos con los modelos de aprendizaje que ellos mismos han entrenado con Scratch o Python, Nosotros, en este ejemplo, usaremos Python. 1. Creación de un proyecto nuevo. Manos a la obra. La idea es crear un chatbot capaz de respondernos a preguntas sobre el tema que elijamos. Lo primero que hay que hacer es decidir sobre qué tema queremos crearlo. Puede ser: Nuestro animal favorito Nuestro deporte favorito Nuestro personaje favorito de novela, cómic, cine, vídeo etc. Nuestro colegio, nuestro barrio, nuestro país… Lo que queramos. Como nos gustan mucho los búhos, hemos decidido que sean los protagonistas de nuestro proyecto. A continuación, pensamos cinco cosas que se puede preguntar sobre ellos. Por ejemplo: ¿Qué comen los búhos? ¿En qué partes del mundo se les puede encontrar? ¿Cuánto tiempo viven los búhos? ¿Qué especies de búhos hay? ¿Qué tamaño pueden alcanzar? Una vez recopilada la información con la que queremos entrenar nuestro sistema, vamos a la página web de Machine Learning for Kids. (Para agrandar las imágenes, haced click sobre ellas) Figura 1: Página web de ML for Kids Vamos a probar la opción “Sin registro” y, si nos gusta la experiencia, nos registraremos para el próximo proyecto. Creamos un proyecto nuevo con el botón " + Añadir proyecto" ,que aparece en la parte superior derecha. Indicamos el nombre del proyecto, en nuestro ejemplo, Búhos, y seleccionamos de qué tipo es (reconocimiento de texto, de números o de imágenes). El nuestro es de texto. También indicamos el idioma. Figura 2: Creación de un nuevo proyecto. 2. Entrenamiento. Ahora tendremos que “entrenar” a la computadora. Lo haremos dándole ejemplos de los que aprender. Para ello, hacemos click sobre el proyecto sobre el que queremos trabajar y nos dará tres opciones. Figura 3: El proyecto, ya creado, aparece en una especie de navegador de proyectos. Podemos abrirlo, o borrarlo. Elegimos la primera “Entrenar”. Figura 4: Seleccionamos la opción "entrenar". Y, a continuación, “Añadir nueva etiqueta” (“Add New label”, en la versión española hay algunos mensajes que aparecen en inglés, como este) Figura 5: Añadir etiqueta. Creamos una etiqueta “resumen” para cada una de las preguntas que nos hemos planteado sobre los búhos. Por ejemplo, para la primera pregunta “¿Qué comen los búhos?”, podemos elegir como etiqueta “Comida”, o “Alimentación” (no admite tilde). Lo que queramos. Es sólo una etiqueta. Vamos creando una etiqueta para cada pregunta y nos queda algo así: Figura 6: Etiquetas ya creadas. Para cada etiqueta, añadiremos, por lo menos 5 ejemplos. Para ello, en cada uno de los recuadros, seleccionamos “Add example” y añadimos hasta 5 formas distintas de formular esa pregunta. Por ejemplo, en Alimentación, podemos poner: 1. ¿Qué comen los búhos? 2. ¿Qué les gusta comer a los búhos? 3. ¿Qué tipo de comida prefieren los búhos? 4. Si fueras un búho, ¿qué te gustaría comer? 5. ¿Cuál es el manjar favorito de los búhos? Y generamos 5 preguntas para cada cuadro. Queda algo así: Figura 7: Ejemplo de preguntas. Hacemos lo mismo para cada una de las etiquetas (toca escribir un poco): Figura 8: Escribimos formas alternativas de preguntar por cada uno de los temas. Una vez hecho esto, seleccionamos “Volver al proyecto” (arriba a la izquierda) y volvemos a la pantalla que aparecía en la Figura 4. Ha llegado el momento de “Aprender y probar”. Si hemos recogido suficientes ejemplos, la máquina aprenderá a reconocer sobre qué le estamos preguntado, basándose en los ejemplos de preguntas que hemos hecho. Figura 9: Con las preguntas de ejemplo entrenamos a la computadora para que identifique el tema de la pregunta. La siguiente figura nos recuerda lo que hemos hasta ahora, recoger 5 ejemplos de pregunta por cada tema, y el paso siguiente: pulsar el botón azul de la parte inferior izquierda para empezar el entrenamiento. Figura 10: Lanzamos el entrenamiento. En lo que se entrena el modelo, puede que nos hagan una pequeña encuesta sobre Machine Learning. Cuando termine, aparece información de estatus. Como no nos hemos registrado, nos advierten que nuestro modelo se borrará en unas horas. Figura 11: Información de estatus del modelo ya entrenado. 3. Creamos un juego en Scratch o Python. Volvemos a la página principal del proyecto con “ Volver al proyecto”. Ha llegado el momento de usar el modelo de aprendizaje automático que hemos entrenado para crear un juego en Scratch o Python. Para ello, seleccionamos la tercera opción, “Make” (recordar Figura 4) y después, elegimos la opción Python. Figura 12: Seleccionamos la opción Python. Llegamos a esta pantalla: Figura 13: Usamos ML en Python. Nos vamos a fijar en la ventana de código, a la derecha. Copiamos las líneas que aparecen en el recuadro rojo cuyo objetivo es importar la librería "requests" y definir la función "Classify". La primera pasa el texto que introducimos al modelo de aprendizaje automático que hemos creado y nos devuelve el resultado que mejor se aproxime. Figura 14: Copiamos estas líneas de código en Python. A continuación vamos a necesitar un editor cómodo para Python. Podemos usar el que más nos guste. Nosotros vamos a usar Jupyter Notebook. Si no lo tenéis instalado, en este post, Python para todos (2): ¿Qué son los Jupyter Notebooks? , podéis encontrar una forma sencilla de hacerlo. Perosi no queremos instalarnos nada, podemos usar la versión browser de Jupyter, o bien, si tenemos una cuenta Office 365 o Microsoft Account, podemos usar también los notebooks de Microsoft Azure. Nosotros hemos elegido esta última opción, pero cualquiera de las tres es perfectamente válida. Iniciamos sesión con nuestro usuario de hotmail, live, u Office 365 en Microsoft Azure Notebooks , y creamos un proyecto nuevo con el botón " + New Proyect" que aparece arriba a la derecha. Figura 15: Creamos un proyecto nuevo. Le asignamos un nombre, y un ID numérico: Figura 16: Asignamos nombre e ID al proyecto. Indicamos qué tipo de proyecto es: Notebook Figura 17: Indicamos que se trata de un Notebook. Asignamos un nombre al Notebook e indicamos la v ersión de Python con la que queremos trabajar: 3.5 Figura 18: Indicamos nombre y versión. Pegamos en este notebook el código que hemos copiado anteriormente (ver figura 14), donde se hacía una llamada a la librería requests y la definición de la función classify. (Explicaremos paso a paso con imágenes cómo hacerlo, y al final del proceso, incorporamos la versión final editable de la que podéis copiar directamente el código para pegarlo en vuestro notebook.) Figura 19: "Pegamos" el código que copiamos antes-- carga de librería requests y definición de la función classify. Ahora tenemos que definir la función respuesta: answer question. Para ello, añadirmos a continuación las siguientes líneas de código. Para cada tipo de pregunta, "class_name" generamos un bucle: "if answerclass == nuestra etiqueta" print"" Figura 20: Para cada tipo de pregunta se genera un bucle if--print--efif. (Nota: Según la versión Python, habrá que udar la función raw_input(">") o input(">") a secas) Después, en el espacio entre "" agregaremos las respuestas que hemos buscado. Toca escribir de nuevo. Figura 21: Añadimos las respuestas correspondientes a cada pregunta entre las comillas después de print. Por último, cerramos agregando la pregunta que nos va a hacer el bot: Figura 22: Agregamos la pregunta que nos hará el chatbot. (Según la versión de Python, la función print puede necesitar (), y quedar así: print("¿Qué te gustaría..."). Debe quedar algo así (ahora ya puedes copiar directamente el código en tu notebook): https://gist.github.com/PalomaRS/5b7f8e2a29dea282e15e5b6a04f53baa#file-buhosbot-ipynb Ahora, ya sólo nos queda ejecutar la celda desde el menú Cell/Run Cells. Como ya os adelantamos al principio del post, pusimos a prueba todo el proceso con Miguel, de 13 años, que eligió como tema para su bot los cerdos (es una apasionado de la biología, pero también del jamón). Para no hacerle escribir demasiado, en lugar de crear 5 etiquetas, creamos 3, eso sí, con 5 preguntas por cada una de ellas. Nos quedó así: Figura 23: Versión "corta" creando sólo 3 etiquetas. Completamos la función "answer question"como hicimos en la figura 21 con información sobre nuestro nuevo animal favorito y, al ejecutar la celda desde el menú Cell/Run Cells, nos aparece el cuadro de entrada con la pregunta : "¿Qué te gustaría saber de....?" Figura 24: El bot ya está activo y le podemos preguntar. Y ¡ya podemos preguntar!. Nuestro bot no será "muy listo", porque tampoco es que nos hayamos esforzado mucho en entrenarlo a conciencia, pero ahí le tenemos, dispuesto a responder nuestras preguntas a partir de la información que le hemos facilitado para "aprender". Figura 25: Ejemplo del pregunta. Como no nos registramos en Machine Learning for Kids, cuando el proyecto "caduque", el bot dejará de funcionar. Si quieres volver a probarlo otro día, regístrate. En esta misma web podrás encontrar fichas sobre este proyecto e información sobre las muchas cosas que se pueden hacer. Esperamos que os haya gustado. Nos encantará saber, si lo habéis probado, qué tal os ha ido. ¡Dejadnos un comentario! Para mantenerte al día con LUCA visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn y YouTube.
19 de diciembre de 2019
AI & Data
Data Science: ¿Cómo hacer las preguntas adecuadas?
Cuando hablamos de Ciencia de Datos, o de Aprendizaje Automático, solemos hablar de datos, algoritmos, modelos, etc. Y no nos damos cuenta de que, quizás, hemos pasado"de puntillas" por una de las fases más relevantes de todo el proceso: plantear las preguntas adecuadas. Aunque parece ser que Albert Einstein jamás pronunció esta frase, bien podría haberlo hecho, porque refleja una gran verdad: la importancia de definir claramente cuál es el problema que queremos resolver antes de lanzarnos a buscar respuestas. "Si tuviera sólo una hora para salvar el mundo, pasaría cincuenta y cinco minutos definiendo las preguntas, y sólo cinco minutos encontrando las respuestas" En la era de los datos, seguimos lanzándonos a la búsqueda de respuestas, sin habernos detenido lo suficiente a la hora de plantear las preguntas, sin haber definido claramente cuáles son los problemas prioritarios. En lugar de preguntarnos: ¿Qué pregunta identifica nuestro problema? o ¿qué datos necesitamos para resolverla?, lo hacemos al revés. ¿Qué datos tenemos? o ¿a qué datos podemos acceder?. Esto es la causa de que, en muchas ocasiones, las iniciativas basadas en datos no obtengan los resultados esperados. Lo cierto es que muchos gobiernos, empresas, o comunidades afrontan problemas muy similares que pueden resolverse mediante iniciativas de datos e inteligencia artificial. Sin embargo, carecen de los recursos para identificar cuáles son realmente las cuestiones que merecen su atención e inversión. Las 100 preguntas Para dar respuesta a esta situación, The GovLab, un centro de investigación de la Universidad de Nueva York, ha lanzado recientemente el proyecto "100 Questions inititative". El objetivo de este proyecto es identificar, de forma participativa, las preguntas más relevantes, y aprender a priorizar aquéllas que son de mayor impacto, más novedosas o más factibles. ¿Quién hace las preguntas? Se basa en identificar, y formar perfiles conocidos como "bilingües" (bilinguals). Son expertos que combinan conocimientos en alguno de los dominios definidos en el proyecto, con conocimientos en tecnología y ciencia de datos. Su objetivo es mejorar la vida de las personas y resolver problemas de interés público mediante la ciencia de datos. Lo dominios de conocimiento definidos son los siguientes: migraciones igualdad de género cambio climático trabajo futuro respuesta a desastres inclusión financiera salud global educación ¿Con qué criterios se plantean? Hay dos criterios fundamentales a la hora de elegir las preguntas. El primero, su impacto. Deben ser preguntas cuyas respuestas puedan cambiar la vida de las personas, o bien permitir importantes avances en algún campo científico. El segundo criterio básico, es que la respuesta a estas preguntas pueda basarse en datos. Se pueden considerar otros criterios, como por ejemplo, la claridad, o la originalidad. Categorías de preguntas A partir de estos criterios, se definen 4 categorías de preguntas que pueden ayudarnos a cambiar la forma en que enfocamos los problemas que nos atañen. Análisis de la situación: Preguntas relacionadas con una mejor comprensión de las tendencias y la distribución geográfica de los fenómenos (a menudo en tiempo real). Causa y efecto: Preguntas que pueden ayudar a las partes interesadas a comprender mejor los factores clave y las consecuencias de una situación. Esta categoría busca establecer qué variables pueden marcar la diferencia para un problema determinado. Predicción: Preguntas que interrogan las nuevas capacidades de predicción que permitirían a las partes interesadas evaluar los riesgos, las necesidades y las oportunidades futuras. Evaluación de impacto: Estas preguntas que tratan de determinar los resultados (positivos o negativos) de varias intervenciones. ¿Cómo pasar de "data-driven" a "question-driven"? Para poder completar con éxito el proceso extremo a extremo, es decir, de las preguntas a los datos, y del conocimiento a la acción, es fundamentar alcanzar compromisos con los diferentes actores implicados. En primer lugar, la participación pública, a través de encuestas abiertas, garantiza la pertinencia y legitimidad de las preguntas. Es decir, que se trate de "problemas reales" para las personas y sus comunidades. También resulta fundamental colaborar con los titulares de los datos para garantizar su disponibilidad y accesibilidad. Por último, es importante mantener una conversación fluida y continua con los "dueños del problema", ya sea en el gobierno, el sector privado o la sociedad civil, que permita emprender acciones a partir de los insights obtenidos tras el análisis de los datos. Conclusión Los datos no nos van a decir nada interesante, a menos que sepamos hacerles las preguntas adecuadas. Esta máxima, no es exclusiva de la Ciencia de Datos. Se puede aplicar a cualquier problema al que nos enfrentemos como personas, como empresas, como instituciones o como gobiernos. "Tus datos son tan valiosos como bien planteadas estén las preguntas que les hagas" Gracias a iniciativas como esta, individuos, empresas, instituciones y gobiernos tendrán más fácil la definición de las preguntas clave para la resolución de sus problemas y podrán pasar de ser “data-driven” a “question-driven”. Referencias: Raw data won’t solve our problems — asking the right questions will Para mantenerte al día con LUCA, visita nuestra .
12 de diciembre de 2019
AI & Data
IA bajo el microscopio: meetup y entrega de Data Science Awards Spain 2019
El pasado 5 de diciembre, en el Auditorio del Espacio Fundación Telefónica, tuvo lugar el encuentro Inteligencia Artificial bajo el Microscopio, en el que se hizo un interesante repaso de los avances que han tenido lugar en el ámbito de la inteligencia artificial en 2019, no en balde reconocido como “El año de la IA”. Agenda Abrió la sesión Elena Gil CEO de LUCA y Directora Global de Big Data B2B en Telefónica, que explicó por qué 2019 ha sido un año clave en el desarrollo de la Inteligencia Artificial y Big Data, tanto por el grado de adopción y resultados en las empresas, como por su impacto en la vida de las personas y sociedades. También hablo del principal desafío que debe afrontar: su sostenibilidad, tanto desde el punto de vista comercial, como social y ético. Figura 1: Elena Gil, CEO de LUCA Telefónica tiene la misión de hacer de la Inteligencia Artificial una tecnología inclusiva y por ello, lidera, desde LUCA, iniciativas como los Data Science Awards Spain. “Con los Data Science Awards Spain queremos poner en valor el gran trabajo de empresas, Administraciones Públicas, profesionales de la ciencia de datos y periodistas que hoy ya están sacando el máximo beneficio del Big Data y la Inteligencia Artificial“ El proyecto Leia A continuación, Richard Benjamins, AI ambassador de Telefónica y Juan Romeu, Asesor lingüístico y técnico de comunicación en la Real Academia Española presentaron una ponencia sobre LEIA, el proyecto pionero que Telefónica está llevando a cabo o junto a la RAE para llevar el idioma español a los proyectos más punteros de inteligencia artificial. Según datos del Instituto Cervantes en 2019, más de 580 millones de personas hablan español, lo que supone un 7,6% de la población mundial. Para 483 millones de estos 580, el español es su lengua materna. Por ello, ya es la tercera lengua más usada en internet, y la segunda en redes sociales. Esto se traduce en el hecho de que 700 millones de máquinas "acechan" al español, en forma de bots que usan el idioma de forma incorrecta, editores de texto que "roban" palabras al no incluirlas en sus diccionarios etc. En palabras de Santiago Muñoz, el Director de la RAE: "No podemos permitir que la tecnología rompa el idioma" Santiago Muñoz, el Director de la RAE Por ello, el proyecto LEIA, haciendo honor a su nombre, es un proyecto "galáctico" cuya misión es "unir imperios, crear unidad entre humanidades y ciencias, entre humanos y máquinas". Para lograrlo se plantea tres objetivos: Enseñar a las máquinas a hablar bien español Usar la Inteligencia Artificial para ayudar a las personas a hablar bien Certificar el buen uso del español Mesa redonda: "Fake news, de la sobreinformación a la desinformación Tras la ponencia, Paz Noriega, Gerente de Comunicación en Telefónica, moderó una interesante mesa redonda, Fake news: de la sobreinformación a la desinformación, que versó sobre cómo afrontar la situación actual de proliferación de noticias falsas en redes sociales. La mesa estuvo compuesta por un panel de expertos de diferentes áreas de conocimiento; desde perfiles técnicos a empresariales, que plantearon cómo dar respuesta al gran reto de las fake news. Participaron en la mesa redonda: Jaime García Cantero, Director de Contenidos en El País Retina Antonio Sánchez Valderrábanos, Fundador de Bitext José Manuel Gómez, Director de I+D en Expert System Marilín Gonzalo, Coordinadora Área Digital en Newtral ¿Es el procesamiento del lenguaje natural la causa, pero a la vez la solución de este problema? Figura 2: Mesa redonda: Fake news: de la sobreinformación a la desinformación Entrega de premios Tras la mesa redonda, llegó el momento más esperado: La entrega de premios de cuarta edición de los Data Science Awards Spain (2019). Se trata de los únicos galardones en España que premian el mayor talento y las iniciativas más innovadoras en el mundo de la Ciencia de Datos. En esta edición, las categorías premiadas han sido las siguientes: Mejor Data Scientist, Mejor Trabajo Periodístico de Datos y Mejor Iniciativa Empresarial o de Administración Pública Big Data. Más de 180 personas asistieron al auditorio para participar del meetup y presenciar la entrega de premios. En primer lugar, el premio a Mejor Data Scientist correspondió a Iván Gómez Carretero, quién respondió al “Reto 2: Go Transparent - Entendiendo cómo los algoritmos son capaces de detectar enfermedades". El trabajo premiado se titula: "Explicabilidad de algoritmos para la detección de cáncer de colon”. Iván Carretero valoró la oportunidad de trabajar con datos reales de pacientes, y resaltó la principal dificultad con que se encontró: "poder ser transparente". El premio al Mejor Trabajo Periodístico de Datos lo obtuvo el equipo de Vocento, liderado por Iker Urreta, por su proyecto “RADAR: Herramienta de análisis electoral con factores sociodemográficos". El objetivo de este proyecto es acercar los datos a los periodistas, en concreto, para cruzar y comparar resultados electorales con distintos datos sociodemográficos como el nivel económico de la población, nivel de estudios, tasa de inmigración etc. María Benavente (Newtral) se alzó con una mención de honor a la mejor estrategia periodística con el proyecto: “Análisis y comparativa de técnicas de similitud entre textos orientada a su aplicación en el fact checking”, por su carácter innovador y muy prometedor. Finalmente, el Premio a la mejor iniciativa empresarial Big Data lo consiguió una administración pública, categoría incluida por primera vez en estos galardones. Transportes interurbanos de Tenerife; fue premiada por su proyecto “Real Time OD Matrix Estimation”. Este proyecto es un claro ejemplo del enorme potencial de los insights datos aplicado a la mejora de la movilidad interurbana. Si no pudiste asistir y tienes interés en saber cómo transcurrió el encuentro, puedes encontrar información en nuestra mediateca o las principales plataformas de podcast. No te pierdas este otro post sobre los DS Awards escrito por Antonio Pita para Think Big Empresas. Para mantenerte al día con LUCA visita nuestra página web, y no olvides seguirnos en Twitter, LinkedIn y YouTube.
10 de diciembre de 2019
AI & Data
¿Puede la Inteligencia Artificial predecir conflictos armados?
No es fácil adivinar cuándo va a estallar un nuevo conflicto. A veces las causas pueden ser tan variadas como un boom de natalidad, una mala cosecha o, si recordamos nuestras lecciones de historia, el asesinato de un archiduque… El problema Pese a la dificultad del empeño, sí que ha habido iniciativas interesantes que tratan de determinar qué países corren mayor riesgo de sufrir acciones deliberadas de grupos armados que provoquen víctimas civiles. Suelen basarse en el análisis de distintos factores de riesgo como pueden ser: un historial previo de sucesos similares, restricciones a la libertad de movimiento, coexistencia de distintos grupos étnicos y tipo de régimen político. Los modelos creados, reconvierten estos factores de riesgo en variables de entrada, como por ejemplo: la densidad de población el crecimiento del PIB, el tiempo de viaje a la ciudad más cercana la proporción de tierra sin cultivar los años transcurridos desde la independencia el tipo de gobierno. A partir de estas variables de entrada, los modelos generan un valor de riesgo o "score". Algunos modelos. Por ejemplo, en 2011 el Peace Research Institute de Oslo, creó un modelo para predecir los conflictos entre 2010 y 2050. Sin embargo, no fue capaz de predecir la guerra civil en Siria. Por ello, lo habitual es combinar distintos modelos, maximizado sus fortalezas y reduciendo al máximo sus limitaciones. Un esquema de este tipo de ensamble de modelos sería similar al representado en la Figura 1. Figura 1: Modelo idealizado creado por technologyreview En 2013, investigadores US Holocaust Museum y la Universidad de Dartmouth publicaron su primer modelo “ensemble”: The Early Warning Project. El objetivo es generar un sistema de alerta temprana, capaz de detectar en qué países el riesgo de que se produzcan brotes de violencia armada es elevado. Uno de los éxitos notables, aunque trágicos, del proyecto fue la capacidad de predecir una matanza en Myanmar, poco antes de que comenzara la persecución masiva de los rohingya en 2016. Myanmar ocupaba entonces el primer lugar en el informe. Figura 2: Statistical Risk Assessment Results 2016 Map —Data from the Early Warning Project. Source: US Holocaust Museum Otros modelos, como ViEWS, creado por investigadores de la Universidad de Uppsala, ofrecen niveles de resolución impensables hace pocos años. El modelo ViEWS, está centrado en los conflictos en África, y ofrece lecturas predictivas mensuales sobre múltiples regiones dentro de un estado dado. Puede pronosticar el riesgo de tres tipos diferentes conflicto -desde el estado, unilateral y no estatal- en una cuadrícula geográfica con celdas de sólo 55 kilómetros de lado y tener en cuenta desde la primera muerte atribuible a la violencia organizada. En la Figura 3 se puede ver un ejemplo de predicción extraído del último informe mensual elaborado por el equipo del proyecto VieWs. Figura 3: Extracto del informe de predicción de riesgo de Octubre 2019. Descargar pdf. Conclusión Últimamente, por desgracia, cuando vemos juntos los términos y "Guerra" e "Inteligencia Artificial", el uso de ésta última parece ir enfocado exclusivamente a la mejora de las capacidades armamentísticas. Sin embargo, vemos que también puede usarse como herramienta de paz. Una herramienta capaz de generar alertas tempranas que permitan a la ONU y otras organizaciones humanitarias dirigir la ayuda allí donde sea necesaria. También, alertar a los más vulnerables con antelación para que puedan buscar un lugar seguro. La inteligencia artificial, como cualquier tecnología, no es algo "bueno" ni "malo". Lo son los objetivos con los que la usamos las personas. Referencias We are finally getting better at predicting organized conflict How to Use The Early Warning Project’s Statistical Risk Assessment The Peace Research Institute of Oslo (PRIO) Conflict Prediction VieWS: Department of Peace and Conflict Research, Uppsala University Para mantenerte al día con LUCA, visita nuestra .
8 de noviembre de 2019
AI & Data
Día de Muertos, Calaveritas e ¿Inteligencia Artificial?
Cuando se acercan estas fechas las redes arden con todo tipo de hashtags relacionados con Halloween: fiestas, disfraces monstruosos, maquillajes terroríficos, todo tipo de bichos, murciélagos, dulces con aspecto repulsivo etc. Nosotros, este año, hemos decidido olvidarnos un poco de Halloween y quedarnos en un ámbito cultural que nos resulta mucho más cercano. Todos los Santos y día de Difuntos Es cierto que, el carácter sobrio y familiar que tienen en España el 1 de Noviembre, Todos los Santos, y el 2, Día de Difuntos, puede hacer mucho más atractivo el colorido despliegue de su "par" anglosajón. Sobre todo, si tiene un poderoso apoyo marquetiniano. No obstante, nuestra gran diversidad cultural también da lugar a algunas excepciones, como las hogueras, la música y los bailes de la "Noche de los finados" en Canarias, las Castañadas de Cataluña, Levante, Aragón, Asturias, Cantabria, Galicia... las cerraduras tapadas con gachas para espantar a los malos espíritus de Begíjar (Jaen), o los carnavaleros Tosantos (cómo no, de Cádiz). El día de Muertos Sin embargo, a pesar de sufrir también la "dura competencia" que supone Halloween, es la celebración del Día de Muertos en las diferentes regiones de México, la reconocida por la UNESCO como parte de la Lista del Patrimonio Cultural Inmaterial de la Humanidad. Los altares El Día de Muertos, es una vuelta transitoria de las ánimas de los difuntos al mundo de los vivos. Regresan a sus casas, con sus familiares y disfrutan las las ofrendas que les dejan en los altares, primorosamente preparados con papel picado, frutas, (mandarinas, tejocotes y cañas), dulces (pan de muerto, calaveritas de azúcar o chocolate), velas, y flores, muchas flores naranjas. Figura 1: Cempasúchil (Tagetes) La Catrina A los dulces y los altares, se suma otro elemento muy conocido fuera de las fronteras de México, la Catrina. En un principio no era más que un dibujo burlesco del grabador José Guadalupe Posada, famoso por sus caricaturas de crítica social a las clases altas y a la miseria que se vivía en el país. En ellas, todas las personas, ricos o gente del pueblo, aparecían representados como puros esqueletos vestidos con ropa elegante, en fiestas, o en bailes populares. La "Calavera Garbancera” se convirtió en "la Catrina" que conocemos, cuando el conocido pintor Diego Ribera la representó en uno de sus murales con el icónico sombrero de plumas que llevaban los hombres elegantes (catrines). Así la Catrina pasó a ser uno de los elementos más representativos del Día de los Muertos, cuando infinidad de personas se disfrazan y maquillan imitando a este personaje. Las calaveritas Lo que, sin embargo, no es tan conocido fuera de México, son las calaveras literarias o calaveritas. Las calaveritas son composiciones literarias de carácter popular que suelen dedicarse a familiares, amigos o compañeros de trabajo. Normalmente están compuestas por cuatro estrofas de cuatro versos de ocho sílabas, la métrica más frecuente en la poesía popular. Y suelen usar rima asonante, clave para darles ritmo y expresividad. Pero, en el fondo, el formato puede ser más o menos libre, siempre y cuando no falte lo primordial: la ironía. En una Calavera, el protagonista es un personaje que trata de engañar a la Muerte, y, cuando parece que se ha salido con la suya, la Huesuda aparece de forma inesperada y su muerte es inevitable. Las calaveritas son composiciones humorísticas, sí, pero se trata de un humor cruel, que no es sino una forma de suavizar el terror que nos causa la certeza de que, más tarde o más temprano, todos tendremos que morir. La víspera del Día de Muertos, muchas revistas y diarios locales en México publican sus propias calaveritas literarias y se burlan de políticos, personajes famosos y proyectos de gobierno fallidos. Los niños, en el colegio, crean sus propias calaveritas como tarea escolar. Y en redes sociales, muchos usuarios comparte epitafios burlones sobre sus profesores, o compañeros de clase. Incluso se convocan concursos de calaveritas. Telefónica Tech AI of Things Python para todos: programa tu juego del Ahorcado edición Halloween 27 de octubre de 2023 ¿Calaveritas e Inteligencia Artificial? Y habiendo ya algoritmos de inteligencia artificial que escriben novelas y poemas... ¿podrían escribir Calaveritas?¿Cómo suena la poesía escrita por máquinas? Pero seamos realistas, aunque podamos encontrar hasta revistas literarias creadas por máquinas, como, CuratedAI, aunque hubiera disponible un corpus suficiente de textos en español para entrenarlos, va a ser muy, muy difícil, que un algoritmo sea capaz de condensar la perspicacia. la ironía, el cariño, el humor, o los sorprendentes giros finales con los que nos deleitan los creadores de estos epitafios burlescos con los que conjuramos nuestro inevitable miedo a la Calaca. El mejor uso de la Inteligencia Artificial, es el que hacemos cuando somos conscientes, no sólo de su potencial, sino también de sus limitaciones. Terminamos, como no podía ser de otra manera, con una calaverita, escrita a propósito para nosotros por dos buenos amigos mexicanos. ¡Esperamos que os guste! Calaverita para el Santo Un día la parca estaba Decidiendo a quién llevaba Cuando divisó a un hombre Que tenía gran renombre Sin ningún desconsuelo Fue a quitarle el resuello Más cuál fue su sorpresa Al defenderse la presa “Ay canija no me toque Soy El Santo y si se atreve En la arena mediremos Voluntades si usted quiere” El enmascarado de plata! Esto si será muy duro Mejor invento una treta Para salir del apuro. Entre bromas y corridos Se fueron haciendo amigos Y en una apuesta elevada Al Santo se la jugó. Así queridos amigos La Parca se lo llevó. Ay que cabeza la del Santo Por andar de apostador Yace aquí en el camposanto Nuestro amado luchador. Autores: Santiago Cortés Guadalupe Herrera ¡¡Feliz Día de Muertos!! Calaveritas, no, pero sí que existen aplicaciones interesantes de la Inteligencia Artificial para este día tan especial. Te contamos algunas en este otro post de nuestro blog: The Data hiding behind Halloween
31 de octubre de 2019
AI & Data
Inteligencia artificial natural: antónimos que no lo son tanto
¿Qué nos es “natural"? Hay palabras tan ricas en significados, que si las buscamos en el diccionario de la RAE necesitan hasta 17 definiciones distintas. Y "natural" es una de ellas. Porque aunque a priori nos resulte un poco contradictorio asociar "natural" con "inteligencia artificial", veremos que, en realidad, son perfectamente compatibles. Efectivamente, lo primero que se nos viene a la cabeza al escuchar la palabra "natural" es algo " Perteneciente o relativo a la naturaleza", la primera acepción del término en la RAE. Sin embargo algo natural, también es algo sencillo, lógico, esperable, espontáneo, normal... El objetivo de cualquier tecnología es ayudarnos a superar mediante herramientas, las dificultades impuestas por la complejidad del entorno, o nuestras propias limitaciones físicas. El ser humano no es el único ser vivo que ha desarrollado un tecnología. Pero, la tecnología humana es, probablemente, con permiso de las Artes, lo más asombroso que ha creado el hombre. Nuestros sentidos Vista, tacto, gusto, oído, olfato… nuestros sentidos son nuestras “ventanas” al mundo. Son complejos sistemas de “percepción sensorial” , que captan variaciones en las propiedades físicas del entorno. Estos estímulos pueden estar producidos por ondas de presión (tacto, oído), electromagnéticas (vista), o térmicas (tacto). También por sustancias químicas (gusto y olfato). Nuestro sistema nervioso transporta toda esta información sensorial codificada hacia el centro de su procesamiento: nuestro cerebro. Como ya vimos en este otro post, Inteligencia Artificial: una tecnología “muy humana”, desde un punto de vista biológico no somos gran cosa. Ni especialmente fuertes, ni los más rápidos, ni siquiera, resistentes. Sin embargo, nuestra inteligencia, y nuestras habilidades sociales nos han permitido desarrollar sofisticadas tecnologías como Internet de las Cosas o la Inteligencia Artificial, que nos permiten superar cada día más barreras. Porque, gracias a ellas, ya no estamos tan limitados por los rangos de percepción de nuestros órganos sensoriales, ni por la capacidad de procesamiento de nuestro cerebro: cada día llegamos un poco más lejos. Y no sólo eso, cada día, nos esforzamos más, por hacer más humana y accesible la tecnología. Porque la complejidad que hace posible tantas cosas no se traslade al usuario final, sino que la interacción con ésta sea cada día más natural. Un ejemplo real Muchos recordarán aquel vídeo tan divertido en el que un monje medieval pedía ayuda a soporte (medieval helpdesk) porque, acostumbrado a trabajar sobre pergaminos enrollables, no sabía cómo usar la innovación tecnológica del momento: el libro. Nos recuerda cómo, muchas cosas que damos por supuestas, que nos parecen “naturales”, nos lo parecen porque nos resultan tan sencillas y tan cómodas, que las hemos incorporado a nuestros automatismos. A principios de los 2000, no hace tantos años, tuvo lugar una nueva revolución en este mismo ámbito. Los primeros lectores de libros electrónicos evolucionaron hacia las pantallas táctiles y para pasar a la página siguiente del libro había que dar un pequeño golpe con el dedo en el margen derecho de la página. Este gesto tan sencillo que al principio nos costaba aprender, como le pasaba al monje medieval del vídeo, ya “lo traen de serie” las nuevas generaciones, ya les es natural (¡es tan fácil!). Por ello, lo realizamos tan inconscientemente que, no tenemos más remedio que reírnos de nosotros mismos cuando, en ocasiones, damos estériles golpecitos en el margen de un libro de papel. Lo opuesto a la inteligencia artificial no es lo natural, es lo innecesariamente complicado… o tener que levantarte del sofá. Por eso, damos la bienvenida a todo aquello que nos haga la vida más fácil. Por ejemplo, gestos tan sencillos como cambiar el canal de la tele. Al principio, había que “desincrustarse” del sofá o discutir sobre quién se levantaba para cambiarlo. Después, ya no hacía falta levantarse, pero nuestros salones se llenaron de múltiples mandos a distancia, o complejos mandos multidispositivo que muchas veces no eran tan sencillos de usar. Hoy día, no tienes que pelearte con tu hermano ni frustrarte con un de todo menos “intuitivo” mando a pilas. Tan natural, tan sencillo como decir “Aura, pon el partido de baloncesto” y ya está. Lo hermoso es que, a pesar de la increíble complejidad tecnológica necesaria para que esto suceda, el objetivo final, hacernos la vida más fácil y cómoda, y de una forma que nos resulte natural, se ha logrado sin ninguna duda, gracias a la inteligencia artificial. “Artificial is natural”
2 de octubre de 2019
AI & Data
¿Contamina internet?: Centros de datos "verdes"
¿Tienes idea de cómo afecta Internet al medio ambiente? Según datos del Banco Mundial, en 2017 ya estaba conectado a Internet un 48,5% de la población mundial (por supuesto de forma muy desigual, desde un 1% en países como Eritrea, a un 98% en los países más desarrollados). Y el número no deja de crecer. Tanto es así, que desde enero de 2018, el número de personas que se han conectado por primera vez a Internet ha aumentado un 9%, llegando a los 4.390 millones de usuarios en 2019, Veamos cómo se genera este impacto y qué podemos hacer para reducirlo lo más posible. Figura 1: Evolución del porcentaje de la población mundial conectada a Internet (Banco Mundial) Los datos. Una de las consecuencias más fácilmente identificables de este crecimiento exponencial es la generación paralela de grandes volúmenes de datos. De hecho, el nivel de datos que se genera cada semana a nivel mundial, supera el acumulado en los últimos 1000 años de Historia de la Humanidad. Esta creciente demanda de intercambio de datos y el volumen de información almacenada en la nube ha creado la necesidad de construir espacios de almacenamiento y procesamiento de cada vez mayor tamaño. Estas instalaciones, que funcionan 24 horas, 7 días a la semana y bajo condiciones muy concretas de temperatura y humedad, pueden llegar a consumir más energía de la que consumen países de gran tamaño. Y su número aumenta cada día. De hecho, la empresa Cisco Systems, estima que el número de centros de datos a hiperescala en el mundo aumentará de 259 en 2015 a 485 para 2020 Los dispositivos. Además de las implicaciones derivadas del imparable crecimiento de los datos, hay otras que nos pueden pasar más desapercibidas. Cuando hablamos de dispositivos, por un lado, debemos tener en cuenta el impacto que supone su fabricación , tanto en lo referente a uso de materias primas muy específicas y recursos energéticos, como al que tiene la forma en la que nos deshacemos de ellos cuando ya no son útiles (basura tecnológica). A ésto habría que sumarle otros "aportes" relativos a transporte, logística etc ¿Podemos cuantificar de alguna manera cómo afectan a nuestro entorno? La respuesta es "si", y para ello, lo que hacemos es cuantificar su huella de carbono. ¿Qué es la huella de carbono de Internet? La huella de carbono es forma de cuantificar las emisiones de gases de efecto invernadero liberados a la atmósfera como consecuencia de una determinada actividad. Se utiliza como herramienta de sensibilización para tomar conciencia del impacto que genera cada actividad en el calentamiento global. Y sí, se puede calcular la huella de carbono que genera cada correo enviado (un alto porcentaje de ellos no deseados), cada tuit, cada búsqueda en Google, cada foto subida a una red social... Esto ha permitido darse cuenta de que los centros de datos constituyen una de las industrias más contaminantes del mundo. Tanto es así que, si no hacemos nada para evitarlo, el impacto de las industrias TIC en la generación de gases de efecto invernadero puede llegar a alcanzar para 2040 valores equivalentes al 50% del impacto generado por el uso de el combustibles fósiles en el sector transportes. Los equipos y servicios de tecnología de la información y la comunicación (TIC) consumen más del 8 % de la energía eléctrica en la UE y producen alrededor del 4 % de sus emisiones de CO2. Estas cifras podrían duplicarse de aquí a 2020. Agencia Digital de la Comisión Europea (Septiembre 2010) Es por ello que, a pesar de suponer un gran reto, desde 2008, la UE cuenta con un Código de Conducta voluntario para mejorar la eficiencia de los centros de datos y reducir el consumo de energía al que ya se han sumado muchas empresas. ¿Cómo podemos reducir el efecto de las TIC sobre el calentamiento global? A título personal, podemos llevar a cabo acciones tales como darnos de baja en newsletters que no nos interesen, evitando la conocida como “contaminación latente”, debida al almacenamiento innecesario de correos electrónicos. También podemos reducir nuestras consultas a Google, y evitar parar horas viendo vídeos de gatitos en Youtube o conectados a las redes sociales. En definitiva, hacer un uso responsable de Internet, siendo conscientes de que cada una de estas acciones es un granito de arena, sí, pero es un suma y sigue al balance global, y somos muchos millones de personas los que "aportamos nuestro granito". Sin embargo, la parte del león, está en conseguir unos centros de datos más eficientes y respetuosos con el medio ambiente: los "green datacenters" o centros de datos "verdes". Centros de datos verdes. En 2017, Greenpeace USA elaboró un informe “Clicking Clean: ¿Quién gana la carrera para crear un Internet verde? 2017” que analiza a las huellas energéticas de los operadores de los mayores centros de datos y de casi 70 de los sitios y aplicaciones más populares del mundo y explicó la situación en un didáctico vídeo: Urgió a las principales compañías de Internet a dejar de usar energías "sucias" anticuadas y contaminantes, y empezar a cubrir su necesidades energéticas al 100% con energías renovables como, por ejemplo, fuentes hidraúlicas y eólicas. Fruto de este interés surgieron los centros de datos verdes, que son aquellos que adoptan soluciones tecnológicas sostenibles que contribuyen a la mejora de la eficiencia energética y, por tanto, a la sostenibilidad económica y medioambiental. Las condiciones medioambientales de algunos países como Irlanda, Noruega, Islandia, Suecia etc les han convertido en auténticas "superpotencias" de centros de datos verdes. Por ejemplo, en Noruega se construyen centros de datos energéticamente eficientes y sostenibles junto a los fiordos. Utilizan sistemas de refrigeración que llevan el agua, a 8ºC, desde el fiordo a la estación sin utilizar energía eléctrica, únicamente con la ayuda de la gravedad, y sin necesidad de hacer uso de gases refrigerantes, lo que asegura que es una planta sostenible con cero emisiones . En otros casos, se construyen centros de datos subterráneos, como el Lefdal Mine Datacenter, que, situado en una antigua mina a más de 600 metros de profundidad, obtiene el suministro energético de una central hidroeléctrica cercana; o incluso submarinos, como el proyecto Nactik de Microsoft en las islas Shetland. Conclusión El sector de las tecnologías de la información y la comunicación (TIC) debe ser pionero en la adopción de soluciones tecnológicas sostenibles que contribuyan a la mejora de la eficiencia energética y, por tanto, a la sostenibilidad económica y medioambiental. Uno de los principales avances hacia esta sostenibilidad consiste en la evolución de los centros de datos tradicionales hacia centros de datos a "hiperescala". Estos centros consiguen importantes ahorros en el consumo energético usando grandes matrices de servidores básicos diseñados para tareas específicas en lugar de servidores convencionales, y adoptando los últimos avances en refrigeración. Por otra parte, empresas como Google, han conseguido importantes reducciones en el consumo energético de sus centros de datos optimizando el uso sus sistemas de refrigeración mediante algoritmos de inteligencia artificial. Por último, no podemos olvidar que muchas start-ups y grandes empresas como Intel y AMD, están desarrollando semiconductores para fabricar nuevos microchips basados en tecnologías como la fotónica para alimentar las redes neuronales y otras herramientas de inteligencia artificial y que consumen mucha menos energía. En definitiva, aunque el avance tecnológico plantea importantes desafíos para la conservación del medio ambiente, al mismo tiempo, cada día, ofrece nuevas soluciones. Para mantenerte al día con LUCA, visita nuestra .
18 de septiembre de 2019
AI & Data
Base de Datos vs Data Lake vs Data Warehouse
¿Conoces la diferencia entre una base de datos, un data lake y un data warehouse? Si quieres aprender a distinguirlos, sigue leyendo. Algunas personas piensan que el data lake no es más que “la última versión” del datawarehouse, pero en realidad, se trata de herramientas diferentes, que se usan para distintas cosas. ¿Qué es una base de datos? Para entenderlo mejor, vayamos a los orígenes: las bases de datos. Una base de datos es un conjunto de datos organizados de una determinada manera. Comenzaron a usarse en los años 50, y consistían en simples filas y columnas. Años después se hicieron populares las bases de datos relacionales, que almacenan los datos en forma de tablas, y las bases de datos orientadas a objetos. Estas últimas, almacenan datos complejos y relaciones entre datos directamente, sin asignar filas o columnas. Las bases de datos sirven para monitorizar y actualizar datos estructurados en tiempo real. Normalmente, solo tienen disponibles. los datos más recientes Tipos de bases de datos Como hemos adelantado hace un momento, hay distintos modelos de bases de datos. Las más sencillas tenían formato de Fichero plano, donde todos los campos de una columna dada tienen valores del mismo tipo, cadena de caracteres, fecha u hora, entero o número de coma flotante. En el ejemplo de la imagen, las columnas son “Ruta”, “millas”, “Actividad”. Además, todos los miembros de la misma fila están relacionados entre ellos. “Registro 1, 2 …”. Fueron las precursoras de las bases de datos relacionales. Éstas últimas surgieron en los años 70 . En este modelo ´la estructura básica es la “relación” o tabla. La información sobre determinada entidad, (por ejemplo, cliente) se almacena en tuplas (filas), cada una de las cuales tiene unos atributos (columnas). Las columnas de cada tabla enumeran los distintos atributos de la entidad (el nombre del "cliente", dirección y número de teléfono, p. ej.), de modo que cada tupla de la relación "clientes" representa un cliente específico y guardan todos sus datos. Todas las relaciones (es decir, tablas) en una base de datos relacional han de seguir unas mínimas reglas. Como último ejemplo, hablaremos también de las tablas orientada a objetos, que surgieron en la década de 1990. Las bases de datos relacionales trabajan con datos, representándolos en forma de tablas. En las bases de datos orientadas a objetos los datos ya no se almacenan como datos, sino como objetos, de distintos tipos, sobre los que se definen una serie de operaciones. Éstas a su vez se integran con las operaciones de un lenguaje de programación orientado a objetos (POO). Aunque están diseñadas para trabajar con lenguajes orientados a objetos, como Java, Visual Basic o C++ , también manejan información binaria y trabajan con datos complejos de manera rápida y segura ¿Qué es un datawarehouse? Por su parte, un datawarehouse es sistema de almacenamiento de datos diseñado para dar soporte al flujo de datos desde sistemas operativos a sistemas de decisión. Recoge los datos de diversas fuentes, internas o externas y los organiza de forma muy concreta para optimizar su recuperación con fines comerciales (extraer Insights de negocio). Sólo contiene los datos para a los que se quiere dar cierto uso. Éstos suelen ser estructurados (a veces, proceden de bases de datos relacionales), o no. En resumen, es un repositorio unificado para todos los datos recogidos por los diversos sistemas de una empresa. ¿Qué es un data lake? En los años 2000, surgieron los datalakes, como alternativa más rentable para el almacenamiento de datos no estructurados. Aunque ya se podían almacenar este tipo de datos en los formatos anteriores, los procesos de depuración y preparación eran largos y costosos. Los datalakes almacen datos los en bruto, sin ninguna estructura, jerarquía ni organización. Datos de cualquier fuente, en cualquier formato. Texto, datos de redes sociales,todo tipo de logs o registro de datos de sensores de dispositivos IoT. Al no tener estructura, son mucho más flexibles que los datawarehouses. Sin embargo, estos últimos, como tecnología más madura, también tienen mejores sistemas de seguridad. La idea es poder ir volcando todo tipo de datos al datalake, por si se necesitan más adelante, de la forma más económica y escalable. Para explicar qué es un datalake tomamos prestada una imagen de una infografía muy buena de EMC. Figura 1: ¿Cómo funcionan los datalakes? Fuente EMC Conclusión ¿Y cuál es la mejor solución? Dependerá de nuestro problema. Conforme aumenta el volumen de datos no estructurados, los datalakes en la nube se hacen más populares, ya que son más rentables y fáciles de mover cuando es necesario. Sin embargo, siempre habrá un lugar para las bases de datos y datawarehouse. Para saber más sobre arquitecturas de datos, no te pierdas esta serie en nuestro blog: CLOUD AI OF THINGS Big Data y Hadoop: Episodio (I) 13 de septiembre de 2017
25 de julio de 2019
AI & Data
Podcast : ¿Cómo se puede usar el Big Data para el bien común?
El imparable avance de la digitalización en nuestra sociedad produce ingentes cantidades de datos de los que se pueden extraer insights de gran valor para la mejora de la eficiencia y competitivad de cualquier negocio. Pero también son la clave para afrontar los principales retos sociales y ambientales que más nos preocupan. En este podcast, nuestros expertos, Pedro de Alarcón, Head of Big Data for Social Good en LUCA y Maya Ormazábal, Gerente de Sustainability & Intagibles Management dan respuesta a preguntas tan interesantes como: ¿En qué consiste el Big Data para el Bien Común? ¿Qué relación hay entre las Analíticas de datos y la Sostenibilidad? ¿En qué proyectos se están trabajando en estas áreas? ¿Cuáles son los retos, los logros, los sueños...? Si quieres conocer la respuesta a estas preguntas: ¡Dale al play! ¿Qué es Big Data for Social Good y por qué es tan importante?
4 de julio de 2019
AI & Data
Cursos gratis de Ciencia de Datos para esta primavera
Si quieres formarte en Data Science, Machine Learning e Inteligencia Artificial no hace falta hacer una gran inversión. En este post os contamos qué cursos gratuitos sobre esta temática tienen la inscripción abierta en estos momentos, o van a hacerlo en breve. La mayor parte de ellos en inglés, pero también algunos en español. Si quieres aprender desde cero, o especializarte en un área determinada, échale un vistazo a esta lista. Cursos en ingles. edX En la plataforma edX es donde vamos a encontrar más cosas interesantes que podemos aprender sin gastar ni un sólo euro. Aunque también, si nos interesa obtener algún tipo de certificación, podemos hacerlo pagando una pequeña cantidad que depende de cada curso en particular. Esta política es muy interesante porque sigue el espíritu original de los MOOCs: la democratización del conocimiento, de forma que cualquier persona interesada en aprender, puede hacerlo, sin importar su nivel económico. En estos momentos, los cursos más interesantes que van a comenzar a finales de abril/mayo, son los siguientes: Python for Data Science Curso ofrecido por la Universidad de San Diego en el que aprenderás a usar herramientas Python open-source como Pandas, Git y Matplotlib para manipular, analizar y visualizar datasets complejos. Probability and Statistics in Data Science using Python Otro interesante curso de la Universidad de San Diego en el que aprenderás a usar Python para comprender los datos, y extraer insights relevantes usando enfoques estadísticos y probabilísticos. Enterprise Data Management En este curso de la Universidad de Indiana, aprenderás sobre estrategia y gobernanza de datos en la empresa, bases de datos relacionales, administración de datos maestros y tecnologías Big Data. Todo lo necesario para que los responsables de la toma de decisiones en la empresa, puedan basar esas decisiones de negocio en insights de datos. Market Segmentation Analysis Realizar análisis de segmentación de mercado y definir estrategias de segmentación a largo plazo supone un auténtico reto para cualquier organización. En este curso de la Universidad de Queensland, aprenderás el proceso para realizar este tipo de análisis basado en datos, en diez sencillos pasos, y desarrollarás habilidades que permitirán identificar las necesidades de tus clientes y obtener así una ventaja competitiva. Machine Learning Fundamentals En este curso de la UC San Diego, aprenderás el papel que juega el aprendizaje automático en el modelado, predicción y toma de decisiones basadas en datos. En este curso, parte del programa Data Science MicroMasters, aprenderás una variedad de algoritmos de aprendizaje supervisados y no supervisados, y la teoría detrás de ellos y verás distintos ejemplos de aplicación basados en casos reales. Udacity En Udacity también puedes encontrar interesantes cursos gratuitos, que suelen ser los cursos iniciales de sus Nanodegrees de pago. Normalmente, la inscripción está abierta todo el año. Puedes filtrar según tus preferencias (idioma, duración, nivel de dificultad, etc). Nosotros hemos seleccionado un par de ellos que nos han parecido interesantes, pero hay disponibles muchos más. Coursera Otras plataformas como Coursera, ofrecen cursos de pago con una semana de acceso gratuito, para valorar los contenidos disponibles. También puedes participar en los cursos en calidad de "oyente", de manera gratuita, con acceso a los materiales del curso, pero sin tareas calificadas o la capacidad de obtener un certificado. Estos cursos suelen tener la inscripción abierta de forma permanente, ya que cada uno puede hacerlos a su ritmo. Al igual que ocurre con los cursos gratuitos que ofrece Udacity, suelen ser un buen "aperitivo" para animarnos a seguir alguno de programas especializados, programas de certificación o másters online (todos ellos de pago) que se ofrecen en la plataforma y que también pueden ser interesantes, una vez que tengamos clara qué trayectoria nos gustaría emprender. Podemos encontrar el famoso curso de Machine Learning de Andrew Ng por la Universidad de Stanford, los cursos de DeepLearning.AI, de propio Andrew NG, como AI for everyone, los de la Universidad de Michigan, como Introduction to Data Science in Python etc. Os animamos a explorar el site para conocer los cursos y usar los filtros para acotar los resultados según vuestras necesidades o preferencias. How to Use Git and GitHub En este curso de Amazon Web Services aprenderásuna de las habilidades más importantes para cualquier desarrollador que trabaje en proyectos de larga duración (o incluso de mediana duración), especialmente si hay más de un desarrollador involucrado. Nos referimos al uso efectivo del control de versiones. Este curso, creado con la colaboración de GitHub, muestra los conceptos básicos del uso del control de versiones usando para ello el sistema Git y la plataforma de colaboración llamada GitHub. El curso es parte del Front End y Full Stack Nanodegrees Intro to Machine Learning Este curso forma parte del Nanodegree Analista de Datos. Es una introducción al aprendizaje automático en el que aprenderás cómo identificar y extraer las características que mejor representan los datos, conocerás algunos de los algoritmos más importantes y cómo evaluar su rendimiento. Cursos en español. Hemos seleccionado dos cursos de edX y dos de MiriadaX que tienen la inscripción abierta o darán comienzo las próximas semanas. Introducción al Business Intelligence y al Big Data (5.ª edición) Este curso, de la UOC, pretende ser una introducción al Business Intelligence (BI) y Big Data. Se presenta que es un sistema de BI, cuál es la arquitectura de estos sistemas, cuáles son las metodologías principales de Business Analytics (el Clustering y la Clasificación), qué es Big Data y cuáles son las tendencias actuales en el área del Business Intelligence. Tecnologías para ciudades inteligentes Este curso de la Universidad Autónoma de Occidente tiene como objetiv, por un lado, identificar el estado actual de nuestras ciudades y por el otro conocer herramientas tecnológicas habilitadoras que permitan definir soluciones basadas en el desarrollo de aplicaciones y servicios sostenibles y viables, que puedan implementarse en beneficio de los ciudadanos, allanando de esta manera el camino hacia la conversión de las ciudades en Ciudades Inteligentes. Datos para la efectividad de las políticas públicas Este curso, organizado por el Banco Interamericano de Desarrollo, te ayudará a tomar el control de los datos y familiarizarte con las herramientas para utilizarlos en la planificación, gestión y evaluación de políticas públicas. Por cierto que también puedes apuntarte al curso Big Data sin misterios, también del BID, del que que ya os hablamos en nuestro blog. La nueva edición comienza el 23 de mayo. Dejamos para el final otro curso de análisis de datos y estadísticas que nos ha parecido también muy interesante, pero quizás para una audiencia más específica. Técnicas Cuantitativas y Cualitativas para la Investigación Es un curso de la Universidad de Valencia, que pretende construir una base básica-inicial en los principios estadísticos, econométricos y metodológicos generales que permitan a los alumnos desarrollar un análisis completo desde el diseño de la investigación, la preparación de los datos, segmentación y codificación, hasta la obtención de resultados y respuestas a las preguntas de investigación. Especialmente interesante para investigadores y alumnos que se encuentren cursando trabajos de fin de grado, trabajos de fin de máster o realizando tesis, así como todos aquellos del área de la administración que quieran realizar un análisis cuantitativo o cualitativo en sus estudios Como veis, hay infinidad de opciones para aprender por poco dinero o incluso de forma gratuita. También para decidir si merece la pena invertir dinero y esfuerzo en cursar alguno de los itinerarios de especialización ofrecidos por estas plataformas. Siempre va a merecer la pena, seguro, y los cursos gratuitos son ideales para dar los primeros pasos, y ayudarnos a definir nuestra trayectoria formativa y profesional personal. Si te interesa conocer los programas completos, no dejes de leer este otro post de nuestro blog, donde os contamos cómo funcionan. ¿Has encontrado ya la tuya? En este otro post encontrarás más ideas AI OF THINGS 5 Cursos de datos gratuitos y en español que empiezan ¡ya! 30 de enero de 2020
27 de marzo de 2019
AI & Data
7 Científicas e innovadoras españolas que merece la pena conocer
El pasado 8 de marzo, con motivo del día de la Mujer, publicamos un post sobre Heroínas desconocidas de la Ciencia y la Tecnología, donde hablamos de mujeres que han hecho aportaciones relevantes a estos campos, desde las Matemáticas, la Física, la Ingeniería y la Informática. Uno de nuestros lectores nos preguntó, ¿Dónde están las científicas españolas? Y nos recordó que nuestro país también ha sido cuna de importantes científicas como Margarita Salas, María Blasco, Rosa Menéndez, Gabriela Morreale, Marta Macho, Gabriela Morreale, Paloma Domingo, Alicia Calderón o Elena Armada. Si no las conoces, puedes hacerlo en este post: “ Las 8 mujeres más influyentes de la ciencia en España”. En el post de hoy, queremos añadir a esta lista los nombres de otras científicas que han realizado importantes aportaciones en sectores muy relacionados con los datos. Lo cierto es que no se puede hablar de Ciencia sin hablar de datos. Sin embargo, hay disciplinas, para las que trabajar con grandes volúmenes de datos resulta vital, como puede ser la Astrofísica o la Genética. Hemos hecho una selección de siete mujeres, de distintas generaciones, que trabajaron en el ámbito de la investigación básica, unas, y otras, las más jóvenes, que han destacado por su carácter innovador y emprendedor. Olga García Riquelme (Tenerife 1920-2012) Doctora en Ciencias y Profesora de Investigación del Consejo Superior de Investigaciones Científicas en su Instituto de Óptica. Es citada frecuentemente como pionera, por el escaso número de mujeres de su generación que optaron por la Ciencia, y por sus méritos que la sitúan en el más alto nivel de científicas españolas. Se especializó en la obtención y análisis de espectros atómicos, dentro del campo de la Astrofísica, así como en cálculos teóricos de configuraciones atómicas. A través de los espectros se podía determinar la velocidad de las estrellas y de qué elementos están formadas. Su actividad investigadora se desarrolla gracias al apoyo y colaboración de organismos extranjeros como el Nacional Bureau of Standards (Estados Unidos) el Observatorio de Meudon (Francia) o el Laboratorio de Espectroscopia de la Comisión de Energía Nuclear de Israel, en Soreq. Formó parte del equipo de Miguel Catalán (uno de los científicos españoles más relevantes en ciencias Físico-Químicas, junto a Blas Cabrera y Enrique Molensen). Este excelente equipo, al que pertenecían otros destacados investigadores, como Fernando Rico, Rafael Velasco o Laura Iglesias investigó los espectros de distintos elementos (paladio, hierro, bismuto, sodio, manganeso, etc). Figura 1: Espectro atómico de una descarga de gas neón.(fuente) Laura Iglesias (Zamora 1926) Doctora en Ciencias y Profesora de Investigación del Consejo Superior de Investigaciones Científicas. Realizó sus estudios universitarios con becas. Como Olga Riquelme, Laura Iglesias formó parte del equipo de Miguel Catalán, que dirigió su tesis doctoral. En una entrevista para el periódico “ La Opinión de Zamora”, Laura Iglesias cuenta que le gustaba la química orgánica y se planteó doctorarse en ese campo, pero tuvo que cambiar de idea, por prejuicios de género. Se orientó al campo de la espectrografía en un momento en el que en España no había aparatos para fotografiar espectros. Los científicos españoles pasaban temporadas en centros extranjeros, y luego traían las placas para estudiarlas en España. Su trabajo experimental, es pionero en el uso de la espectroscopía atómica para conocer el comportamiento y movimientos de las estrellas. Se enfocó en obtención y observación en el laboratorio de espectros de elementos de transición de interés astrofísico y de otros elementos pesados del sistema periódico. En 1964 la Real Academia Española le concedió el premio González Martí por sus trabajos con el Manganeso II. Su actividad investigadora se desarrolla principalmente en el Instituto de Optica CSIC de Madrid, en la Universidad de Princenton, en New Jersey (USA) y en el National Bureau of Standars (NBS) de Washington D.C Con el desarrollo de la Astrofísica, los datos obtenidos por Laura Iglesias Romero renovaron su valor para la identificación de espectros estelares. En 2008, la Fundación del Museo de la Ciencia de Valladolid y la Junta de Castilla y León creo el Premio de Divulgación Científica Laura Iglesias. Tristemente, no ha habido más que dos ediciones de este premio. Teresa Mendizábal (Vitoria 1940) Doctora en Física y Profesora de Investigación del Consejo Superior de Investigaciones Científicas. También ha sido directora del Departamento de Medio Ambiente del Centro de Investigaciones Energéticas, Medioambientales y Tecnológicas (CIEMAT) y vicepresidenta del Capítulo Español del Club de Roma, entre otros muchos cargos Se especializó en la investigación sobre los procesos de erosión del suelo, la degradación de las tierras y la desertificación, así como en la planificación y gestión de la investigación científica y técnica. Fue asesora en la Convención de las Naciones Unidas por la Lucha contra la Desertificación (1994) y forma parte del Cuadro Internacional de Personas Expertas contra la Desertización Alicia Calderón Tazón (Cantabria) Doctora en Ciencias Físicas. Trabaja en el Instituto de Física de Cantabria, centro mixto Universidad de Cantabria ydel CSIC. Desde 2012 ha formado parte del equipo del (Centro Europeo para la Física de Partículas), que detectó el Boson de Higgs a partir del análisis de da ingente cantidad de datos recogidos por el detector CMS del acelerador de partículas del CERN en Ginebra. Alicia Calderón es la responsable de la validación y certificación de los muones detectados por el experimento CMS. Actualmente trabaja en la búsqueda de materia oscura que pueda producirse en el LHC. Se trata de un descubrimiento fundamental, ya que es una pieza clave en el Modelo Estándar de la Física de Partículas, que explica con precisión cómo es la estructura fundamental de la materia y qué fenómenos tuvieron lugar en los primeros instantes del universo. De hecho, el comité de los premios Nobel reconoció la labor investigadora de este equipo en 2013, aunque no les pudo galardonar con el premio Nobel, ya que sólo lo pueden ganar tres personas como máximo, y el equipo era mucho mayor. Toda la tecnología desarrollada en los aceleradores de partículas está teniendo beneficios indirectos en el campo de la medicina (por ejemplo, las técnicas de resonancia magnética) la industria o el medio ambiente. También para la informática, ya que las grandes cantidades de datos que producen los aceleradores de partículas, motivaron el desarrollo de una red de computación global distribuida llamada GRID. Figura 2: Nombre y carga energética de los componentes de la materia (fuente) Elena García Armada (Santander, 1971) Ingeniera industrial, doctora en Robótica y líder del grupo del CSIC que ha creado el primer exoesqueleto biónico del mundo para niños con atrofia muscular espinal. Fundadora de la empresa Marsi Bionics, dedicada a la creación de exoesqueletos pediátricos cuyo objeto es mejorar la calidad de vida de los 17 millones de niños de todo el mundo que sufren parálisis cerebral, espina bífida, lesiones medulares y otras enfermedades degenerativas. Elena García ha recibido diferentes reconocimientos como la Medalla de Oro de Madrid (2018), el Premio Mujeres a Seguir (2017) o el Premio CEPYME al Mejor proyecto emprendedor (2015). Saltamos del campo de las ciencias puras, para hablar de robótica, informática y tecnología, donde encontramos otros interesantes ejemplos de mujeres innovadoras. Luz Rello (Madrid, 1984) Rello Sánchez, licenciada en Lingüística y doctora en Ciencias de la Computación. Se especializó en Procesamiento del Lenguaje Natural y Tecnologías del Lenguaje Humano y ha creado una serie de herramientas digitales que permiten modificar el contenido y la forma de los textos para facilitar su interpretación por parte de personas con dislexia. En 2013 obtuvo el galardón European Young Researcher´s Award, y posteriormente ganó el premio del MIT Innovadores menores de 35 en la categoría de innovación social por su capacidad de trasladar sus investigaciones científicas a proyectos innovadores que se traducen en productos de uso real y gran difusión. En particular, ha creado herramientas y servicios que permiten adaptar las páginas web a personas disléxicas, un lector para libro electrónico con la capacidad de ofrecer sinónimos más sencillos a la hora de leer, y una app gratuita que permite a las personas con dislexia escribir con menos errores ortográficos. También, junto con una investigadora de su equipo, Maria Rauschenberger, ha trabajado en el desarrollo de un detector universal de dislexia que no utilizará elementos lingüísticos, sino visuales y que estará basado en inteligencia artificial. Figura 3: Dislexia en niños (fuente) Alicia Asín (Zaragoza, 1982) Ingeniera informática y graduada ESADE Business School. Experta en Inteligencia Artificial, IoT y Big Data. Ha sido la primera mujer en recibir el premio Joven Emprendedor Nacional en la reunión de 2014 de la C onfederación Española de Jóvenes Emprendedores (CEAJE). En 2018 recibió el premio Mujeres Innovadoras de la UE por su labor como Cofundadora y Consejera Delegada de de la empresa tecnológica aragonesa Libelium, centrada en el internet de las cosas. Libelium, destinada al desarrollo de sensores para las ciudades inteligentes, nació en 2006 como una spin-off de la Universidad de Zaragoza y opera en 120 países. Su principal producto es una plataforme de hardware capaz de monitorizar de manera inalámbrica cualquier parámetro ambiental y enviar la información a internet. Estos sensores se pueden usar para la detección de incendios, o de contaminación radioactiva, control de calidad del aire o del agua, sistemas de aparcamiento inteligentes etc. De esta forma, el IoT aplicado a las ciudades logrará mejorar la calidad de vida de las personas, pudiendo incluso, llegar a fortalecer la democracia, gracias a la llegada de los servicios de internet a cada rincón de éstas. Es difícil elegir, y, seguramente nos habremos dejado alguna científica/innovadora relevante. Si conoces alguna que crees que deba estar en esta lista, agrégala en el campo de Comentarios para ayudarnos a sacar a la luz estos referentes y que pueden servir de inspiración para las nuevas generaciones de chicos y chicas apasionados por la ciencia y la tecnología.
13 de marzo de 2019
AI & Data
Machine Learning a tu alcance: ¿Qué son los Insights?
En Telefónica Tech hablamos mucho de “insights”. Nuestras herramientas están diseñadas para obtener valiosos “insights”, o “actionable insights” que permitan a una empresa tomar las decisiones más adecuadas basadas en datos. Pero, ¿conoces el significado exacto de la palabra “Insight”? Quizás resulte un poco complicado porque, aunque, aunque parezca contradictorio, normalmente no usamos los términos españoles correspondientes a Big Data, Machine Learning, o Data Science, por claridad. Son términos fácilmente identificables y traducibles. Sin embargo, encontrar una palabra española para definir “insight” no es tan sencillo. Así que vamos a empezar por comprender su significado. ¿Qué es un “insight”? El diccionario Collins, nos da la siguiente definición: insight /ˈɪnˌsaɪt/ noun 1. The ability to perceive clearly or deeply; penetration 2. A penetrating and often sudden understanding, as of a complex situation or problem Como vemos, ambas definiciones hablan percibir algo con claridad, de comprender, y en la segunda, además, se hace referencia a una situación o problema “complejo”. La etimología de la palabra nos da otra visión interesante: Word Origin and History for insight c.1200, innsihht, “sight with the eyes of the mind,” mental vision, understanding,” from in + sight. Sense shifted to “penetrating understanding into character or hidden nature” (1580s). “Ver con los ojos de la mente” Es la visión desde el conocimiento, los ojos del experto capaces de ver las claves ocultas en los datos, los patrones de comportamiento, las tendencias, los detalles que pueden delatar comportamientos anómalos. La Inteligencia Artificial, y en concreto, el Machine Learning, permiten aplicar esa “visión”, desde la comprensión profunda, a conjuntos de datos cuyo volumen es tan grande que hace imposible su tratamiento de forma manual. Van a permitir compararlos, ordenarlos, ponerlos en contexto y convertirlos en “insights” o "claves traducibles en acciones concretas" en las que basar la estrategia de negocio. Ya no se se trata de justificar con datos determinadas decisiones, sino de definir la estrategia basándose en esos “insights” que han salido a la luz. Figura 2: From Data to Insights. Así, las empresas “Data-Driven” son aquellas que hablan el lenguaje de los datos, y gracias a ello son capaces de adoptar decisiones más inteligentes, basadas en sus datos de negocio u otras fuentes disponibles que agregan valor a esa información. Volviendo a la definición de “insight”, si buscamos ahora la traducción al español, de nuevo en el Diccionario Collins encontramos: insight (ˈɪnsaɪt ) noun 1. (= understanding) perspicacia f 2. (= new perception) nueva percepción f Pero no nos convence el término. Ya adelantamos al principio que no era fácil. Antes hemos usado “clave”, pero a menos que se nos ocurra algo mejor, y estando tranquilos respecto a la comprensión de su significado, seguiremos hablando de “insights”.
6 de marzo de 2019
AI & Data
Predictor de infidelidad (III): Ejemplo de regresión logística en Python
Ya estamos llegando al final del nuestro experimento. Tras introducir el problema y explorar el dataset en el primer post, y aprender cómo funciona el algoritmo de regresión logística, en el segundo, ya estamos listos para crear nuestro modelo a partir de los datos y... aplicarlo. ¿Te animas a llegar hasta el final? En este tercer y último post aprenderemos lo siguiente: Como crear un predictor usando el modelo de regresión logística de scikit-learn Cómo valorar sus métricas Cómo hacer una predicción Qué conclusiones podemos extraer Retomamos pues, nuestro Python notebook, donde, ya habíamos realizado la carga y exploración de los datos y creado la variable objetivo, a la que llamamos "infidelity". (Como hemos hecho en los post anteriores, primero, explicaremos paso a paso con imágenes cómo hacerlo, y al final del proceso, incorporamos la versión final editable de la que podéis copiar directamente el código para pegarlo en vuestro notebook ) 3. Aplicación del modelo. Para aplicar el modelo de regresión logística, vamos a usar una librería de Python, Patsy, que permite generar de forma muy cómoda el formato de matrices con el que funciona este modelo. Vamos a recordar un poco cómo era la notación matemática, para entender cuál debe ser el formato de entrada al modelo. La regresión logística era una transformación lineal (con salida no lineal) que se podía expresar de la siguiente manera: Figura 1: Fórmula de una transformación lineal. Donde Y es la variable dependiente u objetivo que queremos estimar (“infidelity”), y X son las variables dependientes o predictoras, que “condicionan” el valor de la Y (“age”, “religious”, “children” etc). Los valores de los coeficientes βi son los que el modelo va a “aprender” entrenándose con valores conocidos del dataset. Una vez entrenado el modelo, será capaz de predecir qué valor tendrá Y para un caso no recogido en los datos de entrenamiento. La fórmula también puede expresarse de esta forma, como producto escalar: Figura 2: Transformación lineal expresada como producto escalar. Si generalizamos para más de una observación Xi, necesitamos generar una matriz como esta: Figura 3: Transformación lineal expresada de forma matricial. 3.1 Formateamos los datos con Patsy La librería Patsy permite, precisamente, generar estas matrices de forma muy ágil gracias a la función dmatrices y a su notación de fórmula. Además, dmatrices añade de forma automática la columna de “1” necesaria para obtener los términos de corte (εi), conocidos como “intercept terms”. Otra de las ventajas de Patsy es que permite trabajar con datos categóricos de forma muy flexible, gracias a la función C(), que indica que los datos entre los paréntesis deben tratarse como etiquetas y no como números. En nuestro ejemplo, vamos a usarlo para que no considere como números los códigos de ocupación. Esta operación es lo que se llama, convertir datos en “dummy”. Por tanto, al aplicar la función dmatrices con esta sintaxis, obtenemos como resultado dos matrices. La primera, con los resultados o valores de la variable objetivo “y”, y la segunda, con los valores de las variables independientes X o datos predictores: Figura 4: Sintaxis de de función dmatrices de Patsy. Para nuestro ejemplo: y, X = dmatrices('infidelity ~ rate_marriage + age + yrs_married + children + religious+ educ + C(occupation) + C(occupation_husb) ', dta, return_type = 'dataframe') Con esta sentencia obtenemos las dos matrices que hemos mencionado antes, en las que los valores de “infidelity”(y) son iguales al producto de los valores de la matriz que representa las variables independientes (X) por unos coeficientes, más un término de corte. Al mismo tiempo indicamos que no use los valores de códigos de ocupación como numéricos sino como categóricos. Figura 5: Código para convertir la matriz de datos en el formato necesario para aplicar el modelo. Comprobamos las dimensiones de las matrices de salida, y sus índices: Figura 6: Código para comprobar las dimensiones de las matrices. 3.2 Aplicamos el modelo Ya sólo nos queda un último paso para poder aplicar el modelo de regresión logística de scikit-learn, y es convertir el vector columna y en matriz 1D. A continuación, ya podemos aplicar directamente el modelo LogisticRegression. Como resultado del entrenamiento del modelo, obtenemos la matriz de coeficientes: Figura 7: Aplicación del modelo. Podemos ver que la precisión del modelo es de un 73%: Figura 8: Estimación de la precisión. También, podemos estimar también qué porcentaje de individuos tienen alguna aventura, obteniendo un resultado de un 32% Figura 9: Porcentaje de individuos infieles. La matriz de coeficientes obtenida muestra qué peso tiene cada uno de los coeficientes. Para visualizarlo, podemos usar List(zip), que crea una matriz a partir de dos listas, la que contiene el nombre de los índices, en la primera columna, y los valores en la segunda. Figura 10: Código para obtener la matriz de coeficientes. Por ejemplo, podemos ver cómo los incrementos en rate_marrige y religiousnes disminuyen la probabilidad de infidelidad. Lo cual es consistente con el análisis de correlación de variables que hicimos en el primer post. Figura 11: Coeficientes. 3.3 Evaluamos el modelo Para evaluar el modelo, dividimos el dataset en dos partes. Dejamos un 75% de los datos como datos de entrenamiento (train), y reservamos el 25% restando como datos de prueba (test). A continuación, entrenamos el modelo de nuevo, pero ahora sólo con los datos de entrenamiento. Figura 12: Dividimos el dataset en train y test. Una vez entrenado el modelo, lo aplicamos a los datos reservados como "test", y calculamos las métricas precisión ( Accurary) y exactitud ( Precision). Cuidado con los "false friends"- Hemos obtenido unos valores de un 73% para la precisión, que no es que sea muy alto, pero tampoco es un mal resultado. Indica que la dispersión de los valores es baja. Sin embargo, la exactitud, es sólo de un 62%. No es un dato muy bueno, ya que se refiere a lo cerca que está un resultado del valor verdadero. Los valores de la diagonal principal de la matriz de confusión (993, 176) indican las predicciones correctas, tanto para verdaderos positivos, como verdaderos negativos. La otra diagonal (con valores 316, 117) recoge las predicciones erróneas. Figura 13: Calculamos precisión, exactitud y matriz de confusión. Para ver la matriz de confusión de forma mucho más "visual", podemos hacerlo en forma de mapa de calor: Figura 14: Código para ver la matriz de confusión como mapa de calor usando seaborn. Figura 15: Matriz de confusión en forma de mapa de calor. 3.4 Hacemos una predicción Por último, ya sólo nos queda hacer una predicción usando el modelo que acabamos de crear. Para que nos resulta más fácil "escribir" los datos de entrada, usaremos el indexador iloc para extraer ,como ejemplo, uno de los registros de la matriz de datos. En particular hemos elegido el registro número 4. Figura 16: Extraemos un registro del dataset como ejemplo. Como resultado, podemos ver el aspecto que tiene este registro en concreto, lo reconvertimos en el formato necesario para poder aplicar el modelo y, ya que estamos, lo probamos. En este caso, la probabilidad de infidelidad es de un 30%. Figura 17: Visualización de ese registro concreto. A continuación, lo usaremos de base para introducir en el modelo los datos concretos para los que queremos obtener una predicción mediante el método keys(). Por ejemplo: mujer de 35 años, con 3 hijos, no religiosa,nivel educativo alto, con ocupaciones (ambos) técnicos especializados y una buena valoración de su matrimonio. F.keys();F['age']=35; F['children']=3; F['yrs_married']=10; F['religious']=1; F['religious']=1; F['C(occupation_husb)[T.3.0]']=1 Figura 18: Cambiamos con F.keys() los valores de cada variable para introducir los que queramos Al aplicar el modelo a este caso en particular, obtenemos como resultado una probabilidad de infidelidad del 29%. Prueba con los datos que quieras, ¿qué resultados obtienes? Figura 19: Resultado obtenido al aplicar el modelo al nuevo caso. ¿Te animas a probarlo? A continuación, tienes el código completo del experimento, que puedes cortar y pegar en tu Jupyter notebook. Te recomendamos que lo vayas haciendo paso a paso, como lo hemos explicado, para poder entender qué se hace en cada momento. Incluso, puedes ir introduciendo pequeñas modificaciones para probar cosas nuevas. g #Importamos los módulos y librerías que vamos a necesitar #!/usr/bin/env python -W ignore::DeprecationWarning #!/usr/bin/env python -W ignore::FutureWarning import numpy as np import pandas as pd import matplotlib.pyplot as plt import statsmodels.api as sm import seaborn as sns from patsy import dmatrices from scipy import stats from sklearn import metrics from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split In [3]: #Cargamos los datos dta = sm.datasets.fair.load_pandas().data dta.head(10) Out[3]: rate_marriage age yrs_married children religious educ occupation occupation_husb affairs 0 3.0 32.0 9.0 3.0 3.0 17.0 2.0 5.0 0.111111 1 3.0 27.0 13.0 3.0 1.0 14.0 3.0 4.0 3.230769 2 4.0 22.0 2.5 0.0 1.0 16.0 3.0 5.0 1.400000 3 4.0 37.0 16.5 4.0 3.0 16.0 5.0 5.0 0.727273 4 5.0 27.0 9.0 1.0 1.0 14.0 3.0 4.0 4.666666 5 4.0 27.0 9.0 0.0 2.0 14.0 3.0 4.0 4.666666 6 5.0 37.0 23.0 5.5 2.0 12.0 5.0 4.0 0.852174 7 5.0 37.0 23.0 5.5 2.0 12.0 2.0 3.0 1.826086 8 3.0 22.0 2.5 0.0 2.0 12.0 3.0 3.0 4.799999 9 3.0 27.0 6.0 0.0 1.0 16.0 3.0 5.0 1.333333 In [4]: #Información sobre el dataset: descripción general, origen, #definición de variables,tipo de variables print(sm.datasets.fair.NOTE) print(sm.datasets.fair.SOURCE) print(sm.datasets.fair.DESCRLONG) dta.info() :: Number of observations: 6366 Number of variables: 9 Variable name definitions: rate_marriage : How rate marriage, 1 = very poor, 2 = poor, 3 = fair, 4 = good, 5 = very good age : Age yrs_married : No. years married. Interval approximations. See original paper for detailed explanation. children : No. children religious : How relgious, 1 = not, 2 = mildly, 3 = fairly, 4 = strongly educ : Level of education, 9 = grade school, 12 = high school, 14 = some college, 16 = college graduate, 17 = some graduate school, 20 = advanced degree occupation : 1 = student, 2 = farming, agriculture; semi-skilled, or unskilled worker; 3 = white-colloar; 4 = teacher counselor social worker, nurse; artist, writers; technician, skilled worker, 5 = managerial, administrative, business, 6 = professional with advanced degree occupation_husb : Husband's occupation. Same as occupation. affairs : measure of time spent in extramarital affairs See the original paper for more details. Fair, Ray. 1978. "A Theory of Extramarital Affairs," `Journal of Political Economy`, February, 45-61. The data is available at http://fairmodel.econ.yale.edu/rayfair/pdf/2011b.htm Extramarital affair data used to explain the allocation of an individual's time among work, time spent with a spouse, and time spent with a paramour. The data is used as an example of regression with censored data. RangeIndex: 6366 entries, 0 to 6365 Data columns (total 9 columns): rate_marriage 6366 non-null float64 age 6366 non-null float64 yrs_married 6366 non-null float64 children 6366 non-null float64 religious 6366 non-null float64 educ 6366 non-null float64 occupation 6366 non-null float64 occupation_husb 6366 non-null float64 affairs 6366 non-null float64 dtypes: float64(9) memory usage: 447.7 KB In [5]: #Comprobamos que no falten datos (Resultado booleano: true=falta dato, false=dato) #También se puede visualizar si faltan datos con los mapas de calor de seaborn. #En este caso, no hace falta. dta.isnull().head(10) Out[5]: rate_marriage age yrs_married children religious educ occupation occupation_husb affairs 0 False False False False False False False False False 1 False False False False False False False False False 2 False False False False False False False False False 3 False False False False False False False False False 4 False False False False False False False False False 5 False False False False False False False False False 6 False False False False False False False False False 7 False False False False False False False False False 8 False False False False False False False False False 9 False False False False False False False False False In [6]: # Veamos ahora la matriz de correlación. # Deberíamos eliminar las variables altamente correlacionadas >0,90 # Edad, años matrimonio-- lógica # Correlación positiva--religious/rate marriage,age/yrs_marriage # Correlación negativa: affairs/children, religious print(dta.corr()) #Edad, años matrimonio-- lógicamente no son independientes, para eliminarlos habría que hacer: #dta.drop(['age','yrs_married'],axis=1,inplace=True) #dta.head() rate_marriage age yrs_married children religious \ rate_marriage 1.000000 -0.111127 -0.128978 -0.129161 0.078794 age -0.111127 1.000000 0.894082 0.673902 0.136598 yrs_married -0.128978 0.894082 1.000000 0.772806 0.132683 children -0.129161 0.673902 0.772806 1.000000 0.141845 religious 0.078794 0.136598 0.132683 0.141845 1.000000 educ 0.079869 0.027960 -0.109058 -0.141918 0.032245 occupation 0.039528 0.106127 0.041782 -0.015068 0.035746 occupation_husb 0.027745 0.162567 0.128135 0.086660 0.004061 affairs -0.178068 -0.089964 -0.087737 -0.070278 -0.125933 educ occupation occupation_husb affairs rate_marriage 0.079869 0.039528 0.027745 -0.178068 age 0.027960 0.106127 0.162567 -0.089964 yrs_married -0.109058 0.041782 0.128135 -0.087737 children -0.141918 -0.015068 0.086660 -0.070278 religious 0.032245 0.035746 0.004061 -0.125933 educ 1.000000 0.382286 0.183932 -0.017740 occupation 0.382286 1.000000 0.201156 0.004469 occupation_husb 0.183932 0.201156 1.000000 -0.015614 affairs -0.017740 0.004469 -0.015614 1.000000 In [7]: #También podemos ver la matriz de correlación de forma gráfica #Si los coeficientes son muy bajos, significa que la influencia #de esa variable es muy pequeña y,podríamos plantearnos una "reducción" #de estas para simplifacar el modelo, pero en este ejemplo no vamos a #quitar ninguna %matplotlib inline sns.heatmap(dta.corr(), annot=True) Out[7]: In [8]: #En la fase de exploración, podemos visualizar las variables y #sus relaciones mediante histogramas #Para que muestre los gráficos en el notebook añadimos: %matplotlib inline # histograma sobre influencia del nivel educativo dta.educ.hist() plt.title('Influencia del Nivel Educativo') plt.xlabel('Nivel Académico') plt.ylabel('Frecuencia infidelidad') Out[8]: Text(0,0.5,'Frecuencia infidelidad') In [9]: # Creamos una nueva variable binaria "infidelity" para tratarlo #como un problema de clasificación 0=fiel, 1=infiel # Mostramos los 10 primeros ... infieles dta['infidelity'] = (dta.affairs > 0).astype(int) print(dta.head(10)) dta.shape rate_marriage age yrs_married children religious educ occupation \ 0 3.0 32.0 9.0 3.0 3.0 17.0 2.0 1 3.0 27.0 13.0 3.0 1.0 14.0 3.0 2 4.0 22.0 2.5 0.0 1.0 16.0 3.0 3 4.0 37.0 16.5 4.0 3.0 16.0 5.0 4 5.0 27.0 9.0 1.0 1.0 14.0 3.0 5 4.0 27.0 9.0 0.0 2.0 14.0 3.0 6 5.0 37.0 23.0 5.5 2.0 12.0 5.0 7 5.0 37.0 23.0 5.5 2.0 12.0 2.0 8 3.0 22.0 2.5 0.0 2.0 12.0 3.0 9 3.0 27.0 6.0 0.0 1.0 16.0 3.0 occupation_husb affairs infidelity 0 5.0 0.111111 1 1 4.0 3.230769 1 2 5.0 1.400000 1 3 5.0 0.727273 1 4 4.0 4.666666 1 5 4.0 4.666666 1 6 4.0 0.852174 1 7 3.0 1.826086 1 8 3.0 4.799999 1 9 5.0 1.333333 1 Out[9]: (6366, 10) In [10]: #Patsy es una librería de Python que permite convertir los datos #en el formato de matriz necesario para aplicar el modelo #También permite generar variables dummy mediante la función C() #La sintaxis es: #patsy.dmatrix(formula_like, data={}, eval_env=0, NA_action='drop', return_type='matrix') from patsy import dmatrices y, X = dmatrices('infidelity ~ rate_marriage + age + yrs_married + children + religious+ educ + C(occupation) + C(occupation_husb) ', dta, return_type = 'dataframe') #Comprobamos las dimensiones y los índices de las matrices resultado print(X.shape) print(y.shape) print (X.columns) print(y.columns) (6366, 17) (6366, 1) Index(['Intercept', 'C(occupation)[T.2.0]', 'C(occupation)[T.3.0]', 'C(occupation)[T.4.0]', 'C(occupation)[T.5.0]', 'C(occupation)[T.6.0]', 'C(occupation_husb)[T.2.0]', 'C(occupation_husb)[T.3.0]', 'C(occupation_husb)[T.4.0]', 'C(occupation_husb)[T.5.0]', 'C(occupation_husb)[T.6.0]', 'rate_marriage', 'age', 'yrs_married', 'children', 'religious', 'educ'], dtype='object') Index(['infidelity'], dtype='object') In [11]: #Para que scikit-learn entienda y como variable dependiente (target) #debemos convertirla de vector columna en matriz 1D y=np.ravel(y) print(y) # sklearn output model = LogisticRegression(fit_intercept = False, C = 1e9) mdl = model.fit(X, y) model.coef_ [ 1. 1. 1. ..., 0. 0. 0.] Out[11]: array([[ 3.02618999e+00, 3.49733210e-01, 6.61853517e-01, 4.31150708e-01, 1.01297621e+00, 1.06658685e+00, 1.60404225e-01, 2.73983554e-01, 1.32893449e-01, 1.62639164e-01, 1.73031585e-01, -7.10360913e-01, -6.13554596e-02, 1.08087003e-01, 1.55318807e-02, -3.75392191e-01, -1.96584314e-03]]) In [12]: # Veamos la precisión del modelo (sobre los datos de entrenamiento) 73% # Más adelante volveremos a entrenar el modelo, pero separando antes los # datos en train y test. Volveremos a calcular la precisión del modelo # entrenado sobre los datos train al aplicarlo a los test model.score(X,y) Out[12]: 0.72510210493245364 In [13]: #¿Qué porcentaje tiene aventuras?: 32%-- #Si predecimos siempre "no", acertaríamos el 68% de las veces, #algo mejor que el error nulo pero no mucho y.mean() Out[13]: 0.32249450204209867 In [14]: # Podemos examinar la matriz de coeficientes, para ver qué peso tiene # cada uno de los coeficientes. List(zip) permite crear una matriz # a partir de dos listas, el nombre de los índices, en la primera columna # y en la segunda, los valores #pd.DataFrame(list(zip(X.columns, np.transpose(model.coef_))) pd.DataFrame(list(zip(X.columns, np.transpose(model.coef_)))) # Por ejemplo, los incrementos en rate_marrige y religiousnes disminuyen # la probabilidad de infidelidad (coefientes negativos) Out[14]: 0 1 0 Intercept [3.02618998703] 1 C(occupation)[T.2.0] [0.349733209538] 2 C(occupation)[T.3.0] [0.661853517181] 3 C(occupation)[T.4.0] [0.431150707917] 4 C(occupation)[T.5.0] [1.01297621288] 5 C(occupation)[T.6.0] [1.06658684973] 6 C(occupation_husb)[T.2.0] [0.160404224729] 7 C(occupation_husb)[T.3.0] [0.27398355359] 8 C(occupation_husb)[T.4.0] [0.132893449067] 9 C(occupation_husb)[T.5.0] [0.162639163742] 10 C(occupation_husb)[T.6.0] [0.17303158544] 11 rate_marriage [-0.710360913438] 12 age [-0.0613554595525] 13 yrs_married [0.10808700349] 14 children [0.0155318806807] 15 religious [-0.375392191185] 16 educ [-0.00196584314225] In [15]: # Para evaluar el modelo, dividimos el dataset en dos partes # un 75% de los datos para entrenar el modelo # y el 25% restante para evaluarlo X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0) # Ahora, aplicamos el modelo sobre los datos reservados para entrenamiento "train" model2 = LogisticRegression() model2.fit(X_train, y_train) Out[15]: LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True, intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1, penalty='l2', random_state=None, solver='liblinear', tol=0.0001, verbose=0, warm_start=False) In [16]: # Una vez entrenado el modelo, lo aplicamos a los datos reservados para "test" predicted = model2.predict(X_test) print (predicted) # Generamos las métricas de evaluación # Cuidado con los "false friends" # "Accuracy" es la precisión, y "Precision" es la exactitud print("Accuracy:",metrics.accuracy_score(y_test, predicted)) print("Precision:",metrics.precision_score(y_test, predicted)) # Generamos la matriz de confusión cnf_matrix = metrics.confusion_matrix(y_test, predicted) cnf_matrix [ 1. 0. 0. ..., 0. 1. 1.] Accuracy: 0.734296482412 Precision: 0.621908127208 Out[16]: array([[993, 107], [316, 176]], dtype=int64) In [17]: #Podemos visualizarla con un mapa de calor #Diagonal values represent accurate predictions, while non-diagonal elements are inaccurate predictions. #In the output, 119 and 36 are actual predictions, and 26 and 11 are incorrect predictions. #The accuracy is 73%, which is the same as we experienced when training and predicting on the same data. #We can also see the confusion matrix and a classification report with other metrics. In [18]: # Importamos los módulos necesarios class_names=[0,1] # name of classes fig, ax = plt.subplots() tick_marks = np.arange(len(class_names)) plt.xticks(tick_marks, class_names) plt.yticks(tick_marks, class_names) # Creamos un mapa de calor sns.heatmap(pd.DataFrame(cnf_matrix), annot=True, cmap="YlGnBu" ,fmt='g') ax.xaxis.set_label_position("top") plt.tight_layout() plt.title('Confusion matrix', y=1.1) plt.ylabel('Actual label') plt.xlabel('Predicted label') Out[18]: Text(0.5,257.44,'Predicted label') In [19]: # Vamos a usar el modelo para hacer una predicción # Para que nos resulta más fácil "escribir" los datos de entrada, # vamos a sacar un ejemplo de uno de los registros de la matriz de # datos, por ejemplo, el 4º, y después lo usaremos de base para # introducir en el modelo los datos que querarmos. print(X.iloc[4]) F=X.iloc[4] F.shape #Con reshape(1,-1) indicamos que lo convierta en una matriz de 1 fila y #el número de columnas que corresponda para que la nueva forma sea #compatible con la original F.values.reshape(1,-1) model.predict_proba(F.values.reshape(1, -1)) Intercept 1.0 C(occupation)[T.2.0] 0.0 C(occupation)[T.3.0] 1.0 C(occupation)[T.4.0] 0.0 C(occupation)[T.5.0] 0.0 C(occupation)[T.6.0] 0.0 C(occupation_husb)[T.2.0] 0.0 C(occupation_husb)[T.3.0] 0.0 C(occupation_husb)[T.4.0] 1.0 C(occupation_husb)[T.5.0] 0.0 C(occupation_husb)[T.6.0] 0.0 rate_marriage 5.0 age 27.0 yrs_married 9.0 children 1.0 religious 1.0 educ 14.0 Name: 4, dtype: float64 Out[19]: array([[ 0.69041584, 0.30958416]]) A partir del registro F que hemos extraído del conjunto de datos, podemos configurar un registro nuevo con los valores que queramos para que el modelo prediga la probabilidad de infidelidad. Vamos asignado los valores variable a varible, y luego le daremos la forma necesaria para poder introducirlos en el modelo. Por ejemplo, mujer de 35 años, con 3 hijos, no religiosa,nivel educativo alto, con ocupaciones (ambos) técnicos especializados y una buena valoración de su matrimonio In [23]: F.keys(); F['age']=35; F['children']=3; F['yrs_married']=10; F['religious']=1; F['religious']=1; F['C(occupation_husb)[T.3.0]']=1 print(F.values) [ 1. 0. 1. 0. 0. 0. 0. 1. 1. 0. 0. 5. 35. 10. 3. 1. 14.] In [24]: # Aplicamos el modelo a este nuevo conjunto de valores y obtenmos # la probabilidad de infidelidad que, en este caso es de un 29% F.values.reshape(1,-1) model.predict_proba(F.values.reshape(1, -1)) [[ 1. 0. 1. 0. 0. 0. 0. 1. 1. 0. 0. 5. 35. 10. 3. 1. 14.]] Out[24]: array([[ 0.70677527, 0.29322473]]) 4. Conclusiones Llegado el momento de sacar conclusiones, tenemos que pararnos a reflexionar. ¿Cuál ha sido el objetivo del experimento?. Hemos aprendido a crear un modelo de predicción basado en regresión logística. Hemos conocido y aprendido a cargar los datasets de Statsmodels. Hemos recordado un poco de álgebra de matrices para comprender mejor el modelo. Y sí, hemos aplicado el modelo a nuestros datos (¿a que no te has resistido?), pero ¿tiene algún tipo de validez el resultado?. A pesar de haber hecho un análisis serio, que, por supuesto se podría haber hecho siguiendo otros enfoques, por ejemplo, reduciendo por ejemplo el número de variables a considerar tras el análisis de correlación, o aplicando el modelo de statsmodel en lugar del del scikit learn, o incluso eligiendo otro algoritmo de clasificación; nunca debemos olvidar sobre qué estamos construyendo nuestro modelo. Nos referimos, por supuesto, a los datos. Y un dataset cuyo origen es una encuesta realizada en los años 70 por una revista femenina en EEUU no parece que pueda ser extrapolable al momento actual, ni a latitudes tan distantes como la nuestra. Si embargo, en la era de las apps "para ligar" o encontrar tu media naranja, hay que ser conscientes de lo que una buena analítica de datos podría obtener a partir de sus bases de datos que, por supuesto, están protegidas por leyes de privacidad. Pero...ahí están. Aquí puedes encontrar todos los post de este experimento: Especial San Valentin: ¿Podemos predecir la infidelidad con IA? Predictor de infidelidad (II): ¿Qué es la regresión logística? Predictor de infidelidad (III): Un ejemplo de regresión logística sobre el dataset “Affairs” (este post)
27 de febrero de 2019
AI & Data
Predictor de infidelidad (II): ¿Qué es la regresión logística?
En el post anterior, planteamos crear un "predictor de infidelidad" a partir del dataset "afairs", cargamos los datos y realizamos una breve exploración/visualización de éstos. En el post de hoy, analizaremos el tipo de problema, y el algoritmo que vamos a utilizar para la nuestro modelo de predicción, la regresión logística. Antes de aplicarlo, merece la pena detenerse a comprenderlo un poco mejor. En este segundo post aprenderemos lo siguiente: Cómo definir la variable objetivo en un problema de clasificación Qué es y para qué sirve la regresión logística Cómo explicar de forma intuitiva las matemáticas del modelo Cuáles son sus limitaciones (También podríamos haberlo abordado como variable de texto, siempre hay enfoques alternativos para la solución de cualquier problema). Tras el breve análisis que hicimos en el post anterior, es fácil deducir que nos hayamos ante unproblema de clasificación. Esto no es nada raro, ya que, aproximadamente un 70% de los problemas de Data Science son de este tipo. Decimos que es de tipo binario, porque la variable objetivo, aquella cuyo valor queremos predecir, podrá tener dos valores enteros (0=fiel, 1=infiel). Por tanto, definimos una nueva variable, "infidelity", que será la variable objetivo (target variable) cuyo valor sea "0" cuando la variable "affairs" es 0 y 1 cuando esta variable es >0. Recordemos que la variable "affairs" era una medida del tiempo dedicado a tener una "aventura extramarital". Si pedimos de nuevo que muestre los 10 primeros registros, vemos que, en este caso, el valor de la nueva variable es 1 (= amores "no oficiales"). Figura 1: Definición de la variable objetivo "infidelity". Figura 2: Impresión de los 10 primeros valores de la variable. Hay distintas familias de algoritmos que se pueden usar para cada tipo de problema en Machine Learning. Lo habitual es usar varios modelos, evaluar su rendimiento y así elegir el más adecuado a cada caso. En este caso, obviamos ese análisis porque queremos trabajar con un modelo concreto, la regresión logística que, como veremos, es una elección muy razonable. 2. ¿En qué consiste la regresión logística? La regresión logística es uno de los algoritmos de aprendizaje supervisado más sencillos y más utilizados en Machine Learning para problemas de clasificación. Es un tipo de análisis de regresión que permite predecir el resultado de una variable categórica, (binaria o múltiple) en función de las variables independientes o predictoras. Nos vamos a centrar en el primer caso, regresión logística binaria. Para entenderlo mejor, veamos uno de los ejemplos más típicos: los detectores de spam. A partir de una serie de variables independientes o características de entrada, tales como el remitente de un mensaje, si va dirigido a una única persona o a un grupo de ellas, o si en el campo "Asunto" aparecen determinadas palabras; es capaz de predecir si es correo deseado o no (variable dependiente binaria con dos valores posibles: "correo deseado" o "correo deseado"). En el siguiente vídeo, Ligdi González explica de forma breve y sencilla cómo funcionan estos algoritmos: [embed]https://youtu.be/NgXNOlrYRh0[/embed] En resumen, los algoritmos de regresión logística, a pesar de su nombre, son algoritmos de clasificación, donde la variable dependiente (valor a predecir), es categórica y binaria. Por tanto, no se trata de predecir valor numérico (como en el caso de la regresión lineal), sino una "etiqueta" de clasificación. En nuestro ejemplo concreto, queremos predecir la probabilidad de que una persona sea fiel o infiel, basándonos en los valores de las variables rate_marriage, years_marriage, children, religious, occupation, occupation_husb y educ. 2.1 Comprendiendo las matemáticas del modelo. Sin meternos mucho en profundidades matemáticas, el objetivo de la regresión logística es obtener la probabilidad de que la variable dependiente tenga un valor categórico u otro (en nuestro ejemplo o “infidelity”= 0 o “infidelity”= 1), en función de los valores de las variables de entrada. Para ello utiliza un modelo de probabilidad lineal, en el que la probabilidad condicionada es función lineal de los valores de las variables de entrada. Esta función es la que se conoce como función logits(Y) y su resultado es un score o puntuación. Su expresión matemática es la siguiente; Figura 3: Fórmula de la función logits. Para entenderlo un poco mejor. Como el objetivo es predecir una "probabilidad", nos movemos en el ámbito de las matemáticas probabilísticas, que son una rama de las matemáticas que se ocupa de medir o determinar cuantitativamente la posibilidad de que un suceso o experimento produzca un determinado resultado. La probabilidad está basada en el estudio de la combinatoria y es fundamento necesario de la estadística. Por otra parte, se trata de una probabilidad condicionada, ya que el valor que tenga la variable que queremos predecir, está influido por los valores de las variables predictoras. Y se trata de una función lineal, porque se puede expresar como una función polinómica de primer grado, es decir, como una suma de valores correspondientes a las variables xi multiplicados por un coeficiente βi, cuya representación en el plano cartesiano es una recta. El problema es que este “score” puede tomar cualquier valor. Para poder convertirlo en una “etiqueta” (recordemos que estamos ante un problema de clasificación, en este caso binario), usamos una función matemática que garantice que la probabilidad condicionada estará entre cero y uno. Para ello, usamos la función Softmax, que para el caso particular de una regresión logística binaria, sería la función Sigmoidea. La función sigmoidea ya nos es una función lineal, sino logarítmica. Por eso decimos que la regresión logística es un algoritmo lineal con una transformación no lineal en la salida. Figura 4: Función sigmoidea. En el blog Data Aspirant, podemos encontrar una imagen que resume muy bien todo el proceso. Figura 5: Proceso de regresión logística para clasificación binaria. 2.2 Comprendiendo las limitaciones del modelo. Antes de seguir codificando nuestro predictor, debemos recordar lo siguiente: La variable de salida es binaria. Predice la probabilidad de que una instancia pertenezca a la clase predeterminada, que se puede ajustar en una clasificación 0 o 1. En este caso, infidelity=1 La regresión logística es muy sensible a los outliers, o datos anómalos. Habrá que revisar este tema antes de aplicar el algoritmo. Habrá que revisar la correlación entre variables, ya que, como en el caso de la regresión lineal, si hay dos o más variables altamente correlacionadas, podemos tener problemas de sobreajuste o de convergencia del modelo. Si recordáis, aunque no mencionamos la razón, en el post anterior donde introdujimos el experimento, ya nos aseguramos de comprobar que no hubiera campos vacíos ni correlación entre las variables. En el tercer y último post de esta miniserie, retomaremos nuestro Jupyter Notebook en el punto en que lo dejamos. Prepararemos los datos para poder aplicar el modelo, lo entrenaremos, valoraremos los resultados, haremos una predicción y sacaremos conclusiones. ¡Todavía nos queda bastante trabajo, pero merece la pena!.¿no? Aquí puedes encontrar todos los post de este experimento: Especial San Valentin: ¿Podemos predecir la infidelidad con IA? Predictor de infidelidad (II): ¿Qué es la regresión logística? (este post) Predictor de infidelidad (III): Un ejemplo de regresión logística sobre el dataset “Affairs” Los post más interesantes de LUCA Data Speaks organizados por series y temáticas
20 de febrero de 2019
AI & Data
Especial San Valentin: ¿Podemos predecir la infidelidad con Inteligencia Artificial?
Hoy en "honor a San Valentín", una broma. Porque no vamos a hablar de amor, sino más bien de lo contrario. Aunque los amores "no oficiales" también pueden serlo de verdad ¿no?. Pero dejémonos de disquisiciones filosóficas, que lo que queremos es ver, con un sencillo ejemplo en Python, y el dataset "affairs", un viejo conocido para los científicos de datos noveles, si podemos construir un predictor de infidelidad. ¿te animas a probarlo con nosotros? El año pasado también celebramos San Valentín con un poco de humor, en este caso, estadístico: ¿Por qué nunca tendré novia?. Este año vamos a "trabajar" un poco más y vamos a construir un "predictor de infidelidad" en Python. Para que no se haga demasiado largo, vamos a dividir en experimento en tres partes: Introducción del experimento, carga, exploración y visualización de los datos (¡este post!) Explicación del modelo que vamos a utilizar: algoritmo de regresión logística Aplicación y evaluación del modelo. Conclusiones. En particular, en este primer post aprenderemos: Qué es Statsmodels y cómo cargar una de sus librerías. Desde Kaggle, por ejemplo, se puede cargar una versión reducida del dataset, pero nosotros trabajaremos con la completa Cómo averiguar las características del dataset (descripción, fuente, dimensiones etc) Cómo detectar si faltan datos Cómo analizar la correlación entre variables Cómo visualizar los datos para hacer una exploración previa Introducción del experimento, carga, exploración y visualización de los datos Nos gusta probar distintas formas de hacer las cosas, ya que es una estupenda forma de aprender y poder elegir después el entorno en el que nos sentimos más cómodos. Podemos trabajar con los notebooks de Azure Machine Learning Studio, como hicimos en nuestro experimento: "Titanic: Tu primer experimento en Azure Machine Learning Studio". Otra opción es usar Jupyter Notebooks en local. Si te animaste a seguir nuestra serie "Atrévete con Python: un experimento para todos los públicos", ya tendrás instalado Anaconda con todo lo que necesitas para empezar a trabajar. Incluso puedes trabajar con la versión online de Jupyter, o, con los notebooks de Microsoft Azure que usamos en el experimento "Machine Learning for kids: construye con tus hijos un bot experto en su animal favorito". Como veis, opciones, no faltan. Nosotros vamos a elegir trabajar con Jupiter Notebooks en local. (si no sabes cómo instalarlos/utilizarlos, te recomendamos que sigas la serie "Atrévete con Python", donde lo explicamos de forma clara y sencilla). (Explicaremos paso a paso con imágenes cómo hacerlo, y al final del proceso, incorporamos la versión final editable de la que podéis copiar directamente el código para pegarlo en vuestro notebook ) Empezamos creando un nuevo notebook Python 3 .Lo primero que vamos a hacer es importar los módulos y librerías que vamos a necesitar. En particular, trabajaremos con algunos de los módulos de Python más importantes para trabajar con probabilidad y estadística que si recordamos son: numpy: El popular paquete matemático de Python, Ofrece funciones estadísticas que podemos aplicar fácilmente sobre los arrays de Numpy. pandas: Esta es la librería más popular para análisis de datos y finanzas. Ofrece funciones muy útiles de estadística descriptiva y facilita mucho el trabajo con series de tiempo. series de tiempo. Scikit Learn: Construida sobre NumPy, SciPy y matplotlib, esta librería contiene un gran número de herramientas para machine learning y modelado estadístico. En nuestro ejemplo, usaremos su algoritmos de regresión logística, la herramienta de split que divide el dataset en una parte para entrenamiento y otra para test, y las métricas. scipy.stats: Es un submodulo del paquete científico Scipy que se complementa con Numpy. Las funciones estadísticas que no están en uno, se pueden encontrar en el otro. matplotlib: Es la librería más popular en Python para visualizaciones y gráficos. statsmodels: Esta librería nos brinda un gran número de herramientas para explorar datos, estimar modelos estadísticos, realizar pruebas estadísticas y muchas cosas más. Seaborn: basada en matplotlib, se usa para hacer más atractivos los gráficos e información estadística en Python. En nuestro ejemplo lo usaremos para hacer mapas de calor. Figura 1: Carga de módulos y librerías. 1.1 Carga de datos A continuación, cargamos los datos, y pedimos que muestre los 10 primeros registros. El dataset “affairs” se puede cargar desde la librería Statsmodel. (Para ver paso a paso cómo cargar datasets en Python desde statsmodels, scikit-learn, y seaborn, puedes leer este post de Sergiy Kolesnikov ). Figura 4: Carga de datos. Figura 3: Echamos un vistazo a los datos. Si no tienes statsmodels instalado, puedes hacerlo usando pip: pip install -U statsmodels También se puede instalar mediante el instalador de Anaconda. Puedes instalar la última versión usando: conda install -c conda-forge statsmodels Statsmodels es una de las librerías científicas de Python principalmente orientada al análisis de datos, ciencia de datos y estadística. Trabaja sobre las librerías numéricas NumPy y SciPi, y se integra con Pandas para el manejo de datos. Las funciones gráficas se basan en la librería Matplotlib. Statsmodels también ofrece conjuntos de datos (y metadatos) para su uso en ejemplos, tutoriales etc. Figura 4: Conjuntos de datos que se pueden cargar desde Staatsmodels. Cada uno de los datasets tiene unos atributos DESCRLONG, SOURCE y NOTE que describen detalladamente su contenido. Pedimos que los muestre con las siguientes sentencias: Figura 5: Mostramos la descripción, características y origen de los datos. Figura 6: Descripción, características y fuente. El dataset “ affairs” no es tan conocido como el de "iris", pero también es un clásico del aprendizaje en Data Science. Se basa en una encuesta realizada por la revista Redbook en 1974, en la que se preguntaba a mujeres casadas por sus aventuras extramaritales. Para más información, se puede consultar el trabajo original publicado en 1978 por el Journal of Political Economy. Como vemos, el dataset contiene 6366 observaciones con 9 variables. El objetivo es crear un modelo que permita predecir si un individuo (en este caso, mujer) va a ser “fiel” o “infiel”, basándose en el valor de esas 9 variables para el nuevo caso y en lo que el modelo haya "aprendido" a partir de los datos de entrenamiento (los datos de la encuesta). La descripción de las variables es la siguiente: rate_marriage: valoración de la encuestada sobre su matrimonio (1 = muy mala, 5 = muy buena) age: edad de la mujer yrs_married: años de matrimonio children: número de hijos religious: valoración de la encuestada sobre su religiosidad (1 = nada religiosa, 4 = muy religiosa) educ: nivel educativo (9 = primaria, 12 = secundaria, 14 = titulación universitaria media, 16 = titulación universitaria superior, 17 = master, 20 = doctorado) occupation: ocupación (1 = estudiante, 2 = agricultura / semicualificado / no cualificado, 3 = "oficinista", 4 = profesora / enfermera / escritora / técnica / cualificada), 5 = gestión/ negocios, 6 = profesional de alta especialización) occupation_husb: ocupación del marido (con la misma codificación) affairs: tiempo dedicado a aventuras extramaritales 1.2 Exploración de los datos Vamos a echarle un vistazo a los datos para ver si hay algo que nos llame la atención, o nos de una pista de posibles correlaciones entre las variables que analizaríamos con mayor detalle después. 1.2.1 ¿Faltan valores? Podemos comprobar si hay campos vacíos con la función isnull(). Esta función es booleana y devuelve dos resultados posibles: "true", cuando falta el dato o " false", cuando no falta. Como el resultado es "false", sabemos que no es necesaria ninguna operación de eliminación de registros, o sustitución por valores medios etc. Hemos puesto “. head(10)” para que sólo saque los 10 primeros registros, porque sabemos que en este caso no faltan datos y no queremos que imprima todo el dataset, pero habría que revisarlos todos. Esta comprobación también se suele hacer de forma más visual usando mapas de calor de seaborn, pero, como hemos mencionado antes, este dataset no tiene campos vacíos. Así que, por esta parte, no hay problemas. Figura 7: Comprobamos que no falten valores. 1.2.2 ¿Se observa algún tipo de correlación? Para ver si existe correlación entre las variables lo más práctico es calcular la matriz de correlación. Es un paso importante porque puede afectar negativamente al rendimiento del algoritmo. Las variables que presentan un índice de correlación muy alto ( >0,9) deben excluirse del análisis (por ejemplo, la función “ drop”). Como podemos ver, en este caso no es necesario eliminar ninguna. Figura 8: Calculamos la matriz de correlación. Figura 9: Matriz de correlación. El signo del índice de correlación también nos da información. Si el índice de correlación entre dos variables es positivo, significa que, si una de ellas aumenta, la otra también lo hace. Por el contrario, cuando el signo es negativo, si una variable aumenta, la otra, disminuye. Por ejemplo, para affairs y rate_marriage es negativo. Esto indica que las personas que valoran más su matrimonio ( rate_marriage creciente), tienen menos aventuras extramaritales ( affairs decreciente). 1.3 Visualización de los datos El histograma sobre la influencia del nivel educativo también arroja resultados interesantes. El menor número de infidelidades se produce en los niveles extremos: mujeres con nivel básico de educación o profesionales con una muy alta cualificación- Figura 10: Mostramos histograma Influencia del nivel educativo. Figura 11: Histograma Nivel Educativo. También podemos observar la influencia de los años de matrimonio: Figura 12:Mostrar histrograma Influencia años de matrimonio. Curiosamente, en promedio, es en los primeros años de matrimonio cuando se aprecia un mayor número de infidelidades. Figura 13: Histograma Años de matrimonio. Debe quedar algo así (ahora ya puedes copiar directamente el código en tu notebook): Aquí puedes encontrar todos los post de este experimento: Especial San Valentin: ¿Podemos predecir la infidelidad con IA? (este post) Predictor de infidelidad (II): ¿Qué es la regresión logística? Predictor de infidelidad (III): Un ejemplo de regresión logística sobre el dataset "Affairs" Los post más interesantes de LUCA Data Speaks organizados por series y temáticas
14 de febrero de 2019
Cloud
AI & Data
Nuestros favoritos de Enero: 5 post del sector que no debes perderte
¿Qué tal se llevan Google y la Fundación Wikipedia? ¿Puede ayudar la Inteligencia Artificial a diagnosticar enfermedades como la esquizofrenia?¿Qué han aprendido las empresas pioneras en l Inteligencia Artificial en sus primeros años de implantación?¿Para qué puede servir un cisne-robot, además de despertar nuestra curiosidad y asombro?.¿Cómo podemos darnos cuenta de que si nos está engañando la IA? No te pierdas nuestra selección de noticias del sector, seguro que te interesan. Nuestros favoritos en la red Empezamos con una estupenda noticia. El pasado 22 de Enero Google anunció una nueva donación de 2 millones de dólares a la Fundación Wikipedia. Es un claro reconocimiento al hecho de que Wikipedia ha sido una fuente de información fundamental para el entrenamiento de los algoritmos de aprendizaje automático en que se basan herramientas como Google Assitant y Google Home. Además de esta donación económica, Google ofrece a Wikipedia acceso gratuito a sus servicios en la nube, y a APIS como Google Cloud Vision, o la API de búsqueda personalizada. Al introducir Google traslate como uno de los sistemas de traducción automática, ha herramienta de traducción de contenido de Wikipedia puede traducir a 15 idiomas adicionales, hasta un total de 121 idiomas. Google Donates Millions, Machine Learning Tools To Wikipedia Nuestra siguiente noticia, trata sobre EMPaSchiz, una nueva herramienta de diagnóstico de la esquizofrenia recientemente presentada por un equipo de investigadores de la Universidad de Alberta, Canadá. Su modelo, basado en el análisis de 174 escáneres cerebrales, tanto de personas sanas como pacientes que padecen esquizofrenia, diagnosticó correctamente la enfermedad con una precisión del 87%. Se basa en el análisis de modelos de parcelación del cerebro en pequeñas partes, diseñados por otros neurofisiólogos. En lugar de limitarse a analizar uno o dos de estos modelos, esta herramienta trabaja con todos ellos. De este modo, la aplicación de IA permite un análisis más objetivo y superar la gran dificultad de diagnosticar una enfermedad en la que muchos síntomas pueden coexistir en un mismo paciente, al mismo tiempo que no todos los pacientes presentan necesariamente todos los síntomas. Artificial intelligence can help diagnose schizophrenia, U of A researchers say Seguimos con un interesante análisis de Forbes sobre las "lecciones aprendidas" por las empresas pioneras en la adopción de inteligencia artificial. El estudio se basa en una encuesta recientemente realizada por Genpact. donde se aprecia una clara evolución respecto a otra similar realizada en 2017. La aplicación de la IA ha pasado de áreas marginales del negocio, a ganar protagonismo en los procesos centrales. What Pioneering Enterprises Are Telling Us About Artificial Intelligence? Y ¿Cómo podemos darnos cuenta cuando la Inteligencia Artificial nos engaña?. Este artículo, publicado en la versión española del New York Times, nos proporciona distintos ejemplos en los que se han usado aplicaciones basadas en IA para engañarnos, y cuál es la clave para evitar que esto ocurra: aprender a desarrollar nuestra capacidad de sentido crítico para valorar adecuadamente la información que recibimos de Internet. Si la inteligencia artificial nos miente, ¿cómo nos daremos cuenta? Terminamos con una noticia simpática. Conocemos robots humanoides, mascotas robots (perros, gatos etc). Pero nos hemos tropezado con un robot-animal poco habitual: cisnes-robot. La noticia, publicada por ChannelNews Asia, nos habla de cómo unos cisnes robot se utilizan en Singapur para monitorizar la calidad del agua en embalses. Robot swans to help monitor water quality in Singapore’s reservoirs Después de nuestra selección de las noticias más interesantes sobre Machine Learning, Inteligencia Artificial y Big Data que hemos encontrado en la red en Enero, os dejamos el post más popular en nuestro blog este mes. Deep Learning fácil: Crea una Aplicación que “colorea” fotos en unos minutos ¿Es el que más te ha gustado a ti también? Los post más interesantes de LUCA Data Speaks 2018 organizados por series y temáticas
6 de febrero de 2019
AI & Data
Deep Learning fácil: Crea una Aplicación que “colorea” fotos en unos minutos
No nos engañemos, el Deep Learning está revolucionando el mundo de la IA porque nos permite hacer cosas increíbles. Cosas que tienen un gran impacto en nuestra vida diaria. Sin embargo, no hace falta ser un experto para poder crear sencillas aplicaciones que usan Deep Learning para hacer todo tipo de cosas. En particular, hoy vamos a “jugar” a colorear una foto creando nuestra propia aplicación en mucho menos de una hora. ¿Qué vamos a necesitar para este sencillo experimento? Tener Python instalado (2 o 3), y unas sencillas nociones. Si no es vuestro caso, no hay problema, porque en este otro post de nuestro blog os explicamos cómo hacerlo paso a paso Tener acceso a internet (vamos a usar una API desarrollada por Algorithmia) Créditos de Algorithmia, que no nos van costar nada porque al registrarnos nos regalan 5000 créditos para que hagamos las pruebas que queramos. Quizás no esté de más explicar un poco antes, qué es una API y a qué nos referimos cuando hablamos de Algorithmia. ¿Qué es una API? La abreviatura viene del término en inglés Application Programming Interfaces (Interfaces de programación de aplicaciones), que se aplica a un conjunto de reglas (código) y especificaciones que las aplicaciones pueden seguir para comunicarse entre ellas. Las APIs pueden servir para comunicarse con el sistema operativo (por ejemplo, WinAPI), con bases de datos (DBMS), con protocolos de comunicaciones (Jabber/XMPP), con redes sociales (Twitter, Facebook, Youtube, Linkedin etc), y otras plataformas online (Google Maps, Blogger, etc). Hacen mucho más fácil el trabajo del programador ya que permiten usar funciones predefinidas para interactuar con otro software u otra plataforma. Incluso, en el caso de herramientas propietarias (es decir, las que no son de código abierto), indican a los programadores de otras aplicaciones cómo incorporar una funcionalidad concreta sin tener que dar información sobre cómo se realiza internamente ese proceso. En nuestro pequeño experimento con Deep Learning, usaremos una API para crear una sencilla aplicación. ¿Qué es Algorithmia? Algorithmia fue creado por Diego M. Oppenheimer con el propósito de “democratizar” el acceso a la Inteligencia Artificial. Algorithmia funciona como una especie de “supermercado” de IA en Internet. Un lugar donde los desarrolladores pueden encontrar algoritmos avanzados en forma de API. Los algoritmos son creados por científicos de datos, que pueden ofrecerlos en formato opensource, o cobrar por ellos. Algorithmia se queda con un porcentaje de las ganancias, pero también ofrece soporte gracias a un servicio en la nube. También permite escalar y poner en producción sistemas basados en IA. Estos algoritmos hacen cosas como extraer automáticamente etiquetas, resumir o detectar el “sentimiento” de un texto, comparar dos imágenes, identificar marca y modelo de un coche, o, darle color a una imagen, que es lo que vamos a probar nosotros. Figura 1: Página web de Algorithmia. Paso 1: nos registramos en Algorithmia Nos registramos desde la página web Algorithmia. Una vez creado nuestro usuario, le diremos que lo que queremos es desarrollar un modelo “Deploy a model”, y para ello buscaremos el algoritmo que nos interesa “Find an Algoritm” entre los disponibles. Como bienvenida, nos regalan crédito por 50K. Figura 2: Registro de usuario. Como bienvenida, nos regalan crédito por 50K. Figura 3: Mensaje de bienvenida y créditos de regalo. En la parte inferior derecha de la pantalla la “Default API Key” que nos han asignado. Figura 4: Clave API por defecto. También podemos encontrar esta información desplegando el menú “Profile” que aparece en la esquina superior derecha: Figura 5: Menú Perfil Usuario. Ya podemos echar un vistazo a los algoritmos principales que nos ofrecen, seleccionar los que nos interesan, o incluso crear nuestros propios algoritmos. Figura 6: Ejemplos de algoritmos disponibles. Paso 2: Instalamos el cliente de Algorithmia para Python Para instalar el cliente, usaremos el comando “pip” desde una ventana cmd. Pip es una herramienta escrita en Python creada para facilitar la descarga e instalación de paquetes del lenguaje que se encuentren en el Python Package Index (PyPI). Cuando os explicamos cómo instalar Python, elegimos la opción más sencilla, Anaconda, que no instala pip por defecto. Así que lo primero que tendremos que hacer es instalarlo mediante el comando: conda install pip Figura 7: Instalación de pip Si nos da error, lo más probable es que no tengamos agregado el PATH en las variables de entorno. Para ello, en nuestro caso, (Windows10), vamos al Panel de Control, y en las Propiedades del Sistema/Variables de entorno, agregamos como Variable de Sistema: C:\Users\XXXX\Local\Continuum\anaconda3\Scripts Figura 8: Agregamos el PATH. Ya podemos lanzar la instalación del cliente de Algorithmia con pip: Figura 9: Lanzamos la instalación del cliente con pip. Paso 3: Elegimos la imagen que queremos colorear y la subimos a Algorithmia. Para cargar la foto, vamos a la pestaña “Data” del portal de Algorithmia, y en “My hosted Data” seleccionamos la opción “Browse files” para cargar al imagen sobre la que queremos trabajar. Figura 10: Desde My Hosted Data subo la imagen que quiero colorear. Creamos una “colección”y la llamamos, por ejemplo, PruebaLUCA. Figura 11: Creamos y nombramos una colección de imágenes. Una vez creada la colección, para cargar las imágenes no tenemos más que arrastrarlas sobre “Drop files here to uptload”, Figura 12: Cargamos la imagen arrastrándola sobre el cuadro inferior. Por cierto, como acabamos de celebrar el segundo cumpleaños de LUCA, vamos a probar a darle color a la foto nos hicimos ese día el equipo de Marcomms (la primera imagen del post). Paso 4: Abrimos un Jupyter Notebook para crear un pequeño programa en Python. Usamos Jupiter Notebook por comodidad. También podríamos crear un fichero local con extensión “.py” y ejecutarlo desde línea de comandos. Si nunca has usado los Jupyter Notebooks, no es problema. En este post te explicamos de forma muy sencilla cómo hacerlo. Merece la pena dedicar un rato para aprender a usarlos. Son muy prácticos. Copia y pega las siguientes líneas de código en tu notebook. Sólo tienes que cambiar la ruta a la imagen que quieres colorear y tu Default API key. Ejecuta el código con “Run Cells” y “et voilá”. Para ver el resultado, abre, dentro de Algorithm Data, la colección temporal: “.algo/deeplearning/ColorfulImageColorization”. Ha quedado un poco “vintage” pero tampoco está mal. ¿no?. Y sobre todo, nos ha servido para comprobar cómo podemos usar algoritmos avanzados de Deep Learning en nuestra aplicaciones sin necesidad de ser expertos en DL. Los post más interesantes de LUCA Data Speaks 2018 organizados por series y temáticas Para mantenerte al día con LUCA visita nuestra
22 de enero de 2019
AI & Data
Deep Learning para todos los públicos: ¿Qué son los tensores? ¿Qué es TensorFlow?
En el primer post de esta serie, “Atrévete con el Deep Learning: principios básicos al alcance de todos” ya os contamos que una de las características de las redes neuronales que les otorga mayor ventaja frente a otros algoritmos de Machine Learning, es su capacidad para trabajar de forma eficiente con datos no estructurados. Es decir, las redes neuronales nos permiten etiquetar y clasificar cualquier tipo de input. Así, estos datos pueden ser de distintos tipos: números, imágenes, sonidos, textos, series temporales. ¿Y cómo lo consiguen? Lo que hacen es convertiros en valores numéricos y expresándolos con un formato matemático en el que resulta mucho más fácil identificar patrones: en forma de tensor.Si intentamos buscar en la red ¿Qué es un tensor?, seguramente nos desanimemos ante la avalancha de contenido matemático para expertos, pero no resulta tan fácil encontrar una explicación intuitiva. Daniel Jeffries, en un post de su serie sobre cómo aprender sobre IA cuando “se te dan fatal las matemáticas” (“Learning AI if you suck at Maths”) nos ofrece una explicación clara y divertida sobre tensores (ilustrada con gatos), del que vamos a resumir las ideas principales. ¿Por son importantes los tensores en Deep Learning ? Los tensores son objetos matemáticos que almacenan valores numéricos y que pueden tener distintas dimensiones. Así, por ejemplo, un tensor de 1D es un vector, de 2D una matriz, de 3D un cubo etc. Figura 1: Representación gráfica de tensores de 1 a 5 dimensiones. En Python, estos tensores normalmente se almacenan en lo que se conoce como NumPy arrays. NumPy es una de las librerías científicas de Python más se usan en cualquier entorno de trabajo con IA y sirve para manipular números. Veamos algunos ejemplos concretos. Una lista de números, se puede “guardar” como un vector de 1D Una lista de correos, con 10.000 usuarios, y 6 campos por cada uno (nombre, apellidos, dirección, ciudad, país, código postal) puede almacenarse en un tensor 2D con dimensiones (10.000, 6). ¿Y si en lugar de tener una lista, tenemos 10 listas? Entonces, es cuando entran en juego los tensores 3D, que se representarían como (10, 10.000, 6), es decir (“número de listas”, “número de personas por lista”, “número de características por persona”). Figura 2: Representación de un tensor 3D. Un caso típico de uso de tensores 3D es el análisis de tuits. Los tuits tienen 280 caracteres, y usan el estándar UTF-8. Aunque este estándar permite crear millones de caracteres, sólo nos interesan los primeros 128 que coinciden con los básicos del sistema ASCII. Por tanto, un solo tuit se podría encapsular en un vector 2D con la forma (280, 128). Pero en un análisis de sentimiento típico, no trabajamos con un único tuit. Si lo que que queremos es analizar, por ejemplo, un corpus de 1 millón de ellos, los podemos “encapsular” en un tensor 3D de la siguiente forma (1.000.000,280,128). Por su parte, los tensores 4D, se suelen usar para el análisis de imágenes. Por ejemplo, una imagen en color RGB (Red, Green, Blue), con un tamaño de 750×750 píxeles se puede almacenar en un tensor (750, 750, 3). Pero si lo que queremos es trabajar con un corpus de un millón de imágenes de gatos, con este tamaño y en este formato de color, usaremos un tensor 4D :(1.000.000, 750, 750,3). Figura 4: Representación de cómo una imagen se puede “encapsular” en un tensor 4D. Las librerías y entornos frameworks de código abierto para Machine Learning son herramientas de software que están disponibles en la web de forma gratuita. Son, por tanto, una forma muy interesante probar las ventajas que puede aportar el Data Science a una empresa, sin tener que comprometerse antes con entornos propietarios, como pueden se Microsoft Azure o Amazon Machine Learning. Este tipo de frameworks están sustentados por una gran comunidad de ingenieros y científicos de datos que comparten abiertamente conjuntos de datos y modelos pre-entrenados. Así, en lugar de tener que construir un sistema de reconocimiento de imágenes desde cero, se puede empezar a partir de modelos de clasificación ya entrenados con datos de Imagenet, o construir tu propio modelo basado en estos datos. En el post anterior también apuntamos que la creación de la librería Tensorflow marcó un hito importante en la historia del Deep Learning. TensorFlow es una biblioteca de software de código abierto para el cálculo numérico que utiliza grafos de flujo de datos. Los nodos en el grafo representan operaciones matemáticas, mientras que los bordes del grafo representan los conjuntos de datos multidimensionales (tensores) comunicados entre ellos. En 2011 Google Brain, un equipo de investigadores e ingenieros de Google especializados en Inteligencia Artificial, desarrollaron DistBelief, el predecesor de TensorFlow. A finales de 2015 Google decidió liberarlo y publicarlo como software libre bajo licencia Apache 2. En 2017 liberó una nueva versión con multitud de mejoras, como mejores rendimientos, y la posibilidad de aprovechar las ventajas de ejecutar sobre GPU´s. También, mejoraron integraciones con otras bibliotecas del ecosistema como Keras. Google lleva ya años aplicando esta tecnología a muchos de sus productos y servicios, como por ejemplo, el componente de generación de respuestas automáticas de Gmail, o el de traducción automática en Google Translator. Pero desde la liberación del software en 2015 la respuesta de la comunidad ha sido espectacular, y tanto startups de Silicon Valley, como grandes corporaciones usan TensorFlow en sus proyectos. Algunos tan conocidas como Uber, Airbnb, Twitter, Airbus o IBM. Si quieres hacerte una idea de cómo funciona TensorFlow de forma muy visual, puedes visitar esta página web, donde, sin necesidad de programar ni una línea de código, se puede configurar y ver en tiempo real cómo aprende una red neuronal. Figura 5: Ejemplo de visualización del funcionamiento de una red neuronal. Además de Tensorflow, hay otros frameworks y librerías muy conocidos, como Theano, Torch, scikit-learn, Caffe, Cognitive Toolkit, Pytorch. En este post podéis encontrar un resumen de sus características más importantes, aunque una común a todos ellos es el uso de librerías como cuDNN y NCCL que ofrecen altos rendimientos en el entrenamiento de los algoritmos gracias al uso de GPUs. Tras este segundo post más teórico, en el siguiente, nos pondremos manos a la obra y crearemos sencillas aplicaciones basadas en algoritmos Deep Learning. ¿te animas a probar? Y, si quieres profundizar más, también puedes seguir nuestra serie sobre TensorFlow Deep Learning con Python: Introducción a TensorFlow (Parte I), Instalación, conceptos y comandos básicos Deep Learning con Python: Introducción a TensorFlow (Parte II), Creación de una neurona y una sencilla red neuronal Deep Learning con Python: Introducción a TensorFlow (Parte III). Ejemplo de definición una red convolucional para abordar la clasificación de uno de los datasets más conocidos: CIFAR-10
15 de enero de 2019
AI & Data
¿Sabes cuál es el ejemplo más antiguo de análisis de datos?
En los últimos años, y gracias al desarrollo de las tecnologías Big Data, las analíticas de datos y su aplicación a todo tipo de sectores e industrias están de plena actualidad. Sin embargo, no son un tema nuevo. En el post de hoy vamos a hablar de primer caso documentado de análisis de datos: el análisis de las muertes producidas en Londres, en 1854 por una epidemia de cólera. Aunque parezca increíble, el ejemplo más antiguo de análisis de datos data de 1854 ¡del siglo XIX! Para ambientarnos mejor, estamos en Londres, unos años antes de las correrías de Jack el Destripador. Menos famoso que él, pero mucho más relevante fue John Snow. Figura 1: Dr John Snow (source: Rsabbatini, Wikipedia) John Snow fue un médico ingles que impulsó la adopción de las medidas de higiene y la anestesia. Pero lo que nos interesa a nosotros es que también impulsó otras cosas. Efectivamente, John Snow protagonizó uno de los ejemplos más antiguos de recopilación y explotación de datos de los que se tiene documentación: El análisis de las muertes por cólera en Londres en 1854. Sobre un mapa de la ciudad, señaló todos los casos de cólera detectados. También realizó análisis estadísticos sobre la relación entre la calidad de agua de las distintas fuentes y los casos detectados de la enfermedad. Buscaba un patrón. Figura 2: Mapa que muestra los casos de cólera como puntos y las fuentes de agua como cruces (fuente: Dominio público, vía Wikipedia Commons) Dibujó un mapa en el que señaló, por una parte, los distintos casos de la enfermedad detectados (como puntos), y por otra, la ubicación de las fuentes (en forma de cruces). Así, mediante la visualización geográfica de las muertes que se habían producido por cólera en el mes de septiembre de ese año, este doctor se dio cuenta de que todas tenía una variable común: un pozo de agua en Broad Street. Efectivamente, el pozo, estaba contaminado. Gracias al análisis de datos, el Dr. Johnson también pudo explicar el motivo por el que también enfermaron personas que vivían lejos de esta calle, o por qué, de un taller cercano con más de quinientas trabajadores, solamente enfermaron cinco de ellos. ¿adivinas por qué? Porque tenían una fuente dentro del propio edificio. Sólo enfermaron los que bebieron en la fuente que estaba en la calle. Y los que vivían en otras zonas, pero trabajaban o pasaban frecuentemente por Broad Street también enfermaban si bebían de esa fuente. Por ello, John Snow es reconocido como el “Padre de la Epidemiología” Como veis, antes de la revolución digital ya existían los datos y su análisis no es algo nuevo. Lo nuevo es el tipo de datos, las herramientas y la velocidad a la que podemos hacer cosas increíbles con ellos. Hoy día, en LUCA, usamos los datos para ayudar a luchar contra enfermedades como el Zika y el Dengue, a predecir la calidad del aire, a mejorar la respuesta ante desastres naturales…En definitiva, poner los datos al servicio del cumplimiento de los ODS de la ONU para 2030. Figura 3: Objetivos de Desarrollo Sostenible (Naciones Unidas). También puedes seguirnos en Twitter, YouTube y LinkedIn
21 de diciembre de 2018
AI & Data
¿Pueden las analíticas de datos ayudarte a ganar el Gordo de la Lotería?
Como cada año, cuando se acerca la fecha del sorteo de Lotería de Navidad, muchas personas son capaces de hacer cola durante horas, o desplazarse cientos de kilómetros para comprar su preciado boleto en las administraciones más tradicionales. Por ejemplo, en la administración 67 de Madrid, la de “Doña Manolita”, las colas empiezan a formarse incluso antes del verano y se han llegado a distribuir hasta en 3 recorridos diferentes para que no repercuta negativamente en los negocios más cercanos. En realidad, aunque la ilusión de nos toque “el Gordo” es muy grande, la probabilidad es francamente pequeña. Y también, aunque haya todo tipo de opiniones sobre si un número es “feo” o “bonito”, si hay que comprarlo en Doña Manolita o en La Bruixa D´Or, en el bombo hay 100.000 bolas iguales, y todas tienen las mismas posibilidades de salir. Por tanto, la posibilidad de que nos toque el Gordo es de 1 entre 100.000 (0.00001%). Si no nos ponemos tan exigentes, aunque hay que reconocer que los cuatro millones de euros a la serie del Gordo son un gran aliciente, puede consolarnos saber que, de 170 millones de décimos que se ponen a la venta, (170 series de 100.000 números cada una), un 70% de lo recaudado, (2.380 millones de euros), se destinará a premios: El segundo, el tercero, los dos cuartos, los ocho quintos, las aproximaciones, la famosa pedrea o el bendito reintegro para los 9.999 números cuya última cifra coincide con la del Gordo. Éstos últimos, cuando tocan, suelen invertirse en el Sorteo del Niño, donde, aunque la cantidad destinada a premios se triplica, suelen acabar irremisiblemente "volatilizados". Podemos intentar analizar los resultados de años anteriores para ver qué números han salido con mayor o menor frecuencia. También, podemos intentar buscar patrones estadísticos. Pero, en el fondo, la probabilidad de que nos toque el Gordo seguirá siendo la misma: 1 entre 100.000. Así, que si lo que queremos es predecir qué número va a salir, las analíticas de datos no pueden ofrecer predicciones mucho mejores que las que haga una pitonisa con su bola de cristal. Sin embargo… Sin embargo, resulta que sí que hay una forma en la que Analíticas de Datos y Loterías pueden ser una “combinación ganadora”. Todo el mundo conoce Loterías y Apuestas del Estado, pero ( SELAE), muchas personas no saben que es la más rentable de todas las sociedades mercantiles y entidades públicas empresariales. A pesar de ser una empresa centenaria, corría el año 1763 cuando el Rey Carlos III instauró la llamada "Lotería Real", SELAE está a la vanguardia tecnológica del sector del juego gracias a una estrategia de claro impulso a la innovación y desarrollo de nuevas aplicaciones de gestión de juegos por internet y móvil. De hecho, es una de las pocas operadoras mundiales con tecnología de juegos propietaria. También, es proveedor de servicios tecnológicos de software para S ervices aux Loteries en Europe (SLE), suministrando tecnología española para la gestión del juego de Euromillones. Para poder seguir siendo un operador líder, y garantizar la calidad y sus servicios y productos, la apuesta por la digitalización ha sido clave. Por ejemplo, llegar acuerdos con entidades financieras para ofrecer a los clientes el pago con tarjetas, nuevos programas de visualización de resultados en tiempo real, nuevas apps móviles para realizar apuestas, compra por voz, presencia en redes sociales etc. Y es aquí, donde las analíticas de datos se convierten en las mejores alidadas de la empresa. Porque todos esos servicios digitalizados generan un gran número de datos, que pueden revelar cosas tan interesantes como cuál e s la mejor ubicación para nuevas tiendas físicas, ofrecer distintos formatos o servicios basados en una mejor segmentación de los clientes, analizar resultados de campañas en redes sociales etc. Pero... cuando hablamos de Lotería de Navidad, en realidad no hablamos de analíticas, ni de resultados, hablamos de ilusión, y de compartir. Hablamos de esa dulce nostalgia que nos recuerda los sorteos que escuchamos en nuestra infancia, fielmente retransmitidos por la radio. Hablamos de ver las imágenes en las noticias de los agraciados, felices y exultantes. Jugar a la Lotería de Navidad se ha convertido en uno de nuestros ritos más compartidos. Tanto, que hay personas que en todo el año, sólo juegan ese día. ¿Y tú? ¿tendrás suerte este año?.
20 de diciembre de 2018
AI & Data
Atrévete con Deep Learning: Principios básicos al alcance de todos
¿Tienes una idea clara de lo que es el Deep Learning? Si no es así, no te preocupes, ya que, aunque está en boca de todos, es un concepto que genera mucha confusión. ¿Y por qué se habla tanto de algo de lo que se sabe tan poco? La respuesta es muy sencilla. El Deep Learning es una de las áreas de investigación más populares dentro del campo de la Inteligencia Artificial en los últimos años porque , gracias a estas técnicas, cosas como la visión artificial o el procesamiento del lenguaje natural han saltado del ámbito de la ciencia ficción a la realidad. Y porque es intrínseco a la naturaleza humana el querer comprender aquello que nos es significativo, que está en nuestro día a día. Y el Deep Learning lo está. En esta nueva miniserie “Deep Learning para todos los públicos” vamos a intentar s uperar las barreras conceptuales, matemáticas o técnicas para lograr transmitir de forma intuitiva el significado de este concepto y el impacto tiene en nuestra vida presente y futura. En este primer post explicaremos: La relación entre los conceptos de Inteligencia Artificial, Machine Learning y Deep Learning. Qué es un perceptrón y veremos un ejemplo de cómo funciona Qué son las redes neuronales y qué las caracteriza Cómo funciona una red neuronal, comparándola con un Sistema Experto y otros algoritmos de Machine Learning Por qué es tan potente el Deep Learning y el tipo de cosas que permite hacer Por último, veremos un vídeo resumen de lo más interesante. Deep Learning vs Machine Learning vs IA En nuestro post Artificial Intelligence, Machine Learning y Deep Learning: ¿Conoces las diferencias? ya os contamos las principales diferencias entre los conceptos de IA, ML y DL, pero lo cierto es que pasamos un poco “de puntillas” por este último. Si recordamos, la idea principal que subyace al campo de la IA es conseguir que una computadora resuelva un problema complejo como lo haría un humano. A mediados de los años 60, la comunidad IA desarrolló los primeros sistemas expertos , en los que se creía que un potente ordenador y unas pocas reglas de razonamiento podrían emular expertos de rendimiento “superhumano” Sin embargo, claramente, los “recursos” no acompañaban. Figura 1: De los Sistemas Expertos a las Redes Neuronales. Por este motivo, no fue hasta los años 80 que empezó a cobrar importancia el aprendizaje automático o Machine Learning. Se trata de una forma de IA que ya no necesita un programador que codifique reglas, sino que es capaz de establecer sus propias reglas y aprender por sí misma. Y fue en ese momento, casi 30 años después del los inicios de la Inteligencia Artificial, gracias al desarrollo de las tecnologías Big Data y de las mejoras en capacidad de procesamiento. Del Machine Learning al Deep Learning: redes neuronales Cuando hablamos de Machine Learning, hablamos de algoritmos de aprendizaje. Hay muchos tipos de ellos. La elección del más adecuado, dependerá del tipo de tarea que se quiera resolver en cada caso. Por ejemplo, podemos hablar de algoritmos de clasificación como los árboles de decisión, o Naïve Bayes, algoritmos de regresión, de clustering, de análisis de componentes principales… Pero también podemos hablar de redes neuronales. Las redes neuronales son un conjunto de algoritmos diseñados especialmente para reconocer patrones. Son muy potentes porque permiten que una computadora resuelva esos “problemas” que hasta entonces eran fáciles para un humano, pero muy complejos para una IA. Nos referimos a la percepción sensorial. Sí, el conocido ejemplo de “identificar un gato en una foto”, o “identificar un sonido”. Origen de las redes neuronales: el perceptrón Para que la identificación de imágenes llegara a ser una realidad, hubo que recorrer un largo camino. El origen de la historia se remonta a 1943, cuando McCulloch y Pitts crearon el primer modelo de neurona artificial. Casi 20 años después, en 1962, Rosenblatt retomó la idea, creó una estructura llamada “Perceptrón” y el mecanismo de “Backpropagation” , que es el que permite a la neurona “aprender por sí misma” y descubrir la información oculta en los datos de entrada con los que la “entrenamos” . ¿Cómo funciona el perceptrón? La idea es sencilla. Dados unos datos de entrada n1, n2 etc, existe una combinación de parámetros o coeficientes, que llamaremos función peso ( w0, w1, etc), que combinados con ellos ofrecen un determinado resultado. El problema consiste en averiguar qué valores han de tener esos coeficientes wi para obtener el resultado que mejor se ajusta a la realidad. Para ello, lo que se hace es “entrenar” la red neuronal (en este caso, el perceptrón, una red de una única neurona). Figura 2; Representación de un perceptrón. Por tanto, entrenar una red neuronal es averiguar qué combinación de valores wi, aplicados (=multiplicados) a los valores ni de los datos de entrada, dan como resultado los valores de salida que conocemos. Por ejemplo, si lo que queremos en entrenar una red neuronal para detectar imágenes de gatos, los datos de entrada son las imágenes, los datos de salida indican si hay o no un gato en esa imagen, y mediante el entrenamiento, la red neuronal ajustará los parámetros para detectar cuáles son los patrones ocultos en los datos de entrada que permiten identificar si, efectivamente, en esa imagen hay un gato. ( tamaño, número de extremidades, aspecto peludo etc). Para entenderlo mejor, tomamos prestado un ejemplo muy claro de este artículo de Xataka. En este ejemplo, los datos de entrada son las notas de dos exámenes n1 y n2. Si la suma de estos datos de entrada, multiplicadas por su peso correspondiente wi es mayor que un determinado umbral, la salida del perceptrón nf=1, que significa que el alumno ha aprobado. Si es menor que ese valor umbral, la salida del perceptrón tiene un valor nf=0 y significa que el alumno ha suspendido. Matemáticamente es tan sencillo como escribir: Figura 3: Fórmula simplificada de la entrada del perceptrón. Para encontrar el valor de los pesos, wi, entrenamos la red neuronal y empezamos asignando a estos coeficientes wi un valor aleatorio. Por ejemplo, podemos elegir dar el mismo peso a cada examen y asignar un valor 0,5. Entonces vemos qué resultado da la red neuronal para cada alumno. Como tenemos un conjunto de datos de entrenamiento etiquetados, (lo datos de notas de exámenes, pareados con la nota final de curso correspondiente para cada alumno), sabemos qué resultado final es el que tiene que salir y esto nos permite ir ajustando los pesos en cada interacción. Con estos ajustes, la red neuronal va extrayendo información oculta en los datos de entrenamiento, aprende a detectar patrones. Por ejemplo, si un alumno ha sacado muy buena nota en el segundo examen, pero sin embargo ha suspendido, significa que ese examen influye poco en la nota final y por tanto hay que reducir su peso ( w2). Definición de red neuronal Una red neuronal no es más que una superposición de perceptrones de distintos tipos conectados unos con otros en estructuras complejas. La estructura más sencilla se conforma de tres capas, una capa de entrada, una capa intermedia u oculta y una capa de salida. Figura 4: Esquema de una red neuronal. ¿Cómo funciona una red neuronal? La idea es sencilla. Los datos de entrada viajan a través de las conexiones entre neuronas. La fortaleza de esos enlaces entre neuronas se representa por los pesos. Si la señal es lo suficientemente fuerte, se activará una determinada neurona. De esa manera el sistema “aprende” a distinguir las características de los datos de entrada que influyen más en el resultado, de las que no lo hacen, es decir, aprende a interpretar los patrones ocultos en los datos. El Deep Learning o aprendizaje profundo es, por tanto, un subcampo dentro del Machine Learning que utiliza redes neuronales para obtener representaciones cada vez más significativas de los datos mediante el aprendizaje por capas. Cada una de estas capas va extrayendo características de un nivel cada vez más alto hasta llegar a su respuesta final. Por ejemplo, una red neuronal diseñada para identificar rostros humanos empieza buscando relaciones simples entre los datos, como identificar bordes. Según vamos profundizando en la red, estas funciones más simples se van combinado para buscar relaciones más complejas, como puedan ser partes concretas de la cara (ojos, boca, nariz). En un siguiente paso se identificaría la cara completa y por último se identificaría a la persona a la que corresponde esa cara. Así las sucesivas capas de abstracción serían: Imagen-- Bordes--Partes de la cara -- Cara--Identificar a la persona por su rostro. Figura 6: Las redes neuronales van "aprendiendo" características de los datos de forma progresiva de menor a mayor nivel, evitando el costoso trabajo previo de selección de características necesario en el Machine Learning tradicional. Para entenderlo mejor, vamos a comparar cómo realizar una tarea de clasificación típica usando un sistema experto, un algoritmo de Machine Learning clásico, y una red neuronal. Figura 6: ejemplo de tarea de clasificación. Sistema Experto: Usando sentencias tipo “IF- THEN”. Si es redonda y de color naranja, entonces es una naranja Algoritmo ML. El algoritmo ML no usa reglas, sino que “aprende” a identificar una nueva fruta mediante el entrenamiento con un amplio conjunto de datos “etiquetados”. Son datos etiquetados, porque sabemos de antemano cuál el resultado correcto de la clasificación. El objetivo del entrenamiento es que algoritmo “aprenda” a identificar el conjunto de características que corresponden a una respuesta correcta determinada, para que cuando se le pida clasificar una fruta desconocida con características forma=redonda, color=naranja, la clasifique correctamente como “naranja” Red Neuronal: Cada entrada de la red neuronal representa una característica del objeto. Se diseña la red para que, por ejemplo, la entrada uno se active cuando el color sea naranja, y la entrada dos cuando la forma sea alargada. Entrenamos el algoritmo con ejemplos para los cuales, cuando se activa la entrada uno, la respuesta correcta sea naranja, y cuando se active la dos, pera. Así el algoritmo aprende a distinguir una fruta de otra. Esta activación se realiza por medio de una operación que realizan todas las capas salvo la capa de entrada, antes de continuar multiplicando sus valores por las conexiones salientes. La función de activación recibe como entrada la suma de todos los números que llegan por las conexiones entrantes, transforma el valor mediante una fórmula, y produce un nuevo número. Existen varias opciones, (funciónes lineales, logísticas, hiperbólicas) lo cual le otorga una gran flexibilidad a las redes neuronales, pero una de las funciones más habituales es la función sigmoide. Esta función transforma los datos de entrada en valores de salida consistentes "0" o "1", ya que estamos hablando de probabilidad. Después, el proceso se automatiza por medido de algoritmos de propagación del error. Compara el valor de salida ofrecido por la red neuronal con el valor real (los datos de entrenamiento están etiquetados), calcula la diferencia entre ambos resultados y la toma como error. A continuación, varía los pesos de las neuronas de forma que en la siguiente interacción se minimice este error. De esta forma, mediante múltiples interacciones, encuentra los valores de wi que ofrecen el mejor resultado. ¿Por qué es tan potente el Deep Learning? El Deep Learning es tan importante porque está permitiendo resolver de forma más fácil y eficiente un gran número de problemas. Por una parte, realiza de forma automática una de las tareas más complejas del proceso de trabajo de Machine Learning: la ingeniería de atributos. Las redes neuronales seleccionan de forma automática qué atributos son los relevantes y cuáles se pueden desechar. Otra de las grandes ventajas de trabajar con redes neuronales es que permiten trabajar con cualquier tipo de input. Cualquiera: números, imágenes, sonidos, textos, series temporales. Teniendo en cuenta que los datos no estructurados, aquellos que no encajan en la estructura tradicional filas/columnas de las bases de datos relacionales, suponen más de un 90% de todos los datos generados, es fácil comprender la importancia de poder manejarlos de forma eficiente. Estamos hablando de datos como mensajes de correo, vídeos, ficheros de audio, páginas web, mensajes en redes sociales etc. ¿Y cómo lo consiguen? Convirtiéndolos en valores numéricos y expresándolos con un formato matemático en el que resulta mucho más fácil identificar patrones: en forma de tensor. De hecho, uno de los hitos más importantes en el desarrollo del Deep Learning fue la creación de la librería Tensorflow, de la que hablaremos en otro post. Así, una red neuronal entrenada con datos etiquetados, también se puede aplicar a datos no estructurados, lo cual les da a los algoritmos de Deep Learning una gran ventaja respecto a otros algoritmos al poner a su disposición un volumen de datos de entrenamiento mucho mayor. Algoritmos no muy buenos entrenados con enormes conjuntos de datos pueden dar mejores resultados que buenos algoritmos entrenemos con conjuntos de datos reducidos. De hecho, mientras en el caso de los algoritmos tradicionales usados en Machine Learning llega un momento en el un mayor volumen de datos no implica un mejor rendimiento, en el caso del Deep Learning no ocurre así. El rendimiento no deja de crecer, según lo hacen el volumen de datos y el número de capas del modelo. Figura 6: Evolución del rendimiento del algoritmo según el volumen de datos disponibles. Así, gracias al desarrollo de la computación paralela masiva con GPUs (las redes neuronales son en realidad un enorme número de cálculos que se ejecutan en paralelo), la disponibilidad de volúmenes masivos de datos, las nuevas plataformas de software como TensorFlow, Theano, Keras, CNTK, PyTorch, Chainer, y mxnet, y los avances matemáticos (optimizadores más robustos, mejores funciones de activación etc), se ha conseguido que una IA pueda hacer cosas tan sorprendentes como (del libro de François Chollet book sobre DL): Clasificar imágenes de forma similar a como lo haría un humano Reconocimiento de voz de forma similar a como lo haría un humano Reconocimiento de texto escrito de forma similar a como lo haría un humano Mejores sistemas de traducción automática Mejoras en la conversión texto-audio-texto Asistentes digitales Conducción autónoma de forma similar a como lo haría un humano Mejores anuncios personalizados, como hacen Google, Baidu y Bing Mejores resultados de búsquedas en la web Procesamiento de lenguaje natural Ganar al campeón mundial de Go etc Para terminar, os proponemos ver este interesante vídeo de la red de divulgación scenio, perteneciente a la Cátedra de Cultura Científica de la Universidad del País Vasco, en el cual, en menos de 10 minutos, cuentan de forma muy amena cómo funciona una neurona. No te pierdas los siguientes post de esta miniserie, donde hablaremos de los distintos tipos de redes neuronales que existen y para que se utilizan, de cómo se consiguen la redes neuronales trabajar con datos no estructurados y multidimensionales y haremos nuestros pinitos con código. Otras miniseries de nuestro blog que pueden interesarte: Machine Learning con Python para todos los públicos. (6 post) Titanic: Tu primer experimento en Azure ML Studio (4 post) Atrévete con el Python (II): ¿Qué es el análisis de Componentes Principales o PCA? (2post) Los post más interesantes de LUCA Data Speaks 2018 organizados por series y temáticas
20 de noviembre de 2018
Cloud
Conectividad e IoT
Cursos gratuitos en inglés y en español sobre Data Science, Bitcoin, IoT que empiezan ¡ya!
¿Quieres introducirte en el mundo de los datos (Data Science, Machine Learning, Visualización de datos etc.) pero no sabes por dónde empezar? Pues aquí tienes …. ideas. Cursos online gratuitos unos, otros, con un coste muy asequible en los que puedes empezar a aprender desde ya. Elige el tuyo.Los MOOC (massive open online courses) son cursos en línea ofrecidos por prestigiosas universidades, que permiten aprender sobre todo tipo de temáticas de una forma muy accesible, por su gran flexibilidad, y asequible. Al principio casi todos eran gratuitos. Con el paso del tiempo, el modelo fue evolucionando y algunas entidades pasaron a ofrecer los cursos a cambio de un pequeño importe,o bien, ofrecer el curso de forma gratuita, pero cobrar un importe asequible por certificar la realización del curso. Si tu objetivo es simplemente aprender, aquí tienes a tu disposición una gran cantidad de recursos de gran calidad. Si lo que quieres es también algún tipode certificación que te apoye en el desarrollo de tu carrera profesional o la búsqueda de empleo, en esta lista encontrarás opciones aptas para los bolsillos más exigentes. ¡Elige el tuyo! Data Science gratuitos y en español (generales) Estos 5 cursos sobre Ciencia de Datos en español son gratuitos y tienen la inscripción abierta. Pueden ser una excelente introducción. Introducción al Machine Learning (4ª Edición), Universitas Telefónica en MiriadaX Introducción al análisis de datos y Big Data, Universidad Rey Juan Carlos Iniciación a la Infografía y Visualización de datos, Universitat Oberta de Catalunya en MiriadaX Introducción a la Minería de Datos, Universidad Católica de Chile en Coursera Inteligencia Artificial y Educación, Universidad de la Laguna, en MiriadaX Aplicaciones de Data Science a distintos campos (gratuitos, en inglés) En las plataformas edX y Coursera encontramos también interesantes cursos de Ciencia de Datos aplicados a otros ámbitos como las Ciencias Sociales, Ciencias de la Vida, Medicina, tecnologías emergentes etc. Los cursos que se ofrecen en Coursera ofrecen una semana de acceso gratuito a los contenidos, a modo de prueba, o bien un acceso como oyente a las lecciones y otros contenidos. Los cursos que se ofrecen en edX se pueden cursar de forma gratuita sin derecho a certificación. Es decir, si lo que te interesa es aprender y no tanto sacarte un título, son una opción excelente. Data Analysis in Social Science — Assessing Your Knowledge del Massachusetts Institute of Technology, en edX Image Processing and Analysis for Life Scientists de la École Polytechnique Fédérale de Lausanne, en edX Big Data Emerging Technologies de la Yonsei University, en Coursera Foundations of mining non-structured medical data from EIT Digital en Coursera Information Visualization: Applied Perception programa de la New York University (NYU) en Coursera También está abierta la inscripción para estos dos cursos sobre tecnologías Bitcoin e Internet de las Cosas. Bitcoin and Cryptocurrencies de University of California, Berkeley en edX IoT (Internet of Things) Wireless & Cloud Computing Emerging Technologies de Yonsei University, en Coursera No querenos dejar de mencionar “un clásico”, el curso de Andrew Ng Machine Learning, Standford University en Coursera. Programas completos (online y en inglés) Si estás interesado/a en cursar un programa completo y conseguir una certificación aquí te dejamos algunas algunas de las opciones online más interesantes en inglés. edX Microsoft Professional Program in Data Science En edX podéis encotrar el programa Microsoft Professional Program in Data Science. Se puede hacer el programa completo, que consta de 10 cursos y un proyecto final, y obtener la certificación profesional de Microsoft (con un coste de 1,089$ por el programa completo), o hacer de forma gratuita cualquiera de los cursos (sin certificación). El contenido de este programa es el siguiente: En la primera unidad, “Fundamentals” podéis encontrar un curso de introduccióna al ciencia de datos, otro de análisis y visualización de datos con Excel o PowerBI, otro de Storytelling, y por último, un curso sobre ética y legalidad. En la segunda unidad, “Core Data Science” se aprende sobre los lenguajes de programación (R, o Python), y se hance un repaso a conocimientos matemáticos y estadísticos necesarios para Machine Learning. La tercera unidad, “Applied Data Science”, se mete más en profundidad con los lenguajes de programación R y Python, el desarrollo de soluciones Big Data en Azure Machine Learning, y la implementación de Analíticas predictivas en Azure HDInsight. Y por último, un proyecto para poner a prueba todos los conocimientos adquiridos. Si no estás interesado en hacer el programa completo, o una certificación, puedes hacer los cursos sueltos que te interesen de forma gratuita. Por ejemplo, estos dos cursos sobre Python: Introduction to Python: Absolute Beginner, Microsoft en edX Introduction to Python: Fundamentals, Microsoft en edX edX HarvardX Professional Certificate Program En edX también podéis encontrar el programa Professional Certificate Program in Data Science de HarvardX. Es similar al de Microsoft, en el hecho de que se pueden hacer los cursos sueltos de forma gratuita, pero si se quiere obtener la certificación, tiene un coste de 441,90$. Sin embargo, se diferencia en que no te puedes inscribir en cualquier momento, sino que te tienes que “enganchar” a la edición en curso, o esperar a la siguiente. Consta de 9 unidades que abarcan desde los fundamentos de R, a visualización de datos, probabilidad, inferencia y modelado, herramientas de productividad, tratamiento de datos, regresión lineal, machine learning, y proyecto final. También, como hemos dicho antes,puedes hacer los cursos sueltos que te interesen de forma gratuita. Por ejemplo, recomendamos este: Data Science: Machine Learning, HarvardX en edX Udacity Nanodegrees En Udacity también hay programas interesantes de pago, los Nanodegrees, que se caracterizan por tener un enfoque muy práctico y tienen un coste de 999 USD por unidad. Por ejemplo, el programa Become a Data Scientist, tiene una duración de 7 meses distribuida en dos unidades de 4 y 3. También se puede acceder a algunos cursos interesantes de forma gratuita (no a los que componen las certificaciones, como en los casos anteriores). Algunos ejemplos son: Intro to Data Analysis, Udacity Intro to Machine Learning, Udacity Machine Learning for Trading, de Georgia Tech en Udacity También puedes encontrar programas más enfocados a un aspecto concreto, como puede ser el aprendizaje del lenguaje de Programación que más se usa en Data Science (con permiso de los programadores en R), el Python. Por ejemplo: Introduction to computing in Python del Georgia Institute of Technology en edX, es un programa profesional de 4 cursos que se pueden hacer de forma independiente y gratuita sin certificación. La certificación tiene un coste de 99$ por curso. Como veis, recursos para aprender, no faltan. Esto es sólo una muestra a la que podéis sumar y vuestras recomendaciones personales. ¿Cuándo empiezas tú? En este otro post encontrarás más ideas: AI OF THINGS 5 Cursos de datos gratuitos y en español que empiezan ¡ya! 30 de enero de 2020
25 de octubre de 2018
AI & Data
Traductores automáticos basados en IA: ¿Nos permitirán comunicarnos también con nuestras mascotas?
¿Te gustaría poder hablar con tu perro? El Dr Doolittle era capaz de hablar el lenguaje de los animales, y mucho antes que él, San Antonio y San Francisco ya “ hablaban con los pajarillos”. Hoy día, esta fantasía puede hacerse realidad gracias a la aplicación de técnicas de IA a la traducción de idiomas. De hecho, ya en 2017 el informe de tendencias futuras "Then Next Big Thing" publicado por Amazon, predecía la llegada de “traductores de mascotas” en los próximos 10 años. La carrera de la traducción automática a otros idiomas. Si hace unos años las empresas competían por lanzar el “wearable” perfecto, hoy Microsoft, IBM, y Google pugnan por crear el traductor perfecto, cómo no, basándose en IA. No se puede negar que el más popular es el intérprete de Google, con más de 500 millones de traducciones diarias a más de 100 idiomas distintos (datos de 2017). Pero ¿cómo funciona? Los investigadores de Google, se dieron cuenta rápidamente de que no tenía sentido intentar enseñar al sistema el vocabulario y las reglas gramaticales de todos los idiomas, debido al gran número de excepciones que tiene cada uno de ellos y, las lenguas son algo “vivo”, a su evolución. Por ello, en lugar de plantearse el reto desde un punto de vista lingüístico, decidieron tirar de Estadística. El proceso de “traducción automática estadística” (SMT) consiste en buscar similitudes entre un gran corpus de traducciones realizadas por profesionales de carne y hueso. Este sistema usa ejemplos de textos iguales en lenguas distintas (lo que se conoce como corpus) y estima parámetros de sendos modelos estadísticos que establecen la probabilidad con la que ciertas palabras son susceptibles de traducirse por otras, así como las posiciones más probables que tienden a ocupar las palabras de la lengua destino en función de las palabras correspondientes de la frase origen. Se podría resumir en algo así como: “esta frase en inglés parece que se traduce en esta otra frase al español, pero sólo si está cerca de esta otra palabra” (Peter Novig, Google) Con este sistema es fácil entender que haya errores de traducción, ya que la única forma de aumentar la calidad de la interpretación es alimentar la base de datos con un mayor número de traducciones profesionales adecuadas. También es por éste motivo, por el que “Google Translator” no traduce directamente entre distintas lenguas, sino que traduce primero todo al inglés, y después a la lengua que el usuario desee. No sólo resulta más efectivo en cuanto al uso de recursos, sino que también es mucho más fácil encontrar documentos traducidos del igbo nigeriano y del criollo haitiano al inglés, que traducciones directas entre estos dos idiomas. La traducción estadística fue el paradigma de traducción automática más estudiado desde 2006. A finales de 2016, Google Translator cambió de estrategia y pasó a utilizar un sistema basado en redes neuronales profundas, que permiten reconocer patrones y estructuras en las oraciones. Al dejar de traducir palabra por palabra y poder tener en cuenta el contexto, la calidad de las traducciones mejoró considerablemente. Además, el sistema aprende con el tiempo, con lo que cada día sus traducciones son mejores y más naturales. Otra de las ventajas de esta tecnología es que ya no es necesario estar conectado a internet: funciona en la aplicación móvil de la plataforma. Sin embargo, dado que para entrenar el modelo son necesarias grandes cantidades de textos en un idioma y sus traducciones a otros idiomas, aquellos idiomas para los que el corpus disponible es limitado (por ejemplo, somalí, hawaiano, maorí) fueron protagonistas de una curiosa polémica. Al intentar traducir del maorí al inglés una cadena de palabras sin sentido (la palabra “dog” 19 veces), el traductor ofrecía como resultado una apocalíptica predicción del Día del Juicio Final, para regocijo de los amantes del catastrofismo esotérico. (Lo hemos intentado reproducir, pero ya lo han resuelto, la imagen corresponde a las publicaciones de entonces). Figura 2: Imagen de la respuesta que daba el traductor de Google a cierto texto sin sentido. La cuestión es que el sistema está entrenado para ofrecer siempre una respuesta pretendidamente “natural”, aunque los datos de entrada no tengan sentido. En el caso de lenguas poco representadas en la base de datos de traducción, se suele usar la Biblia, como texto traducido a un gran número de ellas, como fuente de textos de entrenamiento. Así que, para una entrada “absurda”, ofrecía una respuesta tirando los textos que tenía en la base de datos. Podía salir el Apocalipsis, en Cantar de los Cantares, o cualquier otra cosa, pero sin duda el Apocalipsis daba mucho más juego en los titulares. Como hemos dicho al principio, Google no es la única empresa que apuesta fuerte por las tecnologías de traducción. Por ejemplo, el traductor de Microsoft, que también utiliza una tecnología basada en redes neuronales, es capaz de traducir entre 62 idiomas (datos de Agosto 2018), tiene un modo de conversación, y permite traducir textos recibidos a través de la cámara del dispositivo, como por ejemplo, la carta de un restaurante. Por otra parte, fabricantes de dispositivos, como Huawei, también han empezado a incorporar en sus últimos modelos IA capaz de traducir texto desde imágenes. ¿Y si en lugar de idiomas humanos creamos un corpus de lenguaje animal? Eso es precisamente lo que se plantearon Aza Raskin y Britt Selvitelle, ingenieros de software de reconocido prestigio. Su objetivo es crear una especie de “Piedra Rosetta”, que permita comprender el lenguaje de los animales. Para ello, están recopilando un importante corpus de comunicación animal, que incluye sonidos de ballenas, monos e incluso elefantes. En este caso, el desafío, claramente, está en poder traducir de un lenguaje a otro sin conocer el lenguaje ni disponer de ejemplos de traducción entre ambos. Para ello, han analizado 70 lenguas humanas, con el objeto de encontrar un patrón universal que permita traducir de forma automática de una a otra, sin necesidad de comprenderlas. En esta misma línea, el profesor Slobodchikoff, de la Universidad de Arizona del Norte, lleva más de 30 años investigando en comunicación animal, para aplicar este conocimiento al desarrollo de sistemas que utilicen IA para aprender y traducir al lenguaje humano, sonidos y expresiones faciales de los animales. Pero, ¿existe algo parecido a un lenguaje animal? Slobodchikoff investigó en particular el complejo sistema de comunicación de los perritos de las praderas. Se dio cuenta de que era tan sofisticado que podría considerarse un lenguaje. Para ello realizó una serie de experimentos en los que grabó y analizó sus llamadas de alerta. Pronto detectó que usaban sonidos distintos para alertar al resto del grupo, según el peligro potencial detectado fuese un halcón, un perro, un coyote, o un humano. También observó que eran capaces de transmitir información sobre el aspecto y la velocidad a que se movía el posible depredador. En el siguiente vídeo, el profesor nos explica de forma clara y sencilla, pero al mismo tiempo, con rigor científico los distintos experimentos que le llevaron a estas conclusiones. En términos de lenguaje humano, el tipo de depredador puede ser considerado un sustantivo, mientras que las descripciones pueden asimilarse a adjetivos o adverbios. De esa forma, una simple llamada de alerta se puede asimilar a una frase de lenguaje humano. Por ejemplo: “Humano alto y delgado con camiseta azul camina despacio por la colonia” ¿Qué papel juega la IA en todo esto? Para poder crear un “traductor” de lenguaje animal basado en aplicaciones de Inteligencia Artificial es necesario “entrenar” el sistema mediante un gran número de vídeos que reflejen sonidos y muestras de comportamiento del animal (gruñir, mostrar los dientes, mover la cola, echar las orejas hacia atrás… y todo el tipo de sonidos asociados a estos comportamientos). De esta forma, el algoritmo aprende a interpretar esos patrones de comportamiento y sonido, y asociarlos al lenguaje humano. Slobodchikoff se planteó que, si era posible hacerlo con los perritos de las praderas e incluso con otros animales, ¿por qué no con nuestras mascotas? Con esta idea en mente, creó la empresa Zoolingua, dedicada exclusivamente a desarrollar un traductor de sonidos, expresiones faciales y movimientos corporales de perros y gatos. Claro que no es la primera vez que se intenta algo parecido. La empresa No more woof ("no más ladridos) ofrecía un sistema que hacía un electroencefalograma al perro para después "traducir" estas ondas a lenguaje humano, con locuciones y un altavoz. No tuvo mucho éxito. De hecho, acabó formando parte de la exposición de “Peores innovaciones tecnológicas de la historia” del Museo de los Fracasos de Suecia. Hemos hablado de la importancia de disponer de un “corpus” de entrenamiento, pero hemos pasado de puntillas por un detalle importante. ¿Cómo puede traducir el algoritmo lo que significa un ladrido, o un movimiento de cola? Evidentemente, es necesario que esa interpretación la haga un humano. En el caso de Google Translator, contábamos con traducciones de expertos a otros lenguajes. Pero ¿qué humano es experto en “ladridos”? Si tenemos en cuenta nuestra incuestionable tendencia al antropomorfismo el riesgo es evidente. No, aunque a ti te lo parezca, esa expresión de tu perro no significa que se sienta culpable por haber destrozado tus zapatillas favoritas. Simplemente, tiene miedo, porque le estás regañando. Para evitar este problema, Slobodchikoff propone basar esas interpretaciones no en mera adivinación, sino en cuidados experimentos científicos como los mostrados en el vídeo anterior, que permiten descifrar el significado de esos sonidos o comportamientos animales. En el siguiente vídeo de BBC Earth, Slobodchikoff explica qué tipo de analíticas software aplica a los sonogramas registrados en los experimentos y el tipo de conclusiones que se pueden extraer de éstos. Sin embargo, no toda la comunidad científica es igual de optimista respecto a la posibilidad de encontrar el traductor ideal ladrido/maullido—lenguaje humano. La profesora Juliane Kaminski, psicóloga en la Universidad de Portsmouth no considera que los ladridos de un perro pueden considerar como un “lenguaje”. Es cierto que ofrecen señales rudimentarias sobre lo que quieren y lo que sienten. Pero, esas señales pueden ser tan poco claras para un sistema de traducción automático, como lo son para un humano. Además, dependen mucho del contexto. Sin embargo, sí reconoce su utilidad para aquellas personas que carecen de intuición para comprender a un animal, como los niños pequeños que al ver a un perro enseñar los dientes, creen que “está sonriendo”. Conclusión: Es probable que, aunque un “traductor de mascotas” llegue a ser técnicamente posible en pocos años, resulte del todo innecesario para la mayoría de las personas que conviven con un perro, un gato o cualquier otro animal. Comercialmente, le auguramos tan poco éxito como tuvo “No more Woof”. Sin embargo, ya han surgido otros campos para los que una herramienta de este tipo podría resultar muy práctica. En particular, hablamos de poder detectar sufrimiento animal. Investigadores de la Universidad de Cambridge entrenaron un algoritmo de Machine Learning con 480 imágenes de ovejas, etiquetadas según sistema de "muestras faciales de sufrimiento animal "creado por veterinarios. Deformación de fosas nasales, rotación de orejas, párpados cerrados…Entrenaron el algoritmo con el 90% de las imágenes, usaron el 10% restante para probar su precisión, que llegó a igualar el promedio humano (67%). Está claro que una detección previa de muestras de sufrimiento en animales tan poco expresivos como las ovejas (y otro tipo de ganado), permite un diagnóstico y acceso al tratamiento más rápidos y eficaces, con lo que la utilidad de una herramienta de este tipo sí que es evidente. Figura 3: ¿cómo crees que se siente esta oveja?¿está sana?. En los próximos años, comprobaremos si esta predicción del futuro se cumple y qué tipo de consecuencias éticas y económicas sacaremos de ello.
9 de octubre de 2018
AI & Data
Nuestros favoritos de Septiembre: 5 post del sector que no debes perderte
En nuestro primer recopilatorio mensual del otoño hemos seleccionado temas muy variados. Desde sistemas basados en IA capaces predecir qué pacientes en coma tienen mayor probabilidad de "despertar", basándose en indicadores invisibles al ojo humano, a sistemas basados en aprendizaje automático y teoría de juegos para luchar contra la caza furtiva o ayudar en la lucha contra el hambre, pasando por trenes autónomos, recetas para los primero 100 días de un Chief Data Analytics Officer, o un estudio de arte del sector de las tecnologías del lenguaje en España. Esperamos que os interesen tanto como a nosotros. Nuestros favoritos en la red Ya hemos hablado en ocasiones anteriores de coches autónomos. Pero hoy vamos a dar el salto a un medio de transporte público que también usamos a menudo: los trenes. France 24 anuncia que el operador ferroviario francés, SNCF, tiene previsto introducir trenes de largo recorrido autónomos, tanto para viajeros como para mercancías, para el año 2023. Se suma así a otros países como Australia, China y Japón, que ya están experimentando con este tipo de trenes. Aunque en muchas ciudades, como París, ya son habituales los trenes sin conductor en la red de metro, el salto a los trenes de largo recorrido supone un auténtico desafío, ya que se trata de sistemas abiertos en los que pueden ocurrir hechos inesperados. France to introduce driverless trains by 2023 Continuamos con una interesante propuesta de plan de trabajo para los "Primeros 100 días de un Chief Data Analytics Officer". Compartimos plenamente el lema del blog de su autor, Pedro Uría, que dice así: "Artificial Intelligence will not replace CEOs, but CEOs who understand it will replace those who don't" 100 Day Plan for a new Chief Data Analytics Officer Ya sabemos que uno de los campos de aplicación de la IA que más se está desarrollando en los últimos años es el campo de la salud. El mes pasado, la revista eLife publicó un interesante estudio sobre un sistema desarrollado por la Academia China de Ciencias y el PLA General Hospital enBeijing, que permite pronosticar las posibilidades de recuperación de pacientes en estado vegetativo, con un 90 % de precisión. En palabras del autor del estudio, Dr Song Ming, “Our machine can ‘see’ things invisible to human eyes,”. Doctors said the coma patients would never wake. AI said they would - and they did Otra de las áreas que están en pleno auge gracias a la aplicación de tecnologías basadas en Inteligencia Artificial, y en particular, tecnologías de Aprendizaje Profundo o Deep Learning, es el de las Tecnologías del Lenguaje. En el siguiente enlace podéis encontrar un interesante "Estudio de caracterización del sector de las tecnologías del lenguaje en España" realizado dentro del ámbito del Plan de Impulso de las Tecnologías del Lenguaje con financiación de la Secretaría de Estado para la Sociedad de la Información y la Agenda Digital y Red.es, Y dejamos en último lugar, una de esas historias de que nos animan a seguir trabajando día a día y hacer uso de la IA para construir un mundo mejor. La investigadora Fei Fang, profesora en la Universidad Carnegie Mellon (EE. UU.) desarrolló un sistema que combina el aprendizaje automático con la teoría de juegos y que se puede aplicar a campos tan variados la seguridad del transporte marítimo, reducción de la caza furtiva, detección de minería ilegal, identificación de préstamos abusivos, predicción de rendimiento de los cultivos para reducir el hambre, etc. La investigadora que usa la IA para construir un mundo mejor Después de nuestra selección de las noticias más interesantes sobre Machine Learning, Inteligencia Artificial y Big Data que hemos encontrado en la red en Julio, os dejamos el post más popular en nuestro blog este mes. El directivo analítico ¿Es el que más te ha gustado a ti también? No te pierdas ninguno de nuestros post. Suscríbete a LUCA Data Speaks. También puedes seguirnos en Twitter, YouTube y LinkedIn
2 de octubre de 2018
AI & Data
Inteligencia Artificial: una tecnología “muy humana”
¿Qué nos hace humanos? No resulta fácil definir qué es lo que nos hace humanos. Podemos intentar abordar la cuestión desde un punto de vista estrictamente científico, enfocarlo desde el campo de la Filosofía, o bien elegir alguna otra estrategia intermedia. Todas ellas nos llevarán a plantearnos cuestiones como estas: ¿es el lenguaje lo que nos hace humanos?, ¿nuestra dimensión espiritual?, ¿capacidad creativa?, ¿habilidades cognitivas? ¿sociales? Lo que está claro es que los humanos somos seres sociales, con todo lo que esto implica en cuanto a lenguaje, colaboración, transmisión de cultura/conocimiento, empatía etc; y tenemos un cerebro que, gracias a su extraordinaria plasticidad, nos ha permitido extender nuestras capacidades cognitivas mucho más allá de nuestras neuronas y desarrollar una cultura y una tecnología gracias a las cuales hemos conseguido adaptarnos para sobrevivir a todo tipo de cambios en nuestro entorno, hasta el punto de llegar a ser incluso capaces de modificarlo. ¡Quien les iba a decir a aquellos homo Sapiens que hace 300.000 años años luchaban por sobrevivir en la sabana africana que llegarían a ser capaces de poblar prácticamente todo el planeta, desplazarse rápidamente por tierra, mar y aire; multiplicar su esperanza de vida; crear prótesis artificiales para sustituir órganos; enviar misiones a la luna o a otros planetas, o crear sistemas basados en inteligencia artificial que nos convierten en algo así como “superhumanos”. ¿Superhumanos? Tiene gracia hablar de “Superhumanos”, porque lo cierto es que desde un punto de vista biológico no somos ninguna maravilla. No somos especialmente fuertes, ni especialmente rápidos, no tenemos “vista de águila”, ni somos especialmente resistentes… Sin embargo, nuestra inteligencia, y nuestras habilidades sociales nos han permitido desarrollar tecnologías para eliminar barreras, para superar nuestras limitaciones biológicas. Así comenzamos domesticando animales que nos permitían ser “más fuertes y resistentes”, desplazarnos más rápido, “ser más veloces”; después fuimos capaces incluso de “volar” con vehículos creados por nosotros mismos, de crear máquinas que nos permitían producir más alimentos, máquinas capaces de trabajar en condiciones que loshumanos no seríamos capaces de resistir… Una vez superadas las limitaciones físicas, hemos dado un paso más allá. Las tecnologías actuales, nos han permitido conectar nuestro ámbito físico con el espacio digital a través de Internet (sí, Internet de las Cosas), y ofrecernos una versión mejorada de nuestros órganos sensoriales por medio de un gran número de sofisticados, ubicuos y hoy día ya asequibles dispositivos que nos ofrecen una valiosa información sobre nuestro entorno. Por último, y tras las barreras físicas y sensoriales, ¿Por qué no las cognitivas? Para superar estas últimas, han sido necesarios avances en distintos frentes. Por una parte, la más tangible, el desarrollo del transistor, los circuitos integrados y dispositivos de almacenamiento de datos, nos han permitido disponer hardware necesario, a un coste asequible. El abaratamiento y disponibilidad del hardware adecuado ha permitido el desarrollo de las tecnologías Big Data, como Hadoop, que permiten capturar, almacenar y procesar de forma eficiente grandes volúmenes de información. Y son estas tecnologías las que han hecho posible la actual “Edad de Oro” de la Inteligencia Artificial, que no es algo nuevo (en realidad surgió en los años 50 del siglo pasado), pero ha experimento un desarrollo espectacular en los últimos años gracias, entre otros aceleradores, a estas últimas. La idea fundamental en que se basa la Inteligencia Artificial es en conseguir que una computadora resuelva un problema complejo como lo haría un humano. Así, al igual que ya en el Neolítico los humanos empezaron a domesticar animales y aprendieron sacar partido de su fortaleza y su resistencia para cultivar sus campos de forma más eficiente, hoy día usamos la Inteligencia Artificial en tantos campos de la actividad humana, que a veces ni siquiera somos conscientes de ello. Porque es fácil identificarla en los robots que se usan en la industria pesada, o en los coches autónomos, pero la IA también se usa para diagnosticar enfermedades, para organizar las rotaciones de personal o las asignaciones de camas en un hospital, para tomar decisiones y realizar operaciones bursátiles a gran velocidad, para dar soporte a los usuarios a través de asistentes virtuales, para optimizar la ayuda de emergencia que llega a las poblaciones desplazadas por catástrofes naturales, para descubrir exoplanetas, para controlar epidemias, para mejorar el rendimiento deportivo, para detectar tendencias y “sentimiento” en redes sociales, ofrecer ofertas personalizadas, precios dinámicos, realizar mantenimientos preventivos de todo tipo, optimizar consumos, traducir de forma automática a cualquier idioma… La lista es interminable, pero lo importante es las tecnologías basadas en Inteligencia Artificial nos permiten realizar prácticamente cualquier tarea de forma mucho más eficiente a como lo haríamos con nuestros (limitadas) capacidades humanas. Es algo así como si la Inteligencia Artificial nos diera superpoderes. Superar nuestras limitaciones biológicas y cognitivas ¿ Superpoderes? A casi todo el mundo le gustan los superhéroes, personajes de ficción capaces de superar a los héroes clásicos gracias a sus poderes sobrehumanos. Muchos de ellos surgieron a finales de los años 1930 en la industria del comic estadounidense, y fueron posteriormente adaptados a otros medios, especialmente el cine. El personaje de Superman, creado por el escritor estadounidense Jerry Siegel y el artista canadiense Joe Shuster en 1933 fue uno de los primeros. Recordemos un poco su historia para situarnos. Superman nació en el planeta Krypton. Poco antes de la destrucción de su planeta, cuando aún era un niño, sus padres lo enviaron en una nave espacial a la Tierra para salvarle. Allí lo encontraron los Kent, una pareja de granjeros de Smallville, en Kansas, y lo criaron con el nombre de Clark Kent, transmitiéndole un estricto código moral. Pronto, el joven Kent empieza a descubrir sus habilidades superhumanas, esos superpoderes, que al llegar a su madurez decidiría usar en beneficio de la humanidad. ¿Y cuáles son los superpoderes de Superman? Aunque fueron cambiando con los años, los que más o menos todos recordamos son su gran velocidad (“más rápido que una bala”), su superfuerza (“más poderoso que una locomotora”), su supervisión (“Rayos X, infrarrojos…”), y sobre todo, su capacidad de volar. La imagen de Superman sobrevolando la ciudad con su capa roja ondeando al viento, forma ya parte del imaginario colectivo de los que vieron la película a finales de los 70. Figura 2: Comic de Superman. ¿Por qué nos gustan los superhéroes? Lo que más nos gusta son, precisamente, sus superpoderes, su capacidad para hacer cosas inaccesibles al resto de los mortales. También, por supuesto, el aura mítica que les otorga su vocación por “hacer el bien”, trabajar por el bien de la humanidad. Y si lo pensamos bien, eso es precisamente lo que nos permite hacer la Inteligencia Artificial. Nos permite superar nuestras limitaciones humanas, y, sí, nos otorga “superpoderes”. Por nuestra parte, si tenemos un elevado sentido ético como Superman, elegiremos usarlos para hacer el bien. Pero también podríamos, por el contrario, usarlos exclusivamente en nuestro propio beneficio, aun a costa de perjudicar a los demás y sumarnos a la larga lista de “Supervillanos”. Por ello, es tan importante definir un código ético y un marco regulatorio para el uso de la IA. La IA nos da “superpoderes”, nos convierte en Superhéroes Así, gracias a la IA, podemos, como Superman, “ser más rápidos que una bala” (¡mucho más!) haciendo cálculos, atendiendo a nuestros clientes a cualquier hora con un bot, o analizando un enorme volumen de datos para detectar, por ejemplo, anomalías. También podemos presumir de “supervisión” y procesar a gran velocidad un gran número de imágenes para identificar un rostro, o identificar en una prueba médica un posible tumor. Y volar… es también una experiencia que puede ser mejorada gracias a la IA. Desde el uso de pilotos automáticos que toman todo tipo de datos del vuelo para optimizar los parámetros, hasta sistemas que optimicen los cálculos de trayectorias en espacios aéreos muy saturados, previsiones de consumo de combustible, modelos predicción de condiciones meteorológicas adversas etc ¿Qué no puede hacer la IA? Los superpoderes, sin el superhéroe que decida en cada momento qué hacer, cuál y cómo utilizarlo, no tienen sentido. En realidad, no dejan de ser herramientas que los humanos hechos creado para hacernos la vida más fácil. Puede que sean tan sofisticadas y potentes que a veces olvidemos que, en el fondo, sin una inteligencia humana que decida con qué objetivo las quiere utilizar, que conozca sus limitaciones (que también las tienen), que sea capaz de ver si tiene sentido un resultado, no tienen sentido. Así, una aplicación basada en IA puede realizar una traducción de un texto a otro idioma, pero no puede comprenderlo. No puede leer entre líneas. Puede calcular el número de veces que aparecen determinadas palabras que considere positivas o negativas y así asignarle un “sentimiento”, pero no puede comprender el sentido profundo de las palabras, o las emociones reales que encierren. Otro ejemplo. Una de las técnicas de Deep Learning más utilizadas para el reconocimiento de imágenes (visión por ordenador) son las redes neuronales convolucionales CNNs. Estos sistemas clasifican los objetos que aparecen en una imagen basándose en la detección de patrones que coincidan con los aprendidos en un proceso de entrenamiento previo con un gran número de imágenes etiquetadas. Hasta aquí, muy bien. Los algoritmos de esta IA buscarán el patrón que mejor encaje con la imagen en cuestión y ofrecerá un resultado. Pero esta IA no es capaz de darse cuenta si el resultado que ofrece tiene sentido o no. Cualquier humano detectaría de forma inmediata elconocido error de Google, que etiquetó una imagen de una pareja afroamericana como “gorilas”. La IA dio su mejor resultado, según los aprendido a partir de sus datos de entrenamiento. Pero es aquí donde entran en juego las “limitaciones” de la IA que hemos mencionado anteriormente. ¿Son adecuados esos datos o existe algún sesgo? En este ejemplo, existía un claro sesgo racial. Al no disponer de suficientes imágenes de personas de raza negra en los datos de entrenamiento, el algoritmo no era capaz de dar un resultado adecuado. Conclusión: Como conclusión, la Inteligencia Artificial es una de las herramientas más poderosas que ha creado el ser humano, porque se puede aplicar a casi cualquier campo de la actividad humana. Como otros avances anteriores de la Ciencia y Tecnología humanas, nos permite ir más allá de los límites de nuestra biología, y por ello, nos convierte, por qué no, un poco en Superhéroes. Pero la Inteligencia Artificial es una herramienta creada por el hombre y para el hombre. Sin una inteligencia humana que defina su objetivo, elija cuál es el “superpoder” más adecuado para cada situación, conozca sus limitaciones, defina las condiciones de contorno, descarte los resultados “exactos” pero absurdos… no tiene ningún sentido. Y, por otra parte, hay una parte de la naturaleza humana que nunca podrá ser “optimizada” por la IA. En nuestra dimensión social, la parte emocional, la empatía, la creatividad… Un robot “de compañía” te puede recordar que te tomes la medicación, pero no te puede transmitir nada con una caricia, no puede regalarte una sonrisa, ni tener esa idea loca y original que resuelva el problema o al menos desate una carcajada. No te pierdas ninguno de nuestros post. Suscríbete a LUCA Data Speaks. Para mantenerte al día con LUCA visita nuestra página web, y no olvides seguirnos en Twitter, LinkedIn y YouTube.
6 de septiembre de 2018
AI & Data
Nuestros favoritos de Agosto: 5 post del sector que no debes perderte
En nuestro recopilatorio mensual del verano, tras unas seguro que merecidas vacaciones, volvemos con energías renovadas para seguir avanzando en nuestro conocimiento sobre las últimas tecnologías basadas en Inteligencia Artificial y sus aplicaciones al la vida real. En esta ocasión, hablamos de cómo muchas veces, primero viene la innovación, y luego, la regulación. Hablamos de las últimas novedades sobre computación evolutiva, una rama de IA casi desconocida frente a las tecnologías basadas en Deep Learning, pero que puede depararnos interesantes sorpresas, y os planteamos una pregunta polémica ¿Deberían prohibirse las tecnologías basadas en reconocimiento facial?. También os proponemos una lectura interesante, sobre aplicaciones del Blockchain al mundo educativo. ¿Interesante, verdad? Nuestros favoritos en la red Empezamos hablando de ciudades inteligentes. La economía digital no para de crecer especialmente, en zonas urbanas. Millones de personas usan a diario aplicaciones que les facilitan todo tipo de tareas de la vida cotidiana, pero a su vez van dejando un rastro de datos sobre hábitos de consumo, de movilidad, de ocio, o incluso de opinión. Cuanto más "inteligente" es la ciudad, mayor es la preocupación de sus habitantes sobre cuestiones relacionadas con privacidad y el uso justo de sus datos. ¿Cómo pueden responder las autoridades locales a este desafía? En este artículo de Citymetric, se analizan las estrategias pioneras en este sentido, cuyo objetivo es sacar el mayor partido posible a los beneficios de la economía digital, salvaguardando al mismo tiempo los derechos de las personas, y el control sobre sus datos personales. Data by the people, for the people: why it’s time for councils to reclaim the smart city ¿Deberían prohibirse las tecnologías de reconocimiento facial? Esta afirmación puede resultar muy drástica, pero, al igual que en otro de nuestros Top5 de Mayo hablamos de del "cuestionable" sistema de "social scoring" planteado por el gobierno chino, este artículo de Medium plantea las serias dificultades a las que se enfrenta cualquier intento de regulación, frente a los riesgos que supone un mal uso de estas tecnologías. ¿Demasiado alarmismo? La polémica está servida. Y tú, ¿qué opinas? Facial Recognition Is the Perfect Tool for Oppression Nuestro tercer favorito, enlaza de alguna manera con el primero. Cuando pensamos en los riesgos que corremos en el mundo digital, muchas veces no somos conscientes de la relevancia que pueden tener sencillas acciones de "higiene digital" a la hora de prevenir ciberataques. ¿Están "limpios" tus datos? To Avoid Cyberattacks, You Must Clean Your Data. Here’s Why. Si quieres aprovechar estos últimos días de Agosto para leer, os hacemos una propuesta. Se trata, posiblemente, del prime r libro, publicado en español sobre las aplicaciones de la tecnología Blockchain en educación. Fue publicado en pasado mes de Junio por la Universidad de Barcelona, y podéis descargarlo de forma gratuita en el siguiente enlace. Blockchain en educación: cadenas, rompiendo moldes ¿Conoces la computación evolutiva?. Se trata de una rama de la Inteligencia Artificial que hasta fechas recientes ha sido "eclipsada" por el enorme éxito de las técnicas de aprendizaje profundo o deep learning. Sin embargo, un trabajo publicado recientemente por Dennis, Wilson, investigador de la Universidad de Toulouse, muestra que este tipo de computación puede igualar el rendimiento de los sistemas basados en deep learning. Si quieres saber en qué se basa esta técnica, no te pierdas este artículo del MIT Technology Review en español. La IA que evoluciona y muta podría desbancar al aprendizaje profundo Después de nuestra selección de las noticias más interesantes sobre Machine Learning, Inteligencia Artificial y Big Data que hemos encontrado en la red en Julio, os dejamos el post más popular en nuestro blog este mes. ¿Qué son las estrategias de "Dynamic Pricing"? ¿Es el que más te ha gustado a ti también? No te pierdas ninguno de nuestros post. Suscríbete a LUCA Data Speaks. También puedes seguirnos en Twitter, YouTube y LinkedIn
3 de septiembre de 2018
AI & Data
¿Qué son las estrategias de "Dynamic Pricing"?
Las estrategias de "Dynamic Pricing" son mecanismos que van variando los precios en función de la oferta y la demanda. Su objetivo es mejorar la rentabilidad mediante cambios rápidos en los precios basados en los cambios en la oferta y la demanda. American Airlines fue pionera en usar esta estrategia allá por los años 80. En los últimos años, se han sumado más aerolíneas, hoteles, empresas de eventos y sobre todo, los gigantes de la distribución como Amazon. Al principio, su función era más bien, la gestión de un inventario tradicional, r astreando precios de los competidores en el mercado y según la estrategia definida por la empresa (“ Soy el más barato ”, “ Soy el más caro ”, o " Según marque mi competencia " ), se fijaban los precios. En la actualidad, el desarrollo de tecnologías Machine Learning e IA, unido a la mayor disponibilidad de datos, permiten hacer ofertas que se ajusten al comportamiento y preferencias del cliente, a las previsiones de inventario y beneficios de la empresa y otros factores externos que también puedan influir. De esta forma, las empresas aplican analíticas avanzadas de Machine Learning a conjuntos de datos muy diversos y complejos; los combinan con modelos de precios muy sofisticados y de esta forma determinan el precio más adecuado para miles de productos. En el caso de las líneas aéreas, los costes fijos son altos, y los márgenes cada vez más pequeños. Las estrategias de precios deben combinar eventos impredecibles (climatología, bajas, averías etc), con otros que sí son conocidos, como la demanda estacional, la lealtad de los clientes, o la disponibilidad de rutas. Por ello, la obtención de Insights en tiempo real a partir de los datos, es la clave para una estrategia de precios inteligente. Según Garnter: La mejora de la experiencia del cliente a partir de interacciones contextualizadas en tiempo real basadas en IA y ML son prioritarias para los CEOs (...) el ecommerce también se beneficiará de la IA y el ML para predecir las necesidades de los clientes y ofrecer de forma proactiva los mejores productos y servicios. La capacidad de procesar, monitorizar y analizar información en tiempo real para que los consumidores reciban ofertas altamente personalizadas y contextualizadas es un imperativo comercial, que la IA y el ML han hecho posible. Pero… si no quieres que te suba el precio cuando estás preparando un viaje y mirando vuelos….borra las cookies y ¡¡¡¡Navega en modo oculto!!! Si eres más de Twitter, no dejes de ver este vídeo y los detalles de nuestro hilo sobre el tema: ¿Con dudas acerca del #dynamicpricing? ✈️Descubre cómo el 'Big Data', la 'Inteligencia Artificial' y el 'Machine Learning' condicionan el valor de los vuelos pic.twitter.com/0MZNc7SIT0 — Telefónica (@Telefonica) August 3, 2018 También puedes seguirnos en Twitter, YouTube y LinkedIn
16 de agosto de 2018
AI & Data
Inteligencia Artificial y las compras online: sistemas de recomendación (II)
En nuestro primer post sobre sistemas de recomendación: ¿Qué tiene que ver una careta de Darth Vader con la Nancy Comunión?: Sistemas de Recomendación (1), ya hablamos de lo que son los sistemas de recomendación o "recommenders", y de cómo, mientras algunos buscan similitudes entre los clientes, otros las buscan en los contenidos o en una mezcla de ambas cosas. También vimos cómo la elección del algoritmo en cada caso, se basa en la información que tengamos sobre nuestros clientes, nuestros productos, o de las opiniones de los primeros sobre los segundos que podamos recabar. En este post, hablaremos de las distintas estrategias seguidas por los sistemas de recomendación en los que se basan las estrategias de comercio online. Hoy vamos a hablar de los distintos tipos de sistemas de recomendación que podemos encontrar. En concreto, son 5 que, de los más sencillos a los más complejos son: Artículos más populares Modelos de asociación y análisis de afinidad Filtrado de contenido Filtrado colaborativo Modelos híbridos 1. Empecemos por la estrategia más simple: Artículos más populares. Consiste en ofrecer a los clientes aquellos los artículos “superventas”, los que sean: libros, películas, prendas de ropa… etc. No hay mucha ciencia de datos que valga. Tan sólo tomar los datos de los informes de ventas. Tampoco es que sea muy personalizado, pero cuando sabes poco de tus clientes, puede funcionar. Home Depot y GAP lo suelen usar con frases gancho como “Novedades”, o “Próximamente en tiendas”. Es importante que los productos ofrecidos, al menos, pertenezcan a la misma categoría que los que ha visto recientemente el cliente. Se puede usar en combinación con otras estrategias. Otro ejemplo de Amazon, para variar: Figura 1: Ejemplo de recomendación basada en los productos más vendidos de la categoría. 2. La segunda estrategia, modelos de asociación o análisis de afinidad. Esta estrategia se conoce popularmente por su nombre en inglés “ market basket analysis”. Se basa casi exclusivamente en los productos adquiridos en cada transacción. Ambas técnicas se basa en análisis estadísticos que buscan qué elementos o servicios suelen ser adquiridos de forma conjunta. Cuando los clientes adquieren los productos o servicios de uno en uno, se llama asociación. En este caso, como es natural, el foco no puede estar en los productos, sino centramos en el histórico de compras del cliente. Los algoritmos matemáticos en que se basan estas técnicas crean parejas de productos que tienen una fuerte relación de afinidad y crean ofertas personalizadas para los clientes que han adquirido uno de estos productos, pero no el otro. Es una técnica fácil y rápida que funciona bien aun con bases de datos de clientes pequeñas o dispersas y suele ser la estrategia más rentable para hacer ofertas personalizadas. Son el clásico ejemplo de “Los clientes que compraron este producto también compraron este otro” o “Productos que se suelen comprar juntos”. Figura 2: Ejemplo de recomendación basada en productos que suelen adquirirse de forma conjunta. Como se utiliza muy poca información del cliente, resulta difícil acertar cuando el catálogo es muy amplio. Sin embargo, se puede filtrar basándose en el historial de navegación del cliente. Figura 3: Ejemplo de recomendación basada en productos que suelen adquirirse de forma conjunta.y el historial de navegación /compras del cliente. 3. Filtrado de contenido. El filtrado de contenido hizo furor hace 10 años, pero se sigue usando mucho en la actualidad. Consiste en buscar similitudes entre los artículos que un cliente ha consultado o adquirido en el pasado, para ofrecerle ofertas personalizadas basadas en sus preferencias. El histórico de compras de un cliente se traduce en una serie de atributos de los artículos que se expresan de forma conjunta por medio de un vector. Cada componente del vector tiene un coeficiente o peso que puede ser “aprendido” o “asignado” para darle mayor o menor valor a determinado atributo. Estos coeficientes o pesos se comparan con los correspondientes a distintos productos que pueden ser recomendados. Para hacer estos cálculos se pueden usar distintas técnicas: clasificadores Bayesianos, técnicas de clustering o segmentación, árboles de decisión o incluso redes neuronales artificiales. Para ello es necesario tener un número importante de características que se pueden usar en la clasificación. Algunos pueden ser fáciles de adquirir, pero otros, no tanto. Por ejemplo, cuando los inventarios cambian con mucha rapidez, o son demasiado grandes (como en ventas de música, películas etc) puede ser muy difícil o costoso. Aun así, webs de recomendación de películas como Rotten Tomatoes, se basan en esta estrategia. Sin embargo, si el clasificador no tiene más información que el valor binario: comprado/no comprado, la recomendación que pueda hacernos no será muy fiable. ¿Cómo resolver este problema? Según el entorno, se pueden usar algunas de estas estrategias. Por ejemplo, pedirle al usuario: Que nos indique si la recomendación le ha interesado o no Que nos indique su nivel de satisfacción con el artículo adquirido Que nos informe sobre sus preferencias, para poder ofrecerle recomendaciones más ajustadas a su perfil Que nos facilite información demográfica o de segmentación que ayude a mejorar el perfil de usuario. Con este fin, en Rotten Tomatoes crearon el “Tomatómetro” con el que asignan un score o “nota” a las películas, basado en opiniones de críticos profesionales, y de los propios usuarios. Figura 4: Tomatómetro basado en opiniones de usuarios y críticos profesionales. 4. El filtrado colaborativo. En este caso el foco está en el usuario y en aquellos otros que el algoritmo considera “similares”. En principio no es preciso definir atributos específicos que puedan ser inferidos por el algoritmo, pero si los tenemos, funcionará mucho mejor. La premisa de partida es: Si dos clientes muestran una gran similitud en sus “Me gusta” o “No me gusta” pasados, asumimos que mantendrán esa tendencia en el futuro. Figura 5: Like o "Me gusta". Por ejemplo, el algoritmo asociará personas a las que les gustan las películas de terror con películas que tengan contenidos “terroríficos”, sin necesidad de definir el género “terror”. Así, a estas personas, les recomendará productos basados en esta asociación. Películas de terror, libros de Stephen King, camisetas de “Pesadilla en Elm Street”…, muñecos Chuky… Para que funcione esta técnica, necesitamos una calificación post-selección, un indicador de me gusta/no me gusta y/o un perfilado previo del usuario. Con esta información, intentará predecir qué “nota” le daría el usuario a un producto que no ha visto con anterioridad. La precisión de la predicción se puede medir después comparándola con la calificación que haya dado el usuario una vez adquirido el producto. Los sistemas de filtrado colaborativo se basan en vectores de características. Los más sencillos, se basan en las características del usuario (productos por los que ha mostrado interés, volumen, frecuencia o tipo de compras previas etc). Los sistemas más complejos añaden vectores de características de los productos (autor, género, duración etc). Los algoritmos calculan similitudes entre estos vectores para así identificar productos o clientes “similares”. De esta forma, las recomendaciones se basan en lo que han elegido clientes “ similares”, o en productos “similares” a otros que ha adquirido o captado el interés de ese cliente. ¿Y en qué tipos de datos se basan los sistemas de filtrado colaborativo? Por un lado, en atributos del usuario como: El nivel de satisfacción con el producto (1 a 5), o si ha marcado "Me gusta/No me gusta" Observar qué términos de búsqueda ha utilizado para localizar determinado producto Crear un perfil "Me gusta/No me gusta" por género, autor u otros factores Ofrecer dos alternativas y preguntar al usuario cuál prefiere También se pueden analizar datos relativos a su comportamiento online como: ¿Qué artículos ha estado mirando el usuario y cuánto tiempo? ¿Qué artículos ha comprado? Si tenemos su permiso para analizarlas, ¿Qué listas de reproducción ha escuchado o visto el usuario? ¿Qué "Me gusta/No me gusta" de este usuario se pueden encontrar en otras fuentes externas (redes sociales)? Los sistemas de filtrado colaborativo necesitan analizar grandes volúmenes de datos. Como las recomendaciones se basan en valoraciones previas (rating), no pueden recomendar productos nuevos. Suelen recomendar productos populares, por tanto, no suelen funcionar bien con clientes con gustos más exclusivos. 5. Los sistemas híbridos. Hay dos enfoques posibles: Los sistemas basados en conocimiento o “fuerza bruta”, en los que los Jefes de producto directamente definen qué productos deben ofrecerse juntos o como complemento unos de otros. Los sistemas basados en filtrado de contenido o filtrado colaborativo, como hace Netflix, que ofrece recomendaciones basadas en los hábitos de compra de usuarios similares (filtrado colaborativo), o en artículos con valoraciones de los usuarios muy altas y atributos similares de contenido (filtrado de contenido) La elección del sistema de recomendación más adecuado también dependerá del momento de la experiencia de usuario en que se encuentra el cliente. ¿No ha encontrado lo que busca y quiero ofrecerle una alternativa? ¿ha adquirido un producto y quiero ofrecerle otros productos complementarios? ¿o quiero inspirarle para comprar algo totalmente diferente? ¿Has averiguado ya qué sistema de recomendación necesitas? La respuesta, probablemente, sea un sistema híbrido, en el que tendrás que decidir qué componentes incluir y cómo configurarlos, pero, como ves, merece la pena investigarlo. Esperamos que este post os haya ayudado a entender de qué forma los sistemas de recomendación te pueden ayudar a incrementar, y mucho, las ventas de tu comercio online.Y si eres más de "hilos", aquí te dejamos el enlace para leerlo en Twitter. Adivina adivinanza... ¿Sabes cómo utilizan las tiendas online la inteligencia artificial? En este hilo averiguarás cómo funcionan sistemas de recomendación capaces de aumentar hasta un 25% las ventas 🚀📈 👇 — LUCA (@LUCA_D3) June 15, 2018 https://platform.twitter.com/widgets.js'%20defer%20onload='' defer onload=' También puedes seguirnos en Twitter, YouTube y LinkedIn
14 de agosto de 2018
AI & Data
¿Qué tiene que ver una careta de Darth Vader con la Nancy Comunión?: Sistemas de Recomendación (1)
En este post vamos a hablar de una de las aplicaciones de la Inteligencia Artificial con las que más a menudo interactuamos sin ser realmente conscientes de ello: los Sistemas de Recomendación. Basándonos en una experiencia real, una pequeña compra que tuvimos que hacer en LUCA, aprovechamos para contaros, con un poco de humor, en qué consisten y cómo funcionan. ¿Os gustó el gif que hicimos para el Día Del Orgullo Friki? Pues también tiene su historia relacionada con la IA. (por si os lo perdisteis, aquí os lo dejamos), y de paso, os contamos lo que pasó. Queríamos hacer un vídeo gracioso, y necesitábamos attrezo. Como siempre, andábamos con poco tiempo y muchas prisas. Así que tiramos de Amazon. Buscamos: “Caretas guerra de las galaxias” fue la frase clave. Obtuvimos esta opción y, como nos pareció bien, “añadimos a la cesta”. Figura 1: Caretas de Star Wars. Con estas caretas fue mucho más fácil liar a los compañeros para que participaran en nuestra pequeña broma. Más que “ojos que no ven…” era “si mi cara no se ve…”. Pero aparte de conseguir extras, conseguimos algo más: sugerencias de compra. Por un lado, el famoso “Comprados juntos habitualmente”. Figura 2: Productos mostrados bajo "Comprados juntos habitualmente". Y otro "clásico", “ Los clientes que compraron juntos también compraron…” Figura 3: Productos mostrados bajo "Los clientes que compraron este producto también compraron...". Pero también nos salió algo que nos un poco "descolocados"...Por algún extraño motivo que no llegamos a entender, también nos apareció la colección de “Nancys de Comunión” Pero ¿qué tendrá que ver una Nancy comunión con el malvado más afónico de la galaxia? Absolutamente nada. Era simplemente un anuncio. Pero lo otro, a lo que ya muchos estamos acostumbrados, es un ejemplo perfecto de una de las aplicaciones de la Inteligencia Artificial que nos son más cercanas aunque muchas veces no seamos conscientes de que ello. Efectivamente, se trata de un sistema de recomendación. Es una de las herramientas analíticas más potentes para el ecommerce. De hecho, se estima que los sistemas de recomendación en plataformas como Amazon o Netflix pueden un incremento en las ventas del 10 al 25%. Luego interesan, claro que interesan. Los sistemas de recomendación son una de las especialidades de analítica predictiva que más han evolucionado en los últimos años. Os vamos a contar lo que son, cuál es el mejor para tu caso, qué algoritmos hay detrás, cómo puedo optimizarlos y si es posible usar diferentes sistemas de forma simultánea. ¿Qué es un sistema de recomendación o "recommender"? Son aplicaciones que personalizan la experiencia de compra de un cliente recomendándo determinados productos, según los que haya comprado o simplemente consultado Pero para poder hacer una recomendación hay que tener en cuenta diferentes situaciones. Puede ser que el cliente no haya encontrado lo que busca. ¿Podemos ofrecerle alguna alternativa? El cliente sabe lo que quiere, y lo compra. ¿Le podemos ofrecer algún producto complementario que mejore su experiencia de compra y de paso nuestros ingresos? El cliente está mirando determinados productos que no ha comprado antes. ¿qué productos es más probable que compre? ¿En qué orden debemos recomendar distintos productos para que funcione mejor? Los escenarios de uso de estos sistemas son muy muy distintos. Puede tratarse de libros, música, electrónica, moda…Cada escenario tiene diferentes características. Inventarios cambiantes o estables, con muchas o con pocas categorías, y otro tanto respecto a los atributos. Por ejemplo, una tienda online de electrónica se caracteriza por tener inventarios grandes y estables, muchas subcategorías, y muchos productos complementarios. Sin embargo, en un tienda de ropa, los inventarios son también grandes pero cambian rápidamente. No hacen falta muchos atributos, pero sí sub-atributos como tamaño y color etc. Los sistemas de recomendación permiten maximizar las ventas en estos entornos, pero también se emplean para retener a los clientes en nuestra web y que así vean más anuncios... ¡Como el de la Nancy comunión! ¿Y son iguales todos los sistemas de recomendación? Claro que no. Todos ellos deben dar una respuesta personalizada en unos 50 milisegundos, pero lo harán de distinta forma. Usan distintos algoritmos, pueden hacer más o menos cosas según lo que sepamos previamente de los clientes, o si se puede recabar opiniones sobre los productos mediante algún tipo de encuesta. Algunos ponen el foco en las similitudes entre clientes, otros, en similitudes entre productos o una mezcla de ambas Como este post ya se nos ha hecho muy largo, dejamos para el siguiente el análisis de los distintos tipos de sistemas de recomendación, sus ventajas e inconvenientes. Y por si eres más de Twitter, aquí puedes encontrar el hilo que publicamos sobre este tema. No te pierdas el siguiente post de esta miniserie: AI OF THINGS Inteligencia Artificial y las compras online: Sistemas de Recomendacion (2) 13 de agosto de 2018
7 de agosto de 2018
AI & Data
Nuestros favoritos de Julio: 5 post del sector que no puedes perderte
En esta edición de nuestro recopilatorio mensual, como lo que apetece es viajar, volamos a distintos rincones del mundo para encontrar nuestros 5 top post del mes. Empezamos con una competición de bots en Minneapolis, volamos luego a Bratislava con la Agencia Tributaria a recoger un premio por uno de sus proyectos de transformación digital; nos pasamos por Suecia para enterarnos de qué es eso de los chips intradérmicos para humanos; y acabamos en China, que apuesta firmemente por la digitalización de su sistema de salud. También como siempre, acabamos con post de nuestro blog más leído en el mes de Julio: ¿Cómo crear un bot de forma sencilla?. Probamos con nuestra Datapedia. Nuestros favoritos en la red Este mes, necesitamos noticias refrescantes. Así que vamos a empezar con una curiosa competición de asistentes virtuales realizada por Loup Ventures . ¿Qué asistente virtual es más "listo"? Alexa, Cortana, Siri o el asistente de Google. Si quieres averiguar qué asistente salió mejor parado y qué conclusiones se sacaron de este pequeño experimento, no te pierdas el post publicado en Business Insider España: Google Assistant tops Apple's Siri and Amazon's Alexa in a head-to-head intelligence test - Business Insider Y hablando de asistentes virtuales, y de su gran penetración en nuestra vida diaria, siempre solemos hablar de temas cotidianos como encontrar la mejor ruta de llegar a un destino concreto, recibir asistencia para cualquier tipo de compra online, o consultar cualquier tipo de duda que nos pueda surgir. Sin embargo, el avance de los asistentes basados en IA en el ámbito público también es imparable, facilitando en gran medida los servicios que ofrecen a los ciudadanos. Un ejemplo concreto es el Asistente Virtual de IVA, una de las tres herramientas de asistencia digital por la cual la Agencia Estatal de Administración Tributaria Española ha sido premiada en la 22 Asamblea General de la IOTA (Organización Intra-Europea de Administraciones Tributarias) por presentar el mejor proyecto de tranformación digital. Premio a la Agencia Tributaria en la 22ª Asamblea General de la IOTA por sus herramientas de asistencia digital en el ámbito del IVA Seguimos con otra noticia curiosa sobre Suecia, donde 3500 ciudadanos tienen un chip implantado bajo su piel. El artículo nos explica cómo estos implantes pueden ser utilizados para identificarse, pasar de forma más cómoda controles de seguridad, e incluso realizar compras. De hecho, la "Renfe" sueca permite pagar con ellos los billetes de tren. También nos explica por qué los suecos tienen esa actitud tan abierta hacia el mundo digital, tanto a la hora de compartir datos personales, como hasta llegar al extremo de introducir esos implantes en su propio cuerpo. Suecia, nación transhumanista: 3.500 ciudadanos tienen ya un chip bajo su piel Viajamos ahora con Reuters a China. El gigante asiático está inmerso en un ambicioso proyecto de digitalización de su sector sanitario y tiene prevista una gran inversión (estimada por McKinsey & Co en 1 trillón de dólares para 2020), en tecnologías de Big Data e inteligencia artificial que permitan gestionar los recursos de la forma más eficiente posible. Ambulancias gestionadas por IA, consultas médicas o entre profesionales por video-streaming, sistemas de diagnóstico basados en aprendizaje automático... Las principales compañías tecnológicas no se quieren perder su parte del "pastel" y buscan su hueco en este interesante mercado. AI ambulances and robot doctors: China seeks digital salve to ease hospital strain Y, para terminar, una interesante visualización dinámica de R2D3, que explica de forma intuitiva, pero a la vez muy completa, qué es el aprendizaje automático. Muy recomendable. Una introducción visual al Machine Learing Después de nuestra selección de las noticias más interesantes sobre Machine Learning, Inteligencia Artificial y Big Data que hemos encontrado en la red en Julio, os dejamos el post más popular en nuestro blog este mes. ¿Cómo crear un bot de forma sencilla?. Probamos con nuestra Datapedia. ¿Es el que más te ha gustado a ti también? No te pierdas ninguno de nuestros post. Suscríbete a LUCA Data Speaks. También puedes seguirnos en Twitter, YouTube y LinkedIn
2 de agosto de 2018
AI & Data
Cómo crear un bot de forma sencilla (2 y fin)
En el post anterior "Cómo crear un bot de forma sencilla (...)" explicamos qué es un bot, y para qué se suelen utilizar. También propusimos crear un Chatbot tipo FAQ basándonos en nuestro Diccionario Tecnológico LUCA. Para ello, comenzamos creando una base de conocimientos en forma de preguntas y respuestas con QnA Maker. En este segundo post, veremos cómo pasar de esa KB a un chatbot publicado en Skype. Paso a paso. En el primer post, creamos el servicio Datapedia_LUCA sobre la KB de preguntas y respuestas de nuestro diccionario tecnológico generada en QnA Maker. Ahora vamos a dar los siguientes pasos: Publicaremos la KB en Azure, conectada con el servicio Crearemos un Bot en Azure, y lo probaremos Conectaremos el Bot con la KB de la que tendrá que obtener sus respuestas Lo publicaremos en Skype Publicar la KB en Azure Desde el portal de QnA Maker, vemos las bases de datos que tenemos configuradas. En este caso, sólo una. Al abrirla, vemos el formato de preguntas y respuestas que ya vimos en el post anterior. Ahora vamos a publicar esta KB en Azure mediante el comando Publish. Figura 3: Al publicar la KB la pasamos a un modo de producción que permite que un Bot o una App se conecten a ella En seguida obtenemos el siguiente mensaje que indica que el servicio se ha publicado correctamente. Es importante que guardemos estos datos, porque los necesitaremos más adelante. Figura 4: Una vez publicado el servicio se generan estas claves que usaremos para conectarlo al bot. Crear el servicio Chatbot Ha llegado el momento de crear el Chatbot. Para ello, nos vamos al portal de Azure, donde, si recordamos, ya habíamos creado el servicio Datapedia_LUCA desde QnA Maker. Figura 5: Vista en Azure de los servicios creados desde QnA Maker. Para agregar un nuevo recurso, seleccionamos la opción de menú "+ Crear un recurso", y en el buscador ponemos por ejemplo web app, o bot: Figura 6: Buscamos recursos en Azure Marketplace De entre la lista de disponibles, el que nos interesa es Web App Bot, así que lo seleccionamos: Figura 7: Lista de rescursos tipo Web app. El servicio Web App Bot está diseñado especialmente para facilitar el desarrollo de bots, a los que podrán conectarse los usuarios por medio de distintos canales. Figura 8: Servicio web app bot, El formulario para crear el servicio es muy similar al que usamos en la primera parte para el servicio Datapedia_LUCA. En este formulario le damos nombre al bot, indicamos los datos de suscripción, grupo de recursos, ubicación, tarifa etc Figura 9: Formulario de creación del bot en Azure. Un poco más abajo indicamos qué plantilla de bot nos interesa. En nuestro caso, elegimos "Question and Answer" y el lenguaje Node.js Figura 10: Parte inferior del formulario. A continuación hay que crear un identificador y contraseña para la aplicación- Podemos hacerlo de forma automática o conectándonos al portal de registro de aplicaciones mediante el enlace azul de la tercera columna y copiando y pegando el ID y la contraseña generados en el portal en los campos que aparecen bajo el enlace. Figura 11: Configuración del Id y contraseña de la aplicación. Una vez incorporada esta información, sólo nos queda dar al botón "Crear" y vemos cómo se envía la implementación para el Web App Bot. Figura 12: Enviando la implementación del servicio. Probar el servicio y conectarlo a la KB El servicio ya está creado y podemos verlo en el panel de Azure, junto con el creado para la KB. Hacemos click sobre el icono del nuevo servicio y vamos a probar a "chatear" con el bot. Para ello, seleccionamos la opción "Probar el chat en web". Si preguntamos, como hicimos para probar la KB en QnA Maker ¿Qué es algoritmo?, por ejemplo, obtenemos: Figura 13: Prueba del chatbot. Todavía no está conectado a la KB. El mensaje nos indica que el bot está escuchando, pero todavía no está conectado a nuestro servicio Datapedia. ¿Os acordáis de las claves que nos guardamos antes?. Ahora es el momento de recuperarlas. QnAKnowledgebaseId QnAEndpointHostName QnAAuthKey Vamos a Configuración de App Services/Configuración de la aplicación, vemos que los valores están en blanco. Editamos el campo simplemente haciendo click sobre él con el ratón, añadimos los valores que guardamos antes, teniendo cuidado con el orden, ya que no se llaman exactamente igual. Guardamos y volvemos a probar el bot que ahora sí que va a funcionar. Figura 14: Conexión del bot a la KB. Efectivamente, cuando volvemos a preguntar al bot qué es un algoritmo, ya sabe darnos una respuesta adecuada. Figura 15: Probamos de nuevo el chatbot y ahora sí que funciona. Antes de conectarlo a algún canal, si queremos personalizarlo, podemos agregar una imagen para el perfil del bot. Figura 16: Añadimos el icono al perfil del bot. Publicar el servicio en Skype Y ya sólo nos queda publicarlo en Skype. Para ello, dentro del mismo menú de configuración del servicio, elegimos la opción "Canales". Por defecto, aparece el canal "Web Chat". Figura 17: Conexión del blog a distitnos canales. Hay disponibles una gran cantidad de canales. Entre los destacados, tenemos Cortana, Direct Line, Microsoft Teams y Skype. Pero también se puede publicar el bot en canales como Telegram, Facebook Messenger, Slack o incluso por correo. Figura 18: Opciones de canales disponibles Seleccionamos como canal Skype. En la página "Publicar" podemos configurarlo con todo detalle, añadiendo datos como el nombre del Bot, una descripción, asignarle un categoría, indicar quién es el editor, el mercado al que está dirigido, la compatibilidad de idioma, datos de condiciones de uso y privacidad etc. Con esa información, si se envía a revisión a Microsoft (con el botón que aparece justo al final del formulario), el bot se podrá publicar en Skype y su vínculo de acceso se podrá distribuir a un número ilimitado de usuarios. Pero vamos a hacer algo mucho más sencillo. Figura 19: Publicación "oficial" en Skype. En nuestro caso, como no pretendemos dejar el bot en producción, optaremos por una opción muy simple, pero que al mismo tiempo, nos permite ver perfectamente cómo funcionaría el bot en Skype. Volvemos a la página principal de "Conectarse a Canales", y vemos que ahora ya están disponibles dos: Web Chat y Skype. Seleccionamos la opción "Obtener los códigos para insertar de los bots": Figura 20: Seleccionamos Obtener los códigos... Copiamos el código para insertar el bot en Skype en un fichero .txt, le cambiamos la extensión de .txt a .html y lo abrimos. Figura 21: Código para insertar el bot en Skype. Al abrirse el navegador, tenemos un bonito botón de agregar a Skype. Pulsamos "Add to Skype": Figura 22: Al ejecutar el código de inserción en un sencillo html podemos acceder al botón "Agregar a Skype". Si no tenemos sesión iniciada, nos pedirá hacerlo y después nos aparece la siguiente pantalla con la opción de agregar el bot a nuestros contactos en Skype. Figura 23: Agregamos el bot a Skype como contacto Una vez agregado el bot, si entramos en Skype y seleccionamos "+", podemos "Agregar nuevos bots" Figura 24: Desde Skype, buscamos el bot para iniciar una conversación. Buscamos por el nombre de nuestro bot: Figura 25: Buscamos por el nombre del bot. Y una vez agregado, ya podemos chatear con él y hacerle nuestra pregunta favorita. ¿Qué es algoritmo?. Figura 26: Consultamos nuestro Diccionario Tecnológico a través de Skype por medio de un bot. Ya podemos chatear en Skype con nuestra Datapedia gracias al bot que hemos creado. Como veis, no es que sea difícil, sino más bien un poco largo. Y tampoco es que nuestro bot sea muy comunicativo. Le tenemos que preguntar por el término concreto, pero no sabe saludarnos, no sabe distinguir entre distintas formas de preguntar lo mismo... tiene mucho que aprender. Aquí, y ahora sí que sí, es donde se hace imprescindible el trabajo del desarrollador, muchas veces acompañado de expertos en comunicación o lingüística que ayuden a redactar las formas más habituales de plantear una pregunta, o, por ejemplo, cómo responder a preguntas malintencionadas. Esperamos, no obstante, que este pequeño experimento os haya ayudado a comprender qué es un bot, cómo funciona y las múltiples formas en que se pueden aplicar a muchas tareas que realizamos habitualmente. Los dos post de esta miniserie son: Cómo crear un Bot de forma sencilla: Probamos con nuestra Datapedia Cómo crear un bot de forma sencilla (2 y fin) No te pierdas ninguno de nuestros post. Suscríbete a LUCA Data Speaks. También puedes seguirnos en nuestras redes sociales: @Telefonica , @LUCA_D3 , @ElevenPaths
12 de julio de 2018
AI & Data
Cómo crear un Bot de forma sencilla
Tras unos meses de trabajo, al fin ha visto la luz el Diccionario Tecnológico de LUCA. Nuestra Datapedia particular (Lucapedia para los amigos). Y hemos pensado que una buena forma de presentarla es contaros cómo, a partir de un contenido en formato “Pregunta/Respuesta” como éste, se puede crear un Bot de forma sencilla. ¿Queréis saber cómo se hace? ¿Qué es un bot? ¿Y un chatbot? Bot, chatbot, talkbot, chatterbot, asistente conversacional, asistente virtual etc no son más que distintas formas de ponerle nombre a programas informáticos que se comunican con nosotros como si fueran humanos. Así, los bots pueden hacer muchas tareas, algunas buenas, como comprar entradas para un concierto, desbloquear la cuenta de un usuario, u ofrecer opciones para reservar una casa de vacaciones en unas fechas concretas; y otras no tanto, como realizar ciberataques, o provocar una catástrofe financiera realizando operaciones bursátiles a alta velocidad. Los bots (diminutivo de “robot”) pueden estar diseñados en cualquier lenguaje de programación y funcionar como cliente, como servidor, como agente móvil etc. Cuando se especializan en una función específica se les suele llamar “Sistemas Expertos”. Al igual que ocurrió en su día con el desarrollo de la interfaz gráfica frente a la línea de comandos pura y dura, los bots suponen una manera de hacer accesible a cualquier usuario, herramientas y servicios que antes requerían un mayor nivel de competencia digital. Además, como veremos más adelante, son capaces de aprender de nosotros, y tomar decisiones basadas en la información que les proporcionemos. Los chatbots o bots conversacionales son sistemas de inteligencia artificial que simulan una conversación con una persona utilizando el lenguaje natural. Por ejemplo, son capaces de mantener una conversación de mensajería instantánea de forma muy similar a como lo haría un humano. Así, si estás preparando tus vacaciones en una agencia de viajes online, muy probablemente aparezca una ventana de chat en la esquina inferior derecha ofreciéndote ayuda para resolver cualquier duda que tengas. A tu disposición 24 horas al día, todos los días del año. Es por ello que su potencial es tan grande. Además, el chat es canal preferido por el público en general, y por los Millennials en particular. Muchos chatbots están orientados a reemplazar las famosas FAQ (Frecuently Asked Questions) y, por tanto, aparentemente no agregan un gran valor diferencial con respecto al uso de otros canales como la página web o aplicación móvil. Pero, como veremos en este caso práctico, incluso los que realizan esta función, son muchas veces capaces de aprender y aportar valor. Los bots no son sólo capaces de comprender e imitar el lenguaje escrito. Google Duplex, y Microsoft XiaoIce, por ejemplo, son capaces de realizar llamadas telefónicas para hacer una reserva en un restaurante, pedir una cita en el dentista, etc como lo haría una persona. Aura, la inteligencia artificial de Telefónica, te hace recomendaciones en España a través de la app Movistar + en base a tus gustos y te permite ver el partido, buscar una serie, o cambiar de canal simplemente hablando o chateando. Estas tecnologías también tienen un gran campo de aplicación en entornos empresariales, pudiendo usarse para organizar reuniones de negocio, establecer llamadas de ventas, dar soporte técnico de primer nivel etc ¿Es lo mismo un chatbot que un asistente virtual? Algunos especialistas opinan que lo que diferencia un bot de un asistente virtual es el alto grado de personalización de éste último. De esta forma, mientras que el chat bot es “la cara” de una empresa, a cuyos códigos o particularidades se tiene que adaptar el usuario para conseguir su objetivo, es el asistente personal el que se adapta al usuario y no al revés. Aunque ésta es una frontera algo difusa. Una forma más clara de diferenciarlo sería plantearlo en términos de Inteligencia Artificial “vertical”, frente a Inteligencia Artificial “horizontal”. Un asistente digital está programado para cubrir tus necesidades de la mejor forma posible. Es un enfoque genérico una IA general (horizontal). Pero para serte realmente útil, necesitará ser capaz de comunicarse con bots más especializados (IA vertical) cuando tus necesidades así lo requieran. Por ejemplo, con un bot especializado en seguros para ayudarte a elegir el que más te convenga, o con otros como Amy Ingram, para que organice una reunión o cambie por ti unos billetes de avión. En este post, y como presentación de nuestra “Datapedia”, vamos a explicar lo sencillo que resulta crear un chatbot usando Q&Amaker. La idea de crear una “Datapedia” en la web de LUCA surgió cuando nos dimos cuenta de que había muchas dudas sobre terminología y conceptos de Ciencia de Datos, Inteligencia Artificial y Aprendizaje Automático. Nos planteamos ir creando poco a poco un glosario sobre estos conceptos, tanto en español como en inglés. Y aunque todavía es muy joven y tiene que crecer mucho más, nos pareció interesante presentárosla como ejemplo del tipo de contenido a partir del cual se puede generar un bot. Pongámonos manos a la obra. En este post vamos a comprobar que crear un chatbot no es tan complicado como parece. Tampoco es necesario ser un “as de la programación”. Daremos los siguientes pasos aunque, para que no se haga demasiado largo, lo dividiremos en dos post: Crearemos los servicios Q&A en the QnAMaker Crearemos un servicio de bot en Azure Publicaremos el bot y lo pondremos a prueba Y ¡fin! Lo primero que necesita un bot es algo que le permita interaccionar con los usuarios. Un “cerebro”. Si fuéramos programadores, lo podríamos programar a mano. Pero, como no lo somos, vamos a probar un servicio gratuito que permite publicar las típicas FAQs (preguntas y respuestas frecuentes) en forma de servicio conversacional o chatbot. ¿Y cómo se hace? Muy sencillo. Lo primero es ir a la web de QnA Maker: Figura 1: Portal QnA Maker (Si no tenemos suscripción de Azure, previamente habrá que crear una. Puedes ver cómo hacerlo en este enlace) Creación del servicio QnA Una vez aquí, debemos crear una nueva base de conocimiento o Knowledge Base (KB): “Create a Knowledge Base” Figura 2: Creación de una base de datos (KB). Se abre la siguiente ventana que resume los pasos a seguir que son: Crear un servicio QnA en Azure y después, conectarlo a la base de datos (KB) que vamos a generar. Creamos el servicio mediante el botón: Figura 3: Botón para crear el servicio Se abre un formulario que nos va a permitir definirlo y publicarlo. Le damos nombre, en este caso “Datapedia_LUCA”. Este servicio se desglosa en tres partes: el frontal web de la API (la “cara” del bot para el usuario) el Backend Azure search que va a almacenar la KB y sus índices (el “cerebro” del bot), los Application Insights, que ofrecen la monitorización del sistema Con este formulario indicaremos dónde queremos ubicar cada una de ellas. Lo ponemos cerca, en “Oeste de Europa”. También habrá que facilitar la información de pricing, que dependerá de la suscripción que tengamos. Figura 4: Formulario (1) Figura 5: Formulario (2-Scroll) Una vez completado el formulario, le damos a “Crear” y en un par de minutos obtenemos este mensaje: el servicio se ha creado correctamente. Figura 6: Mensaje de Implementación correcta Para nuestra comodidad, lo anclamos al panel. Figura 7: Nuestro servicio QnA en Azure. Si seleccionamos en el menú de la derecha la opción “Todos los recursos” y una vez dentro filtramos por el nombre del servicio, Datapedia, veremos la lista de recursos asociados indicando su nombre, el tipo de recurso que es, el grupo al que pertenece, dónde está ubicado físicamente, y en qué suscripción. Los puntos suspensivos al final de cada fila nos permiten “anclar” el recurso al panel principal. Figura 8: Lista de recursos asociados al servicio Conexión del servicio QnA con la KB Una vez creado el servicio en Azure, volvemos a QnAmaker para el segundo paso que había que dar: conectarlo a la base de datos o KB. En este paso tenemos que indicar el directorio activo de Azure y la suscripción sobre los que vamos a trabajar (dependerá como antes, de los que tengamos configurados), y le indicamos el nombre del servicio (Datapedia_LUCA) y el nombre de la KB (Datapedia_KB) Figura 9: Formulario para conectar el servicio a la KB Ya sólo nos quedan dos pasos más. Indicar dónde está el contenido a partir del cual se generará la base de datos o KB, y crearla. En este momento, si tenemos una página web en formato FAQ (contenido en forma de preguntas y respuestas), podemos cargar el contenido tan sólo introduciendo la URL. (Por ejemplo, esta página) Sin embargo, nuestro caso no va a ser tan fácil, porque nuestro diccionario tecnológico tiene dos niveles (respuestas cortas y respuestas ampliadas), y sólo tiene ese formato en el segundo nivel. Pero no hay problema que no podamos resolver con un poco de Excel. Figura 10: Formulario para crear la KB a partir de una URL o fichero Crearemos nuestra KB usando un fichero en formato. tsv (tab separated value). Para ello, necesitamos un fichero Excel con tres columnas. Las cabeceras de éstas se deben nombrar como “Question”, “Answer” y “Source”– El contenido de la primera columna debe estar escrito de la forma siguiente: ¿Qué es *****?, y el de la segunda debe contener la definición del término. En la tercera, simplemente, pondremos “Datapedia”. Algo así: Figura 11: Contenido de la Datapedia en Excel Para guardarlo en formato tsv hay que hacer lo siguiente. Lo guardamos como txt, pero seleccionamos el menú Herramientas (Tools), Opciones Web (Web Options), y como codificación elegimos “Europeo Occidental Windows” (si no lo hacemos, los acentos salen mal). Una vez guardado, cambiamos manualmente el nombre de la extensión txt por tsv. Con esto, el fichero ya está listo para subir a QnA maker. Lo subimos, y pulsamos el botón “Create your KB” Figura 12: Subida del fichero DatapediaKB en formato tsv" Un par de minutos de espera mientras se genera la KB: Figura 13: un par de minutos de espera… Y listo: Figura 14: Aspecto de la base de datos creada a partir del fichero. Se han cargado todos los términos y sus definiciones de forma automática. Desde esta pantalla podemos editar las parejas de pregunta/respuesta si es necesario. También, con el botón “+ Add QnA pair” podemos crear de forma manual nuevas entradas. Como todo está bien, guardamos y entrenamos “Save and train”. Una vez entrenada la KB, la ponemos a prueba con el botón “Test”- Si preguntamos, por ejemplo, qué es un algoritmo obtenemos esta respuesta: Figura 15: Prueba ¿Qué es un algoritmo? Si seleccionamos la opción "Inspect" podemos ver más detalles. Por ejemplo, el "Confidence Score" de la respuesta. En este caso, como hemos hecho la pregunta exactamente igual que esta a formulada en nuestra base de preguntas original, el valor es de un 100. Si se formula de otra forma, el Confidence Score tendrá valores inferiores. Desde esta pantalla, incluso podemos seleccionar manualmente cuál es la respuesta más adecuada, o añadir una nueva, no lo hace automáticamente el servicio QnA. También se pueden escribir formas alternativas de plantear la pregunta para cada una de las respuestas ("Add alternative phrasing"). Figura 16: Inspección de la respuesta Con esto, ya tenemos creado el servicio de QnA a partir del contenido de nuestro Diccionario Tecnológico LUCA . La semana próxima publicaremos un segundo post donde explicaremos cómo crear en Azure el servicio de Bot que nos permitirá interactuar con él y cómo ponerlo a prueba. Puede que sea un poco largo pero ¿a que no es tan difícil?. ¡No te lo pierdas!Los dos post de esta miniserie son: Cómo crear un Bot de forma sencilla: Probamos con nuestra Datapedia Cómo crear un bot de forma sencilla (2 y fin) Para mantenerte al día con LUCA, visita nuestra .
5 de julio de 2018
AI & Data
Python para todos: Tutorial de PCA en 5 sencillos pasos
Seguimos nuestra estrategia de “aprender haciendo” (Learning by Doing). En este caso, después de haber introducido el concepto de selección de características en el post anterior, vamos a trabajar sobre un ejemplo concreto en Python. Aplicaremos la técnica de Análisis de Componentes Principales (PCA– Principal Component Analysis) para reducir la dimensionalidad de un dataset y así simplificar la modelización posterior. Esta técnica es de gran interés, porque se aplica a una gran variedad de casos. Por ejemplo, en seguridad informática se han desarrollado métodos de detección de intrusos mediante redes neuronales, basados en reducción de características. También se utiliza en problemas de clasificación de píxeles en base a su color, que son la base de muchas aplicaciones de análisis de imágenes para sistemas biométricos de reconocimiento facial, detección de defectos de fabricación en procesos industriales, etiquetado de tejidos en imágenes médicas, localización de regiones en imágenes por satélite etc. Incluso se pueden encontrar aplicaciones de PCA a investigación genética o predicción de ganancias en el mercado de valores. El dataset clásico que se utiliza para explicar esta técnica es un viejo conocido para nosotros, el de clasificación de iris. En Kaggle, Github o webs de machine learning y ciencia de datos podemos encontrar distintas versiones de este ejemplo, lo cual siempre es interesante para comparar y aprender. Lo que no es tan fácil es encontrar ejemplos en español. Hay un post muy interesante de David Solís sobre este caso, escrito en R, que podéis encontrar aquí. Nosotros, lo haremos en Python. 1. Planteamiento del problema Si recordamos del ejemplo anterior, el dataset de clasificación de iris, que podemos descargar del repositorio UCI, contiene las medidas de 150 flores que pertenecen a 3 especies diferentes: Iris-setosa Iris-versicolor Iris-virginica Este dataset se usa como datos de entrenamiento para un modelo de machine learning cuyo objetivo es determinar de forma automática la especie a la que pertenece una determinada flor, a partir de las medidas 4 atributos o características. En particular, la longitud y la anchura de sus pétalos y sépalos expresadas en centímetros. Por tanto, se trata de un problema de 4 dimensiones, en el que la variable objetivo (target) es la especie. Los datos se pueden representar en forma de una matriz de 150 filas (los datos de cada flor), por 4 columnas (las medidas de sus pétalos/sépalos). La quinta, corresponde a la variable objetivo, la especie. Figura 2: Tabla de características. 2. Los 5 pasos del proceso PCA. Los pasos que vamos a dar y que explicaremos detalladamente son los siguientes: Cargar los datos Normalizarlos Obtener los autovectores y autovalores a partir de la matriz de covarianza Seleccionar los autovectores correspondientes a las componentes principales Proyectar el dataset original sobre el nuevo espacio de dimensión < 4 2.1 Carga de los datos y librerías En este primer paso, como hicimos en el experimento anterior, cargamos las librerías que vamos a usar, cargamos el conjunto de datos (desde el repositorio UCI) en un dataframe df , y les echamos un vistazo con el último comando. Obtenemos la siguiente representación de los datos: https://gist.github.com/PalomaRS/5a4c1ae95fa03bdd5acd25af5d15fd2b Obtenemos la siguiente representación de los datos: Figura 3: Aspecto del dataset. A continuación, dividimos el conjunto de datos en dos partes. https://gist.github.com/PalomaRS/19736fe7a62b072cebbce6755d3292a8 (Este post, explica de forma sencilla cómo usar iloc para seleccionar filas o columnas de una matriz). 2.2 Normalización Cuando las distintas características o atributos de un dataset están expresadas en distintas escalas se hace patente la necesidad de normalizar sus valores. En este caso, en el que las medidas de sépalos y pétalos están expresadas en centímetros, no sería imprescindible. Sin embargo, como ya comentamos en el post anterior (en forma de una de las limitaciones del PCA), al aplicar esta técnica se asume que los datos de trabajado tienen una distribución gaussiana o normal. Por tanto, aplicamos a los datos una transformación de normalización de forma que su media sea igual a 0, y su varianza=1. Para ello, usaremos la transformación Standardscaler de sklearn. https://gist.github.com/PalomaRS/0de3ee8245ac602ad978b65b0f509087 2.3 Cálculo de autovectores y autovalores (eigenvector/eigenvalue). En el post anterior explicamos que los autovectores son las direcciones en las que la varianza de los datos es mayor. Recordemos que, en teoría de probabilidad, la varianza de una variable aleatoria es una medida de dispersión (definida como la esperanza del cuadrado de la desviación de dicha variable respecto a su media). Por tanto, las direcciones en las que la varianza es mayor, representan la esencia principal de la información contenida en el dataset, por eso se les llama componentes principales. Al igual que un autovector es una dirección, el autovalor es un número, que representa el valor de la varianza sobre ese autovector. Por ello, para encontrar las componentes principales que condensen esa esencia de la información del dataset, calcularemos primero la matriz de covarianza, que nos da la medida de dispersión conjunta entre variables. Para ello, usaremos la función Covariance Matrix de la librería Numpy. https://gist.github.com/PalomaRS/0ba64b6c8faad069776512c2ea854b40 Y obtenemos el siguiente resultado: Figura 4: Matriz de covarianza. Como vimos en el post anterior, las direcciones sobre las que la varianza es mayor (=mayor dispersión de los datos=mayor información) se corresponden con los autovectores, vectores propios o eigenvectors de esta matriz. Por tanto, el siguiente paso consiste en calcular estas direcciones. https://gist.github.com/PalomaRS/696afc0f9fbe22f7afbbd79a8b702549 Y obtenemos el siguiente resultado: Figura 5: Autovalores y Autovectores. Si lo que queremos es reducir la dimensionalidad del dataset, perdiendo la menor información posible, descartaremos los autovectores cuyos autovalores sean más bajos, ya que son aquellos que menos información aportan al conjunto global. Para ello, lo que se hace es ordenarlos por parejas de autovector, autovalor. https://gist.github.com/PalomaRS/091084f4de851c2dd4f55c6b3cdfaafa Obtenemos: Figura 6: Autovalores en orden descendiente. 2.4 Seleccionamos los los autovectores correspondientes a las componentes principales El objetivo de este caso es proyectar este dataset 4D en un espacio de menor dimensionalidad, para mejorar la eficiencia de cálculo, al mismo tiempo que se retiene la mayor parte de la información. La pregunta clave será ¿cuál va ser este valor? ¿3D?¿2D?¿1D?. Para ello seguiremos el siguiente proceso. Una vez ordenados los autovalores, que recordamos son una medida de la varianza de los datos, la cuestión es decidir, cuál es el menor número de autovectores o componentes principales, con el que podemos expresar “la esencia principal” de la información contenida en ese dataset. Para ello, usaremos un métrica que se conoce como “varianza explicada”, que muestra cuánta varianza se puede atribuir a cada una de estas componentes principales. Para ello ejecutaremos el siguiente código https://gist.github.com/PalomaRS/f67010deec0d0d844afee8fbdd1269a6 (Si queréis cambiar el aspecto de la gráfica, echad un vistazo a la galería de estilos para Matplotlib )- Obtenemos este resultado: Figura 7: Representación gráfica de la varianza explicada. En la gráfica se aprecia claramente que la mayor parte de la varianza (en torno al 70%) corresponde a la primera componente. La segunda acumula algo más del 20% de la varianza, mientras que la tercera puede ser descartada sin perder demasiada información, ya que las dos primeras componentes explican más del 90% de la varianza. 2.5 Proyectamos los datos sobre un espacio de dimensionalidad menor. En este ejemplo, construiremos una matriz de proyección que convertirá el conjunto de datos inicial (de 4D) en un conjunto de datos de 2D centrado en las sus componentes principales (las direcciones de los autovectores correspondientes). De esta forma, la tarea de interpretar los patrones de información contenidos en los datos, será mucho más sencilla. Para ello, primero creamos la matriz de proyección a partir de los autovalores principales con el siguiente código: https://gist.github.com/PalomaRS/6f44542673f6efc3d5d2968764869261 Y, por último, representamos gráficamente el nuevo espacio de datos, con éstas últimas líneas: https://gist.github.com/PalomaRS/3806ee83996935e41cfcaec240353eb0 Obteniendo, este resultado: Figura 8: Representación gráfica del dataset en un espacio 2D. Y ¡ya está!. Hemos conseguido reducir el conjunto de datos de trabajo inicial a un conjunto de datos de dos dimensiones que aún así conserva la información más esencial. de forma que nos resultará mucho más sencillo el trabajo de crear un modelo de clasificación a partir de estos datos. Como ya indicamos anteriormente, es una técnica muy frecuente, ya que es sencilla y facilita mucho el trabajo posterior. Los post de esta segunda miniserie son: Introducción: Atrévete con el Python (II): ¿Qué es el análisis de Componentes Principales o PCA? (éste mismo) Python para todos: Python para todos: Tutorial de PCA
13 de junio de 2018
AI & Data
Python para todos : ¿Qué es el análisis de Componentes Principales o PCA?
Bienvenidos a una nueva edición de nuestra serie Python para todos. Nuestro objetivo es explicar de forma sencilla, comprensible y aplicada a ejemplos concretos, los principales conceptos de Machine Learning, Big Data, e Inteligencia Artificial. El tema de hoy, el Análisis de Componentes Principales (Principal Component Analysis o PCA) es uno de los algoritmos de selección de características más habituales. ¿Qué es un algoritmo de selección de características? Las técnicas de Machine Learning necesitan grandes volúmenes de datos para crear modelos eficientes y de calidad. Sin embargo, muchas veces, los datasets de entrenamiento contienen gran cantidad de datos irrelevantes o que aportan poca información. Los algoritmos de selección de características analizan los datos de entrada, los clasifican en distintos subconjuntos y definen una métrica con la que valorar la relevancia de la información aportada por cada uno de ellos. Luego, descartarán del dataset de trabajo aquellas características o campos que menos información aportan, permitiendo un ahorro en almacenamiento de datos, y tiempo de ejecución que se traduce en una mayor eficiencia del modelo. El Algoritmo de Componentes Principales (en adelante PCA) consiste en: una técnica de selección de características concreta que utiliza una transformación ortogonal para convertir un conjunto de observaciones de variables, posiblemente correlacionadas, en un conjunto más reducido de variables que ya no guardan correlación y que se conocen como componentes principales. La pregunta principal que nos ayuda a resolver este método es "¿Cuántos parámetros del dataset son necesarios para explicar una variación significativa de éste?. Es decir, es evidente que al descartar parámetros o variables, siempre se perderá cierta información. El tema está en valorar cuánta información nos podemos permitir "perder" descartando ciertos parámetros en aras de obtener un modelo más rápido y eficiente. Las matemáticas que sustentan este método son complejas, así como la definición anterior. No obstante, vamos a intentar explicar de forma intuitiva en qué consiste el proceso y, en un post posterior, lo veremos mucho más claro aplicándolo de forma práctica a un dataset real. Comprendiendo el algoritmo PCA. El análisis de componentes principales es precisamente eso, un proceso que analiza los datos e intenta encontrar la estructura subyacente, la esencia de la información contenida en ellos. Esta estructura se define por las direcciones donde la varianza de los datos es mayor, es decir, donde hay una mayor dispersión de éstos. La forma más sencilla de comprender este concepto es mediante una visualización. Si los triángulos representan datos, la dirección que representa la mayor varianza es la línea sobre la cual la dispersión de los datos es mayor. Si tomamos una línea vertical y proyectamos los datos sobre ella, vemos que los datos no están tan "separados" como cuando hacemos la misma operación sobre una línea horizontal. Por tanto, en este ejemplo concreto, el componente principal es la línea horizontal, que corresponde a una mayor varianza. Figura 1: Distribución de datos en la que se aprecia que la dirección de mayor dispersión es la horizontal. Afortunadamente, no hace falta dibujar los datos para encontrar la dirección de mayor varianza, sino que se pueden identificar por medio de métodos matemáticos. Igual que los cocineros de moda "deconstruyen la tortilla de patatas", con resultados, según quien sea, cuestionables, podemos deconstruir un conjunto de datos en autovectores y autovalores (eigenvectors y eigenvalues). Un autovector es una dirección, y un autovalor es un número que representa el valor de la varianza en esa dirección. Por tanto el componente principal será el autovector con mayor autovalor (en el ejemplo, la línea horizontal). En un conjunto de datos hay tantas parejas autovector/autovalor como dimensiones. Los autovectores no modifican los datos, sino que permiten verlos desde un punto de vista diferente, más relacionado con la estructura interna de los datos, y por tanto, ofrecen una visión mucho más intuitiva de éstos. Figura 2: Proceso de identificación de un nuevo sistema de ejes basado en los vectores propios o autovectores. En las figuras anteriores vemos cómo, a partir de un conjunto de datos inicial, en este caso de 2D representado en un sistema de ejes cartesianos XY, identificamos como autovector (o componente principal), la dirección de mayor varianza en los datos (línea roja en la segunda gráfica). Dado que es un sistema de 2 dimensiones, existirá otro autovector más. Si recordamos la definición anterior que hemos dado del algoritmo PCA, decíamos que era una "tranformación ortogonal". Eso significa que el segundo autovector es perpendicular al primero (la segunda línea roja en la útima gráfica). Por tanto, hemos definido un nuevo sistema de ejes sobre el que proyectaremos los datos para verlos desde otra perspectiva que facilita su comprensión, ya que los nuevos ejes son las direcciones en las que el aporte de información es mayor. Figura 3: Los datos se proyectan sobre un nuevo sistema de ejes. ¿Para qué se usa el Análisis de Componentes Principales o PCA? Al identificar claramente cuáles son las variables o características que aportan más información, se pueden descartar aquellas menos relevantes, reduciendo así la dimensionalidad del conjunto de datos de trabajo. De esta forma, se simplifica el problema y se agiliza todo el proceso de modelado. Por ello, es uno de los primeros pasos en este proceso. Por tanto, la reducción de dimensionalidad es una de sus aplicaciones principales. Por ejemplo, en un análisis de calificaciones escolares que consideraba las notas de los alumnos en 8 asignaturas diferentes (lengua, matemáticas, física, inglés, historia, química y gimnasia), se determinó que 2 de los componentes principales explicaban juntos el 81% de la varianza. El primer componente estaba fuertemente correlacionado con las asignaturas de humanidades, mientras que el segundo, lo estaba con las de ciencias. Ambos conjuntos eran estadísticamente independientes (un alumno puede tener buenas notas en sólo uno de ellos, en los dos o en ninguno). De esta forma, se pudo simplificar el análisis de este conjunto de datos, de trabajar con un problema de 8 dimensiones, a otro de 2. Figura 4: al aplicar una transformación lineal de cizalladura a la imagen, el eje azul no cambia porque se trata de un autovector. La otra aplicación es la detección de anomalías. Uno de los ejemplos típicos es la detección de fraude en transacciones bancarias. En estas situaciones, es fácil tener un gran volumen de datos de transacciones correctas. Lo difícil es tener suficientes datos de transacciones fraudulentas con las que entrenar el modelo. La detección de anomalías basada en PCA resuelve el problema analizando las características o atributos que definen lo que corresponde a un comportamiento normal, para después aplicar distintas métricas de distancia que identifiquen los casos que se alejan de este comportamiento, es decir, los casos anómalos. ¿Cuáles son las limitaciones del PCA? Una de las principales limitaciones de PCA surge cuando los datos están expresados en distintas escalas. Por ello siempre se suele hacer una normalización o estandarización previa. Por otro lado, sólo se consideran transformaciones ortogonales (rotaciones) de las variables originales. Por último, este método asume que los datos siguen una distribución normal o gaussiana. Como ya explicamos al final de este otro post, no es una asunción descabellada, ya que muchos fenómenos naturales y humanos siguen este patrón. En el próximo post veremos un ejemplo práctico de aplicación del análisis PCA con Python a uno de los datasets clásicos para el aprendizaje de las técnicas de Machine Learning, el de clasificación de iris, con el que ya trabajamos en el experimento anterior. Esta segunda serie es más corta (sólo son dos post, incluido éste), porque asumimos que ya tenemos algunas nociones de Python y el entorno Anaconda instalado. Si no es tu caso, y quieres empezar desde cero, te recomendamos empezar por este otro experimento, o, al menos, leer los post iniciales de preparación del entorno: Introducción: Machine Learning con Python para todos los públicos. Python para todos (1): Instalación del entorno Anaconda. Python para todos (2): ¿Qué son los Jupiter Notebook?. Python para todos (3): ¿Qué son las librerías?. Preparamos el entorno. Python para todos (4): Carga de datos, análisis exploratorio (dimensiones del dataset, estadísticas, visualización etc) Python para todos (5) Final: Creación de los modelos y estimación de su precisión Los post de esta segunda miniserie son: Introducción: Atrévete con el Python (II): ¿Qué es el análisis de Componentes Principales o PCA? (éste mismo) Python para todos: Python para todos: Tutorial de PCA ¡No te lo pierdas! También puedes seguirnos en nuestras redes sociales: @Telefonica, @LUCA_D3, @ElevenPaths
6 de junio de 2018
AI & Data
Monetizar el dato e impulsar una cultura “Data Driven”: los retos del CDO
Nadie cuestiona hoy el valor de los datos en la empresa, ni el de los expertos en su gestión y análisis. Tras el auge de la economía digital, las empresas españolas han apostado fuertemente por situar al dato como pilar estratégico de su negocio, si bien aún existen barreras a la hora de monetizar estos activos. Además, las empresas se enfrentan hoy a un gran reto, dado que a partir del 25 de mayo, comenzará a aplicarse el Reglamento General de Protección de Datos (RGPD). Tras el boom del Big Data, ha llegado el momento de demostrar su potencial y aplicaciones reales. Las empresas deben ser capaces de entender el auténtico valor de los datos, pero también las obligaciones que conlleva su gestión. Los CDO se enfrentan, por tanto, a dos retos principales: la monetización de los datos e impulsar una cultura “data driven” en sus organizaciones. La monetización de los datos es una línea de negocio en sí misma. Conlleva necesidades propias, y debe ser tratada en consecuencia: con procesos, prácticas y perfiles homogéneos, que permitan maximizar los beneficios a la vez que se respetan unos estándares de seguridad y calidad recientemente definidos, ante los que no todas las empresas están preparadas por igual. En este sentido, las empresas “data driven” son aquellas capaces de comprender los beneficios de una correcta gestión de la información, gracias a la colaboración de todos sus empleados. Persiste la idea generalizada de que “los datos son el petróleo del Siglo XXI”, pero, ¿qué significa realmente esta afirmación? ¿Es consciente la C-Suite en España del auténtico valor de los datos? ¿Son capaces los CDO de calibrar las expectativas y resultados dentro de sus organizaciones? La tecnología analítica y la digitalización han avanzado a gran velocidad, ¿será igual de rápida la armonización de responsabilidades de los gestores de los datos? Para responder a estas incógnitas, las empresas deben ser consistentes en dos aspectos especialmente: su digitalización y sus políticas de recursos humanos, dado que los perfiles, roles y qué peticiones debe atender el CDO deben ser claras. En muchos casos, se elaboran estrategias ambiciosas a años vista, que, por el avance de la tecnología y los negocios, quedan obsoletas o necesitan matices en su ejecución. No hay alternativa a la digitalización de las empresas. Esta afirmación está cada vez más presente en el entorno corporativo, pero ha llegado el momento de abordarla de manera realista, de manera integral a lo largo de toda la organización. El Chief Data Officer se postula como el pilar de este proceso. “ La monetización de datos es una línea de negocio en sí misma: conlleva necesidades propias y debe ser tratada en consecuencia ”. Escrito por el Chief Data Officer Club Spain. El primer foro exclusivo de aprendizaje y networking de los Chief Data Officers en España. Los expertos opinan. Si quieres conocer más sobre el Club, escribe a: clubcdospain@outlook.es  
28 de mayo de 2018
AI & Data
¿Y tú? ¿Estás preparado para el trabajo del futuro?
Muchas veces nos preguntamos qué conocimientos y aptitudes son necesarios para ser Data Scientist, y hemos visto cómo esos requerimientos han ido evolucionando con el tiempo. Pero esta profesión no es la única difícil de definir. De hecho estamos en un momento de cambio hacia la industria 4.0 y, como es habitual en momentos de cambios de paradigma, hay muchas dudas, algunos temores, pero sobre todo, un gran abanico de nuevas oportunidades. En los últimos años hemos visto como la conectividad global, las máquinas inteligentes y los nuevos medios están cambiando nuestra forma de trabajar. Mientras hace unos años los trabajadores estaban preocupados por los efectos de la globalización en cuanto a pérdida de puestos de trabajo en los países más avanzados, hoy vemos cómo la preocupación se traslada al avance de la denominada industria 4.0, también categorizada como cuarta revolución industrial. Dicho en pocas palabras, se trata del cambio hacia “fábricas inteligentes” (smart factories), capaces de adaptarse de forma automática a las necesidades de cada proceso de producción. El concepto incluye el uso de internet y tecnologías punteras, como Big Data, IoT, etc., pero supone también una evolución cultural hacia la que denominamos la cultura maker. Este movimiento, representa una extensión de la cultura “Hágalo usted mismo” (DoitYourself) basada en la tecnología. Así, la aparición de nuevas y accesibles herramientas digitales para el diseño y la computación, los nuevos medios digitales colaborativos, y el surgimiento de la “fábrica para alquiler”, ha permitido trasladar las trayectorias democratizadoras de la informática y las comunicaciones a los procesos de fabricación y que pequeños artesanos, a través de impresoras 3D lleguen a desafiar el mundo de las patentes de la gran industria. Lo que está claro es que muchos estudios pasados que intentaban predecir cuáles iban a ser las nuevas profesiones del futuro, las nuevas categorías y requerimientos necesarios para desarrollarlos, han sido erróneas. El Institute for the Future , es un grupo de investigación independiente, realizó el estudio Future Work Skills 2020 patrocinado por el Instituto de Investigación de la Universidad de Phoenix, en el que se aborda esta pregunta “¿Cómo será el trabajo del futuro?” desde una nueva perspectiva. En lugar de enfocarse en cuáles serán los trabajos del futuro, analiza qué competencias, es decir qué conocimientos y habilidades serán necesarios para trabajar en 2020. Figure 2:Future Work Skills 2020. Para ello, lo primero que hace es identificar los 6 aceleradores del cambio. Los 6 aceleradores del cambio Cada uno de estos aceleradores, la mayor longevidad, la incorporación de máquinas y sistemas inteligentes a los lugares de trabajo, el avance de la digitalización, el nuevo ecosistema de medios, las nuevas superestructuras que se crean en las organizaciones y la conectividad global redibujan un nuevo entorno de trabajo en el cual cobran relevancia nuevas competencias. Las competencias imprescindibles para los trabajadores del futuro Capacidad de comprender el sentido de las cosas, interconectar conocimiento, relacionar conceptos… Según las máquinas inteligentes van asumiendo tareas rutinarias de fabricación o servicios, se hace patente la necesidad de disponer de trabajadores para aquellas tareas que las máquinas no pueden realizar. Se trata de las habilidades relacionadas con el pensamiento superior, que son aquellas que nos permiten encontrar las claves críticas para la toma de decisiones. Inteligencia social: La habilidad de detector las emociones de los que nos rodean y adaptar a ellas nuestras palabras, nuestro tono o nuestros gestos ha sido siempre clave para el trabajo en grupo, y cuando es necesario construir relaciones de confianza. Los humanos somos seres sociales y vivir rodeados de otras personas a lo largo de milenios nos ha permitido desarrollar esta inteligencia emocional, esta capacidad de empatía en la que siempre llevaremos ventaja sobre las máquinas. Pensamiento abierto y adaptativo: es la habilidad de pensar y encontrar soluciones y respuestas más allá de lo memorizado o resumido en reglas. Resultan importantes la intuición, el ensayo-error, la flexibilidad, la observación y cambio, etc. Nos dirigimos hacia modelos en los que la creatividad humana, la flexibilidad, la capacidad de aprendizaje y la mejora constante serán esenciales. Interculturalidad: Los trabajadores de un mundo globalizado deben ser capaces de operar independientemente de la ubicación física de su puesto de trabajo. Esto se resume en competencias lingüísticas y capacidad de adaptación a nuevos entornos y circunstancias. Pero más allá de la geografía, la diversidad, los grupos de trabajo donde se unen personas de distintas culturas, edades, especialidades o estilos de trabajo y de pensamiento distintos han demostrado ser potentes aceleradores de la innovación. Por ello las empresas harán de la diversidad una de sus apuestas principales, con equipos capaces de identificar y compartir objetivos, prioridades y valores que trasciendan sus diferencias y permitan trabajar de forma conjunta con gran efectividad. Pensamiento computacional: La gran cantidad de datos que tenemos a nuestra disposición hará que sean necesarios nuevos roles capaces de dar sentido a esa información por medio de simulaciones, análisis estadístico o habilidades de razonamiento cuantiativo. Al mismo tiempo los trabajadores deberán comprender que los modelos no son la realidad, sino aproximaciones tan buenas como buenos sean los datos con los que se han entrenado. Al mismo tiempo los trabajadores deben ser capaces de seguir siendo operativos y poder tomar decisiones aunque no haya un algoritmo detrás para justificarlas. Manejo de los nuevos medios de comunicación: los nuevos trabajadores deben ser capaces de manejar distintos formatos de comunicación audiovisual para presentar la información de forma atractiva y persuasiva. Pensamiento transdisciplinar: la industria demanda, cada vez más, graduados educados de forma interdisciplinar y orientados a la práctica. Capacidad de representar y diseñar tareas y procesos de trabajo orientados a lograr los resultados deseados. Gestión del exceso de información: La velocidad a que la que se genera la información y los diferentes canales por los que fluye incesantemente hacen de la capacidad de filtrar información y enfocarse en lo relevante una de las habilidades fundamentales para los trabajadores del futuro. (Técnicas de documentalismo, curación de contenidos, productividad personal, etc.) Colaboración, sobre todo virtual. La abundancia y complejidad del conocimiento necesario en la actualidad para desarrollar determinados proyectos complejos, hacen que las habilidades para colaborar se vuelvan imprescindibles. Las competencias sociales, por tanto, se convierten en esenciales: cooperación interdisciplinar, gestión de proyectos, habilidades de comunicación, competencia organizacional y liderazgo, y toma de decisiones. Para prepararse para el trabajo del futuro, las personas tendrán que ser capaces de adaptarse a cambios continuos tanto en las estructuras organizacionales, como en cuanto a los conocimientos, habilidades y experiencias que serán necesarias para desempeñar esos trabajos. Para ello, la cualidad esencial de un trabajador, será la disposición a aprender durante toda la vida, lo que se conoce como "Long life learner". Por su parte, las empresas también tendrán que alerta a los cambios de escenario y ser capaces de adaptar la planificación de su fuerza de trabajo y estrategias de negocio para que estén alineadas con requerimientos futuros. Estos significa un importante desafío para los departamentos de Recursos Humanos que tendrán deberán asegurarse de que los trabajadores tienen los conocimientos y habilidades necesarias y para ello habrán de colaborar estrechamente con universidades y otros proveedores de formación superior. Por otra parte, los gobiernos tendrán la responsabilidad de promover políticas que den la necesaria prioridad a una educación que prepare a los ciudadanos par aun futuro más sostenible, como acaba de anunciar recientemente el gobierno francés. También puedes seguirnos en nuestras redes sociales: @Telefonica, @LUCA_D3, @ElevenPaths
17 de mayo de 2018
AI & Data
Descarga tu ebook. Economía de los datos: La riqueza 4.0
El mes pasado, Fundación Telefónica, en colaboración con Analistas Financieros Internacionales (Afi), Ariel y la Editorial Planeta, publicaron el libro “ Economía de los datos. Riqueza 4.0” que hoy nosotros, desde LUCA, os invitamos a conocer y descargar de nuestro blog. Hacer click en el enlace para descargar el libro en formato pdf Nos hallamos en los inicios de una auténtica revolución industrial, sustentada en un elemento mucho más etéreo que los que sirvieron de base a las revoluciones anteriores, como la máquina de vapor, la electricidad y el petróleo o las TIC. En este caso, la base son los datos. Datos que generamos, que almacenamos, que transmitimos, que analizamos, que nos describen, que nos geolocalizan y que desvelan nuestros gustos y preferencias, nuestra opinión e incluso las opiniones de nuestros familiares y amigos. Sin embargo, aunque los datos hayan pasado a ser el insumo básico y clave en la Economía del Conocimiento, no son en si mismos generadores de valor: requieren un proceso de refinamiento, procesamiento y análisis que les dote de utilidad A lo largo de 179 páginas, y 9 capítulos, los autores, Emilio Ontiveros, Fundador y presidente de Afi Analistas Financieros Internacionales y catedrático de Economía de la Empresa de la Universidad Autónoma de Madrid; Diego Vizcaíno, Socio director del área de Economía Aplicada de Afi Analistas Financieros Internacionales, las Consultoras del área de Economía Aplicada de Afi Analistas Financieros Internacionales Verónica López Sabater y María Romero, y Alejandro Llorente, Cofundador y data scientist de Piplerlab S.L. y profesor en el máster «Data Science &Big Data» de Afi Escuela de Finanzas, nos invitan a explorar y familiarizarnos con los elementos de uno de los principales vectores de crecimiento del siglo XXI, la Economía de los datos. El primer bloque, la Introducción, consta de 3 capítulos a lo largo de los cuales los expertos de Afi nos hablan de temas como la definición de los conceptos Economía de los Datos, Big Data, la regulación de los datos en el mundo, y la adopción del Big Data y los obstáculos que afronta en España y América Latina. El segundo bloque, Mercados y oportunidades, consta de otros 3 capítulos en los que se trata, entre otros aspectos, de los distintos agentes involucrados en la cadena de generación del valor del dato: empresas generadoras de datos, empresas tecnológicas, compañías de servicios analíticos, reguladores y entidades del ámbito académico; de las nuevas oportunidades y modelos de negocio que surgen y su encaje en la economía actual; así como el auge de nuevas profesiones relacionadas con estos modelos. Por último, en el tercer bloque, Principales retos de la Economía de los Datos, se abordan los retos que afronta esta nueva economía, entre los que destacan la titularidad y la residencia de los datos; la privacidad, la soberanía, la seguridad y la transparencia, y, por último, la medición de su contribución a la economía. La Economía de los Datos está favoreciendo el surgimiento de nuevos modelos de negocio —tanto locales como globales— que están reconfigurando la estructura de muchos mercados y sectores productivos, permitiendo aumentar la eficiencia en la producción y, sobre todo, en la distribución de bienes y servicios, ya sean estos tradicionales o nuevos. Innovación y transparencia están desdibujando las barreras de entrada en ciertos mercados que se basaban en la información, fomentando una reorganización de los negocios tradicionales al aparecer nuevas empresas que impulsan una mayor competencia en el mercado. Este libro os ayudará a comprender mejor las oportunidades, los riesgos y los retos de la nueva economía. ¡No dejéis de leerlo!. No te pierdas ninguno de nuestros post. Suscríbete a LUCA Data Speaks. También puedes seguirnos en nuestras redes sociales: @Telefonica , @LUCA_D3 , @ElevenPaths
16 de mayo de 2018
AI & Data
El Machine Learning y sus paradojas: ¿Me acabará sustituyendo una máquina?
Cuando hablamos de Inteligencia Artificial, y de Machine Learning, solemos tratar temas técnicos. Hablamos de algoritmos, de modelos, de herramientas. Pero seguro que alguna vez te has parado a pensar en alguna de las paradojas que nos plantea intentar trasladar, de alguna forma, la inteligencia humana a las máquinas, No nos vamos a meter en disquisiciones filosóficas de alto nivel, porque no es ese nuestro objetivo, sino ver cómo estas paradojas tienen un reflejo en nuestra vida cotidiana. Es evidente cómo los avances tecnológicos han permitido que las máquinas realicen muchas tareas que antes sólo podía llevar a cabo una persona. Este hecho ha producido un desplazamiento de la economía desde un enfoque basado en el capital humano hacia otro basado en un capital cada día más tecnológico. Y esto genera una gran inquietud en torno a la pregunta: ¿Desplazarán las máquinas a las personas en la economía del futuro? Esta cuestión preocupa a muchas y diferentes personas que ven cómo los avances en inteligencia artificial se traducen en máquinas ganando a humanos en juegos de gran carga cognitiva como el ajedrez, o Jeopardy, o en coches, autobuses,incluso trenes que puedan llegar a circular sin conductor. Pero si nos paramos a pensar en las cosas que hacen bien las máquinas, y en las que hacen "no tan bien", nos encontraremos con la primera paradoja. La paradoja de Moravec. En los años 80, Hans Moravec, Rodney Brooks y Marvin Minsky. investigadores en el campo de la inteligencia artificial y la robótica plantearon lo que se conoce como paradoja de Moravec. Esta paradoja plasma el contrasentido inherente al hecho de que actividades que implican un alto nivel de razonamiento, como jugar al ajedrez, o hacer un test de inteligencia, requieran muy poca carga computacional, mientras que otras actividades de bajo nivel cognitivo, como identificar un rostro conocido, requieran una enorme cantidad de estos recursos. En palabras del propio Moravec: Es relativamente fácil conseguir que una máquina muestre el rendimiento de un adulto en un test de inteligencia. o jugando a las damas; sin embargo, es mucho más difícil o incluso imposible que alcance el nivel de habilidad de un niño de un año, cuando se trata de percepción y movilidad. Claro está que el abaratamiento y crecimiento exponencial de los recursos de computación disponibles puede hacer que hasta esas habilidades sensomotoras lleguen ser realizadas por una IA en un futuro. Sin embargo, aquí enlazamos aquí con otra paradoja, anterior a la de Moravec, pero muy estrechamente relacionada con ella: la paradoja de Polanyi. La paradoja de Polanyi Michael Polanyi fue un erudito y filósofo anglo-húngaro que ya en 1966 planteó en su libro "The Tacit Dimension", que el conocimiento humano se basa, en gran parte, en reglas y habilidades que nos han sido transmitidas por la cultura, tradición, evolución etc, y que, por tanto, no somos siempre del todo conscientes de éste. Definió lo que se llama el "conocimiento tácito", y lo resumió en esta frase: We can know more than we can tell = Sabemos más de lo que podemos contar Lo que quería decir con esto Polanyi, es que muchas de las tareas que realizamos se basan en un conocimiento tácito, intuitivo, y que por tanto, son muy difíciles de codificar o automatizar. ¿Por qué? Porque nosotros mismos no sabemos explicar cómo lo hacemos. Por ejemplo, ¿has intentado alguna vez explicar a un niño cómo saltar a la comba? ¿En qué momento tiene que entrar para no pisar la cuerda ni enredarse con ella?. Parece sencillo, ¿verdad?. Pues no lo es. Imagina ahora cómo se lo tendrías que explicar a un robot. La paradoja de Polanyi es de 1966, y no es verdaderamente una paradoja, ya que lo que refleja, más que una contradicción, es una dificultad, una barrera a superar en el desarrollo de la inteligencia artificial y la automatización. Y desde 1966 ha llovido mucho. Han tenido lugar importantes avances tecnológicos y se han probado distintas estrategias para intentar superar esta dificultad. ¿Cómo "Esquivar" la paradoja de Polanyi? Ya hemos visto que la paradoja de Polanyi muestra la dificultad de automatizar una tarea que a nosotros nos resulta sencillo realizar, pero difícil de explicar. Ha habido dos estrategias principales de superar esta dificultad. Controlar el entorno, de forma que a una máquina le resulte más fácil realizar una tarea. Las máquinas funcionan con rutinas relativamente simples, pero les cuesta adaptarse a los cambios de entorno. Si simplifico el entorno, facilito la automatización. Un ejemplo sencillo de "simplificación del entorno" pueden ser las vías del tren. El tren no tiene que superar obstáculos del terreno, tan sólo circular sobre las vías. Otro ejemplo interesante son los robots Kiva que emplea Amazon para sus almacenes. En el vídeo vemos cómo se ha simplificado el entorno del almacén para que los robots puedan transportar las estanterías que contienen los productos. Sin embargo, son trabajadores humanos los que cargan los productos en estas estanterías, o bien eligen de cada una de ellas el producto que hay que añadir a un determinado pedido. [embed]https://youtu.be/3UxZDJ1HiPE[/embed] La segunda estrategia, consiste en intentar "enseñar" a la máquina a tomar decisiones como lo haría un experto humano. ¿Cómo?. Frente a las estrategias de programación "top-down" (de las reglas a los resultados), pasamos a las estrategias "bottom-up" propias del Machine Learning (a partir de los datos de ejemplo, entrenamos a las máquinas para inferir las reglas). En la nueva economía basada en los datos, podemos encontrar ejemplos de aplicación del ML prácticamente por todas partes. Sistemas de recomendación, reconocimiento de imágenes, texto o sonidos etc. Mientras la primera estrategia trataba de adaptar el entorno a las limitaciones de la máquina, en esta segunda, es la máquina la que se adapta a las dificultades del entorno, "aprende" de él, entrenándose por medio de los datos. Este desarrollo ha sido posible por la mayor disponibilidad de datos de entrenamiento y capacidad de procesamiento de los sistemas. Sin embargo, aunque las máquinas puedan realizar tareas que son imposibles para los humanos, como procesar ingentes cantidades de datos para ,por ejemplo, correlacionar nuestro genoma con el de otras especies, o determinadas variables biológicas con fármacos que puedan curar determinada enfermedad, todo esto no es más que una pequeña parte de lo que puede llamarse inteligencia humana real. ¿Es posible dar a una máquina la capacidad de pensar... ... como pretendían John McCarthy, Marvin Minsky y los primeros creadores de la inteligencia artificial hace ya más de 60 años? Según dijo Yann Le Cun, director de IA de Facebook en una conferencia sobre el Futuro del Trabajo que tuvo lugar en Novienbre del 2017 en el MIT, que las máquinas aún están lejos de llegar a la "esencia de la inteligencia" que consiste en: "La habilidad para comprender el mundo físico lo suficientemente bien para poder hacer predicciones sencillas sobre aspectos básicos de éste como observar un objeto y usar conocimientos anteriores para poder inferir que otras cosas tienen que ser ciertas" Otra forma de decirlo es decir que: Las máquinas no tienen sentido común En conclusión. Una máquina que gana al campeón mundial de ajedrez, o de Go, puede "mostrar un comportamiento inteligente", pero no es inteligente. Gana analizando datos para buscar patrones, pero no tiene ni idea de lo que está haciendo. Le daría igual jugar al Go que a cualquier otro juego. Le falta el sentido común y la habilidad de usar de forma flexible ese conocimiento tácito, basado en la experiencia, la intuición y la cultura y el instinto, que sí podemos atribuir a una inteligencia humana y que permitiría, por ejemplo, inferir en un texto un mensaje que no está explicitado con determinadas palabras. Por tanto, todos aquellos trabajos que requieran creatividad, empatía, interacción social, una intensa carga cognitiva, sentido común, flexibilidad física o cualquier combinación de éstas características, difícilmente podrán ser sustituidos por una máquina. Sí lo serán aquellas tareas rutinarias y fácilmente "codificables", pero para aquellas que requieren habilidades para resolución de problemas, adaptabilidad y creatividad, los humanos seguirán llevando ventaja. También puedes seguirnos en nuestras redes sociales: @Telefonica , @LUCA_D3 , @ElevenPaths
10 de mayo de 2018
AI & Data
Nuestros favoritos de Abril: 5 post del sector que no puedes perderte
Empezamos un recopilatorio mensual de los 5 post que nos han parecido más interesantes sobre Data Science, Big Data, Machine Learning e IA publicados este mes en la web. Todo tipo de temas que hemos encontrado en nuestros blogs favoritos. También incluimos el top post de Abril en el blog de LUCA. ¿Son los que más te interesaron también a ti? Nuestros favoritos en la red Los cursos de Machine Learning de Universidad de Standford, despiertan un gran interés por su gran calidad. Cada año, al acabar el curso, la Universidad publica los proyectos en los que han trabajado sus alumnos. En Abril se publicó una lista muy interesante de trabajos sobre procesamiento de lenguaje natural (NPL). Proyectos tan interesantes como el ganador, que consistía en un sintetizador de voz que genera audio a partir de una entrada de texto, pero también había otros más "exóticos" como un traductor automático de lenguaje esquimal a inglés, o un proyecto para crear Memes con redes neuronales. Todos los proyectos aquí. Este interesante artículo del MIT Technology Review se analizan las 6 tecnologías emergentes que podría convertir el 2021 en un año histórico. Coches autónomos, realidad virtual como entorno social, pollo cultivado en laboratorio o incluso la píldora masculina son algunos de los cambios que pueden hacerse realidad en tan sólo tres años. Por ahora, el precio de un kilo de este "pollo cultivado" sale un poco caro (¡unos 17.000€), pero la empresa que trabaja en este proyecto, Memphis Meat, planea poder sacarlo a la venta en 2021. Y cómo no hablar del escándalo cuando salió a la luz el turbio manejo de los datos de usuarios de Facebook por parte de la empresa Cambridge Analytica. Este artículo del periódico "The New York Times" nos cuenta cómo, a través de un cuestionario psicológico ubicado en una plataforma de trabajo online, los usuarios daban acceso a esta aplicación a su cuenta de Facebook y, sin saberlo, todos sus datos personales, de ubicación o listas de páginas a las que habían dado un "Me gusta" acababan en una enorme base de datos de Cambridge Analytica. How Artificial Intelligence is making energy smarter and cleaner. En este post, Mary Catherine O'Connor nos plantea cómo la Inteligencia Artificial va incorporándose cada día a más aspectos de nuestra vida, desde pequeños dispositivos, hasta nuestros vehículos. Pero también juega un importante papel en cómo la sociedad se provee de recursos vitales como e l agua, la energía y los alimentos. Así, analiza cómo la IA se está usando para conseguir que la búsqueda y explotación de estos recursos sera más sostenible, tanto desde el punto de vista medioambiental, como financiero. Por último, este mes, un link interesante y atemporal. Una interesante guía visual e interactiva de IA para ejecutivos de McKinsey&Company El favorito de nuestros lectores en LUCA Data Speaks en Abril. Después de nuestra selección de las noticias más interesantes sobre Machine Learning, Inteligencia Artificial y Big Data que hemos encontrado en la red en Abril, os dejamos el post más leído por nuestros lectores en el mes de Abril. Python para todos (3): ScyPy, NumPy, Pandas ...¿Qué librerías necesitamos? ¿Es el que más te ha gustado a ti también? No te pierdas ninguno de nuestros post. Suscríbete a LUCA Data Speaks. También puedes seguirnos en nuestras redes sociales: @Telefonica , @LUCA_D3 , @ElevenPaths
4 de mayo de 2018
AI & Data
¿La clave del éxito del Machine Learning? Datos de calidad
No hacemos más que hablar del uso cada día más extendido del Machine Learning y otras tecnologías de Inteligencia artificial que hacen muchos procesos más eficientes y rentables. Sin embargo, no se habla tanto del enemigo número uno del Machine Learning: la falta de datos o su mala calidad. Siempre que hablamos de analíticas, tenemos que tener presente que la calidad de los resultados va a ser directamente proporcional a la calidad de los datos de partida. Y si pasamos a hablar de Machine Learning, la calidad de los datos todavía cobra mayor relevancia. No sólo respecto a los datos históricos que usamos para crear el modelo, sino también, respecto a los datos de entrada con los que alimentamos el modelo para hacer predicciones en las que basar decisiones futuras. ¿Y cómo sabemos si nuestros datos son buenos o no? Hay dos enfoques posibles para valorar la calidad de los datos. El primero, tiene que ver con que sean correctos, completos, estén bien etiquetados etc. Pero hay otro factor de vital importancia. ¿Puedo encontrar la respuesta a mi problema en este conjunto de datos?¿Están esos datos libres de cualquier tipo de sesgo?. Cuando trabajamos con analíticas Machine Learning, ambos enfoques son fundamentales.Según Harvard Business Review, sólo el 3% de los datos de las empresas reúne los requisitos de calidad mínimos. Esto se traduce en incrementos de costes, pérdidas de tiempo, peores decisiones y clientes molestos o, aún peor, enfadados. En definitiva, genera un problema de credibilidad de los datos. Factores que afectan a la calidad de los datos Los factores que afectan a la calidad de los datos son múltiples, y con distintos orígenes. Pueden ser instrumentos de medida mal calibrados, errores humanos, procesos de ingesta excesivamente complejos o, sencillamente, que no se ha entendido bien el problema y los datos que se han recogido no son los adecuados para resolverlo. Esta mala calidad de los datos es, origen de gran parte de los quebraderos de cabeza de los científicos de datos, siendo la tarea que más tiempo les lleva (puede llegar a consumir un 80% del tiempo del proyecto) y menos les gusta. Se puede ver un ejemplo del tipo de tareas implicadas en este trabajo en nuestra serie del Blog dedicada a la depuración de datos: AI OF THINGS Tus datos más limpios, casi sin frotar 13 de junio de 2017 A pesar de todo el tiempo y el esfuerzo dedicado a las tareas de limpieza y depuración de los datos, otros aspectos como la existencia de sesgos en la información, y un mal uso de un modelo bien entrenado, pueden afectar seriamente a los resultados. Sesgo en los datos En este vídeo, Google, que recibió tantas críticas por el sesgo racista de su algoritmo de detección de imágenes (en realidad el sesgo racista no lo tenía el algoritmo, sino los datos con los que había sido entrenado), nos explica de forma muy clara qué es el sesgo y cómo puede influir sobre una aplicación Machine Learning. ¿Cómo evitar problemas con los datos? Por ello, para evitar en la medida de los posible estos problemas, se hace necesario: Tener claros los objetivos y si tenemos los datos necesarios para conseguirlos. Dedicar el tiempo necesario para garantizar la calidad de los datos y tratar de eliminar las causas de error desde la raíz. Garantizar la trazabilidad de los datos en todo momento, manteniendo una copia de los datos de entrenamiento originales y los pasos dados en su procesamiento. Será muy útil para introducir mejoras en el proceso, así como para detectar posibles sesgos o limitaciones. Una vez productivizado el modelo, asegurarse de que exista un responsable que garantice el cumplimiento de los estándares de calidad de los datos de entrada del modelo. Efectuar auditorías independientes de calidad de forma regular A pesar de todos estos cuidados, los datos nunca son perfectos. Pero si queremos el que Machine Learning sea como la “piedra filosofal” que convierta nuestros datos en oro, necesitaremos, no sólo datos, sino datos buenos (¡y cuantos más mejor!).
25 de abril de 2018
AI & Data
Python para todos (5): Termina tu primer experimento de Machine Learning con Python
Llegamos por fin a la última parte del experimento de Machine Learning con Python para todos los públicos. Hemos ido paso a paso, a lo largo de 5 post, aclarando dudas, aprendiendo sobre la marcha, sin prisa, pero sin pausa. En este último post seleccionamos los algoritmos, construimos el modelo, y lo ponemos a prueba con el dataset de validación. Hemos construido un buen modelo, y lo mejor de todo, le hemos perdido miedo a Python. Así que...¡ a seguir aprendiendo! Los pasos que vamos a dar a partir de ahora son los siguientes: Carga de los datos y módulos/librerías necesarias para este ejemplo. Exploración de los datos . Evaluación de diferentes algoritmos para seleccionar el modelos más adecuado a este caso. Aplicación del modelo para hacer predicciones a partir de lo "aprendido". Para que no sea demasiado largo, en este 4º post realizaremos los dos primeros pasos y, en el siguiente y último (¡todo llega!), el tercero y el cuarto. 3. Selección del algoritmos. Ha llegado el momento de crear modelos a partir de los datos conocidos y estimar su precisión sobre datos nuevos. Para ello vamos a dar los siguientes pasos.: Separaremos una parte de los datos para crear un dataset de validación Usaremos validación cruzada de 10 interacciones para estimar la precisión Construiremos 5 modelos diferentes para predecir, a partir de las medidas de las flores recogidas en el dataset, a qué especie pertenece una flor nueva Seleccionaremos el mejor modelo 3.1 Creación del conjunto de datos de validación. ¿Cómo sabemos si nuestro modelo es bueno?. Para conocer qué tipo de métricas podemos usar para evaluar la "bondad" de un modelo basado en Machine Learning, os recomendamos leer este post que publicamos recientemente sobre la Matriz de Confusión. Usaremos métodos estadísticos para estimar la precisión de los modelos, pero también tendremos que evaluarlos sobre datos "nuevos". Para ello, tal y como hicimos en un experimento anterior de Machine Learning, esta vez en Azure Machine Learning Studio, reservaremos un 20% de los datos del dataset original. Así, aplicándolo a este conjunto de validación, podremos comprobar cómo funciona el modelo que hemos generado entrenando, el algoritmo que elijamos en este caso, con el 80% restante. Este procedimiento es lo que se conoce como método de retención (holdout method). Con el siguiente código, que, como hemos hecho hasta ahora podemos teclear o copiar y pegar en nuestro Jupyter Notebook, separamos los datos en los conjuntos de entrenamiento X_train, Y_train, y los de validación X_validation, Y_validation. Este método resulta práctico porque es muy rápido a la hora de computar. Sin embargo, no es muy preciso, ya que los resultados varían mucho si elegimos datos de entrenamiento diferentes. Debido a estas carencias surgió el concepto de validación cruzada. 3.2 Validación cruzada El objetivo de la validación cruzada o cross-validation es garantizar que los resultados que obtengamos sean independientes de la partición entre datos de entrenamiento y datos de validación, y por eso se usa mucho en para validar modelos generados en proyectos de IA. Consiste en repetir y calcular la media aritmética de las medidas de evaluación que obtenemos sobre diferentes particiones. En este caso, vamos a utilizar un proceso de validación cruzada con 10 interacciones. Eso significa que nuestro conjunto de datos de entrenamiento, se divide en 10 partes, entrena en 9, valida en 1 y repite el proceso 10 veces. En la imagen podemos ver un ejemplo muy visual de cómo sería el proceso con 4 interacciones. Figura 1: Validación Cruzada, (By Joan.domenech91 CC BY-SA 3.0) Para evaluar el modelo, elegimos para la variable de estimación scoring la métrica accuracy (precisión), que representa el ratio entre el número de instancias que el modelo ha predicho correctamente, frente al número total de instancias del dataset, multiplicado por 100 para dar un resultado porcentual. Para ello, añadimos el siguiente código: 3.3 Construcción de los modelos Como a priori no sabemos qué algoritmos pueden funcionar mejor para este problema, vamos a probar con 6 diferentes, tanto lineales (LR, LDA), como no lineales (KNN, CART, NB y SVM). Las gráficas iniciales ya indican que podemor ir por buen camino, porque que se aprecia que algunas clases van a ser linealmente separables en alguna dimensión. Vamos a evaluar los siguientes algoritmos: Regresión logística (LR) Análisis del Discriminante lineal (LDA) K- Vecinos más cercanos (KNN) Árboles de clasificación y regresión (CART) Gaussiana Naive Bayes (NB) Máquinas de vectores de soporte (SVM) Antes de cada ejecución resetearemos el valor inicial (seed) para asegurarnos que la evaluación de cada algoritmo se realiza usando el mismo conjunto de datos (data split), para asegurarnos de que los resultados sean directamente comparables. Añadimos, por tanto, el siguiente código: 3.4 Elegimos el modelo que funciona mejor Si ejecutamos las celdas (Cell/Run Cells) podemos observar los estimadores para cada modelo. De esta forma, los podemos comparar y elegir el mejor. Si observamos los resultados obtenidos, podemos ver que el modelo que da un mayor valor de precisión es KNN (98%) Figura 2: Resultados de precisión de los distintos algoritmos. También podemos hacer una gráfica con los resultados de evaluación de los modelos y comparar su distribución y la precisión media para cada modelo (ya que se cada algoritmo se evalúa en 10 interacciones por el tipo de validación cruzada que hemos elegido). Para ello, añadimos el siguiente código: Obtenemos como resultado: Figura 3: Box and Whisker plots de comparación de algoritmos. En el diagrama de caja y bigotes se aprecia claramente cómo la precisión para muchas de las muestras en los modelos KNN, NB y SVM llega a ser del 100%, mientras que el modelo que ofrece menor precisión es la regresión lineal LR. 4. Aplicamos el modelo para hacer predicciones. Ha llegado el momento de poner a prueba el modelo creado a partir de los datos de entrenamiento. Para ello, lo que hacemos es aplicarlo a esa parte del dataset original que separamos al principio como dataset de validación. Como tenemos los valores correctos de clasificación, y no se han usado en el entrenamiento del modelo, si comparamos los valores reales con predichos por el modelo sabremos si el modelo es bueno o no. Para ello, aplicamos el modelo elegido (el que nos haya dado mayor precisión en el paso anterior) directamente a éste dataset, y resumimos los resultados con un valor de precisión final (final validation score), una matriz de confusión y un informe de clasificación. Para aplicar el modelo basado en el algoritmo SVM, no tenemos más que ejecutar el siguiente código: Obtenemos algo similar a esto: Figura 4: Evaluación del algoritmo sobre el dataset de validación. Como vemos, la precisión es 0.93, un 93%, un dato muy bueno. La matriz de confusión, por su parte, nos indica el número de puntos para los cuales la predicción del modelo ha sido correcta (valores en la diagonal: 7+10+11=28), y los elementos fuera la diagonal son los errores de predicción (2). Por tanto, podemos concluir que es un buen modelo que podemos aplicar con tranquilidad a un nuevo dataset. Hemos basado el modelo en el algoritmo SVM, pero los valores de precisión para KNN también son muy buenos. ¿Os animáis a hacer éste último paso aplicando este otro algoritmo? Con este paso, podríamos dar por terminado nuestro primer experimento de Machine Learning con Python. Nuestra recomendación: vuelve a hacer todo el experimento, toma nota de las dudas que te surjan, intenta buscar respuestas por tu cuenta, prueba a hacer pequeños cambios en el código, como el último que hemos propuesto y.... En plataformas como Coursera, edX, DataCamp, o CodeAcademy puedes encontrar cursos gratuitos para seguir avanzando. ¡No dejes de aprender!. Todos los post de este tutorial, aquí: Introducción: Machine Learning con Python para todos los públicos. Python para todos (1): Instalación del entorno Anaconda. Python para todos (2): ¿Qué son los Jupiter Notebook?. Creamos nuestro primer notebook y practicamos algunos comandos fáciles. Python para todos (3): ¿Qué son las librerías?. Preparamos el entorno. Python para todos (4): Empezamos el experimento propiamente. Carga de datos, análisis exploratorio (dimensiones del dataset, estadísticas, visualización etc) Python para todos (5) Final: Creación de los modelos y estimación de su precisión Agradecimientos a Jason Brownie, autor de experimento original en el que se basa esta serie. También puedes seguirnos en nuestras redes sociales: @Telefonica, @LUCA_D3, @ElevenPaths
17 de abril de 2018
AI & Data
Python para todos (4): Carga de datos, análisis exploratorio y visualización
Ya tenemos el entorno instalado, hemos practicado un poco con algunos comandos, y hemos aprendido qué son las librerías y cuáles son las más importantes. Ha llegado el momento de empezar nuestro experimento predictivo. Trabajaremos sobre uno de los datasets más recomendados para principiantes, el de clasificación de lirios (iris dataset). Este conjunto de datos es muy práctico porque tiene un tamaño muy manejable (sólo tiene 4 atributos y 150 filas), los atributos son numéricos, no es preciso hacer ningún cambio de escala o de unidades, y permite una aproximación sencilla (como problema de clasificación), y otra más avanzada (como problema clasificación multi-clase). Este dataset es un buen ejemplo para explicar la diferencia entre aprendizaje supervisado y no supervisado. Los pasos que vamos a dar a partir de ahora son los siguientes: Carga de los datos y módulos/librerías necesarias para este ejemplo. Exploración de los datos . Evaluación de diferentes algoritmos para seleccionar el modelos más adecuado a este caso. Aplicación del modelo para hacer predicciones a partir de lo "aprendido". Para que no sea demasiado largo, en este 4º post realizaremos los dos primeros pasos y, en el siguiente y último (¡todo llega!), el tercero y el cuarto. 1. Carga de los datos/librerías/módulos. Ya vimos en el post anterior la gran variedad de librerías que tenemos disponibles. En cada una de ellas, a su vez, hay módulos distintos. Pero para poder utilizar, tanto las librerías como los módulos, hay que importarlos explícitamente (salvo la librería estándar). En el ejemplo anterior importamos algunas librerías de ejemplo para comprobar las versiones. Ahora, importaremos unos módulos que necesitamos para este experimento en particular. Crea un nuevo Jupyter Notebook para el experimento. Podemos llamarle "Clasificación de Lirios". Para cargar las librerías y módulos que necesitamos, teclea o, copia y pega este código: https://gist.github.com/PalomaRS/cc3ca3c0e8a4a9949a4db5403cde9bd3#file-cargamodulos-ipynb A continuación, cargaremos los datos. Lo vamos a hacer directamente desde el repositorio de Machine Learning UCI . Para ello usamos la librería pandas, que acabamos de cargar, y que también nos será útil para el análisis exploratorio de los datos, porque dispone de herramientas de visualización de datos y de estadística descriptiva. Tan sólo necesitamos conocer la URL del dataset y especificar los nombres de cada columna al cargar los datos ('sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class'). Para cargar los datos, teclea o, copia y pega este código: https://gist.github.com/PalomaRS/b5f2ad393bea0e438a60ad9d6340d71b#file-cargadataset-ipynb También puedes descargar el csv del dataset a tu directorio de trabajo y sustituir la URL por el nombre del fichero local. 2. Exploración de los datos En esta fase vamos a fijarnos en temas como la dimensión de los datos, qué aspecto tienen, vamos a hacer un pequeño análisis estadístico de sus atributos y vamos a agruparlos por clases. Cada una de estas acciones no reviste mayor dificultad que la ejecución de un comando que, además podrás reutilizar una y otra vez en proyectos futuros. En particular, trabajaremos con la función shape, que nos dará las dimensiones del dataset, la función head, que nos mostrará los datos (le indicaremos el número de registros que queremos que nos muestre), y la función describe, que nos dará valores estadísticos sobre el dataset. Nuestra recomendación es ir probando uno a uno cada uno de los comandos que encontraréis a continuación. Podéis teclearlos directamente o copiarlos y pegarlos en vuestro Jupyter Notebook. (Usad la barra de desplazamiento vertical para llegar al final de la celda). Cada vez que agreguéis una función, ejecutad la celda usando (Menú Cell/Run Cells). https://gist.github.com/PalomaRS/28bc5f7faf918ac7924ef23bc47e6561#file-exploracion-ipynb Como resultado, obtendréis algo parecido a esto: Figura 2: Resultados de aplicar los comandos de exploración del dataset. Así, vemos que este dataset tiene 150 instancias con 5 atributos, vemos la lista de los 20 primeros registros, y vemos distintos valores de longitud y anchura de los pétalos y sépalos de la flor que, en este caso, corresponden a la clase Iris-setosa. Por último, podemos ver el número de registros que hay en el dataset, la media, la desviación estándar, los valores máximo y mínimo de cada atributo y algunos porcentajes. Pasamos a visualizar los datos. Podemos realizar gráficos de una variable, que nos ayudarán a entender mejor cada atributo individual, o gráficos multivariable, que permiten analizar las relaciones entre atributos. Es nuestro primer experimento, y no nos queremos complicar demasiado, así que probaremos únicamente los primeros. Como las variables de entrada son numéricas, podemos crear un diagrama de caja y bigotes (box and whisker plot), que nos dará una idea mucho más clara de la distribución de los atributos de entrada (longitud y anchura de pétalos y sépalos). Para ello, tan sólo tenemos que teclear o copiar y pegar este código. https://gist.github.com/PalomaRS/6a9702ce4cc13f28c49a1e41508af73a#file-caja_bigotes-ipynb Al ejecutar esta celda, obtenemos este resultado. Figura 3: Box yWhisker plots. También podemos crear un histograma de cada atributo o variable para hacernos una idea de qué tipo de distribución siguen. Para ello, no tenemos más que agregar en nuestro Jupyther Notebook (como en el ejemplo anterior, mejor de uno en uno, para ver mejor la ejecución) los siguientes comandos. https://gist.github.com/PalomaRS/35e187ab4aeb40be83f462183bf2d663#file-histograma-ipynb Ejecutamos la celda, y obtenemos este resultado. A primera vista, podemos ver que las variables relacionadas con los sépalos, parecen seguir una distribución Gaussiana. Esto es muy útil porque podemos usar algoritmos que saquen partido de las propiedades de este grupo de distribuciones. Figura 4: Histogramas. Ya casi estamos terminado. En el siguiente post finalizaremos nuestro primer experimento en Machine Learning con Python. Evaluaremos diferentes algoritmos sobre un conjunto de datos de validación, y elegiremos el que nos ofrezca mejores métricas de precisión para elaborar nuestro modelo predictivo. Y, por último, usaremos el modelo. Todos los post de este tutorial, aquí: Introducción: Machine Learning con Python para todos los públicos. Python para todos (1): Instalación del entorno Anaconda. Python para todos (2): ¿Qué son los Jupiter Notebook?. Creamos nuestro primer notebook y practicamos algunos comandos fáciles. Python para todos (3): ¿Qué son las librerías?. Preparamos el entorno. Python para todos (4): Empezamos el experimento propiamente. Carga de datos, análisis exploratorio (dimensiones del dataset, estadísticas, visualización etc) Python para todos (5) Final: Creación de los modelos y estimación de su precisión
10 de abril de 2018
AI & Data
Python para todos (3): ScyPy, NumPy, Pandas ...¿Qué librerías necesitamos?
Damos un paso más en nuestro aprendizaje de Python aprendiendo lo que son los módulos, y, en particular las librerías. Veremos para qué sirven algunas de ellas y aprenderemos a importarlas y utilizarlas. ¿Qué son los módulos? Los módulos son la forma que tiene Python de almacenar “definiciones”, es decir, instrucciones o variables, en archivos de extensión .py. La ventaja principal de separar un programa en módulos es, que podremos reutilizarlos en otros programas o módulos, sin tener que preocuparnos por el nombre de las variables globales. Para ello, como veremos más adelante, será necesario importar los módulos que se quieran utilizar en cada caso. Python ofrece una colección de módulos estándar que podemos usar como base para un nuevo programa o como ejemplos para empezar a aprender. Los módulos se organizan en paquetes. Son carpetas que contienen otros módulos , y un archivo de inicio llamado __init__.py. Los paquetes permiten estructurar los espacios de nombres de Python usando lo que se conoce como “nombres de módulos con puntos”. Lo entenderemos mucho mejor con un ejemplo. El nombre de módulo A.B designa un submódulo llamado B en un paquete llamado A. Esta nomenclatura evita que los autores de paquetes de muchos módulos, como NumPy o la Biblioteca de Imágenes de Python (Python Imaging Library, o PIL), tengan que preocuparse de los respectivos nombres de módulos. └── paquete ├── __init__.py ├── modulo1.py ├── modulo2.py └── modulo3.py Para importar un módulo, se utiliza la instrucción import, seguida del nombre del paquete (si aplica) más el nombre del módulo (sin el .py) que se desee importar. Si las rutas (lo que se conoce como “namespace”) son largas, se pueden generar alias por medio del modificado “as”: Los módulos deben importarse al principio del programa, en orden alfabético. Primero los propios de Python, luego los de terceros y , finalmente, los de la aplicación. La librería estándar de Python Python viene con una biblioteca de módulos estándar, sobre la podemos encontrar toda a información en The Python Standard Library. (Para documentarnos sobre la sintaxix y la semántica también nos vendrá bien tener a mano The Python Language Reference. La librería estándar es muy amplia y ofrece una gran variedad de módulos que realizan funciones de todo tipo, desde módulos escritos en C que ofrecen acceso a funcionalidades del sistema como el acceso a ficheros (file I/O). Los instaladores de de Python para plataformas Windows, normalmente incluyen la librería estándar completa, incluso algunos componentes adicionales. Sin embargo, en las instalaciones Python mediante paquetes harán falta instaladores específicos. Un paseo por la Librería estándar La biblioteca estándar ofrece una gran variedad de módulos que realizan distinto tipo de funciones. Por ejemplo, el módulo OS ofrece las típicas funciones que permiten interactuar con el sistema operativo como decirnos en qué directorio estamos, cambiar de directorio, las funciones de ayuda dir(os) o help (os), etc, el módulo math que ofrece funciones trigonométricas, logarítmicas, estadísticas etc. También hay módulos para acceder a internet y procesar sus protocolos con urllib.request, paradescargar datos de una URLs y smtplib, para enviar correos; o módulos como datetime, que permiten manejar fechas y tiempos, módulos que permiten comprimir datos, o módulos de medida de rendimientos. No incluimos ejemplos para no alargarnos demasiado, pero si de verdad estáis interesados en aprender, os recomendamos ir probando uno a uno estos módulos (desde la propia Shell de Python, o desde Jupiter) con este Pequeño Paseo por la Biblioteca Estándar que podéis encontrar en la documentación oficial de Python. https://gist.github.com/PalomaRS/c0641e3a08b2002f282fc6087e07553d#file-ejemplosimprtancion-ipynb Los entornos virtuales Sin embargo, las aplicaciones de Python muchas veces usan paquetes y módulos que no forman parte de la biblioteca estándar, de hecho Python está diseñado para facilitar esa interoperabilidad. El problema con el que nos encontramos, habitual en los entornos de código abierto, es que muchas veces las aplicaciones necesitan una versión específica de una librería, debido a que dicha aplicación requiere que un bug particular haya sido solucionado o bien la aplicación ha sido escrita usando una versión obsoleta de la interface de la librería. Esto significa que tal vez no sea posible que nuestra instalación de Python cumpla los requerimientos de todas las aplicaciones. Si la aplicación A necesita la versión 1.0 de un módulo particular y la aplicación B necesita la versión 2.0, entonces los requerimientos entran en conflicto e instalar la versión 1.0 o 2.0 dejará una de las aplicaciones sin funcionar. La solución a este problema es crear un entorno virtual, un directorio que contiene una instalación de Python de una versión en particular, además de unos cuantos paquetes adicionales. De esta forma, diferentes aplicaciones pueden usar entornos virtuales diferentes. Para resolver el ejemplo de requerimientos en conflicto citado anteriormente, la aplicación A puede tener su propio entorno virtual con la versión 1.0 instalada mientras que la aplicación B tiene otro entorno virtual con la versión 2.0. Librerías no estándar Dado que el objetivo de nuestro ejemplo es realizar un experimento de aplicación de machine Learning con Python a un determinado dataset, vamos a necesitar algo más que las librerías de la biblioteca estándar ya que, aunque hemos visto que ofrece algunas funciones matemáticas se nos quedan un poco cortas Por ejemplo, también necesitaremos módulos que nos permitan trabajar con visualizaciones de los datos. Vamos a conocer cuáles son las más habituales en data science : NumPy : Acrónimo de Numerical Python. Su características más potente es que puede trabajar con matrices (array) de n dimensiones. También ofrece funciones básicas de algebra lineal, transformada de Fourier, capacidades avanzadas con números aleatorios, y herramientas de integración con otros lenguajes de bajo nivel como Fortran, C y C++ SciPy: Acrónimo de Scientific Python. SciPy está construida sobre la librería NumPy. Es una de las más útiles por la gran variedad que tiene de módulos de alto nivel sobre ciencia e ingeniería, como transformada discreta de Fourier, álgebre lineal, y matrices de optimización. s. Matplotlib: es una librería de gráficos, desde histogramas, hasta gráficos de líneas o mapas de calor. También se pueden usar comandos de Latex para agregar expresiones matemáticas a tu gráfica. Pandas: se utiliza para operaciones y manipulaciones de datos estructurados. Es muy habitual usarlo en la fase de depuración y preparación de los datos. Es una librería que se ha añadido recientemente, pero su gran utilidad ha impulsado el uso de Python en la comunidad científica. Scikit Learn para machine learning: Construida sobre NumPy, SciPy y matplotlib, esta librería contiene un gran número de eficientes herramientas para machine learning y modelado estadístico, como por ejemplo, algoritmos de clasificación, regresión, clustering y reducción de dimensionalidad. Statsmodels: para modelado estadístico. Es un módulo de Python que permite a los usuarios explorar datos, hacer estimaciones de modelos estadísticos y realizar test estadísticos. Ofrece una extensa lista de estadísticas descriptivas, test, funciones gráficas etc para diferentes tipos de datos y estimadores. Seaborn: basada en matplotlib, se usa para hacer más atractivos los gráficos e información estadística en Python. Su objetivo es darle una mayor relevancia a las visualizaciones, dentro de las tareas de exploración e interpretación de los datos. Bokeh: permite generar atractivos gráficos interactivos en 3D, y aplicaciones web. Se usa para aplicaciones de rendimiento con datos en streaming. Blaze: extiende las capacidades de Numpy y Pandas a datos distribuidos y en streaming. Se puede usar para acceder a datos de un gran número de fuentes como Bcolz, MongoDB, SQLAlchemy, Apache Spark, PyTables, etc. Scrapy: se usa para rastrear la web. Es un entorno muy útil para obtener determinados patrones de datos. Desde la url de la home de una web, puede "bucear" en las distintas páginas del sitio para recopilar información. SymPy: se usa para cálculo simbólico, desde aritmética, a cálculo, álgebra, matemáticas discretas y física cuántica. También permite formatear los resultados en código LaTeX. Requests for accessing the web: trabaja de foram similar a la librería estándar urllib2, pero es más sencilla de codificar. En el blog tenemos un ejemplo interesante de aplicación de pandas, numpy, matplotlib y scikit-learn aplicado a un dataset que os sonará, porque es un clásico. Se trata del conjunto de datos de clasificación de iris, al que aplicaremos la técnica de Análisis de componentes principales o PCA. En este otro post, tenemos un ejemplo de aplicación de statsmodels en el “predictor de infidelidad” que creamos por San Valentín. Como predictor, como podréis imaginar, no valía gran cosa. Pero fue muy intersante para aprender. En este mismo experimento usamos Matplotlib para crear histogramas, usamos el modelo de regresión logística de scikit-learn , y Seaborn para crear mapas de calor Y ahora, os proponemos un sencillo ejercicio para practicar un poco. Consiste en verificar las versiones de librerías que nos ha instalado Anaconda. En la página web de Anaconda podemos ver este diagrama con los distintos tipos de librerías disponibles (IDEs para ciencia de datos, de analíticas y cálculos científicos, de visualización o de Machine Learning. Como veréis, aparecen dos librerías de las que no hemos hablado, Dask y Numba. Así que, también podéis investigar para qué sirven, y comprobar también qué versiones son las que nos ha instalado Anaconda. Figura 2: Esquema del entorno Anaconda Para ello, no tenéis más que escribir en vuestro Jupyter notebook, o copiar y pegar, los siguentes comandos, (con alguna pequeña modificación para las librerías que no aparecen). Con este post ya tenemos todo preparado para empezar lo que es el experimento de Machine Learning en sí. En el próximo, empezaremos con la carga de los datos, y el análisis exploratorio. ¡Ya casi lo tenemos!. Todos los post de este tutorial, aquí: Introducción: Machine Learning con Python para todos los públicos. Python para todos (1): Instalación del entorno Anaconda. Python para todos (2): ¿Qué son los Jupiter Notebook?. Creamos nuestro primer notebook y practicamos algunos comandos fáciles. Python para todos (3): ¿Qué son las librerías?. Preparamos el entorno. Python para todos (4): Empezamos el experimento propiamente. Carga de datos, análisis exploratorio (dimensiones del dataset, estadísticas, visualización etc) Python para todos (5) Final: Creación de los modelos y estimación de su precisión Los post más interesantes de LUCA Data Speaks organizados por series y temáticas
3 de abril de 2018
AI & Data
Atrévete con Python: un experimento para todos los públicos
Al igual que hicimos en nuestro experimento sobre el dataset del Titanic en Azure Machine Learning Studio, vamos a seguir con la estrategia del “Learning by doing” porque consideramos que la mejor forma de aprender es llevar a cabo pequeños proyectos, de principio a fin. Un proyecto de Machine Learning puede no ser lineal, pero tiene una serie de etapas bien definidas: 1. Definir el problema 2. Preparar los datos 3. Evaluar distintos algoritmos 4. Refinar los resultados 5. Presentarlos Por otro lado, la mejor manera de conocer una nueva plataforma o herramienta es trabajar con ella. Y eso es precisamente lo que vamos a hacer en este tutorial: conocer Python como lenguaje, y como plataforma. ¿Qué NO hace falta para poder seguir este tutorial? El objetivo de este post es mostrar cómo se puede hacer un experimento sencillo de Machine Learning en Python. Personas muy distintas, con perfiles diferentes pueden trabajar con modelos de ML. Por ejemplo, un investigador de Ciencias Sociales, o un experto en Finanzas, Seguros, Marketing etc. lo que quieren es aplicar el modelo (y ¿por qué no?, comprender cómo funciona). O un desarrollador que ya conoce otros lenguajes/entornos de programación, puede querer empezar a aprender Phyton. O un Data Scientist que trabaja desarrollando nuevos algoritmos en R, por ejemplo, y quiere empezar a trabajar en Python. Así, en vez de hacer un listado de los requisitos previos para poder seguir el tutorial, vamos a detallar lo que no hace falta: No hace falta comprenderlo todo a la primera. El objetivo es seguir el ejemplo de principio a fin y obtener un resultado real. Puedes ir tomando nota de las preguntas que te van surgiendo, y usar la función help (“FunctionName”) de Python para aprender sobre las funciones que vamos usando. No hace falta saber exactamente cómo funcionan los algoritmos. Es conveniente conocer sus limitaciones, y cómo se configurarlos. Pero se puede aprender poco a poco. El objetivo de este experimento es perderle el miedo a la plataforma y ¡seguir aprendiendo con otros experimentos! No hace falta ser programador. El lenguaje Python tiene una sintaxis bastante intuitiva. Como pista para empezar a comprenderlo, conviene fijarse en las llamadas a funciones (e.g. function()) y en la asignación de variables (e.g. a = “b”). Lo importante ahora es “arrancar”, poco a poco, se pueden ir aprendiendo todos los detalles (si es nuestro interés). No hace falta ser un experto en Machine Learning. Puedes ir aprendiendo poco a poco sobre las ventajas y limitaciones de los distintos algoritmos, sobre cómo mejorar en las distintas etapas del proceso, o la importancia de evaluar la precisión mediante la validación cruzada. Como es nuestro primer proyecto en Python, vamos a centrarnos en los pasos básicos. En otros tutoriales podremos trabajar sobre otras tareas como la preparación de datos con Panda o la mejora de los resultados con PyBrain. ¿Qué es Python? Python es un lenguaje de programación interpretado, orientado a objetos de alto nivel y con semántica dinámica. Su sintaxis hace énfasis en la legibilidad del código, lo que facilita su depuración y, por tanto, favorece la productividad. Ofrece la potencia y la flexibilidad de los lenguajes compilados con una curva de aprendizaje suave. Aunque Python fue creado como lenguaje de programación de uso general, cuenta con una serie de librerías y entornos de desarrollo para cada una de las fases del proceso de Data Science. Esto, sumado a su potencia, su carácter open source y su facilidad de aprendizaje le ha llevado a tomar la delantera a otros lenguajes propios de la analítica de datos por medio de Machine Learning como pueden ser SAS (software comercial líder hasta el momento) y R (también open source, pero más propio de entornos académicos o de investigación). Python fue creado por Guido Van Rossum en 1991 y, como curiosidad, debe su nombre a la gran afición de su creador por las películas del grupo Monty Python. Además de librerías de herramientas científicas, numéricas, de herramientas de análisis y estructuras de datos, o de algoritmos de Machine Learning como NumPy, SciPy,Matplotlib, Pandas o PyBrain, de las que hablaremos con más detalle en otro de los post del tutorial, Python ofrece entornos interactivos de programación orientados al Data Science. Entre ellos encontramos: 1. La Shell o intérprete de Python, que se puede lanzar desde el menú Windows, es interactiva (ejecuta las órdenes según las escribes), y resulta útil para pruebas y cálculos sencillos, pero no para el desarrollo. 2. IPython : Es una versión extendida del intérprete que permite resaltado de líneas y errores mediante colores, una sintaxis adicional para el shell, y autocompletado mediante tabulador. 3. Los IDE o Entornos de desarrollo integrado como Ninja IDE, Spyder, o, con el que vamos a trabajar, Jupyter. Jupyter es una aplicación web que permite crear y compartir documentos con código ejecutable, ecuaciones, visualización, y texto explicativo. Además de Python es compatible con más de 40 lenguajes de programación, incluyendo: R, Julia, y Scala y se integra muy bien con herramientas Big Data, como Apache Spark. ¿Qué pasos vamos a dar en este tutorial? Para que no sean demasiado largos, vamos a dividir el trabajo en distintos post. Introducción: Machine Learning con Python para todos los públicos. Python para todos (1): Instalación del entorno Anaconda. Python para todos (2): ¿Qué son los Jupiter Notebook?. Creamos nuestro primer notebook y practicamos algunos comandos fáciles. Python para todos (3): ¿Qué son las librerías?. Preparamos el entorno. Python para todos (4): Empezamos el experimento propiamente. Carga de datos, análisis exploratorio (dimensiones del dataset, estadísticas, visualización etc) Python para todos (5) Final: Creación de los modelos y estimación de su precisión ¿Preparados?. Mañana mismo empezamos…. Los post más interesantes de LUCA Data Speaks 2018 organizados por series y temáticas
13 de marzo de 2018
AI & Data
Cazando exoplanetas con redes neuronales: Machine Learning en la NASA
¿Qué pasa cuando sueltas una red neuronal en un laboratorio de la NASA?.Pues lo menos que puede pasar es que encuentre algo muy interesante. En esta ocasión, el resultado fue el descubrimiento de dos nuevos exoplanetas. En este post, conoceremos cómo la IA se suma a las distintas innovaciones tecnológicas que han llevado a la NASA a traspasar las fronteras de nuestro Sistema Solar para conocer más a fondo nuestra galaxia, la Vía Láctea. La película “Figuras Ocultas” nos revela un aspecto desconocido e insospechado de la historia de la navegación espacial. No fue hasta 1962 cuando llegaron a la NASA las primeras computadoras IBM 7090. Sin embargo, unos años antes, en 1959, Alan Shepard fue el primer estadounidense que viajó al espacio y en 1961 se lanzó en EEUU el primer programa espacial tripulado, el Proyecto Mercury. Pero ¿Cómo se las apañaban para calcular las trayectorias, o las ventanas de lanzamiento de estos vuelos espaciales? Muy sencillo, tirando de sencillas calculadoras y el talento de un equipo de matemáticas excepcionales que hacían el papel de “calculadoras humanas”. La película se centra en tres de esas mujeres excepcionales: Katherine Johnson, Dorothy Vaughan y Mary Jackson que, a comienzos de los años 60, ayudaron a la NASA a poner en órbita al astronauta John Glenn desde el laboratorio aeronáutico de Langley, en Hampton (Virginia), y en las dificultades que tuvieron que afrontar para realizar su trabajo en una época en la que en EEUU la segregación y discriminación racial estaban plenamente legalizadas. Está claro que la incorporación de las computadoras en este campo supuso un antes y un después, aunque, como se refleja en la película, en 1962 le pidieron a Katherine Johnson que comprobara la exactitud del cálculo de la órbita alrededor de la Tierra del astronauta John Glenn realizado por el IBM. De hecho, esta verificación de su exactitud sirvió para aumentar la confianza en las nuevas tecnologías de computación. Desde entonces, han pasado muchas cosas en el mundo y en la NASA. Pero últimamente ha habido un acontecimiento concreto que consideramos de gran interés. "Inteligencia Artificial: Primer planeta descubierto al aplicar una red neuronal a datos de la NASA" El pasado 14 de Diciembre de 2017, Paul Hertz, Director de la División de Astrofísica de la NASA en Washington, y Christopher Shallue, Ingeniero de Software Senior en Google AI anunciaron en una rueda de prensa una primicia: Aunque no es la primera vez que se han usado herramientas de IA para este tipo de investigaciones, “ Es la primera vez en la historia de la NASA que se ha usado una red neuronal para descubrir nuevos exoplanetas”. ¿Qué son los exoplanetas? Los exoplanetas son planetas que están fuera de nuestro Sistema Solar, y son relativamente habituales. El primer exoplaneta en órbita en torno a una estrella parecida al sol fue descubierto en 1995, en un momento en el que apenas se había explorado una parte muy reducida de nuestra galaxia, la Vía Láctea. Sin embargo, su número es muy grande. Una estimación estadística reciente considera que hay al menos un planeta orbitando cada estrella de la galaxia. Y, aunque nuestra galaxia ocupa tan sólo una pequeña parte del cosmos (el Universo observable tiene al menos dos billones de galaxias), la Vía Láctea es un gigante que contiene 100.000 millones de estrellas. ¿Por qué buscamos exoplanetas? Muchos os preguntaréis, ¿qué sentido tiene dedicar esfuerzos científicos, técnicos, económicos y humanos a la búsqueda de planetas fuera de nuestro Sistema Solar?. Además del evidente interés científico que subyace a toda exploración espacial, hay dos motivos principales. El primero es la búsqueda de otros posibles planetas habitables. En 2016, cuando la NASA anunció la mayor colección de planetas jamás descubiertos hasta el momento, 1284, Ellen Stofan, Directora Científica de la NASA en Washington, declaraba: Este descubrimiento nos da esperanzas de que en algún lugar ahí fuera, alrededor de una estrella como la nuestra, con el tiempo podremos descubrir otra Tierra Y el segundo, íntimamente ligado con el primero, se resume muy bien en esta otra frase de Paul Hertz, Director de la División de Astrofísica: Este conocimiento inspira las misiones futuras que son necesarias para acercarnos cada vez más a descubrir si estamos sólo en el Universo o no Por ello, cuando se puso en órbita el Telescopio Espacial Keppler, el “cazador de planetas", del que hablaremos un poco más después, se dijo que con su lanzamiento “se abría una puerta al futuro de la Humanidad”. ¿Cómo se detecta un planeta? Casi todos los planetas que conocemos se han detectado por métodos indirectos. Hay dos técnicas principales: Técnica de cálculo de la velocidad radial o Doppler. El planeta que orbita alrededor de una estrella produce en ésta una pequeña oscilación o cabeceo debida a su “tirón gravitatorio” (la débil atracción gravitatoria que ejerce el planeta sobre la estrella). Esta oscilación, se traduce en pequeños cambios en la velocidad de la estrella que podemos medir sin dificultad y que nos permiten hacer una estimación de la masa mínima que puede tener el planeta. Técnica del tránsito. Si tenemos suerte y la inclinación de la órbita del planeta alrededor de su estrella es tal que desde nuestro punto de vista pasa por delante del planeta (“tránsito”), y por detrás (“ocultación”), una vez por órbita, podemos medir fácilmente la variación en la luminosidad de la estrella cada vez que el planeta pasa por delante de ella, ensombreciendo una pequeña parte de su superficie. La disminución de la luminosidad nos permite calcular la superficie de la estrella a la que está haciendo sombra el planeta, y, por ende, nos da una referencia del tamaño del planeta (su radio), respecto al de la estrella. En los casos en los que hemos podido aplicar ambas técnicas a la detección de un planeta, conociendo su masa y su radio, podríamos calcular su densidad media y tener una cierta idea de si estamos ante un planeta sólido y rocoso, líquido o gaseoso. Y si resulta que su masa o sus dimensiones son comparables a las de la Tierra, ya podríamos decir que estamos ante un planeta similar a la Tierra. Todavía no tenemos instrumentos lo suficientemente sensibles, pero posiblemente en un futuro próximo, podríamos aplicar técnicas espectroscópicas que midan variaciones en el espectro de la luz de la estrella en el momento del tránsito del planeta que nos podrían dar pistas sobre la composición química de la atmósfera de éste último. De esta forma podríamos saber si una vida parecida a la vida en la Tierra sería posible en ese planeta. La mision Kepler La mision Kepler, lanzada en 2009, fue la primera misión de la NASA cuyo objetivo era encontrar planetas del tamaño de la Tierra potencialmente habitables. Durante 4 años, el telescopio espacial monitorizó 150.000 estrellas, midiendo las pequeñas variaciones en su brillo producidas durante la transición de un planeta, es decir, la técnica del Tránsito que hemos mencionado anteriormente. En 2018 el satélite de la NASA Transiting Exoplanet Survey Satellite usará el mismo método para monitorizar 200.000 estrellas cercanas en búsqueda de nuevos planetas, del tamaño de la Tierra o varias veces el tamaño de la Tierra. En este vídeo, del canal de Youtube del NASA's Ames Research Center se puede apreciar cómo el tránsito del planeta genera una pequeña sombra sobre la estrella, disminuyendo ligeramente su luminosidad total. A lo largo de sus años de misión, el conjunto de datos de observaciones recogidas por el telescopio Kepler ha ido acumulado 150,000 señales de posibles planetas. Pero sólo se podían analizar las más relevantes mediante test automáticos e incluso a veces, manualmente, con lo que mucha información de interés quedaba relegada en los datos relativos a las señales más débiles. ¿Cómo entra en juego la IA? Shallue, investigador de Google AI empezó a interesarse por el descubrimiento de exoplanetas cuando averiguó cómo los rápidos avances en el campo de la observación astronómica estaban desbordando las capacidades de análisis de los investigadores. En su tiempo libre, empezó a investigar sobre el tema y descubrió la gran base de datos de la misión Kepler. Se dio cuenta de que era un excelente ejemplo donde la aplicación de técnicas de Machine Learning podían llegar mucho más allá de donde podían hacerlo los investigadores mediante técnicas tradicionales. Shallue, junto con Andrew Vanderburg, Astrónomo en la Universidad de Texas, entrenaron una red neuronal usando la base de más de 15.000 señales “etiquetadas” que habían sido descartadas de análisis anteriores por su baja intensidad. De estas 15.000 señales, 3500 correspondían a la reducción de intensidad producida por el tránsito del planeta, y el resto eran falsos positivos. Con el dataset de test, la red neuronal aprendió a detectar los patrones de variación de intensidad que correspondían al tránsito de un planeta y diferenciarlos de los producidos por otros fenómenos. Después, aplicaron el modelo para buscar señales débiles en 670 sistemas estelares que sabían que ya tenían múltiples planetas y que presumiblemente eran un buen sitio donde encontrar más. Y tenían razón, porque, basándose en cómo se conectan las neuronas en un cerebro humano, esta red neuronal artificial encontró las débiles señales, que hasta entonces habían pasado desapercibidas, de un octavo planeta en la órbita de la estrella Kepler-90, en la constelación de Draco. También encontraron un sexto planeta en la órbita del sistema Kepler-80. Por qué es importante este anuncio Es importante, porque es la primera vez que los investigadores utilizan un sistema basado en IA (en este caso una red neuronal) para identificar nuevos mundos. También es importante porque pone en valor la importancia del conjunto de observaciones recogidas en la misión Keppler y cómo las nuevas tecnologías de datos basadas en algoritmos de Machine Learning van a dar un gran impulso a nuestro conocimiento y comprensión de los sistemas planetarios. Nuevamente, sobre la mesa, el valor de los datos, En palabras de Paul Hertx, Este descubrimiento muestra que nuestros datos serán un tesoro a disposición de los investigadores más innovadores en los años venideros Y la IA no se va a limitar al análisis de datos recogidos por las sondas espaciales, sino que puede ir aun más allá. Steve Chien y Kiri Wagstaff, del Jet Propulsion Laboratory de la NASA predicen, que, en el futuro, las misiones espaciales dejarán de estar dirigidas por personas desde la Tierra para pasar a ser controladas por IA. Aunque la humanidad ha dado grandes pasos en la exploración de nuestra galaxia, más allá de nuestro Sistema Solar, para explorar nuestro Universo puede que tengamos que "pasarle los mandos" a los robots autónomos. Por último, el tratamiento de este ingente tesoro que son los datos astronómicos, también busca nuevas estrategias que han demostrado su éxito en otros campos. Nos estamos refiriendo a campañas de crowdsourcing donde se busca el apoyo de la ciencia ciudadana para colaborar en tareas de “entrenamiento” de algoritmos, como por ejemplo, esta campaña de “Exoplanets explorers” que invitaba a colaboradores voluntarios a ayudar a clasificar galaxias en la plataforma colaborativa “Zoouniverse”. También puedes seguirnos en nuestras redes sociales: @Telefonica, @LUCA_D3, @ElevenPaths
20 de febrero de 2018
AI & Data
¿Por qué nunca tendré novia?
Para San Valentín, una forma original de explicar la dificultad de encontrar tu media-naranja desde la estadística y el humor. El autor, Tristan Miller, investigador en la Universidad de Darmstadt, se basa para su análisis en las propiedades de la distribución normal, que es la distribución continua que más se usa en estadística. Es importante porque muchas variables aleatorias asociadas a distintos tipos de fenómenos naturales (o no), siguen este patrón de probabilidad. Por ejemplo, caracteres morfológicos como la estatura de un individuo, fisiológicos, como el efecto de un fármaco, sociológicos, como el consumo de un producto por un grupo de individuos, psicológicos, como el coeficiente intelectual, o de otro tipo, como el nivel de ruido en telecomunicaciones o los errores de medida de ciertas magnitudes. Por eso, las asunciones que hace el autor sobre la belleza y la inteligencia como variables aleatorias que siguen una distribución normal son perfectamente aceptables. Traducción el original “Why I will never have a girlfriend” de Tristán Miller (1999)¿Por qué no tengo novia? Esta es una pregunta que se ha hecho prácticamente cualquier hombre en algún momento de su vida. Desgraciadamente, es difícil dar con una respuesta rápida y correcta a esta pregunta. A pesar de ello, muchos hombres no desisten en el intento, pero acaban obteniendo explicaciones ridículas, cada una más autocrítica que la anterior: “¿Es porque soy demasiado tímido? ¿o no lo suficientemente agresivo? ¿fallan mis estrategias de aproximación? ¿soy aburrido? ¿demasido gordo? ¿demasiado delgado? ¿o simplemente es que soy muy feo y carezco de atractivo para las mujeres? Cuando todas las demás explicaciones plausibles han sido descartadas, la mayoría recurre a la consabida conclusión de que “algo en mí debe estar fallando” antes de resignarse a vivir en castidad perpetua. Sin embargo, no es mi caso. Me niego a pasar mi vida meditando sobre mi falta de éxito con las mujeres. Si bien soy el primero en admitir que mis posibilidades de llegar a tener una relación duradera con alguien especial son prácticamente inexistentes, me niego rotundamente a admitir que el problema sea yo. Por el contrario, estoy convencido de que existe una razón científica, basada en datos demográficos y cálculos estadísticos elementales, que explique mi triste situación. Para que nadie sospeche que mis estándares para las mujeres son demasiado altos, permítanme enumerar mis tres criterios para la pareja perfecta. Primero, la novia potencial debe ser aproximadamente de mi edad, digamos 21 más o menos tres o cuatro años. Segundo, la chica debe ser atractiva (y uso ese término para referirme tanto a la belleza interna como externa). Y, en tercer lugar, también debe ser razonablemente inteligente; no hace falta que sea miembro de Mensa, pero sí poder mantener una discusión entretenida e interesante. Así que ahí están, tres condiciones muy sencillas, que estoy seguro que nadie negará que también son muy razonables. Dicho esto, paso a demostrar por qué la probabilidad de encontrar a la candidata adecuada que cumpla con estos tres requisitos es tan pequeña que es prácticamente tarea imposible. En otras palabras, por qué nunca tendré novia. Me esforzaré para que esta prueba sea tan rigurosa como lo permitan los datos disponibles. Y debo señalar, también, que aquí no habrá trucos estadísticos que valgan. He citado todas mis fuentes y facilitaré todos los cálculos necesarios a cualquier persona que los quiera comprobar. Veamos los números. Número de personas en la Tierra (en 1998): 5.592.830.000 Comenzamos con el grupo demográfico más amplio de los que nos interesan, a saber, la población de este planeta. Eso no quiere decir, por supuesto, que esté en contra de las relaciones interestelares. Simplemente no considero estadísticamente significativa la posibilidad de encontrarme una buena chica de Altair. De todos modos, las últimas cifras medianamente fiables que tenemos para la población de la Tierra proceden del informe “Perfil de Población Mundial 1999” de la Oficina del Censo de los Estados Unidos (WP / 98). Debido al tiempo necesario para compilar y procesar las estadísticas del censo, los datos de dicho informe son válidos solo para el año 1998, por lo que más adelante improvisaremos unos ajustes para corregir los números. … De ellas son mujeres: 2.941.118.000 Imagino que, dado el título de este ensayo, este criterio es evidente. Sin embargo, en caso de que alguien se haya despistado, en mi caso, estoy interesado exclusivamente en compañía femenina. Por tanto, aproximadamente la mitad de la población de la Tierra debe ser descontada. ¡Lo siento chicos!. … que vivan en países “desarrollados”: 605.601.000 Ahora restringimos aún más el área geográfica de interés a los llamados “países del primer mundo”. No pretendo hacer de menos a posibles candidatas que estén en situación de desventaja económica, sino más bien es por simple probabilidad. Mis posibilidades de conocer a una belleza de Bhután o a una diosa de Ghana, ya sea en persona o por Internet son, como es natural, muy bajas. De hecho, es probable que pase casi toda mi vida viviendo y trabajando en América del Norte, Europa o Australia, por lo que es a este tipo de regiones a las que restringiremos los cálculos. …que, en el momento actual (año 2000) tengan entre 18 y 25 años: 65.399.083 Como no soy ni pedófilo ni gerontófilo, me gustaría restringir mi búsqueda de la pareja ideal a a aquellas mujeres cuya edad es aproximadamente igual a la mía. Aquí es donde las cosas se ponen un poco complicadas, por dos razones. En primer lugar, los datos del censo son de hace casi dos años. Y en segundo lugar, las tablas “población por edad” en el informe no están separadas en edades individuales sino que se cuantifican en franjas. Así entre 15 y 19 años hay 39 560 000 posibles candidatas, mientras que entre 20 y 44 años, el número es 215 073 000. Las mujeres de 15 a 19 años en 1998 tendrán entre 17 y 21 años en el año 2000. Dentro de este grupo, estoy interesado en salir con personas mayores de 18 años, así que, suponiendo que las edades de las niñas “15-19” se distribuyen uniformemente, nos quedarían: Igualmente, al aplicar las corrección al grupo de candidatas que en 1998 estaban en la franja de edad “20–44″ nos resultaría un total de: La suma de ambas cantidades, 66 059 680, representa el número total de mujeres de edades comprendidas entre 18 y 25 años, que, en el año 2000 viven en los países desarrollados. Desafortunadamente, teniendo en cuenta la tasa de mortalidad, desde que se realizó el censo, tenemos que restar aproximadamente el 1% de ellas. Por lo tanto, el número real de solteras disponibles es de 65 399 083 …Que sean guapas: 1.487.838 La atracción personal, tanto física como intelectual, es un ingrediente fundamental en cualquier relación. Está claro que la belleza es un rasgo puramente subjetivo cuya interpretación puede variar de persona a persona. Afortunadamente, definir el significado de la belleza queda fuera del alcance de este ensayo. Nos basta con considerar que esta característica se ajustará a una distribución normal para la población de estudio. Sin necesidad de entrar en demasiado detalle sobre lo que más me gusta en una chica, diré que, para que me resulte realmente atractiva, debería estar al menos a una distancia de dos veces la desviación estándar por encima de la media. De la teoría de estadística básica, el área a la derecha de la curva normal en z=2 es: Y por tanto, esta es la cantidad por la que tenemos que multiplicar nuestra población actual. … Que además sean inteligentes: 236.053 Una vez más, la inteligencia puede significar diferentes cosas para diferentes personas. Sin embargo, es un alivio poder señalar que, como la mayoría de las otras características, tiene una distribución teóricamente normal en toda la población. Supongamos que me conformaré con alguien que esté a una mera desviación estándar por encima de la media; en ese caso, de la población de estudio, habría que descontar a un: … Que no estén ya comprometidas: 118.027 No pude encontrar estadísticas fiables sobre el número de jóvenes mencionadas anteriormente que ya estén casadas, o comprometidas, pero la observación informal y la evidencia anecdótica me llevan a creer que la proporción ronda el 50%. (Otros hombres solteros sin duda se habrán encontrado también con una alta proporción de chicas arguyen, “Lo siento, ya tengo novio” como excusa para no ir a una cita). Por cuestiones éticas (y tal vez un altamente desarrollado “instinto de conservación”), no voy a considerar elegibles a las chicas que tienen maridos y novios. Por tanto, esa parte de la población femenina también la consideramos fuera de los límites. … y que les guste yo: 18.726 Naturalmente, encontrar una chica adecuada que realmente me guste no es garantía de que a ella le guste yo. Asumiendo, como mencionamos antes, que el atractivo personal sigue una distribución normal, apenas hay un 50% de posibilidades de que una mujer determinada me considere incluso “ligeramente” atractivo. En la práctica, sin embargo, es poco probable que las personas consideren buscar una relación estable con alguien cuya apariencia y personalidad cumpla apenas con sus requisitos mínimos. Hagamos entonces la suposición, bastante conservadora, de que una chica saldría con alguien si, y solo si, estuviera al menos una desviación estándar por encima de su idea de candidato razonable. En ese caso, volviendo a nuestro cálculo anterior, solo el 15.8655% de las mujeres consideraría a alguien con mi personalidad y características físicas como posible pareja ideal. Conclusión Es aquí, con un grupo de 18.726 posibles candidatas, donde acaba nuestro análisis estadístico. A primera vista, un resultado de 18.726 opciones puede no parecer un número tan bajo. Pero ten en cuenta que, si consiguiera tener cita a ciegas con una posible candidata cada semana, necesitaría salir durante 3493 semanas antes de encontrar a mi media naranja. Eso supondría casi 67 años. Como varón norteamericano nacido a fines de la década de 1970, (ya que nos basamos en el censo de USA), mi esperanza de vida es probablemente poco más de 70 años. Por lo que podemos decir con bastante seguridad que estaré muerto antes de encontrar a la chica de mis sueños. Ahora que lo pienso, ella probablemente también estará muerta. No sabemos si en el tiempo que ha pasado desde que escribió este artículo el joven Tristan Miller habrá logrado encontrar a su media naranja. Pero, si queremos averiguar si sus exigencias, en cuanto belleza e inteligencia son realmente muy altas o no, tendremos que recordar un poco cómo funciona la distribución normal. La distribución normal La distribución normal depende de dos parámetros, la media µ y la desviación típica σ (o su cuadrado, la varianza). Una propiedad importante de estas distribuciones consiste en que, si tomamos intervalos centrados en la media y con una amplitud proporcional a la desviación típica, la probabilidad de esos intervalos es constante. Figura 1: Gráfica función normal. Fuente. Así, si la amplitud del intervalo es una vez la desviación típica, la probabilidad es de 0,68, si es dos veces, pasa a ser 0,95 y si es tres, 0,97. Por tanto, si para la belleza está considerando que esté a una distancia de la media de dos veces la desviación media, estaríamos en el tercer caso, 0,97 respecto al a unidad, y, por tanto, descartaría por “no lo suficientemente bellas” al 97% de mujeres de esa muestra. Por ello, se quedaría con la zona bajo la curva de color más claro, los extremos de la cola. En el caso de la inteligencia, se conformaría con que estuviesen a una desviación estándar de la media, es decir, estaríamos en el primer caso, 0,68, por tanto, descartaría por “no lo suficientemente inteligentes” al 68% de mujeres de la muestra. Sin embargo, es mucho más generoso consigo mismo, ya que considera que a él sólo le descartarían un 50% de las mujeres (aunque luego lo “ajuste” a un más modesto 15,86%) Visto lo visto, ojalá nos equivoquemos, pero no creemos que todavía haya dado con el “amor de su vida”. Sin necesidad de hacer tantos cálculos, el filósofo y ensayista José Ortega y Gasset llegó a una conclusión parecida que se resume muy bien en esta frase: Hay quien ha venido al mundo para enamorarse de una sola y determinada mujer y, consecuentemente, no es probable que se encuentre con ella
14 de febrero de 2018
AI & Data
¿Inteligencia Artificial o Cognitiva?
En los últimos años el término “Inteligencia Artificial” parece estar perdiendo fuerza a favor de otros términos como “Inteligencia Cognitiva”, o “tecnologías smart”, “predictivas” etc. En este post analizamos el porqué de esta tendencia y el significado real de ambos términos para poder hacernos una idea de las diferencias entre inteligencia artificial e inteligencia cognitiva. ¿Qué es la IA? La Encyclopædia Britannica define el concepto de inteligencia artificial como “la habilidad de una computadora o de un robot controlado por una computadora de realizar tareas normalmente asociadas a seres inteligentes". El término se aplica con frecuencia al desarrollo de sistemas dotados de procesos intelectuales propios de los humanos, como la habilidad de razonar, descubrir, generalizar o aprender de la experiencia”. En pocas palabras la idea fundamental en que se basa la inteligencia artificial es en conseguir que una computadora resuelva un problema complejo como lo haría un humano. La IA más allá de las TIC Puede que no seamos del todo conscientes de este hecho, pero hoy en día, la inteligencia artificial es esencial para los principales sectores económicos. Por ejemplo la Tecnologías de la Información, el sector Sanitario, las Ciencias de la Vida, el análisis de datos, la transformación digital, la seguridad e incluso para el desarrollo de aplicaciones de consumidor final, gestión de edificios inteligentes, mantenimiento predictivo etc. Por otra parte, veremos que la AI también está íntimamente ligada a los 4 pilares de la innovación y transformación digital como el Cloud Computing, la Movilidad, y las Analíticas sociales y de Big Data. Asimismo, también resulta inherente a los principales aceleradores de esta transformación como son los Sistemas Cognitivos, la Internet de las Cosas (IoT), la ciberseguridad y , nuevamente, las tecnologías y aplicaciones Big Data. Si es tan importante, ¿Por qué parece que ya nadie quiere hablar de “inteligencia artificial” y se recurre a otros términos como “Smart”, “inteligente”, “Cognitivo”, “predictivo”? Efectivamente, el término “Inteligencia Artificial” parece lastrado por una serie de connotaciones negativas. ¿A qué se deben? El origen de las connotaciones negativas En primer lugar, parece que es un término “gastado”. Se ha usado tan ampliamente (como también ha sucedido con “la nube” y “el Internet de las Cosas), que parece que todo el mundo tiene que saber y tener su opinión sobre el tema. Este uso tan masivo ha ido acompañado de una gran desinformación. Concepciones erróneas frecuentes Algunas personas, se quedan con la versión de Hollywood y piensan que la IA se limita a robots y superinteligencia (Strong AI—que hasta ahora no se ha hecho realidad). Otras, creen que hablan de IA cuando en realidad lo están haciendo de aprendizaje automático (“Machine Learning”). En realidad, el Machine Learning es una rama de la inteligencia artificial que permite a los investigadores, científicos de datos, ingenieros y analistas construir algoritmos que aprenden, y pueden hacer predicciones “data-driven”. En lugar de seguir un conjunto de reglas o instrucciones, estos algoritmos son entrenados para identificar patrones en grandes volúmenes de datos. El Deep Learning, por su parte, lleva esta idea aún más lejos y procesa la información en capas, de modo que el resultado obtenido en una capa sirve de input o dato de entrada para la siguiente. (Si quieres conocer con más detalle las diferencias entre Inteligencia Artificial, Machine Learning y Deep Learning no dejes de leer este otro post de nuestro blog: ) AI OF THINGS Artificial Intelligence, Machine Learning y Deep Learning: ¿Conoces las diferencias? 17 de octubre de 2017 IA y la ciclo de Gartner Por otro lado, el concepto de Inteligencia Artificial, no es un concepto nuevo, sino que lleva dando vueltas por el mundo desde 1956, y en todos estos años ha habido distintas olas (en los 50; en los 80, con el surgimiento de los sistemas expertos, el auge del PC y el modelo cliente servidor, y a finales de los 90-año 2000, con la explosión de internet), en los que las expectativas han superado la realidad y se han sucedido periodos de, lo que en un ciclo de Gartner se conoce como el “Abismo de la desilusión” (Trough of disillusionment). Figura 1: Curva de Gartner. (De IOTpreneur , CC BY-SA 4.0) En estos momentos nos hallamos nuevamente en un momento de expectativas muy altas respecto a la IA. De hecho, Gartner considera que las tres tendencias tecnológicas principales en 2017 son distintos aspectos de la IA (AI aplicado y Machine Learning avanzado, apps inteligentes y el Internet de las Cosas, IoT). Así, el Aprendizaje Profundo (Deep Learning), el reconocimiento de imágenes, la generación de hipótesis, las redes neuronales… están inmersos en nuestro día a día a través de distintas aplicaciones. A pesar de los discursos de algunos líderes tecnológicos sobre los peligros y el impacto que puede llegar a tener sobre nuestras vidas y nuestros trabajos futuros, la automatización, el desarrollo de la robótica y la IA, cada día aparecen nuevas tecnologías basadas en ella que nos hacen la vida más fácil. Sin embargo, como hemos comentado antes, la tendencia actual consiste en no llamarlo inteligencia artificial, sino “smart”, “cognitivo” o cualquier otro término que no venga lastrado por esas connotaciones. Pero en el fondo, sigue siendo lo mismo. Áreas que abarca la IA Hemos visto que el concepto de IA es muy amplio y abarca áreas distintas. En realidad, podríamos definirlo como un ecosistema, donde podemos encontrar desde tecnologías de minería de textos o procesamiento de lenguaje natural (text mining-NLP), Deep Learning, Analíticas Predictivas y Prescriptivas, sistemas de Machine Learning, los sistemas de recomendación que están por todas partes, o esas apps como Uber o AirBnb que te conectan con el conductor más próximo o te buscan un alojamiento acorde con tus necesidades, y que también se basan en IA. Todas estas tecnologías se caracterizan por tener algo en común: generan datos en cuya interpretación reside el valor y el conocimiento. Por eso se dice que la inteligencia artificial está en el centro de todas estas soluciones, en el punto donde todo converge. La IA y la transformación digital Los 4 pilares de la transformación digital El sector de la tecnología se está transformando en un sector de conocimiento. Pero para sacar partido de este conocimiento es fundamental que haya una profunda interconexión de tecnologías y procesos en aplicaciones de la vida real. Es lo que llamamos la economía digital. Como hemos adelantado antes, esta transformación se basa en 4 pilares fundamentales: • La nube (Cloud Computing) • La “movilidad” (Mobility) • Analíticas Sociales (Social Analytics) • Analíticas Big Data (Big Data Analytics) Estas tecnologías e innovaciones son los auténticos impulsores de la transformación digital y están tan integrados en las IA que a veces se les confunde con la misma. Y sobre estos 4 pilares se sustentan lo que llamamos “aceleradores” de la innovación. Los aceleradores de la innovación ¿Cuáles son estos aceleradores? Los principales aceleradores de la innovación son: • Los servicios cognitivos • La ciberseguridad • El Internet de las Cosas • Big Data Todos ellos están omnipresentes en nuestro día a día. Los servicios cognitivos Los servicios cognitivos buscan imitar los procesos racionales humanos. Analizan grandes cantidades de datos generados por sistemas conectados (no exclusivamente IoT), y ofrecen herramientas con capacidades diagnósticas, predictivas, prescriptivas, capaces de observar, aprender y ofrecer Insights, sugerencias o incluso acciones automáticas. Están muy orientados a la interacción contextual y humana. Por ello, para los expertos, el reto de la inteligencia artificial es adaptar la tecnología para que las personas puedan interactuar con ella de una forma natural y cotidiana. Se trabaja en dar a las aplicaciones capacidades de cognición humana, tales como: La escucha y el habla, o capacidad de transformar audio en texto y texto en audio Procesamiento de lenguaje natural, texto no es solamente un conjunto de palabras clave, sino que el computador entiende, es capaz de comprender conexiones gramaticales, contextuales y otros. Comprensión de emociones y sentimientos (“sentiment analysis”). Crear sistemas empáticos capaces de conocer el estado de ánimo de una persona y tomar decisiones en base a esto. Reconocimiento de imágenes La ciberseguridad La ciberseguridad, también está cambiando hacia un enfoque más holístico que tiene en consideración el entorno y la dimensión humana. Y, sobre todo, se está volviendo más proactiva. ¿Cómo hace para, por ejemplo, prevenir ciberataques? De nuevo, aplicando IA para detectar patrones en los datos y entrar en acción cuando a partir de ellos se generen alertas. Internet de las Cosas y Big Data ¿Y qué ocurre con Internet de las Cosas y Big Data? En este caso es evidente la gran cantidad de datos que se generan día a día, a gran velocidad y son, en su mayoría, no estructurados. Datos de sensores IoT, datos de redes sociales, ficheros de texto, imágenes, vídeos, archivos de sonido…Nuevamente, son técnicas y herramientas de IA como la minería de texto, la inteligencia de reconocimiento de documentos, el machine Learning, el PNL y otras técnicas de computación cognitiva las que hacen posible convertir todos estos datos en información útil. Inteligencia Artificial vs Inteligencia Cognitiva Después de este breve análisis, ya podemos volver y responder la pregunta que nos hemos planteado. La Inteligencia Cognitiva es una parte, si bien una parte importante de la Inteligencia Artificial, que abarca principalmente las tecnologías y herramientas que permiten a nuestras apps, websites y bots ver, oir, hablar, comprender e interpretar las necesidades del usuario por medio del lenguaje natural. Es decir, son las aplicaciones de la IA que permiten a las máquinas aprender el lenguaje de los usuarios para que éstos no tengan que aprender el lenguaje de las máquinas. Pero la Inteligencia Artificial es un concepto mucho más amplio, que incluye otras tecnologías o innovaciones como la robótica, el Machine Learning, el Deep Learning, las redes neuronales, el PNL etc. que, como hemos visto, resultan críticas tanto para los pilares, como para los principales aceleradores de la transformación digital.
2 de febrero de 2018
AI & Data
Machine Learning a tu alcance: “Roles de datos” ¿Cuál es el tuyo?
El mundo de los datos y su explotación por medio de técnicas de Machine Learning e Inteligencia Artificial es tan amplio que se hace necesario definir diferentes perfiles o roles muy diferenciados. En este post vamos a describir cada uno de ellos, explicando sus funciones y el tipo de conocimientos necesarios para desempeñarlas con éxito, así como el papel que juega cada uno de ellos en un proyecto “data-driven”. Los dos primeros perfiles, el Administrador de Bases de Datos, y el Arquitecto de Datos, son los encargados de que los datos estén donde deben estar, y en el formato adecuado. Por otra parte, están los encargados de explotar el potencial que encierran los datos, es decir, ponerlos a funcionar. Esta es la tarea del Analista de datos y el Científico de datos. Administrador de bases de datos (Database administrator, DBA) Definición: Es el responsable del diseño (físico y lógico), gestión y administración de las bases de datos. Funciones: Seguridad, optimización, monitorización, resolución de problemas, y análisis/previsión capacidades presentes y futuras. Requisitos: Es un rol muy técnico para el que son necesarios profundos conocimientos de lenguaje SQL y también, cada día más, de bases de datos noSQL. Asimismo pueden ser necesarias habilidades de gestión dirigidas al diseño de políticas y procedimientos de uso, gestión, mantenimiento y seguridad de las bases de datos. En definitiva, su función es asegurarse de que “la máquina, funciona”. Arquitecto de datos (Entreprise Data Architect, EDA) Definición: Es el responsable de crear la infraestructura de captura, y acceso a los datos. Define cómo se mueven los datos. Funciones: Diseño del entorno de uso de los datos. Cómo se almacenan, cómo se accede a ellos y cómo son compartidos/utilizados por distintos departamentos, sistemas o aplicaciones, en línea con la estrategia empresarial. Requisitos: Es un rol estratégico, para el cual se requiere una visión del ciclo de vida completo. Por tanto, debe considerar aspectos de modelado de datos, diseño de bases de datos, desarrollo SQL, y gestión de proyectos de software. También es importante conocer y comprender cómo las tecnologías tradicionales y las emergentes pueden contribuir al logro de los objetivos empresariales. En definitiva, su función es asegurarse de que “definir la visión global”. Manager de Gobernanza de datos (Data Gobernance Manager) Definición: Es el encargado de definir y organizar el proceso de recogida, almacenamiento, y acceso a los datos, garantizando en todo momento su seguridad y confidencialidad. Funciones: Definir y verificar el cumplimiento políticas y conformidad con estándares. Gestionar el ciclo de vida de los datos y cerciorarse de que éstos estén custodiados de forma segura y organizada, y de que sólo pueden acceder a ellos las personas autorizadas. Requisitos: Para este rol es necesario combinar un conocimiento funcional de cómo funcionan las bases de datos y otras tecnologías asociadas, con uno conocimiento profundo de las regulaciones de cada industria en particular (financiera, farmacéutica, telecomunicación etc.) En definitiva, su función es “Definir y asegurar el cumplimiento de las reglas que definen el flujo de los datos”. Una vez tenemos un sistema en el que los datos están bien organizados, accesibles y custodiados de forma segura, lo que nos interesa es sacarles partido, extraer de ellos esos valiosos “Insights” o claves sobre patrones de comportamiento que, aplicados a nuestros procesos del día a día los hagan más eficientes e innovadores. Este es el momento en que entran en juego dos nuevos roles. AI OF THINGS Machine Learning a tu alcance: ¿Qué son los Insights? 6 de marzo de 2019 Analista de datos (Data Analyst) Definición: Es el encargado de analizar mediante técnicas estadísticas (entre otras) los datos históricos de la organización para poder tomar decisiones futuras mejor informadas (desde cómo evitar la fuga de clientes, a la definición de estrategias de precios). Funciones: Analizar datos históricos para detectar patrones de comportamiento o tendencias. (Análisis descriptivo y/o predictivo) Requisitos: Para este rol son fundamentales los conocimientos sobre estadística, unidos a habilidades de pensamiento crítico. También son de gran importancia las habilidades de comunicación. En definitiva, su función es “Comprender lo que ha sucedido en el pasado para tomar mejores decisiones en el futuro”. Científico de datos (Data Scientist) Definición: Es el encargado de realizar un análisis prescriptivo del histórico de datos empresariales, de forma que no sólo puede anticipar qué va a pasar en el futuro y cuándo, sino también dar una razón del porqué. De esta forma podrá sugerir qué decisiones habrá que tomar para sacar partido de una oportunidad de negocio futura o mitigar un posible riesgo, mostrando la implicación de cada opción sobre el resultado. Funciones: Construir y aplicar modelos de Machine Learning capaces de seguir aprendiendo y mejorando su capacidad predictiva conforme va aumentando el volumen de datos recolectados. Requisitos: Para este rol son necesarios conocimientos avanzados de matemáticas en general (y de estadística en particular), conocimientos de Machine Learning, conocimientos de programación en SQL, Phyton, R o Scala. En ocasiones, el Analista de Datos es considerado un Científico de Datos “en formación”. Por ello, la frontera entre las tareas y Funciones de uno y otro rol a veces no son tan claras. En definitiva, su función es “Modelar el futuro”. Hemos dejado para el final un rol fundamental, el Director Digital (“Chief Data Officer”-CDO). Director Digital (“Chief Data Officer”-CDO) Definición: Es el responsable de dirigir, planificar y controlar la transformación digital de cualquier marca. Por ello, es el máximo responsable en las áreas de Gobernanza de Datos, Gestión de la Información y Seguridad. Funciones: Establecer la estrategia que garantice el crecimiento digital de la empresa de forma sostenible en el tiempo, capaz de adaptarse con fluidez a los continuos cambios del panorama digital. También deberá fomentar las relaciones internas y externas de la organización, captar el mejor talento, dirigir equipos y resolver con diplomacia las tensiones potenciales que puedan surgir entre los distintos departamentos de la empresa. Requisitos: Para este rol es muy importante tener una gran experiencia en el mundo digital, visión estratégica, dotes de comunicación para el trabajo en equipo y creatividad. El CDO debe ser innovador, en ocasiones incluso disruptor, y tener poder de decisión y recursos. Por eso, normalmente está a las órdenes del CEO (Director General). El CDO puede tener algunos “solapamientos” con la figura del CIO (“Chief Information Officer”), pero es un rol que a los aspectos de innovación tecnológica, le suma un claro componente de marketing muy orientado a explotar los “Activos Digitales”. (En este post de “A un click de las TIC se analizan sus similitudes y diferencias: “CIO o CDO, ¿quién sobrevivirá?”). Una vez vistos los distintos perfiles profesionales de datos, ¿Con cuál te identificas más? AI OF THINGS Video Post #12: Perfiles de datos ¿Cuál es el tuyo? 26 de septiembre de 2019
30 de enero de 2018
AI & Data
Machine Learning contra “fake news”
Las “fake news” son uno de los últimos términos incorporados a nuestro vocabulario habitual en forma de anglicismo. Pero, ¿qué son las “fake news”? ¿Son realmente algo nuevo? Y ¿por qué han despertado tanto interés ultimamente? ¿Por qué parece que ahora todo el mundo habla de ellas? ¿Qué son las “fake news”? En realidad, las “fake news” son las noticias falsas de toda la vida. Es la manipulación de la información, la propaganda. Obras dedicadas a la historia de la propaganda, como “Munición para la mente: Historia de la propaganda desde el mundo antiguo a nuestros días” de Philip M. Taylor, nos dan las claves del porqué de su existencia y quiénes están detrás de ellas. Normalmente, los principales creadores de noticias falsas, o bulos, son los estados, los mismos que siempre han intentado acallar esas otras fuentes de información que revelan aspectos sobre los cuales los dirigentes preferirían correr un tupido velo. Y aunque parezca un fenómeno más identificable con gobiernos dictatoriales, las estrategias para intentar controlar el pensamiento de los ciudadanos a través los mensajes emitidos por sus dirigentes culturales o artísticos, reescribiendo la historia con enfoques poco o nada objetivos o incitándoles a adoptar determinados comportamientos o cambios en su modo de vida, en definitiva, la propaganda, es un fenómeno histórico y global que está de plena actualidad. Las “fake news” cobran especial relevancia cuando hay elecciones a la vista (propaganda política), o cuando hay una guerra de por medio (propaganda militar). Se trata, claramente, de situaciones donde alterar el resultado en una u otra dirección se traduce en prerrogativas económicas y de influencia o poder en los que determinados grupos pueden salir claramente beneficiados. No cuesta mucho trabajo encontrar ejemplos. El equipo de la UE especializado en la detección de noticias falsas, East Stratcom Task Force, detectó un gran incremento de noticias falsas destinadas a agravar la crisis en Cataluña. De hecho, confirmó la existencia de una auténtica maquinaria de noticias falsas que, desde Rusia, intenta debilitar a EEUU y la UE. También fue notoria la injerencia rusa en la campaña electoral que llevó a Donald Trump a la presidencia de EEUU. Tanto, que el Congreso y Senado americanos han abierto varias investigaciones sobre el impacto de estas campañas de desinformación y el papel de Rusia en ellas. Por su parte, el Parlamento Británico ha exigido a Facebook una investigación sobre el impacto de los bulos difundidos a través de esta red social en el referéndum del Brexit. Está claro que las distintas innovaciones tecnológicas que tanto han favorecido la comunicación, también han traído de la mano una mayor facilidad para la difusión de noticias falsas que hoy día “se benefician de instrumentos realmente masivos y de uso muy fácil”,como explica Pablo Sapag, profesor de Historia de la Propaganda en la UCM, en un artículo para EL PAÍS Retina. Sin embargo, matiza, aunque “hay una cierta sensación de descentralización, la propaganda sigue estando en manos de quien realmente puede hacerla, ya sean Estados, gobiernos, grupos de poder. (…)” La propaganda solo es efectiva si se hace de forma profesional y quienes tienen capacidad de hacer propaganda no son los individuos, son las organizaciones, ya sean estatales o de otro tipo. ¿Por qué son preocupantes? Son preocupantes porque numerosos estudios reflejan que, aunque creamos lo contrario, muchas veces no somos capaces de distinguir las noticias reales de las falsas. Un estudio publicado por la Universidad de Stanford en Noviembre de 2016 sobre 7804 estudiantes mostró cómo en torno al 82% de los adolescentes no eran capaces de distinguir entre contenido real y contenido manipulado. Otro estudio, diseñado por Sophie Nightingale, investigadora en psicología cognitiva y publicado en Julio de 2017 por el Cognitive Research ponía de relieve nuestras pobres habilidades para distinguir entre imágenes retocadas y reales. De hecho, de los 700 participantes de la muestra, tan sólo un 60% fue capaz de detectar las imágenes modificadas, resultado poco mejor que si se hubieran elegido al azar. Incluso cuando eran advertidos de que ha imagen había sido retocada, tan sólo un 45% de los individuos eran capaces de detectar qué había cambiado en la foto. (Puedes probar tú mismo el test de la Universidad de Warwik). En la web del Bronx Documentary Center se pueden encontrar numerosos ejemplos de fotoperiodismo o fotografía documental en la que las imágenes han sido manipuladas. En esta galería se analizan los casos más importantes y sus implicaciones éticas. Esta dificultad para detectar imágenes manipuladas resulta preocupante porque las imágenes nos dan la sensación de agregar un plus de credibilidad a lo que leemos (“Lo he visto con mis propios ojos”) y tienen un gran impacto en nuestros recuerdos. Por tanto, influyen mucho en las decisiones que tomamos, no sólo nosotros mismos, sino también las propias autoridades, cuando, por ejemplo, se usan imágenes como prueba ante un tribunal. ¿Qué podemos hacer para luchar contra ellas? Lo principal es desarrollar habilidades de alfabetización mediática (“media literacy”), es decir, ser capaces de hacer una lectura consciente y crítica de los contenidos que recibimos a través de las redes sociales y otros medios. De hecho, la Universidad de Stanford ha diseñado contenidos específicos para ayudar a sus estudiantes a discriminar las noticias falsas de las reales. También podemos aprender algunas pistas parar distinguir imágenes manipuladas de imágenes reales. La BBC nos muestra las más importantes en el siguiente artículo “Los signos ocultos que pueden revelarte cuándo una foto es falsa”. Sin embargo, también nos sería de gran ayuda poder hacer un cribado previo de forma automatizada y es ahí donde entra en juego la inteligencia artificial y, en particular, los algoritmos de Machine Learning. ¿Cómo nos puede ayudar el Machine Learning a detectar noticias falsas? Al igual que la ciencia y los avances tecnológicos no son buenos ni malos, sino que dependerá del uso que hacemos de ellos, hay algoritmos que contribuyen a crear el problema, pero son también algoritmos los que nos pueden dar la clave para solucionarlo. El objetivo de empresas como Facebook, Twitter o Google es controlar la publicidad. De hecho, entre ellos controlan el 95% de la publicidad online. Sus ingenieros diseñan algoritmos que captan nuestra atención y nos mantienen“enganchados” a sus redes el mayor tiempo posible. Estos algoritmos de Machine Learning “aprenden” sobre nuestros intereses y se adaptan a ellos. Esto puede ser bueno, cuando recibimos información personalizada y real sobre aquellos temas que más nos importan, pero tiene la contrapartida de facilitar también la difusión de noticias falsas. Si el algoritmo detecta que hemos leído una historia rara, conspiratoria, sobre ovnis… lo que sea, empezará a sugerirnos más y más noticias de este tipo, ya que su objetivo es la viralidad, es decir, maximizar el impacto. Y ofrecernos publicidad en aquellas páginas que reciban más atención. Pero, aunque las principales redes sociales se centraron en la publicidad pagada (anuncios falsos) a la hora de responder a las preocupaciones de los gobiernos y otras instituciones, su responsabilidad va mucho más allá ya que, aunque la difusión de noticias falsas no sea el objetivo de su estrategia empresarial, sí que es una clara consecuencia. Por poner un ejemplo, según un estudio realizado por Media Insight Project en 2015 sobre individuos entre 18 y 34 años ( “How Millenials get news”) para el 18.88% de los jóvenes la principal fuente de noticias de actualidad es Facebook u otra red social. Si a esto le sumamos que la estrategia de estas redes de ofrecerte el tipo de noticia que “te gusta”, lo que se obtiene es una visión muy parcial y sesgada de la realidad. Construyendo un detector de “fake news” Aaron Edell,, su artículo para Towardsdatascience.com "I trained fake news detection AI with >95% accuracy, and almost went crazy" nos cuenta cómo se las ingenió para crear un detector fiable de noticias falsas basándose en técnicas de Procesamiento de Lenguaje Natural (“Natural Languaje Processing”) y Machine Learning. Aaron nos cuenta que, como en cualquier problema de Machine Learning, el trabajo principal es conseguir un conjunto adecuado (en cuanto a volumen y calidad) de datos de entrenamiento. Es decir, una gran cantidad de “fake news” con las que alimentar el algoritmo. Le presentamos una noticia falsa tras otra, y poco a poco va detectando rasgos comunes, patrones, que le ayudarán a identificarlas. Parece fácil, pero no lo es porque ¿Cómo seleccionar estas noticias? Cuando empiezas a investigar sobre el tema, encuentras una gran variedad de noticias. Desde las flagrantemente falsas, hasta las medias verdades, artículos pseudocientíficos, o de opinión. Así que decidió empezar a buscar en los sites de fake news más conocidos. Viendo la magnitud de la empresa, se le ocurrió probar con una herramienta de análisis de sentimiento, Textbox que interpretara los fragmentos de texto como “positivos” o “negativos”, y luego los combinara con un sencillo algoritmo “casero” que asignara distintos pesos según el tipo de texto (título, contenido, autor…) para obtener una valoración global. Pero aunque las pruebas iniciales parecían prometedoras, no funcionó. Un amigo le recomendó no tratar de buscar patrones en el texto para los distintos tipos de noticias, sino analizarlas por separado. Crear distintos conjuntos de datos de entrenamiento de noticias falsas, noticias satíricas, noticias reales etc. obtenidos de sites claramente reconocidos como fuentes de cada tipo de ellas. Sin embargo, tampoco funcionó porque ningún grupo de noticias era 100% puro. No servía. Fue en ese momento cuando decidió ponerse a leer noticia por noticia para clasificarlas correctamente y copiar/pegar cada una de ellas en una gigantesca hoja de Excel. Haciendo un considerable ejercicio de paciencia no exento de ciertos riesgos para su salud mental (por el cariz de los contenidos que tuvo que leer), llegó a recopilar un volumen adecuado de datos de entrenamiento. Sin embargo, al aplicar el algoritmo con estos datos, la precisión que obtuvo no pasaba del 70%. Tampoco servía. Nuevamente tocó volver al punto de partida. ¿Qué estaba fallando?. Su amigo experto opinaba que la mejora de la precisión quizás debería pasar por la simplificación del problema, así que se replanteó cuál era realmente el problema que quería resolver. Y ¡eureka!, dio con la respuesta. Detectar noticias falsas resultaba una tarea mucho más compleja que detectar noticias auténticas. Éstas últimas resultaban mucho más fáciles de categorizar. Así, empezó a recopilar noticias y clasificarlas como “no ciertas” (sátira, opinión, bulos etc) y “noticias ciertas” hasta llegar a un volumen adecuado. Y al probar nuevamente el algoritmo la precisión llegó a un ¡95%!. Eso era otra cosa. Habían encontrado un patrón en la forma en que estaban escritas las noticias que permitía detectar la diferencia entre las reales y las falsas. Así, crearon un modelo basado en Machine Learning, al que llamaron Fakebox, capaz de decir si un artículo está escrito de forma similar a como lo están las noticias reales o no. Con tan solo cortar y pegar el texto en la ventana de Fakebox, el modelo devuelve una puntuación. Si esta puntuación es baja, significará una alta probabilidad de encontrarnos con una sátira, un artículo de opinión o una noticia falsa. Aunque hoy por hoy no existe una solución perfecta que detecte automáticamente las noticias falsas, es interesante comprobar cómo, al igual que son algoritmos los que permiten la rápida difusión de las fake news, la mejor manera de contrarrestarlas es recurrir a otros algoritmos. Pero, como hemos visto en el ejemplo que nos contaba Aaron Edell, en el trabajo del Data Scientist, hay una parte muy importante de definición de objetivos, de preparación y tratamiento de datos, de ensayos, de errores, de consultar con otras personas expertas en la materia, de luchar contra el desaliento cuando los resultados no son los esperados, y de volver al punto de partida, cuando es necesario afrontar el problema desde un punto de vista completamente diferente. Y en la línea de "recurrir a otros algoritmos", os dejamos el enlace a este post ("Una IA capaz de detectar noticias falsas") de Think Big donde nos hablan de una startup, AdVerif.ai, que ha desarrollado un nuevo algoritmo de inteligencia artificial (IA) diseñado para detectar noticias falsas, malware y otro tipo de contenidos engañosos o problemáticos. ¿Y tú?¿Sabrías distinguir una “fake news”?
26 de enero de 2018
AI & Data
Machine Learning a tu alcance: La matriz de confusión
La matriz de confusión y sus métricas asociadas son parte fundamental de la "Caja de herramientas" del científico de datos, ya que, para saber qué modelo funciona mejor para un determinado problema, necesitamos métricas o herramientas que nos ayuden a evaluarlo. Sin embargo, a pesar de su gran utilidad, es un concepto que de primeras resulta algo complejo. En este post lo explicaremos de forma clara y sencilla, con ejemplos, y en concreto, intentaremos que no haya margen de confusión con la terminología en inglés o español. ¿Qué es la matriz de confusión y para qué se utiliza? Recordemos que un modelo de clasificación es aquel capaz de predecir a qué clase va a pertenecer una nueva instancia, basándose en lo aprendido en instancias anteriores. Así, en un modelo binario, podemos considerar dos clases: “Positiva” y “Negativa”. Basándonos en datos históricos de nuestra base de clientes, por ejemplo, podremos construir un modelo que prediga si un cliente va a darse de baja (caso tipo de predicción de “churning”), o no. Para evaluar este modelo que hemos creado, podríamos simplemente calcular su exactitud (“accuracy”), como la proporción entre las predicciones correctas que ha hecho el modelo y el total de predicciones. Exactitud= (Predicciones correctas)/(Número total de Predicciones) Esta exactitud sería equivalente a restar el ratio de error de la unidad: 1- ratio de error. Sin embargo, aunque en ocasiones resulta práctico por su facilidad de cálculo, otras veces es necesario profundizar un poco más y tener en cuenta los tipos de predicciones correctas e incorrectas que realiza el clasificador. Es aquí donde entra en juego la Matriz de Confusion (“Confusion Matrix”). Definición de matriz de confusión. Como ya hemos indicado en la introducción, la matriz de confusión es un concepto muy útil, pero resulta algo complejo de entender (¡y de explicar!). Así que, si al principio no entiendes bien las definiciones que vamos dando, no te desanimes y sigue leyendo porque pondremos ejemplos que te ayudarán a comprenderlo mejor. La matriz de confusión de un problema de clase n es una matríz nxnen la que las filas se nombran según las clases reales y las columnas, según las clases previstas por el modelo. Sirve para mostrar de forma explícita cuándo una clase es confundida con otra. Por eso, permite trabajar de forma separada con distintos tipos de error. Por ejemplo, en un modelo binario que busque predecir si una seta es venenosa o no, basándose en determinadas características físicas de éstas consideraremos las clases reales p(ositivo= la seta es venenosa) y n(egativo=la seta es comestible), y las clases pronosticadas por el modelo, S(í, es venenosa), o N(o, es comestible). De esta forma, la matriz de confusión para este modelo tiene etiquetadas sus filas con las clases reales, y sus columnas, con las predichas por el modelo. Quedaría así: Figura 1: Matriz de confusión para clasificador binario. De esta forma, la diagonal principal contiene la suma de todas las predicciones correctas (el modelo dice “S” y acierta, es venenosa, o dice “N” y acierta también, es comestible). La otra diagonal refleja los errores del clasificador: los falsos positivos o “true positives” (dice que es venenosa “S”, pero en realidad no lo es “n”), o los falsos negativos o “false negatives” (dice que es comestible “N”, pero en realidad es venenosa “p”). Sin embargo, cuando las distintas “clases” están muy desequilibradas, esta forma de clasificar la “bondad” del funcionamiento de un clasificador resulta poco útil. Por ejemplo, si la tasa de abandono de clientes (“churn”) es de un 10% al mes (es decir, 10 personas de cada 100 se dan de baja al mes), y consideramos al cliente que se da de baja como clase “positiva”, la relación entre clases positivas: negativas esperada sería de 1:9. Así que si directamente asignamos todos los clientes la clase negativa (=no churn), estaríamos consiguiendo una precisión base del 90%, pero… no nos serviría para nada. El problema radica en que al medir la precisión del algoritmo de esa forma no distinguimos entre los errores de tipo falso positivo y falso negativo, como si ambos tuvieran la misma importancia. Y esto no es así. Lo vamos a ver más claro con un ejemplo. Algoritmo de diagnóstico de cáncer: Falso positivo o “Error tipo I” El paciente no tiene cáncer, pero el algoritmo ha diagnosticado que sí lo padece. Se realizarán pruebas diagnósticas adicionales que acabarán descartando el diagnóstico. Tendrá un coste económico y un impacto emocional sobre el paciente, pero no se traducirá en riesgo vital. Falso negativo o “Error tipo II”: El paciente sí tiene cáncer, pero el algoritmo predice que no. Este error del algoritmo se traduce en una falta de detección temprana de la enfermedad. El paciente no recibirá tratamiento a tiempo y esto, indudablemente reduce sus posibilidades de superar la enfermedad. (Si quieres saber más sobre estos tipos de error puedes leer este otro post de nuestro blog: Tipos de error en Machine Learning: ¿los conoces?.) Figura 2: Tipos de error en Machine Learning. Viendo la importancia que tiene discriminar en cada caso concreto los distintos tipos de error que pueden resultar de la aplicación de algoritmo, entendemos mejor la necesidad de trabajar con diferentes métricas. Así, vamos a expresar la matriz de confusión de esta otra forma: Figura 3: Matriz de confusión con otras métricas de evaluación ( ampliar) El significado de cada uno de los términos es el siguiente: a es el número de predicciones correctas de clase negativa (negativos reales) b es el número de predicciones incorrectas de clase positiva (falsos positivos) c es el número de predicciones incorrectas de clase negativa (falsos negativos) d es el número de predicciones correctas de clase positiva (positivos reales). Para entender este “trabalenguas” volvemos al ejemplo del clasificador de setas venenosas. Así, “a” sería el número de veces que el algoritmo ha acertado al decir que una seta no es venenosa. Por otro lado, “b” sería el número de veces que el algoritmo se confunde y dice que es venenosa una seta comestible. “c” serían los casos en que el algoritmo predice que la seta no es venenosa, y resulta que sí que lo es (mal asunto…,) y, por último, “d” serían los aciertos del algoritmo al predecir que es mejor no comerse esa seta. Basándonos en los valores de ésta nueva matriz de confusión, más completa, vamos a definir una serie de métricas que nos serán muy útiles. 1. Precisión y exactitud La exactitud o “Accuracy” (AC) se refiere a la dispersión del conjunto de valores obtenidos a partir de mediciones repetidas de una magnitud. Cuanto menor es la dispersión mayor la precisión. Se representa por la proporción entre el número de predicciones correctas (tanto positivas como negativas) y el total de predicciones, y se calcula mediante la ecuación: Figura 4: Exactitud. Por otro lado, la precisión o, en inglés, “Precision” se refiere a lo cerca que está el resultado de una medición del valor verdadero. En términos estadísticos, la exactitud está relacionada con el sesgo de una estimación. También se conoce como Verdadero Positivo (o “True positive rate”). Se representa por la proporción entre los positivos reales predichos por el algoritmo y todos los casos positivos. Es decir, de todas las setas venenosas, cuántas ha predicho correctamente el algoritmo que lo son. Se calcula según la ecuación: Figura 5: Precisión La siguiente ilustración ayuda a ver de forma práctica la diferencia entre precisión y exactitud. Así, por ejemplo, la figura (b) representa un resultado exacto y preciso, mientras que la (C) es preciso, pero no exacto y la (a) no es ni una cosa ni la otra. Figura 6: Precisión vs Exactitud.(Public Domain) 2. Sensibilidad y Especificidad La sensibilidad y la especificidad son dos valores que nos indican la capacidad de nuestro estimador para discriminar los casos positivos, de los negativos. La sensibilidad es la fracción de verdaderos positivos, mientras que la especifidad, es la fracción de verdaderos negativos. La Sensibilidad , exhaustividad o (“Recall”), también se conoce como Tasa de Verdaderos Positivos (True Positive Rate) (TP). Es la proporción de casos positivos (en nuestro ejemplo, setas venenosas) que fueron correctamente identificadas por el algoritmo. Se calcula según la ecuación: Figura 7: Sensibilidad. La Especificidad, por otra parte, es la Tasa de Verdaderos Negativos, (“true negative rate” o TN). Se trata de los casos negativos que el algoritmo ha clasificado correctamente. Su ecuación es: Figura 8: Especificidad. La precisión y la sensibilidad nos están indicando la relevancia de los resultados. Por ejemplo, un algoritmo muy exacto, (P alto) nos dará muchos más resultados relevantes que irrelevantes, mientras que un algoritmo muy sensible, (TP alto), será el que detecte la mayoría de resultados de interés (los primeros). La conveniencia de usar una métrica otra como medida del estimador dependerá de cada caso en particular y, en concreto, del “coste” asociado a cada error de clasificación del algoritmo. Por ejemplo, en ejemplo de las setas, es más importante que la fracción de verdaderos positivos sea alta, es decir que el algoritmo sea muy sensible y haya un mayor número de setas venenosas detectadas correctamente. El coste de un falso negativo, es decir, una seta venenosa dada por comestible, podría ser dramático. En otros casos, es más interesante priorizar la especificidad sobre la sensibilidad. Por ejemplo, las pruebas que buscan detectar individuos sanos 3. Otros términos derivados de la matriz de confusión. Dejamos para el final otro par de métricas que también se usan habitualmente para la evaluación de algoritmos: la tasa de falsos positivos y la de falsos negativos. La tasa de Falsos Positivos, (False Positive rate, FP) es la proporción de casos negativos que fueron erróneamente clasificados como positivos por el algoritmo. Es decir, de las setas comestibles, cuántas clasificó el algoritmo erróneamente como venenosas.Se calcula según la siguiente ecuación: Figura 9: Tasa Falsos Positivos La tasa de Falsos Negativos(False Negative rate, FN) es la proporción de casos positivos incorrectamente clasificados (setas venenosa no detectadas). Su ecuación es: Figura 10: Tasa de Falsos Negativos. Una vez definidas estas métricas, sólo nos resta ponerlas en práctica. En el post "Tu primer experimento en Azure ML Studio: El caso del Titanic (III): Entrenando el modelo" puedes encontrar un ejemplo práctico de su uso para evaluar un modelo creado en Azure ML Studio, pero en futuros experimentos tendremos ocasión de ver muchos más. ¡No te los pierdas!. AI OF THINGS Cómo interpretar la matriz de confusión: ejemplo práctico 13 de diciembre de 2021
23 de enero de 2018
AI & Data
Infografía: ¿Qué podemos hacer con Machine Learning y qué no?
¿Sabes lo que puede y lo que no puede hacer la inteligencia artificial (IA)?. Está claro que es una tecnología disruptiva que puede ayudar a reinventar muchos negocios. Pero, muchas veces, la imagen que nos transmiten los medios de comunicación sobre la IA dista mucho de la realidad. En esta infografía vamos a intentar resumir de forma sencilla lo que se puede esperar de la IA, y lo que no. Es cierto que la aplicación de tecnologías basadas en Inteligencia Artificial ( Artificial Inteligence) ya está cambiando la forma de buscar en la red, de anunciarse, el comercio electrónico, las finanzas, la logística… La inteligencia artificial tiene un gran poder transformador, pero no hace milagros y, pese a su amplio rango de posibles aplicaciones, su implementación todavía está limitada a determinado tipo de casos. Básicamente, los problemas que se resuelven mediante IA hoy en día consisten en, dados unos determinados datos de entrada A (Input data), obtener una respuesta B. El proceso por el que llegamos de A a B es lo que se conoce como aprendizaje supervisado. El aprendizaje supervisado en Machine Learning ha evolucionado mucho, y hoy día se trabaja con tecnologías Deep Learning, o Redes Neuronales, que se basan en la forma de aprender del cerebro humano. Aun así, estamos lejos de los robots con conciencia que nos muestran las películas de ciencia ficción, o de lo que es capaz de hacer una inteligencia humana. Por otra parte, el aprendizaje supervisado tiene un punto débil: la enorme cantidad de datos que hace falta para entrenar los sistemas. Por ejemplo, para etiquetar correctamente una foto, el sistema necesita entrenarse con una ingente cantidad de imágenes (entre decenas y centenares de miles). Para aprender a transcribir audio, harán falta decenas de miles de horas de audio con sus respectivas transcripciones. Por tanto, son los datos y no el software, la principal barrera con la que se encuentran lo negocios que quieren convertirse en data-driven. En la siguiente Infografía podemos ver ejemplos concretos de aplicación de aprendizaje supervisado a distintos problemas. Figura 1: Infografía- ¿Para qué se usa el Machine Learning?. ¿Y entonces, qué otras tareas podríamos automatizar con Machine Learning? ¿Cómo podemos ampliar esta lista?- Para responder a esta pregunta, podemos usar la “regla de tres” de Andrew Ng, según la cual: Toda tarea para la cual una persona normal necesite pensar menos de un segundo, muy probablemente se puede automatizar ya, o en un futuro muy próximo. No te pierdas ninguno de nuestros post. Suscríbete a LUCA Data Speaks.
19 de enero de 2018
AI & Data
Insights para una vida más activa: No va a ser todo deporte de competición.
En el blog de LUCA hemos visto ya distintos campos en los que la aplicación de analítica Big Data ha supuesto un cambio revolucionario. Uno de ellos es el deporte. El deporte mueve mucho dinero, genera mucho negocio, y aún más cuando se trata de alta competición. Sin embargo, la aplicación de insights al mundo del deporte tiene otra cara menos visible, pero que también puede tener un gran impacto. Uno de los primeros ejemplos de aplicación de Big Data al mundo deportivo aparece reflejado en la película “Money Ball”. Esta película se basó en un best seller escrito por Michael Lewis en 2003, en los que se narraba el resurgimiento de un equipo de baseball, los Oakland Athletics, gracias la decisión del gerente del equipo, Billy Beane, de aplicar un nuevo enfoque a la captación de jugadores para el equipo. Frente a la estrategia tradicional, basada en la experiencia de los llamados “cazatalentos” y la intuición, Beane decide probar el sistema que le propone Peter Brand, un joven economista graduado en Yale con ideas radicales sobre la forma de evaluar a los jugadores. Brand, pese a la firme oposición de los cazatalentos e incluso del entrenador, decide seleccionar a jugadores basándose casi exclusivamente en su porcentaje de base(OBP). Así, logra reunir un equipo de jugadores infravalorados con mucho más potencial del que se les reconocía y a un precio mucho más económico que las grandes estrellas, ya que algunos eran descartados sistemáticamente por los cazatalentos debido a causas que no eran tan relevantes. Así fue como Bean demostró que el futuro del baseball, pasaba por hacer fichajes “data-driven”. También hemos visto otros ejemplos relacionados con otros deportes de alta competición, como el ciclismo. Si te los perdiste, no dejes de leer los post que publicamos sobre el tema: Las analíticas Big Data llegan a la Vuelta en 2017 Movistar Team: Los mejores ciclistas, el mejor cuerpo técnico, la mejor estrategia … y Big Data Pero hoy no queríamos hablar del deporte “en mayúsculas”, sino del deporte y la actividad física que practican los ciudadanos de a pie, y de cómo también puede verse potenciado y mejorado gracias a la aplicación de analíticas Big Data. A primera vista puede parecer poco relevante, pero vamos a ver que no es así. Estamos viviendo en un mundo donde los dispositivos inteligentes han cambiado muchos aspectos de nuestra vida cotidiana. Cómo viajamos, cómo nos desplazamos, cómo elegimos nuestro ocio, cómo buscamos pareja…Sin embargo, hay aspectos que no han evolucionado al mismo ritmo. Intenta hacer una reserva online de una pista de paddle en una instalación deportiva (municipal o privada), o consultar el horario de una clase de yoga y… verás que es mucho más fácil encargar comida china y comértela en tu sofá sin dar más pasos de los que te exija el abrirle la puerta al repartidor. Sí, muchas de las mejoras que ha aportado la tecnología a nuestra vida cotidiana se traducen “ahorrarnos paseos”. Ya no hacer falta ir al supermercado a hacer la compra, ni al banco a consultar nuestro saldo, ni a la agencia de viajes a comprar los billetes de tren, ni a la taquilla del teatro a por las entradas… En consecuencia, nuestra vida cada vez es más sedentaria. Y esto no es bueno. Todo el mundo sabe que la obesidad es muy perjudicial para la salud de las personas, pero los peligros de la falta de actividad física ,tan frecuente hoy en día, no son tan conocidos. Según un estudio de la Universidad de Cambridge, produce muchas más muertes que las atribuibles a la obesidad. En concreto, el doble. Y no sólo eso, el tener un estilo de vida sedentario incrementa el riesgo de padecer hasta 20 patologías distintas, incluyendo algunas tan graves como ataques al corazón, diabetes tipo 2, cáncer o algunas enfermedades mentales. En Reino Unido surgió una entidad sin ánimo de lucro ukactive, cuyo objetivo es conseguir que cada día más personas tengan una vida más activa. Los beneficios son claros, ya que las personas con es (¡no hay que olvidar que el deporte es un excelente generador de endorfinas!). Y hay otra importante ventaja, las personas más sanas y felices son menos “costosas” para los servicios de salud. Figura 1: Un estilo de vida activo tiene ventajas a cualquier edad. Ukative se ha propuesto impulsar este sector, que, como hemos visto antes, se ha quedado un poco desfasado tecnológicamente. Para ello, se basa, como hizo Billy Beane con los Oakland Athletics, en promover un estilo de gestión basado en los datos. Facilita los medios, la estructura, la tecnología y la formación para que los proveedores de este tipo de servicios (gimnasios, instalaciones deportivas y de ocio activo) , tengan acceso a un ecosistema de datos abiertos donde puedan colaborar entre ellos y compartir información sobre sus servicios. Con este objetivo ukactive, 4global y otros socios, crearon la plataforma DataHub, que lleva la inteligencia de negocio al corazón de la industria del tiempo libre. Ukactive también ofrece un servicio de Business Performance Benchmarking que ofrece a los operadores valiosos Insights basados en métricas de rendimiento como “tasa de abandono”, “cambios en las tarifas de socios”, “tasa de retorno” y “duración media del contrato”. Esta información les permitehacer una valoración de sus servicios respecto a los de otros competidores en del mercado, y decidir qué mejoras serían mejor valoradas por los potenciales clientes. En definitiva, "acercarse" a sus clientes, darles un mejor servicio. También, están en marcha otras iniciativas, como el recientemente inaugurado ukactives ActiveLab, que impulsan el desarrollo de innovadoras startups con gran potencial para transformar el sector y facilitar la colaboración. Como vemos, los Insights basados en opendata son una herramienta muy interesante para el desarrollo de un sector, el deporte ciudadano, que Puede tener consecuencias muy beneficiosas para la salud y el bienestar de las personas. Al mismo tiempo permite obtener ventajas económicas para las administraciones públicas e impulsar el desarrollo empresarial de este sector. En definitiva, hacer que reservar una clase de Pilates para esta tarde resulte tan cómodo y fácil como encargar una pizza para cenar, no sólo tiene ventajas económicas, sino que también nos ayuda a construir una sociedad más activa, sana y feliz. (Puedes encontrar otros ejemplos de cómo la tecnología puede ayudar a mejorar nuestros hábitos de salud en ¿Incentivos fiscales a los hábitos de vida saludable?)
12 de enero de 2018
Conectividad e IoT
AI & Data
IoT y Big Data: ¿Qué tienen que ver?
La revolución digital ha cambiado nuestras vidas. En un principio, los avances tecnológicos estaban relacionados con el mundo de la investigación científica, la innovación industrial, la carrera espacial, defensa, sanidad, la empresa privada… Sin embargo, hoy, el ciudadano de a pie ve cómo cada día la tecnología cambia su propia forma de vivir, de comunicarse, de aprender, de tomar decisiones, incluso de conocerse a sí mismo. Y no hace falta ser un “techie” para tener plenamente incorporados a nuestro lenguaje habitual términos como Big Data e IoT. Pero, ¿sabemos realmente lo que significan? ¿Qué es IoT? ¿Qué tiene que ver con Big Data? En pocas palabras, IoT es el acrónimo de Internet of Things (Internet de las Cosas). La filosofía que sustenta este concepto es la conexión del ámbito físico con el espacio digital, a través de una serie de dispositivos conectados a internet. Estos dispositivos actúan como una versión mejorada de nuestros órganos sensoriales, y son capaces de recoger una gran cantidad datos de ese ámbito físico y transportarlos al ámbito digital, donde los almacenaremos, los procesaremos, y los usaremos para tomar decisiones informadas sobre cómo actuar. Decisiones que, en ocasiones, pueden llegar a estar totalmente automatizadas, ya que el IoT abre las puertas a la creación de aplicaciones en los ámbitos de la automatización, la detección por sensores y la comunicación entre máquinas. Los datos recogidos por los dispositivos conectados se caracterizan por su gran Volumen, -hay millones de sensores generando continuamente información-, su Variedad, -los sensores son de todo tipo, desde cámaras de tráfico, radares, sensores de temperatura, humedad, etc.-, y la gran Velocidad a la que se generan, que son, precisamente, los atributos que definen el Big Data. A estas 3 V´s les podemos sumar la V de Veracidad y la del Valor. Se dice que los datos son el petróleo del siglo XXI, pero por sí mismos no son muy útiles. Sin embargo, si les aplicamos analíticas avanzadas Big Data podemos identificar tendencias y patrones, Insights, que aportan un gran valor a cualquier negocio, ya que permiten tomar decisiones basadas en los datos (Data Driven). (Si quieres conocer con más detalle las 5 V's del Big Data, te lo explicamos en este otro post de nuestro blog). La aplicación del IoT tiene dos vertientes muy diferenciadas: Por un lado, el segmento de consumo, compuesto por las aplicaciones orientadas a crear hogares inteligentes, vehículos conectados o cuidado de la salud. Por otro lado, el segmento del sector industrial, compuesto por aplicaciones orientadas a retail, manufacturing, edificios inteligentes, agricultura, etc. ¿Qué elementos componen IoT? Los elementos que dan forma al "Internet de las Cosas" son, por un lado, los dispositivos electrónicos y por otro, los protocolos de red e interfaces de comunicación. Entre los dispositivos, podemos distinguir tres tipos diferentes: Dispositivos “ponibles” o wearables: cualquier objeto o ropa, como relojes o gafas, en las que se incluyan sensores para mejorar sus funcionalidades. Dispositivos cuantificadores de la actividad de la persona: cualquier aparato diseñado para ser utilizado por aquellos que quieran almacenar o monitorizar datos sobre sus hábitos o estilo de vida. Dispositivos para domótica: cualquier aparato que permita controlar o alterar de manera remota por internet algún objeto, o que contenga sensores para detectar el movimiento, o permitir sistemas de identificación u otras medidas de seguridad en un espacio cerrado. Dispositivos industriales: cualquier aparato que permita convertir variables físicas (como temperatura, presión, humedad etc.) en señales eléctricas o de otro tipo. Son los sensores o actuadores industriales. Figura 1: Representación gráfica de IoT. Estos dispositivos pueden llegar a tener distintos niveles de inteligencia . Desde el nivel más básico, que correspondería los dispositivos únicamente capaces de identificarse de manera única ( identidad ), pasaríamos a dispositivos capaces de definir dónde está o ha estado un objeto ( ubicación), los que pueden comunicar el estado en que se encuentra y dispositivo, así como sus características ( estado ), hasta los que pueden analizar su entorno y ejecutar determinadas acciones en función de su criterio . Estos niveles de inteligencia se traducirán en una serie de capacidades. Así, tendremos: Dispositivos capaces de conectarse a los servicios de Internet y/o entre sí, pudiendo intercambiar y actualizar datos entre ellos y establecer comunicaciones con los servidores: Comunicación y Cooperación Dispositivos que pueden ser configurados y localizados desde cualquier lugar de la red: Direccionamiento Dispositivos que pueden ser identificados mediante tecnologías tales como RFID (Radio Frecuency Identification), NFC (Near Field Communication), códigos de barra de lectura óptica, etc.: Identificación Dispositivos que conocen en todo momento su ubicación física: Localización Dispositivos capaces de manipular su entorno: Actuación En cuanto a protocolos, ya sabemos que, para conectarnos a Internet, necesitamos TCP/IP. Los primeros pasos en IoT se dieron con la versión v4 (IPv4). Esto suponía una importante limitación, ya que el número de direcciones que se podían generar era muy reducido. A partir del año 2011 se diseña el protocolo de direccionamiento de Internet IPv6 posibilitando la identificación de una infinidad de direcciones y haciendo posible el desarrollo de IoT ya que, según estima Juniper Research, para 2021 el número de dispositivos, sensores y actuadores conectados superará los 46000 millones. Además de los protocolos es necesaria una interfaz de conexión. Por un lado, tenemos las tecnologías inalámbricas, como WiFi y Bluetooth. Por otro, están las alámbricas, como IEEE 802.3 Ethernet, la más interesante siempre que se pueda hacer una conexión cableada de dispositivos IoT a Internet, y las GPRS/UMTS o NB-iot que usan redes móviles para la conexión a internet. Éstas últimas, por su coste, se suelen emplear para dispositivos destinados a un bajo consumo de datos, como sistemas de apertura de puertas en garaje o sensores de telemetría en un huerto solar. La curiosa relación del IoT con las tostadoras. Un poco de historia. En 1990 John Romkey y Simon Hacket, en respuesta a un desafío lanzado por John Romkey Interop, presentaron el primer dispositivo conectado a internet: una tostadora. Desde cualquier ordenador conectado a la web podían controlar su encendido, apagado y tiempo de “tostado”. La única interacción humana necesaria era…poner la tostada. Al año siguiente, no obstante, incorporaron un pequeño brazo robótico que automatizaba completamente el proceso. Curiosamente, en 2001, otra tostadora hace su aparición como dispositivo protagonista en la historia del IoT, cuando Robín Southgate diseñó una capaz de recoger información meteorológica de internet y después “imprimir” el pronóstico en una rebanada de pan. Figura 2: El primer dispositivo conectado a Internet fue una tostadora. Aunque la tostadora de Romkey y Hacket aparece muchas veces referenciada como el primer dispositivo IoT, en realidad el primero fue bastante anterior. En la década de los 70, El Departamento de Computer Science del Carnegie Mellon conectó una máquina de CocaCola al servidor departamental mediante una serie de microswitches, de manera que antes de “darse el paseo” a la máquina de bebidas, el interesado podía comprobar desde su ordenador si quedaban refrescos y si tenían la temperatura adecuada, conociendo el tiempo que llevaban enfriándose en la máquina. (Aunque no estuviera exactamente conectada a Internet, que en esos momentos estaba empezando a tomar forma, sí que era un auténtico “dispositivo conectado”). Dejando aparte tostadoras y máquinas de refrescos, el Instituto de Tecnología de Massachusetts (MIT) y, más concretamente, en Auto-ID Center, jugó un papel fundamental en el desarrollo del IoT, gracias a su trabajo en el campo de la identificación por radiofrecuencia (RFID) en red y en el de las nuevas tecnologías de detección por sensores. Desde entonces, y gracias al crecimiento explosivo de smartphones y tablets, y al abaratamiento de costes en hardware y comunicaciones, en 2010, por primera vez en la historia, el número de dispositivos conectados por persona ya superaba la unidad (1,84, para ser exactos), aunque, por supuesto, su distribución a nivel global no fuera homogénea. Los desafíos y barreras que enfrenta el IoT La rápida innovación que se produce en esta área conlleva la coexistencia de un conjunto muy disperso de redes diferentes, diseñadas con fines distintos y a la vez muy específicos. Por ello, uno de los principales desafíos a los que se enfrenta el IoT consiste en definir estándares comunes que permitan que esas redes y sensores distintos puedan unirse e interoperar. Por otro lado, cada día tenemos nuevos avances tecnológicos en materia de miniaturización, componentes más potentes y eficientes. Pero hay un tema que frena todo esto: el consumo de energía, en concreto, la autonomía de las baterías. Cuando se trata de un dispositivo de uso personal, como un smartwatch o una pulsera que mide nuestros pasos o nuestro sueño, puede ser un poco molesto tener que estar recargándolo con cierta frecuencia, pero tampoco supone un gran problema. Sin embargo, cuando se trata de un dispositivo que está ubicado en una zona remota o de difícil acceso, resulta fundamental que éste funcione el mayor tiempo posible que le permita una sola carga. Para resolver este problema, se están investigando dispositivos que sean capaces de “capturar” energía de su entorno. Por ejemplo, medidores de caudal con sensores que permitan recargar sus baterías con energía luminosa. En conclusión: El IoT aumenta significativamente la cantidad de datos disponibles para procesar, pero estos datos no se convierten en información útil hasta que no son recopilados, almacenados y comprendidos. Y es en este punto donde entra en juego el Big Data, que, con sus capacidades de almacenamiento y procesado a gran escala, sumadas a al abaratamiento y disponibilidad de los dispositivos que pueden ser conectados, se traduce en una auténtica explosión de revolucionarias aplicaciones que hacen de nuestras ciudades “ciudades inteligentes”, que nos permiten hacer un uso más eficiente de los recursos energéticos, que nos hacen la vida más cómoda facilitándonos todo tipo de tareas y gestiones, que diagnostican enfermedades de forma más precisa introduciendo sensores en nuestro cuerpo, o nos dan información sobre lo que ocurre fuera de nuestro planeta cuando enviamos los sensores al espacio. IoT y Big Data son dos cosas diferentes, pero no podrían existir la una sin la otra. Por eso, ambas, son la verdadera evolución de internet. No te pierdas ninguno de nuestros post. Suscríbete a LUCA Data Speaks.
10 de enero de 2018
AI & Data
Un "Gordo" data-driven
Contenido escrito por Daniel Torres Laguardia , Head Scoring (d ata product ) Como cada año, el 22 de Diciembre el sorteo de Lotería da el pistoletazo de salida de la Navidad. Es un día que muchos esperan con ilusión, pero, ¿Cómo sería un "Gordo" data-driven"? El sorteo de la lotería de Navidad es una arraigada tradición en España. Habría muchos elementos que analizar a nivel estadístico sobre todo. Por ejemplo, ¿qué terminaciones han aparecido más veces en el Gordo? Se da la paradoja que si esa terminación es ,pongamos, el 5, ¿se buscará más esa terminación porque es la de la suerte, o lo que nos dice la lógica es que estadísticamente es más probable que salgan otros números, ya que no han salido tanto antes? Son ciertamente conocidas las colas para comprar en ciertas administraciones, e incluso la demanda que tienen en venta por internet. Pero al jugar una gran cantidad de números, aunque toque el Gordo allí, también tiene que ‘tocarte la lotería’" de que el décimo premiado sea el que has jugado en esa “famosa administración" de entre todos los que venden. Como referencia de los juegos de azar, es curiosa la experiencia de un clan familiar del que se rodó recientemente una película ( The Pelayos), y que apostaban en los casinos bajo la premisa de que las ruletas no eran 100% aleatorias debido a imperfecciones físicas que hacían que unas casillas fueran premiadas más frecuentemente que otras. Analizaban miles de ocurrencias en las tiradas y veían las tendencias de todos los números, y si se identificaba alguno que superaba ciertos límites sobre la ocurrencia media, de manera que incluso compensara el margen del casino, entonces veían como cierta la probabilidad de apostar y obtener beneficios. Figura 2 : Una ruleta, en la que 'The Pelayos' ganaron mucho dinero. Volviendo al sorteo del Gordo de Navidad, y olvidándonos de predecir el número ganador (¡sentimos si es lo que esperabas al leer este post!), la analítica de Big Data se puede emplear para fines estadísticos, como por ejemplo , para ver numeraciones más solicitadas, o para otros fines más comerciales como optimizar ventas analizando los lugares donde se venden más décimos, y ver patrones sociodemográficos, o también analizar la tendencia a la venta por internet. Con analíticas o sin ellas, lo importante de la Lotería es la ilusión. Hoy es el día del sorteo... ¿Y si este año te toca? No te pierdas ninguno de nuestros post. Suscríbete a LUCA Data Speaks.
22 de diciembre de 2017
AI & Data
Tu primer experimento en Azure ML Studio: El caso del Titanic (IV y fin) ¿Vivirán? : Prueba y puesta en producción del modelo
Por fin llegamos al final de nuestro experimento de creación de un modelo predictivo Machine Learning (ML) en Azure ML Workplace. Tras los post de introducción a la herramienta, creación del experimento y construcción del modelo, tan sólo nos quedaba probarlo con el conjunto de datos de Test y ver los pasos que hay que dar para "operativizarlo". Y eso es precisamente lo que vamos a ver en este post. 5. Cómo convertir el experimento de entrenamiento en un experimento predictivo. Una vez entrenado el modelo, ya podemos usarlo para hacer predicciones. Para ello, lo desplegamos como servicio web. Los usuarios pueden enviar los datos de entrada ( input data) al modelo y el servicio devuelve la predicción de resultados. Para convertir el experimento de entrenamiento en predictivo, lo primero es ejecutarlo ( “Run” en la barra de iconos inferior). El siguiente paso es seleccionar “Set up web service/Predictive web service”. Figura 1 : Ejecutamos el algoritmo y lo implementamos como web service. Como hemos probado dos algoritmos diferentes, nos solicita seleccionar uno de ellos: Figura 2 : Seleccionamos el modelo de entrenamiento (entre las dos opciones). En este este caso, elegimos el “ Two-Class Decision Forest”, así que borramos la rama que habíamos creado para probar el otro algoritmo. Se genera una nueva pestaña “ Predictive experiment” donde vemos que de forma dinámica se han ido agregando una serie de elementos y eliminando otros. En concreto, el objetivo es eliminar todos aquellos módulos que hacían falta para entrenar el modelo, pero ahora ya no son necesarios. También se agregan dos nuevos módulos Web service input y Web service output, que identifican los datos de entrada que se van a incorporar al modelo y los datos que devuelve el servicio. Aunque este proceso se ejecuta de forma automática al seleccionar la opción Set Up Web Service, también puede hacerse de forma manual, o incluso puede ser necesario “retocarlo” manualmente después. Figura 3 : Generación del experimento predictivo. En la parte inferior podemos ver los detalles del proceso de creación del experimento predictivo: Figura 4 : Detalles del proceso. En este caso, vamos a recurrir al retoque manual. Una vez generado el modelo, entrenado y validado, ya no es necesario que los datos de test recorran todo el flujo del experimento. El módulo Web service input puede entrar directamente en el de Score Model. La operación es tan sencilla como arrastrar el módulo a la parte baja del diagrama (borrando en enlace que lo conectaba con el módulo Train.csv), y después conectarlo con el módulo Score Model). Figura 5 : Simplificación del algoritmo. (Más detalle sobre cómo preparar el modelo en How to prepare your model for deployment in Azure Machine Learning Studio). 5.1 Lo implementamos como web service Una vez creado el experimento predictivo, lo vamos a implementar como servicio web. Para ello, lo primero que tenemos que hacer desde el entorno del experimento (experiment canvas) es ejecutarlo (“Run”). Una vez haya terminado de ejecutarse, seleccionamos Deploy Web Service y después, Deploy Web Service New. Se abre la página del portal Machine Learning Web Service portal opens. Nota: para implementar un Nuevo servicio web debes tener los permisos configurados en esa suscripción. Para saber cómo confirgurarlos en caso de que fuera necesario consultar: Manage a Web service using the Azure Machine Learning Web Services portal. Figura 6 : Consola web services en Azure ML Studio. Vemos que ha generado una API que ejecutará nuestro modelo predictivo y a la que podremos acceder de distintas formas. Opción 1: La más sencilla de ellas es desde esta misma pantalla, seleccionando el botón azul “Test”. Vemos cómo se abre un cuadro de diálogo en el que podemos ir introduciendo a mano los valores de las distintas variables para que nos prediga si ese pasajero concreto, según el modelo que hemos entrenado, sobrevivirá o no. Figura 7: Botón "Test". Figura 8 : Formulario para introducir manualmente los valores de los parámetros. Opción 2: La segunda opción es seleccionar “Test Preview” Figura 9: Opción Test preview. Esta opción nos lleva al portal Azure ML web services, donde, si seleccionamos la opción “Test end point”, bajo el icono “Basics”, accedemos a una versión web de este mismo formulario para agregar los valores individuales de las distintas variables de un caso concreto: Figura 10 : Portal web services. Puede ser en el mismo formato que hemos visto antes: Figura 11 : Formulario por defecto. O en formato .csv: Figura 12: Formulario en formato csv. Opción 3: La tercera opción es llamar a la API desde Excel, seleccionando el icono de Excel que aparece bajo APP. Al elegir esta opción, se descarga un fichero Excel con un add-on que permite conectar con los servicios web de Azure. Figura 13 : Llamada a la API desde Excel. Por defecto, carga una muestra de los sample data, para poder empezar a trabajar. Figura 14 : Detalle del módulo de conexión a los web services desde Excel. 5.2 Probamos el funcionamiento del algoritmo como web service (según la opción 1). Recordamos que, para entrenar el modelo nos descargamos de Kaggle el conjunto de datos Train.csv. Lo dividimos en dos partes (80/20) para poder hacer un Scoring del modelo y obtuvimos resultados como éste ( Visualizando, dentro del Módulo “Scored Model”, el Scored Dataset). En este conjunto de datos, sabíamos qué pasajeros había sobrevivido, y cuáles no. El modelo ha aprendido a predecir la supervivencia “Scored Label”, basándose en los datos de entrenamiento de forma que cuando obtiene un “Scored Probability” > 0,5, le asigna un “ Scored Label”= 1, Superviviente. Y si es menor, “Scored Label” = 0, Fallecido. Figura 15 : Scored dataset (datos de entrenamiento). Ahora, vamos a comprobar cómo funciona el algoritmo al aplicarlo s obre el conjunto de datos de test.csv. Lo descargamos de Kaggle, como hicimos con el anterior. Los datos tienen este aspecto: Figura 16 : Aspecto de los datos del test.csv descargado de Kaggle. Nos vendrá bien recordar el “Diccionario de Datos” porque vamos a agregar a mano alguno de estos ejemplos: Figura 17 : Diccionario de datos. Si recordamos la “Opción 1”, la más básica, seleccionábamos “Test” y se nos abría un formulario para ir introduciendo los datos nuevos de forma manual.Si cogemos, por ejemplo, el primer registro: PassengerId,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked 892,3,"Kelly, Mr. James", male,34.5,0,0,330911,7.8292,,Q y queremos calcular la probabilidad de que este pasajero fuera superviviente, seleccionamos “survived”=1 y vamos rellenando el resto de los datos: Figura 18 : Agregamos manualmente los datos de esta pasajera. El resultado de la predicción (si seleccionamos ver detalles) es: Figura 19 : Resultados de aplicar el modelo predictivo. Figura 20 : Detalle del resultado. Como el valor “Scored Probabilities” es 0,625, por tanto, mayor que 0,5, el modelo predice que esta pasajera si sobrevivirá. Evidentemente, esta forma de probar nuestro modelo no resulta nada práctica para ponerlo en producción o hacer predicciones masivas. En ese caso, ya tocaría “aflojar la mosca”. Ejecutar algoritmos tiene siempre un coste en computación. Desde una Raspberry Pi a un HAL9000 (Space Odyssey) o un Cray). Nosotros lo dejamos aquí, pero los interesados, pueden investigar un poco sobre el modelo de costes. Se paga por la computación necesaria para entrenar al modelo, por la computación necesaria para llamar al “scoring” (modelo entrenado) a escala, y en particular las llamadas al modelo entrenado “operacionalizado” en la Web API Con este post, cerramos la serie sobre el experimento de supervivencia del Titanic, donde hemos creado nuestro propio modelo de predicción en Azure Machine Learning Studio, haciendo el proceso completo, desde la carga y depuración de los datos, la generación del modelo, su entrenamiento, scoring, generación del modelo en formato web service y prueba sobre el conjunto de datos de test. Esperamos que os haya sido útil y que os animéis a generar otros modelos basados en otros algoritmos y, en definitiva, seguir aprendiendo cada día un poco más de Ciencia de Datos. Ya está publicados los siguientes post del experimento. Puedes encontrar la serie completa aquí: Titanic: Tu primer experimento en Azure ML Studio Tu primer experimento en Azure ML Studio (II); El caso del Titanic: Preparando los datos Tu primer experimento en Azure ML Studio: El caso del Titanic (III): Entrenando el modelo Tu primer experimento en Azure ML Studio: El caso del Titanic (IV y fin): ¿Sobrevivirán?. Prueba y puesta en producción del modelo.
14 de diciembre de 2017
AI & Data
Manual sobre utilidades del big data para bienes públicos
Como ocurre con muchas tendencias tecnológicas, todo el mundo habla del big data, pero pocas personas sabrían definirlo de forma precisa. Este manual, publicado recientemente por Goberna (Escuela de Política y Alto Gobierno, del Instituto Universitario de Investigación Ortega y Gasset), con la colaboración de Telefónica, tiene como objetivo acabar con esa incertidumbre y hacer entender cómo esta tecnología puede ser usada desde el sector público para mejorar la forma en que se toman decisiones o se prestan bienes y servicios a la ciudadanía. A lo largo de 350 páginas, y 20 capítulos, Pablo Díaz coordina firmas de primer orden de los distintos ámbitos relacionados con el big data. Científicos de datos, Directores de Estrategia, Catedráticos de Universidad, Directores de Institutos Públicos... matemáticos, ingenieros, informáticos, abogados, profesores, investigadores... sector público y sector privado. Todo ello, con un objetivo fundamental, hacer comprender al lector cuáles son los aspectos que hay que tener en consideración cuando se quieren emprender políticas o proyectos del ámbito público basados en tecnologías big data. Tras el prólogo de Tamara Dull, Directora de tecnologías Emergentes en el Instituto SAS y Manuel Acebedo, consultor y experto en cooperación al desarrollo, el manual se divide en dos bloques. El primer bloque, Introducción al big data, consta de 12 capítulos a lo largo de los cuales distintos expertos nos hablan de temas como la revolución que supone el big data en el sector privado y sus implicaciones en el público; nos explican cómo convertir los datos en información y conocimiento; plantean cuestiones sobre privacidad, ciberseguridad, y la necesidad de normalizar y crear estándares para el big data, y por último, desgranan aspectos organizativos sobre el tipo de estructuras necesarias en las organizaciones datadriven. Otro de los temas planteados es cómo la innovación basada en la ciencia de datos permite a las Administraciones Públicas dejar de tener un carácter "reactivo", para pasar a ser Administraciones "predictivas y proactivas" vinculadas al big data. El segundo bloque, Estudio de casos, consta de 8 capítulos con ejemplos concretos de cómo distintas administraciones públicas de Chile, Colombia, Costa Rica, Guatemala, España, Estados Unidos y Reino Unido se han basado en tecnologías de datos para emprender determinadas políticas públicas. Se trata de aplicaciones a campos como la atención en materia de salud, mejora del transporte público y la movilidad, la estimación de la pobreza utilizando datos de teléfonos móviles, o la creación de herramientas y plataformas basadas en soluciones abiertas para ofrecer respuestas innovadoras a asuntos candentes. Se hace especial énfasis en las oportunidades y los retos que plantean estas nuevas tecnologías aplicadas al bien social. Por último, el capítulo 20 merece para nosotros especial mención. Nuestro equipo de Data Scientist en LUCA, la unidad de Data Science de Telefónica, nos presenta experiencias concretas de cómo el big data privado también puede crear valor en las administraciones públicas. Como ejemplos concretos, tenemos la aplicación de la herramienta Smart Steps a la estimación y segmentación de visitantes en un gran acontecimiento turístico, como es la Fiesta de las Flores en Gerona, o el estudio, con esta misma herramienta, de los desplazamientos por motivos de trabajo en la Comunidad de Madrid para definir estrategias de reducción de la contaminación. Como broche final, Chema Alonso, CDO de Telefónica, predice en la "Nota al cierre" que sólo habrá futuro para las organizaciones que toman decisiones basadas en los datos. Las otras, tal vez sean como los dinosaurios que aún no lo saben, pero están a punto de extinguirse No te pierdas ninguno de nuestros post. Suscríbete a LUCA Data Speaks.
4 de diciembre de 2017
AI & Data
Tu primer experimento en Azure ML Studio: El caso del Titanic (III): Entrenando el modelo
Bienvenidos a la tercera entrega del tutorial ejemplo de creación de un modelo de Machine Learning (ML) en Azure ML Workplace aplicado al dataset de pasajeros del Titanic. Tras la introducción a la herramienta que hicimos en la primera parte, en la segunda, creamos el experimento, y llevamos a cabo todos los procesos de carga, depuración y tratamiento de los datos, previos a la creación del modelo predictivo. Ahora, es el momento de construir el modelo. 4. Construcción del Modelo En el primer post del experimento explicamos lo que eran los datos de entrenamiento y los datos de test (“Concepto Training Data vs Testing Data). Ahora vamos a dividir nuestro dataset de forma aleatoria en esos dos conjuntos de datos. Usaremos el 70% de los datos como datos de entrenamiento, y el 30% que nos reservamos nos servirá para evaluar la eficacia de nuestro modelo a la hora de predecir valores futuros o desconocidos. Para ello, usaremos el modulo de “Split”, siguiendo estos pasos: En el menú “Data Transformation” (a la izquierda) seleccionamos “Sample and SplitSplit Data”. Lo conectamos con el elemento anterior del flujo (“Select columns in Dataset") En el menú “Properties”, a la derecha damos al parámetro “fraction of rows in the first dataset” el valor 0.7. Esto significa que el 70% de los datos se asignarán de forma aleatoria al nodo de salida izquierdo (“1”), mientras que el 30% se asignará al nodo derecho (“2”) Esta partición de los datos en proporción 70/30 es un valor habitual en Machine Learning, pero podemos definir distintas proporciones según el problema. Figura 1: Añadimos el módulo Split al flujo. Figura 2 : Propiedades del módulo Split 4.1 Selección del algoritmo Ya ha llegado el momento de identificar qué tipo de problema tenemos entre manos, y en qué tareas conocidas lo podemos descomponer. Para ello, nos puede resultar muy útil releer estos post de la serie de Machine Learning: Las 9 tareas en las que se basa el Machine Learning Los 2 tipos de aprendizaje Machine Learning: supervisado y no supervisado Así, podemos ver que se trata de un caso de aprendizaje supervisado, donde la clase de respuesta o variable objetivo es un valor categórico “0”=superviviente, “1”=fallecido. Por tanto, estamos ante un problema de clasificación binario o de clase dos. Podemos consultar, por ejemplo, la cheat-sheet de algoritmos machine Learning de Azure para intentar determinar qué algoritmo puede funcionar mejor en este caso. Hemos “recortado” la parte que nos interesa para verlo mejor. Por tanto, desde el botón START, seguimos la ruta, predecir categorías (“ predicting categories”), dos categorías y vemos que nos propone una serie de algoritmos, indicando sus características más relevantes. Vamos a probar con el algoritmo de árbol de decisión. Figura 3: Extracto de la cheat-sheet de algorimos de Azure ML. El concepto en el que se basan los árboles de decisión es, dado un conjunto de datos de entrada, con unos atributos bien definidos, puede ser clasificado totalmente basándose en decisiones sobre cada uno de ellos. Cada nodo de un árbol es una pregunta a la que hay que responder, y de él salen distintas ramas hacia cada una de las respuestas posibles. Una vez hemos llegado a los nodos “hoja” (los finales), el algoritmo ha clasificado correctamente el dato de entrado o ha dado con la decisión correcta. Visualmente lo veríamos así. En cada nodo se plantea una pregunta. En este caso, las preguntas clasifican por sexo, por edad y por tener familiares directos embarcados. Clasifica cada caso según estos parámetros y les asigna la etiqueta “Survived” o “Died”. Bajo cada etiqueta, tenemos la probabilidad de supervivencia y el porcentaje de casos observados. Así, según este diagrama, veríamos que un 36% del pasaje eran mujeres, y su probabilidad de supervivencia fue del 0,73. El 61% de los pasajeros eran hombres y el 2% niños. Entre los niños, las probabilidades de supervivencia eran mucho mayores (0,89) entre aquellos que iban acompañados de familiares directos. Aunque se suele decir aquello de “Las mujeres y los niños primero”, parece ser que en este caso fue “Los niños y los hombres primeros”, ya que, entre los hombres, la probabilidad de supervivencia fue del 0,83. Figura 4: Ejemplo de visualización de un árbol de decisión. Los árboles de decisión son muy populares porque son sencillos de construir y de comprender, siendo a la vez muy eficientes. Por eso, tras ver este ejemplo de visualización de uno de ellos, vamos a ver qué resultados obtenemos a aplicar este algoritmo al dataset de nuestro experimento. 4.2 Comienza el “entrenamiento”. Para seleccionar el algoritmo, agregamos el módulo desde “Machine Learning/Initialize Model/Classification”. Aunque nos podría funcionar cualquier de los algoritmos de clasificación de dos variables, vamos a elegir el algoritmo "Two-class decission forest". Figura 5: Elegimos el algoritmo del menú Machine Leaning. Figura 6: Agregamos el módulo correspondiente al algoritmo. Ahora, agregamos un módulo de entrenamiento (desde “Machine Learning/Train/Train Module”) y lo conectamos al algoritmo y a la parte izquierda del módulo Split, que correspondía a los datos de entrenamiento (el 70% del dataset). Como en este caso no sólo queremos predecir el valor de una variable (si la persona sobrevivió o no al naufragio), sino que también queremos predecir la probalilidades de supervivencia que tenía un individuo determinado según el valor de ciertas variables, vamos a agregar también un módulo de Scoring. Desde la ruta “Machine Learning/Score/Score Module”. Conectamos el módulo de Scoring al módulo de entrenamiento del modelo, y a los datos “reservados” (el 30% que corresponde a la salida derecha del módulo Split data). Si tenemos dudas sobre qué lado del módulo es el que corresponde, siempre podemos visualizar los datos desde el menú contextual del módulo Split. Al conectar los datos de test al modelo entrenado, vemos cuán bueno es el modelo que hemos entrenado con el training test para clasificar los casos nuevos que habíamos separado del dataset original. Comparando los valores reales de ese conjunto de datos (sabemos de cada individuo si sobrevivió o no), con lo que ha predicho el modelo, podemos calcular su precisión. Figura 7: Conectamos los módulos Train Model y Score Model. Por último, como vamos a querer evaluar el modelo, añadimos a continuación un módulo de evaluación desde “Machine Learning/Evaluate/ Evaluate Model” y lo conectamos con el de Score. Una vez hecho esto, ponemos el modelo a trabajar pulsando “Run”. 4.3 Evaluamos el modelo Cada problema en Machine Learning tiene un objetivo diferente. Por tanto, las prioridades a la hora de evaluar si el rendimiento es bueno o malo se basarán en distintas métricas. En este caso, vamos a elegir maximizar el área bajo la curva RoC ( RoC Auc). Explicar cómo se utilizan las curvas ROC para evaluación de modelos queda fuera del alcance de este post (haremos uno específico). Pero, por ahora, nos basta con tener en cuenta que este área posee un valor comprendido entre 0,5 y 1, donde 1 representa un valor diagnóstico perfecto y 0,5 es una prueba sin capacidad discriminatoria diagnóstica. En diagnósticos médicos, si el AUC es 0,8 significa que existe un 80% de probabilidad de que el diagnóstico realizado a un enfermo sea más correcto que el de una persona sana escogida al azar. Por esto, siempre se elige la prueba diagnóstica que presente mayor área bajo la curva. Figura 8: Curvas ROC AUC ( By UPO649 1112 prodgom (Own work) [CC BY-SA 3.0 (https://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons ). Como valores de referencia para evaluar un modelo por este método tenemos: [0.5, 0.6): Test descartable, malo [0.6, 0.75): Test regular. [0.75, 0.9): Test bueno. [0.9, 0.97): Test muy bueno. [0.97, 1): Test ¿demasiado bueno? En el módulo “Evaluate Model/evaluation results/visualize”, podemos ver la curva ROC, la proporción de Falsos Positivos/Falsos Negativos (ver post sobre “Tipos de error en ML”), el valor AUC y otras métricas. En concreto, el valor AUC es de 0.814, es un valor bueno. Figura 9: Valor AUC para este modelo. ¿Cómo podríamos mejorar este valor?. Por ejemplo, ajustando los parámetros del algoritmo. Si nos vamos al módulo del algoritmo, podemos definir propiedades como el número de árboles que queremos que cree, la profundidad, el tipo de muestreo etc. En un futuro post específico sobre este algoritmo los veremos con detalle. Figura 10: Menú de ajuste de parámetros del modelo. Si visualizamos el módulo “Train Model” (desde su menú contextual) podemos incluso ver los árboles que ha creado, preguntando en cada nodo sobre diferentes parámetros. Figura 11: Visualización de un detalle de uno de los árboles que ha construido el modelo. 4.4 Comparamos con otros modelos Si queremos comparer nuestro modelo con otro basado en un algoritmo diferente, no tenemos más que elegir otro algoritmo, copiar y pegar los módulos que “Train Model” y “Score Model” que ya teníamos, y conectarlos entre ellos y con los conjuntos de datos de la misma forma que hemos hecho antes. La salidad del “Score Module” la llevamos al “Evaluation Module” que teníamos anteriormente y así podemos comparar el rendimiento de dos modelos de machine Learning que hemos entrenado por separado. Figura 12: Probamos con otro algoritmo. El Nuevo valor de AUC con el modelo “Two-Class Boosted Decision” es ligeramente superior, pero en este caso, al ser tan pequeña la diferencia, sería conveniente tener en cuenta otros valores como la exactituc (“Accuracy”) o la precisión (“precisión”). Figura 13: Nuevo valor AUC con el segundo algoritmo. En este ejemplo, el mejor algoritmo teniendo en cuenta estas últimas métricas, sería el Two class decisión forest. Et voilà. Hemos construido nuestro primer modelo machine Learning en Azure ML Studio, lo hemos entrenado con el dataset del Titanic, hemos analizado su rendimiento comparándolo con el de otro algoritmo distinto y ya, sólo nos quedaría operativizarlo. La semana que viene, cerramos la serie y probamos nuestro modelo con el dataset de Test que nos descargaremos de Kaggle. ¡No te pierdas el final de nuestro experimento! Ya está publicado todo el experimento. Puedes encontrar la serie completa aquí: Titanic: Tu primer experimento en Azure ML Studio (I) Tu primer experimento en Azure ML Studio: El caso del Titanic (III): Entrenando el modelo Tu primer experimento en Azure ML Studio: El caso del Titanic (IV y fin): ¿Sobrevivirán?. Prueba y puesta en producción del modelo.
29 de noviembre de 2017
AI & Data
Tu primer experimento en Azure ML Studio: El caso del Titanic (II): Preparando los datos.
RMS Titanic departing Southampton on April 10, 1912.(fuente) Continuamos con el tutorial de ejemplo de creación de un modelo de Machine Learning (ML) en Azure ML Workplace aplicado al dataset de pasajeros del Titanic. Tras la introducción a la herramienta que hemos hecho en la primera parte, en ésta segunda, crearemos el experimento, cargaremos los datos y haremos los procesos de depuración y preparación necesarios antes de crear nuestro modelo predictivo. 1 Creamos un nuevo experimento. Accedemos al espacio de trabajo MS Azure Machine Learning Studio, donde todavía no tenemos creado ningún experimento: Figura 1: Creamos un nuevo experimento. Seleccionando el signo “+” que aparece en la parte inferior izquierda, creamos un nuevo experimento en blanco. Figura 2: Creamos un experimento desde cero. Le damos un nombre fácilmente identificable, por ejemplo: “Titanic: predicción de supervivencia”. también podemos introducir una breve descripción de experimento que puede ser de gran utilidad si después lo compartimos con otras personas. Figura 3: Creamos un experimento desde cero. 2 Cargamos los datos Una vez hemos añadido el nombre, cargamos el dataset. Para ello, nuevamente seleccionamos el signo “+”, pero ahora elegimos agregar “DATASET”, desde fichero local. Figura 4: Agregamos el conjunto de datos desde un fichero local. Indicamos la ruta del fichero y su formato (puede ser csv con o sin cabeceras, texto plano, fichero zip, o un objeto/Workspace R). En nuestro ejemplo, es un fichero csv. Figura 5: Elegimos el formato .csv. En el espacio de trabajo nos aparece el elemento representado el conjunto de datos que acabamos de cargar "train.csv": Figura 6: Vemos los datos ya cargados en el espacio de trabajo. El dataset del Titanic tiene 891 filas. Cada una de ellas corresponde a un pasajero del RMS Titanic en el viaje inaugural del famoso transatlántico, que se hundió la noche del 14 de Abril de 1912. De los 223 personas que iban a bordo, 1514 murieron aquella noche, lo que convierte a esta tragedia en uno de los mayores naufragios de la historia ocurridos en tiempo de paz. Cada una de las columnas (12) registran atributos sobre demográficos y relacionados con el tipo de pasaje: identificador de usuario, edad, género, número de parientes a bordo, identificador de billete, clase, precio, camarote asignado, puerto de embarque y, la variable que queremos predecir con el modelo (target variable), “superviviente” o “no superviviente”. Todo el mundo conoce la historia del naufragio del Titanic, pero seguro que no es tan conocido el hecho de tengamos tanta información sobre los pasajeros de aquel infausto viaje. En la web Encyclopedia Titanica, podemos humanizar el ejemplo, y ver la lista de pasajeros, sus edades, incluso sus fotos. Figura 7: Listado de pasajeros. 3 Tratamiento de los datos: exploración y pre-procesamiento. 3.1 Reducción de columnas Vamos a ver qué aspecto tiene el dataset. Nos interesa identificar y eliminar las columnas que no aportan valor, ya que pueden añadir ruido o generar correlaciones falsas. Por ejemplo, las columnas PassengerID, el nombre (a veces se usa para averiguar el género, pero en este caso ya lo sabemos), el número de serie del billete, o el número de camarote. Veamos cómo hacerlo. Desde el menú contextual del elemento, elegimos: Dataset/Visualize Figura 8: Visualizamos los datos. Desde esa ventana podemos ver detalles como el número de filas y columnas, sus nombres, estadísticas como el tipo de variable (”Feature Type”), cuántos valores faltan (“Missing Values”), comparar unas columnas con otras para ver si puede haber alguna correlación (Histogram/Compare to) … Así, podemos ver que la columna que indica el camarote “Cabin”, tiene demasiados valores vacíos (687). Por tanto, en nuestro caso, que es una primera aproximación, parece una excelente candidata para eliminar. Figura 9: La columna "Cabin" tiene 687 valores vacíos. En el caso de la edad, por ejemplo, tenemos una variable numérica. Podríamos plantearnos sustituir los valores que faltan por valores estadísticos como la media (mean), o la mediana (median), y luego analizar cómo afecta a los resultados la sustitución por un valor u otro. Figura 10: La columna "Edad" es de tipo numérico. Vemos su media y su mediana. Una vez decididas qué columnas vamos a eliminar, procedemos. En el menú “Data Transformation/Manipulation”, elegimos la opción “Select columns in a Dataset”, con lo que se agrega un nuevo módulo al flujo. Lo “conectamos” con el dataset que ya teníamos cargado. Figura 11: Usaremos el menú "Manipulation" para eliminar algunas columnas. Al seleccionar el elemento “Select Columns in Dataset”, nos aparece, a la derecha, un panel de propiedades desde donde podemos lanzar el selector de columnas “Launch Column selector”. Seleccionamos las que queremos eliminar: Figura 12: En la columna de la derecha deben quedar las columnas sobre las que queremos actuar. Si queremos ver el resultado, podemos ejecutar la operación seleccionado “Run” y después volver a visualizar como hemos hecho la primera vez. Figura 13: Ejecutamos la operación deseada (puede hacerse por partes). 3.2 Corrección de metadatos – Definición de variables En este punto tenemos que pararnos a observar el tipo de variables con las que estamos trabajando, ya que el tratamiento matemático va a ser muy distinto según sean valores continuos o no-continuos. Definiremos como variables categóricas aquellas cuyos valores son “no continuos”. Por ejemplo, la variable Survived sólo tiene dos valores posibles: “1” =superviviente y “0”= fallecido. Un valor “0,5” no tendría sentido (No, no, “medio-muerto” no nos vale). ¿Y qué columnas deberíamos definir como categóricas? Las candidatas más aparentes son: Survived, Pclass, Sex, y Embarked. Cuando el valor es un literal, como en el caso del sexo (“male” o “female”), no hay dudas, pero cuando es numérico, como en el caso de Pclass, puede no estar tan claro. Esta variable distinguía si el pasaje era de primera (“1”), segunda (“2”), o tercera clase (“3”). Por tanto, aunque sea numérica, no son valores continuos, un valor decimal no tendría sentido. Es también categórica. Para definir el tipo de variable que representa cada columna usamos el editor de metadatos. Para ello, seguimos los siguientes pasos: Figura 14: Identificamos las variables categóricas. En el menú “Data Transformation” (a la izquierda) seleccionamos “Edit Metadata” Lo conectamos con el elemento anterior del flujo Lanzamos el selector de columnas (en el menú de la derecha, “Select columns in Dataset") para agregar las columnas que hemos elegido y, en el campo “Categorical”, seleccionamos la opción “Make Categorical” 3.3 ¿Qué hacemos con los valores que faltan? Todos los datasets tienen campos vacíos y hay que tomar una decisión sobre qué hacer con ellos para que no tengan un impacto negativo en los resultados. Normalmente se aplican tres estrategias distintas: sustituirlos por otro valor, excluirlos de la selección o directamente, eliminarlos. Lo más habitual es intentar sustituir los valores en blanco por otro valor, para minimizar en lo posible la pérdida de información. Cuando se trata de valores numéricos, se suele reemplazar por valores estadísticos como la media, la mediana o la moda. En ML se suele usar mediana, porque respeta la distribución de los datos y queda menos afectada por “outliers” (valores anómalos). Si recordamos, la mediana de un conjunto finito de valores es aquel valor que divide al conjunto en dos partes iguales, de forma que el número de valores mayor o igual a la mediana es igual al número de valores menores o igual a estos. En un diagrama de caja ("box plot") lo visualizamos así: Figura 15: Ejemplo de representación box plot de un conjunto de datos. En el apartado 3.1 Visualización de columnas, ya vimos cómo detectar los campos vacíos. Podemos ver que, para la columna “Age” (Edad), el número de valores que faltan es muy alto. Sin embargo, para “Embarqued” sólo nos faltan dos valores. Figura 16: Las estadísticas muestran un número muy elevado de "missing values" en la columna Age. Como vemos también la variable “Age” es de tipo numérico (Feature Type: Numeric Feature), por tanto, resulta muy sencillo sustituir los valores que falta por la mediana (que, en este caso es “28”). Sin embargo, la variable “Embarked” es categórica (cadena de caracteres). Podríamos sustituir los valores vacíos por “U” de “Unkonwn”, por ejemplo. Pero al ser sólo dos los valores que faltan, resulta más lógico asumir una pérdida de un 0.2% de los datos y, por tanto, decidimos eliminarlos. Para hacer estos cambios, podemos aplicar un módulo de limpieza “Cleaning”. Si no sé qué opción de menú es, puedo localizarla fácilmente usando el buscador: Figura 17: Para localizar una opción concreta en el menú, podemos usar el buscador. Como antes, los pasos son parecidos: Agregamos el módulo (“Clean Missing Data”) Lo conectamos con el módulo anterior del flujo Lanzamos el selector de columnas (en el menú de la derecha) para agregar la columna “Age” y le indicamos que sustituya por la mediana (“Replacement Value”=28). Ojo que las columnas seleccionadas son las que aparecen a la derecha del selector. Hay que pasar todas al lado izquierdo, salvo “Age”. Figura 18: Sustituimos por la mediana. Hacemos la misma operación para eliminar los valores que faltaban en la columna “Embarked”, solo que, en este caso, el “Cleaning Mode” elegido es “Remove Entire Row”. En caso de duda sobre qué valores dar a los parámetros, siempre podemos consultar la ayuda rápida que aparece justo debajo: Figura 19: En la parte inferior derecha siempre tenemos una "ayuda rápida". Para conocer con más detalle los distintos métodos de depuración de datos, podéis consultar un ejemplo muy completo en la galería de Cortana intelligence 3.4 ¿Qué valores queremos predecir? El último paso que nos queda, antes de construir nuestro modelo ML es definir cuál es el atributo con el que vamos a entrenar el modelo para que sea capaz de hacer predicciones sobre su valor (nuestro "target variable"). Para ello, recurriremos nuevamente al módulo “Metadata Editor”. Seleccionaremos la columna “Survived”, ya que queremos predecir la supervivencia (o no) de un pasajero, basándonos en los otros datos disponibles en el dataset. Descrubir, en definitiva, si había un “patrón de supervivencia”. Después, en el campo “Fields” lo definimos como “Label” (sólo puede haber uno por dataset) Con esto, ya tenemos todo preparado para construir nuestro modelo ML. El siguiente paso, la elección del algoritmo, en el próximo post. ¡No te lo pierdas! Puedes seguir el experimento completo en los siguientes enlaces: Titanic: Tu primer experimento en Azure ML Studio (I) Tu primer experimento en Azure ML Studio: El caso del Titanic (III): Entrenando el modelo Tu primer experimento en Azure ML Studio: El caso del Titanic (IV y fin): ¿Sobrevivirán?. Prueba y puesta en producción del modelo.
22 de noviembre de 2017
AI & Data
Titanic: Tu primer experimento en Azure ML Studio (I)
En Machine Learning, como en otros muchos campos, una de las formas más efectivas de aprender es ponerse manos a la obra. El famoso “Learning by doing”. Y aunque hay una gran cantidad de conceptos que conviene aclarar y aprender, vamos a intercalarlos con ejemplos prácticos que nos ayuden a perder el miedo a probar y… a equivocarnos, que, en definitiva, es la mejor forma de aprender. Por eso, en Data Science son muy interesantes las “Competiciones”. Son una excelente forma de aprender, trabajando sobre problemas reales, en un entorno donde puedes encontrar los lenguajes más habituales, librerías, herramientas y conjuntos de datos… También puedes aprender a partir de las soluciones que han desarrollado otros participantes, compartir información con ellos etc. Las competiciones también pueden tener otros objetivos, como la búsqueda de talento, resolver un problema concreto ofreciendo un atractivo premio como recompensa, o resolver problemas científicos o relacionados con el bien común. En cualquier caso, si tienes interés en aprender sobre Data Science y Machine Learning, Kaggle va a ser uno de sitios favoritos. Así que, ahí va una recomendación: ¡Hazte Kaggler! No obstante, si estás empezando en este mundo, y no conoces todavía ningún lenguaje, de primeras Kaggle puede resultar un poco “intimidante”. Así que, para ir cogiendo confianza, vamos empezar a trabajar sobre un ejemplo basado en una de sus competiciones, “Titanic, Machine Learning from Disaster”, pero usaremos una herramienta más intuitiva, Azure Machine Learning Workbench. Por claridad, dividiremos el experimento en varios post. En este primero, veremos cómo acceder a la herramienta, cómo localizar los datos de trabajo y dónde encontrar algunos ejemplos para empezar a utilizar Azure ML Studio. En el siguiente, cargaremos los datos en la herramienta y los dejaremos listos para aplicar nuestro modelo ML. Después, nos plantearemos la elección del algoritmo, lo aplicaremos y, por último, evaluaremos los resultados. Además de este primer ejemplo de uso de Azure ML, seguiremos nuestra serie de ML trabajando con otros entornos que nos permitirán explorar otras herramientas, conocer otros algoritmos, e ir profundizando poco a poco en el mundo del Data sScience. Pero, una advertencia, cuanto más sepamos, más querremos aprender. Y siempre hay más… ¡A por ello! Dónde podemos conseguir los datos El dataset del Titanic es muy conocido, y es interesante tanto para principiantes como para expertos. Se puede descargar de distintas fuentes, pero recomendamos usar los datos de entrenamiento (train.csv) de Kaggle. Figura 1: Descargamos el dataset de Kaggle. Concepto Training Data vs Testing Data Ya que hablamos de “datos de entrenamiento”, conviene detenerse para aclarar el concepto. Los algoritmos de Machine Learning aprenden de los datos con los que los entrenamos. A partir de ellos, intentan encontrar o inferir el patrón que les permita predecir el resultado para un nuevo caso. En este ejemplo, dado que se trata de un acontecimiento del pasado, no va a haber “casos nuevos”. Sin embargo, si separamos la muestra total de los datos en dos partes: • Training data, los datos que usamos para entrenar al algoritmo • Testing data, los datos que nos “reservamos” para comprobar si el modelo que hemos generado con los datos de entrenamiento “funciona”. Es decir, si las predicciones que hemos obtenido sobre la supervivencia de un pasajero concreto son acertadas o no. Normalmente el conjunto de datos se suele repartir en un 70% de datos de entrenamiento y un 30% de datos de test, pero se puede variar la proporción según el caso. Lo importante es ser siempre conscientes de que hay que evitar el sobreajuste u “overfitting”. Esto ocurre cuando el modelo está “sobre-entrenado”. Son modelos complejos que se ajusta tan milimétricamente al conjunto de datos a partir del cual se han creado, que pierden gran parte de su poder predictivo, y ya no son útiles para otros conjuntos de datos. Esto se debe a que los datos siempre van a tener un cierto grado de error o imprecisión, e intentar ajustarse demasiado a ellos, complica el modelo inútilmente al mismo tiempo que le resta utilidad. Acceso a la herramienta. Debes conectarte a Microsoft Azure Machine Learning Studio y crearte una cuenta. No hace falta tener una suscripción de Azure para poder trabajar en este entorno de pruebas. También ha salido recientemente otra versión para escritorio, que podéis encontrar aquí. Figura 2: Accedemos a Azure ML Studio. Es interesante hacer un poco de “turismo” para conocer un poco el entorno antes de empezar. “Sí, queremos hacer el tour” Figura 3: Nos proponen un pequeño tour para conocer la herramienta. Al igual que comentamos que Kaggle es un buen lugar para aprender, en Azure ML Studio tenemos una gran cantidad de ejemplos (samples) que nos pueden ser muy útiles. En el siguiente post, veremos cómo crear un nuevo experimento desde cero. Mientras tanto, os recomendamos explorar un poco la galería, elegir cualquiera de ellos, ver cómo está hecho, y, para los más impacientes, ¿por qué no? modificarlo. Figura 5: Galería de Ejemplos. (Continuará) Ya está publicados los siguientes post del experimento. Puedes encontrar la serie completa aquí: Titanic: Tu primer experimento en Azure ML Studio Tu primer experimento en Azure ML Studio (II); El caso del Titanic: Preparando los datos Tu primer experimento en Azure ML Studio: El caso del Titanic (III): Entrenando el modelo Tu primer experimento en Azure ML Studio: El caso del Titanic (IV y fin): ¿Sobrevivirán?. Prueba y puesta en producción del modelo.
14 de noviembre de 2017
AI & Data
Tipos de error en Machine Learning, ¿los conoces?
"Errrare humanum est". Este aforismo, atribuido a San Agustín, es habitual en nuestro lenguaje cotidiano. Reconocemos que “errar”, confundirse, es intrínseco a la naturaleza humana. Pero lo importante no es el error en sí, sino aprender de ellos. Cuando hablamos de Inteligencia Artificial, y en concreto, de Machine Learning, también tenemos que hablar de errores, y de cómo nos pueden ser útiles para aprender. En este post vamos a conocer la diferencia entre dos tipos de error: los "Falsos Positivos" y los " Falsos Negativos". Vamos a considerar, por ejemplo, un modelo de clasificación. En un post anterior, vimos que la “clasificación” es uno de los problemas más habituales que se resuelven por medio de algoritmos de Machine Learning. Al hablar de “clasificadores”, merece la pena hacer una aclaración sobre cómo nombramos los resultados, porque, a primera vista, la nomenclatura habitual resulta un poco contradictoria. Por ejemplo, normalmente, nos referimos a un resultado “malo” como “positivo”, y aun resultado “bueno” o “normal” como “negativo”. Y si a lo que estamos aplicando nuestro algoritmo clasificador es a un proceso de detección de fraude, resulta contradictorio que se considere “positivo” el caso en el que se ha detectado un posible delito. Mientras que en otro ejemplo típico de clasificador, las pruebas médicas, el resultado “positivo” significa que el paciente sí padece la enfermedad que intentamos diagnosticar. A pesar de ésto, esta terminología es habitual en muchos campos (no sólo en Machine Learning) y por ello resulta más práctico atenerse a ella. Lo importante es comprender que consideramos "positivo" es aquello a lo que hay que prestar atención, mientras que lo "negativo" es lo habitual, lo que consideramos normal. Cuando se aplica un modelo de Machine Learning a un problema concreto, es fundamental poder evaluar su rendimiento. Cómo de “bien” (o de mal) funciona el modelo. Esto es importante porque hay que encontrar un equilibrio entre el “coste” del modelo y sus “beneficios”. La evaluación de modelos es un tema complejo que merece la pena analizar en profundidad, pero podemos quedarnos con una idea básica que nos ayude a comprender el problema. Siempre podremos aplicar algoritmos más sofisticados, más capas de iteración, o volúmenes de datos más ricos y complejos. Podemos considerar más parámetros… Pero todas estas acciones tienen un coste. Hay que optimizar la relación entre este coste, y los beneficios que obtenemos. Así, según el problema que tengamos que resolver, decidiremos con qué porcentaje de acierto nos interesa trabajar. Esto significa que somos conscientes de que habrá un margen de error, pero lo asumimos. El problema está en que esos “errores” pueden tener un significado muy distinto según el caso. Hemos dicho que lo habitual en una muestra es que la mayoría de los casos sean “negativos” (=comportamiento normal). Lo que buscamos son las anomalías. Los “positivos”, son los casos en los que ocurre algo diferente. Por tanto, serán más habituales los “falsos positivos”. En estos casos clasificador lanza una alerta innecesaria de “posible fraude” o “diagnóstico positivo”. Sin embargo, en el caso de los “ falsos negativos”, aunque su número sea menor, su coste puede ser mucho más alto. No hay más que pensar en el efecto que puede tener un diagnóstico negativo erróneo para una persona que (sí) padece una enfermedad grave. Para ayudar a comprender de un vistazo y con un poco de humor la diferencia entre “Falsos Positivos” y “Falsos Negativos” tomo prestado el ejemplo con que lo explica Paul D. Ellis en “ The Essential Guide to Effect Sizes”. Figura 1: Ejemplos de Falsos Positivos y Falsos Negativos. Si quieres profundizar más en este tema, no dejes de leer este otro post sobre la Matriz de confusión. No te pierdas ninguno de nuestros post. Suscríbete a LUCA Data Speaks.
6 de noviembre de 2017
AI & Data
Las 9 tareas en las que se basa el Machine Learning
En un negocio data-driven, cada problema es único, con sus propios objetivos, restricciones, aspiraciones etc. Sin embargo para poder resolver estos problemas, la estrategia del Data Scientist es descomponer un problema complejo en diferentes subtareas más sencillas que ya sabemos resolver con distintos algoritmos de Machine Learning. ¿Cómo resolvemos los problemas las personas? En el post anterior vimos que el concepto básico que subyace bajo la idea de Inteligencia Artificial es conseguir que una computadora resuelva un problema de la misma forma en que lo haría una persona. Hay muchas formas de intentar resolver un problema desde una perspectiva humana pero, en concreto, dos preguntas nos son de gran ayuda cuando nos enfrentamos a una situación nueva. La primera es: Y la segunda: Está claro que basarnos en la experiencia, en lo que hemos aprendido en circunstancias anteriores nos puede ser de gran utilidad. No tiene sentido reinventar la rueda. Y, por otra parte, cuando un problema es complejo, pero se puede descomponer en distintas partes, es muy probable que ya sepamos cómo resolver muchas de ellas. Si sólo tenemos que trabajar la parte del problema que realmente es nueva para nosotros, ganaremos tiempo y seremos mucho más eficaces. Cuando trabajamos con Aprendizaje Automático ( Machine Learning, ML), en lugar de programar un código basado en unas reglas, lo que hacemos es trabajar con algoritmos, y entrenarlos con datos. Algoritmos hay muchos, y complejos, casi todos, pero tampoco es imprescindible conocerlos uno a uno. Uno de los trabajos del Data Scientist es, precisamente, determinar cuál es el más adecuado para cada caso particular, aunque normalmente cada profesional tiene su propia "Caja de herramientas" con sus algoritmos favoritos, aquellos que le resuelven la mayoría de los problemas. Sin embargo, las tareas que esos algoritmos nos van a permitir resolver, aquellas que nos podemos encontrar como sub-problemas en problemas más complejos, no son tantas.Vamos a ver cuáles son las principales: Figura 1:Las 9 tareas en que se basa el Machine Learning. 1. Clasificación: Una tarea de clasificación consiste en, dado un individuo, saber a qué clase pertenece, basándonos en lo que hemos “aprendido” de otros individuos. Por ejemplo: ¿Qué clientes de Telefónica estarán interesados en esta oferta? Basándonos en la información del histórico de clientes, resumida en una serie de variables como puede ser la edad, estado civil, nivel de estudios, antigüedad como cliente etc., los algoritmos de clasificación construyen un modelo que nos permite asignar, a un nuevo cliente la etiqueta más adecuada entre estas dos: “Estará interesado” o “ No estará interesado”. Los algoritmos de Scoring son muy similares, pero más específicos. Nos dan la probabilidad de que un cliente esté interesado o no. 2. Regresión: Las tareas de regresión se utilizan cuando lo que se quiere averiguar es un valor numérico de una variable continua. Siguiendo con el ejemplo anterior, nos servirían para, basándonos en el histórico de consumo de los clientes, parametrizado según las variables anteriores (u otras que defina el Data Scientist), podamos responder a preguntas como ésta: ¿Cuál va a ser el consumo en … (voz, datos, etc.) de este cliente en un mes? 3. Identificar similitudes. Se trata de identificar individuos “similares” según la información que tenemos de ellos. Es la base de los sistemas de recomendación, que te ofrecen distintos productos según los que hayas consultado o adquirido previamente. 4. Clustering. Las tareas de clustering tienen que ver con agrupar individuos por su similitud, pero sin un propósito específico. Suele usarse en las fases de exploración preliminar de los datos, para ver si existe algún tipo de agrupamiento natural, que puede sugerir la mejor forma de analizar los datos. Por ejemplo, estas tareas nos darían respuesta a preguntas como: ¿Se puede clasificar a nuestros clientes en grupos o segmentos naturales? ¿Qué productos deberíamos desarrollar? 5. Agrupar co-ocurrencias Esta tarea busca asociaciones entre “entidades” basadas en su coincidencia en transacciones. Por ejemplo, responderían a la pregunta: ¿Qué productos se suelen comprar juntos? Mientras las técnicas de clustering buscan agrupar elementos, basándose atributos de éstos, la agrupación de co-ocurrencias se basa en que dichos elementos aparezcan juntos en una transacción. Por ejemplo, es habitual que una persona que compra una cámara de fotos, compre también una funda para la cámara, o una tarjeta de memoria. Por ello, puede ser interesante hacer promociones de ambos productos a la vez. Sin embargo, a veces no son tan “evidentes” las coincidencias y por eso resulta muy interesante analizarlas. 6. Profiling. Cuando hablamos de Profiling, hablamos de comportamientos típicos. Estas técnicas buscan caracterizar el comportamiento esperado de un individuo, grupo o población. Se pueden plantear preguntas como: ¿Cuál es el consumo de móvil típico de este segmento de clientes? La descripción de estos comportamientos “típicos” se suele usar como referencia para detectar comportamientos inusuales o anomalías. Basándonos en las compras típicas de un determinado cliente, podemos detectar si un nuevo cargo en su tarjeta de crédito se ajusta a ese patrón. Podemos crear asignarle un “score” o grado de sospecha de fraude, y lanzar una alerta cuando se supere cierto umbral. 7. Predicción de vínculos. Intenta predecir conexiones entre elementos. Por ejemplo, entre miembros de una red social o profesional. Te hacen sugerencias como: “María y tú tenéis 10 amigos en común. ¿No deberíais ser amigas?" “Personas que probablemente conozcas” 8. Reducción de datos. A veces es necesario reducir el volumen de datos de trabajo. Por ejemplo, en lugar de trabajar con una enorme base de datos de preferencias de consumo de películas, trabajar con una versión reducida de ellos, como sería el “género” de la película, más que la película concreta. Siempre que se realiza una reducción de datos se pierde información. Lo importante es llegar a una solución de compromiso entre la pérdida de información y la mejora de los Insights. 9. Modelado Causal. Estas tareas lo que buscan es detectar la influencia de unos hechos sobre otros. Por ejemplo, si se incrementan las ventas en un grupo de clientes a los que nos hemos dirigido con una campaña de marketing: ¿Se incrementaron las ventas gracias a la campaña o simplemente el modelo predictivo detectó bien a los clientes que hubieran comprado de cualquier forma? En este tipo de tareas es muy importante definir bien las condiciones que se tienen que dar para poder hacer esa conclusión causal. Por tanto, cuando queremos abordar con ML un problema de negocio, como el típico ejemplo de “fuga de clientes” (el famoso churn) lo que queremos averiguar es qué clientes están más o menos predispuestos a dejar de serlo. Podríamos abordarlo como un problema de clasificación, o clustering, incluso como un problema de regresión. Según cómo definamos el problema, trabajaremos con una familia de algoritmos u otra. Si quieres seguir aprendiendo sobre ML, no te pierdas nuestro siguiente post en el explicaremos los tipos de error en ML.
24 de octubre de 2017
AI & Data
Big Data con Privacidad
Todas las revoluciones tecnológicas, todos los cambios de paradigma, han tenido detrás visionarios que han luchado por impulsar el cambio y la innovación, pero también han tenido que luchar contra las reticencias, las dudas y los miedos de los resistentes al cambio. Sin embargo, aquellos avances que realmente demuestran su utilidad, acaban siendo aceptados mayoritariamente por la sociedad. ¿Los avances tecnológicos son buenos o malos? Un “avance tecnológico” aparentemente tan sencillo como es el tenedor, sufrió no pocos vaivenes antes de ser aceptado. Considerado en sus orígenes como “peligroso” (probablemente por la falta de pericia de quienes los usaban), llegó incluso a ser denominado “instrumento diabólico” por San Pedro Damián. En la corte de Carlos V de Francia fue rechazado por considerarse “afeminado y refinado” y no fue hasta principios del siglo XIX en que se generalizó su uso. La tecnología no es buena ni mala en sí misma. Son las personas que la usan las que pueden hacer de ella un uso productivo y constructivo o, todo lo contrario. El gran avance tecnológico que supone la aplicación de analíticas Big Data a nuestro mundo de hoy se enfrenta, como el humilde tenedor, con miedos y detractores. El tenedor, por su evidente utilidad, acabó imponiéndose. Pero no es menos cierto que, desde los primeros modelos, parecidos a trinchadores, a los que se popularizaron en el siglo XIX hubo una clara evolución que fue capaz de demostrar que, además de ser una innovación muy práctica, también era segura. Figura 1: El tenedor, en su día, también fue una innovación "tecnológica".(fuente) ¿Qué miedos despierta el Big Data? La principal preocupación que le surge al ciudadano de a pie es la posible invasión de su privacidad. No existe una definición única del concepto de privacidad. Las distintas definiciones suelen girar en torno al respeto, autonomía y auto-determinación de los individuos. Y de cómo el individuo debería ser protegido de una intrusión no razonable en esa autonomía, sea por parte de gobiernos o de instituciones privadas. Básicamente, en el ámbito de las tecnologías de la información, el concepto de privacidad, tiene que ver con el derecho de los individuos a controlar el uso de su información personal. Podríamos resumirlo en: “ Privacidad es el derecho de los individuos a ejercer control sobre cómo la información sobre ellos es recogida, tratada y usada” Hoy día, en que la privacidad se ha convertido en este sentido en la piedra angular de la nueva ética profesional, de negocio y de investigación es preciso replantearse conceptos como el “manejo justo” de los datos para los usuarios y que las diferentes disciplinas de negocio y científicas tengan claros sus principios a este respecto. Para conjurar esos miedos, se impone poner el foco en tres nociones esenciales seguridad, control, y transparencia, y asumir que adoptar la privacidad y la protección de datos como valores esenciales es la clave para mover el debate desde “ Big Data contra Privacidad” hacia el “ Big Data con privacidad”. Seguridad: La seguridad en el intercambio de información de carácter personal es el medio técnico por el cual se garantiza la protección de un derecho fundamental y hay que dedicar el tiempo y los recursos que sean necesarios para su correcta implementación. Control: que el usuario siempre tenga el control sobre sus datos en base a los derechos de acceso, rectificación y cancelación, como recoge La Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos Transparencia: que el usuario pueda saber en todo momento qué datos suyos se almacenan y con qué propósito. Por ejemplo: “Almacenamos tu número móvil para poderte enviar una alerta cuando haya un movimiento en tu cuenta”. ¿Cuál es la mejor manera de implementar los principios de privacidad en las soluciones tecnológicas de Big Data? Hay múltiples estrategias que ayudan a aquellos que trabajan con Big Data a respetar la privacidad de los usuarios a lo largo de las distintas a fases de la cadena de consumo de los mismos, pero el enfoque más holístico es el del marco de Privacidad por Diseño (PbD), un conjunto de soluciones que tienen por objeto: Identificar y gestionar los riesgos desde el comienzo del tratamiento de los datos. Aplicar tecnologías de protección de la privacidad en todas las fases. Este concepto fue aplicado en el ámbito legislativo por primera vez por las autoridades de protección de datos de Ontario (Canadá) en la década de los noventa. Se basa en los siguientes principios fundacionales: Privacidad proactiva, no reactiva; prevenir, no remediar (Principio de “Accountability") , pagina 26 del Código de Buenas Prácticas en Protección de datos para Proyectos Big Data). Privacidad incrustada en el diseño. Privacidad como la configuración predeterminada. Funcionalidad total (“todas las partes ganan”, en lugar de, “si alguien gana otra persona pierde”). Seguridad punto a punto – protección durante todo el ciclo de vida. Visibilidad y transparencia. Respeto por la privacidad del usuario – que todo gire en torno al usuario. El nuevo Reglamento General de Protección de Datos (RGPD, en inglés GDPR), de obligado cumplimiento a partir del 25 de mayo de 2018 introduce, como una de sus novedades, el reconocimiento explícito del concepto de Privacidad por Diseño y hace asimismo especial hincapié en la Privacidad por Defecto. Un ejemplo práctico de “Privacidad por defecto” sería que, al darse de alta un nuevo usuario en una red social, la configuración de seguridad por defecto sea las más respetuosa con su privacidad . Niveles de protección de la privacidad y tecnologías aplicadas Conviene, en este momento, precisar que no es preciso anonimizar siempre que se trabaja con Big Data. El término privacidad, es un concepto más amplio, que abarca conceptos como la seguridad o el gobierno del dato. La anonimización es necesaria en entornos de uso de información no vinculada a cliente, es decir, cuando no hablamos de datos personales. Pero en una gran parte de los casos, como, por ejemplo, cuando necesitamos hacer una analítica de BI que no suponga perfilado de cliente, no necesitamos anonimizar. Un buen ejemplo para entenderlo es que, para poder generar una factura a un cliente, no podemos anonimizar, porque es necesario saber qué conceptos están vinculados a qué cliente. Como hemos mencionado antes, el marco de Privacidad por Diseño, implica trabajar con tecnologías y procesos que verifiquen la conformidad con las normativas de privacidad a todos y cada uno de los niveles de la cadena de “consumo” de los datos. Vamos a ver algunos ejemplos ilustrativos que comienzan en el proceso de carga de los datos (correspondería en la Figura 2 a la etapa de "Pre-Hadoop Process validation") por toda la cadena hasta el de generación de informes ("Reporting Testing"). [caption id="attachment_38125" align="alignnone" ] Figura 2: Arquitectura de Big Data y puntos de verificación/validación de conformidad en las áreas de procesado ETL: Extracción, Transformación y Carga (Load) --Click para agrandar[/caption] 1. Primera fase: Validación Pre-Hadoop a) Preanonimización de los microdatos La privacidad comienza antes incluso de empezar a almacenar los datos en las bases de datos (Hadoop). Así pues, la preanonimización de los microdatos es la parte inicial del proceso de anonimización, en el que se determinarán las posibles variables de identificación, aquellas que puedan ayudar a identificar al usuario final de manera directa (DNI) o indirecta (dirección). Una vez que se ha realizado una categorización de las variables se establecen los criterios de protección necesarios para garantizar la privacidad de las personas, tratando de minimizar la cantidad de información personal que vaya a ser utilizada durante el proceso de anonimización. Por tanto, en esta primera fase del proceso se determina, según las regulaciones específicas de cada país, qué tipo de datos se puede almacenar y durante cuánto tiempo. b) Eliminación/reducción de variables La siguiente fase del proceso de anonimización consiste en la eliminación/reducción de variables. El objeto de esta fase es reducir al mínimo necesario la cantidad de variables que permitan la identificación de las personas, restringiendo el acceso a la información confidencial estrictamente al equipo de trabajo implicado en el proceso. Algunos aspectos a tener en cuenta para abordar la eliminación o enmascarar las variables de identificación pueden ser los siguientes: Determinar la finalidad de los datos anonimizados. Establecer las variables confidenciales necesarias para el tratamiento de los datos anonimizados e identificar las variables de confidencialidad que no vayan a ser necesarias en el tratamiento de los datos anonimizados. Eliminación de datos identificativos directos o indirectos no necesarios: nombres, fecha de nacimiento, teléfono, DNI, email, dirección postal, número de cuentas bancarias, matrículas de vehículos, identificador dispositivo móvil, número de serie, dirección IP, identificadores biométricos, fotografía o imagen, etc. Control segregado de usuarios con acceso a los datos personales y usuarios con acceso a los datos anonimizados. Utilización de rangos para enmascarar a las personas cuando existen microdatos concretos que permiten la identificación directa de personas o colectivos específicos. Disponer de una política de uso de claves para ocultar la identificación de las personas. El objetivo de estos procesos es someter a los datos anonimizados a un proceso de agregación. Este proceso sirve para evitar que se pueda identificar a individuos concretos. Por ello se agrupan por perfiles, por ejemplo, creando rangos geográficos o temporales con el objeto de evitar que los datos puedan facilitar la identificación de individuos concretos. Tenemos un ejemplo en la aplicación del INE ¿Cuántos se llaman...? donde encontramos un ejemplo práctico de uso de agregación (en este caso de resultados). Si buscamos un nombre o apellido concreto, la aplicación no ofrece ningún resultado si la frecuencia "es inferior a 20 para el total nacional (o 5 por provincia)". c) Anonimización de los procesos y de datos locales Tras estas dos fases de “preparación” de los datos, llega el momento de aplicar técnicas y estrategias de anonimización de los procesos y anonimización de datos locales. Preferencias de privacidad. Estrategias de cifrado y enmascaramiento de la identidad. Las preferencias de privacidad tienen que ver con la protección en la fase de generación de datos. La generación de datos puede ser activa, cuando el propietario de los datos los facilita a un tercero, o pasiva, cuando los datos se generan por su actividad online (por ejemplo, navegar por internet o participar en una red social). Para evitar que esto ocurra sin que el usuario sea consciente de ello, la Privacidad por Diseño especifica que las opciones por defecto sean lo más respetuosas posible con la privacidad del usuario y que sea el propio usuario, el que tenga que tomar la iniciativa de desactivar o rebajar el nivel de protección cuando así lo desee. En estos casos, hay dos estrategias principales de protección de la privacidad. Por un lado, las de restricción de acceso, como las extensiones "anti-tracking", bloqueadores de anuncios o scripts, y herramientas de cifrado. Actualmente existen, y cada vez más, herramientas más especializadas, tipo complementos de navegador, con una aproximación de “bloqueo” o “gestión” de determinados contenidos de terceras partes: Ghostery, Mozilla Lightbeam, PrivacyBadger, AdBlockPlus, etc. Por otro, las herramientas de cifrado de datos y enmascaramiento de la identidad que introducen pequeñas distorsiones ("ruido") en los datos y los modifican de forma que no sea posible identificar a un usuario individual. Por ejemplo: El algoritmo de hash permite que, partiendo de un mismo dato o microdato, podamos generar siempre la misma huella digital pero partiendo de una determinada huella digital nunca podremos obtener el dato original, garantizando la confidencialidad al tratarse de una operación matemática de un solo sentido. Sin embargo, un algoritmo de hash por sí solo no es suficiente para hacer irreversible la anonimización, ya que pequeñas cadenas de texto como, por ejemplo, el código postal de una persona, un número de teléfono, etc., pueden ser fácilmente reidentificables. Para evitarlo, los algoritmos de hash se usan en combinación con algoritmos de cifrado. Un algoritmo de cifrado homomórfico permite realizar operaciones con datos cifrados de tal manera que el resultado de las operaciones es el mismo que si las operaciones se hubieran realizado con los datos sin cifrar El proceso de anonimización puede ser monocapa o multicapa. Cuando la anonimización de las variables se realiza una única vez y se da por finalizado el proceso se denomina monocapa. Sin embargo, la reanonimización de variables o anonimización multicapa puede proporcionar garantías adicionales para evitar la re-identificación de las personas. Por ejemplo, a medida que los datos vayan pasando de un departamento a otro, se pueden realizar diferentes procesos de anonimización. Otras técnicas que pueden usar son: algoritmos de sello de tiempo, técnicas de perturbación y técnicas de reducción de datos. En resumen: En esta fase los datos son agregados y anonimizados antes de ser enviados al analista que trabajará con ellos en la fase ETL. La anonimización de datos debe considerarse como una forma de eliminar las posibilidades de identificación de las personas. Las técnicas de anonimización se aplican sobre los datos en bruto. En este proceso, los valores reales (por ejemplo, nombres de empleados o de clientes “María López”, “Juan Pérez” etc.) se sustituyen por otro valor (por ejemplo “Cliente 1”, “Cliente 2”, etc.). Si el mismo valor original aparece varias veces en el conjunto de datos, se sustituirá siempre con el mismo valor de reemplazo (por ejemplo, “María López” se sustituye siempre por “Cliente 1”). De esta forma, se respeta la privacidad de los datos sensibles, al mismo tiempo que se preserva la información sobre patrones de ocurrencia de ese valor en el dataset que puede ser de interés para el análisis. Posteriormente, se aplican otras técnicas de anonimización como el hashing, técnicas de generalización, adición de ruido, perturbación, anonimización por capas etc. (Ver Orientaciones y Garantías en los procesos de anonimización de datos Agencia Española de Protección de Datos). 2. Segunda Fase: Validación de procesos Map Reduce El almacenamiento distribuido característico de Hadoop nos permite, en la fase de Validación de Procesos Map Reduce ("Map Reduce Process Validation") aplicar las especificaciones de privacidad relativas a cómo reaccionan los datos al hacer una query, y añadir restricciones a la compartición de datos entre distintos procesos. Por tanto, el carácter distribuido de Hadoop, cuyo objetivo inicial era superar los desafíos que plantea trabajar con grandes volúmenes de datos en cuanto a eficiencia, seguridad y fiabilidad, también se puede aprovechar para implementar medidas adicionales de privacidad de la información. 3. Tercera fase: Validación del proceso ETL En la fase de "Validación del proceso ETL" se debe comprobar que la lógica del almacenamiento cumpla también los requisitos de privacidad. La seguridad de los datos, en cuanto al control de accesos, se puede implementar a nivel de fichero, de base de datos, de comunicaciones y cifrado de aplicaciones. También se produce una transformación de los datos. Es donde se aplican las analíticas avanzadas Big Data que nos van a permitir extraer los Insights que reflejaremos en la fase final. En este momento ya no se trabaja con datos hash, sino con identificadores únicos asociados a ellos. Se aplican rutinas de agregación y anonimización adicionales a los valores atípicos para mejorar su nivel de enmascaramiento, Se aplican técnicas de generalización como por ejemplo, las bandas de edad para evitar tener el dato preciso que pueda ayudar a identificar un registro individual, Se combinan y modelan distintas franjas temporales… Como en la fase anterior, los resultados son siempre valores agregados, de forma que describen comportamientos grupales y no individuales. Aunque se trabaje con datos anonimizados, y los resultados se ofrezcan siempre de forma agregada, en muy importante, mantener un control estricto del acceso a la información a lo largo de todo el proceso (desde las fases de ingesta de dato a las fases finales). Es fundamental asegurarse de que la incorporación de nuevos conjuntos de datos no implique riesgos inadvertidos de des-anonimización de los datos originales. 4. Cuarta fase: Reportes En la fase de Reportes ("Reporting Testing") la comprobación de cumplimiento de los términos de privacidad tiene que ver con asegurar que se respeta la "finalidad" para la cual se han tomado los datos, comprobando que en los informes no aparezca información sensible. Es decir, asegurarse de que no se puedan recopilar más datos de los necesarios para los fines previstos, explícitos y legítimos. También es fundamental que las políticas de publicación de resultados se apliquen de forma consistente y correcta. Para ello se aplica un conjunto de técnicas estadísticas que garanticen que no sea posible revertir el proceso de anonimización de los resultados obtenidos. Una de ellas es la anteriormente comentada de la Agregación de datos. Conclusiones: Como podemos apreciar, la privacidad en Big Data es un tema extremadamente complejo que es necesario abordar a distintos niveles y donde las distintas técnicas de anonimización se deben aplicar de forma iterativa en múltiples puntos de la cadena. También es necesario resaltar que no nos podemos conformar con las soluciones tecnológicas actuales sino que la gran velocidad a la que cambia el horizonte del Big Data requiere de un esfuerzo continuo e inversión en investigación de nuevas técnicas de protección de la privacidad como: "esconder una aguja en un pajar" ("Hidding a needle in a haystack"). anonimización basada en la identidad ("identity based anonymization"). anonimización rápida de flujos en stream (para datos IoT). Así como de una constante adaptación del marco regulatorio en los distintos países. Estamos convencidos que, como en el caso del tenedor, el Big Data con privacidad acabará venciendo las reticencias y siendo aceptado como lo que es, una de las más potentes revoluciones tecnológicas de los últimos tiempos, pero es responsabilidad de todos los agentes implicados en el ecosistema asegurar que se hace de manera correcta, poniendo siempre por delante los intereses de nuestros usuarios de manera transparente y generando un clima de confianza.
19 de octubre de 2017
AI & Data
Artificial Intelligence, Machine Learning y Deep Learning: ¿Conoces las diferencias?
En el mundo de los negocios, la ciencia y la tecnología, se habla mucho de estos tres conceptos, pero muchas veces no tenemos una idea clara de su significado, sus relaciones y sus límites. Iniciamos una nueva “miniserie”, en este caso, sobre Machine Learning. Introduciremos los conceptos básicos de forma clara y sencilla, pero también nos pondremos manos a la obra con en ejemplos reales. En este post definiremos el concepto de Machine Learning y sus diferencias respecto a los conceptos de Inteligencia Artificial y Deep Learning. ¿Qué es IA? El concepto de inteligencia artificial no es nuevo. Lleva dando vueltas por el mundo por lo menos desde los años 50, en que Alan Turing creó su famoso test para determinar si un ordenador posee inteligencia real. Poco después, en 1956 tuvo lugar en Dartmouth la primera Conferencia de Inteligencia Artificial, que supuso el pistoletazo de salida oficial para este nuevo campo de la ciencia. En esta conferencia se planteó la conjetura de que tanto el aprendizaje, como la inteligencia humana, en todos sus aspectos, podían ser descritos con el detalle suficiente para poder ser reproducidos por una computadora. Porque la idea fundamental en que se basa la inteligencia artificial es en conseguir que una computadora resuelva un problema complejo como lo haría un humano. En ocasiones, esos problemas “complejos” para una persona no lo son tanto. Por ejemplo, para una persona, resulta muy sencillo como: Identificar un gato en una foto. Descifrar un texto borroso, o en el que falta alguna letra. Identificar un sonido. Priorizar tareas. Conducir un coche. Jugar a un juego y ganar (incluso ganar al campeón mundial de ajedrez, aunque no sea un buen ejemplo del algo “muy sencillo” para cualquier persona). O hacer algo creativo como escribir un poema o resumir una idea con un dibujo. Figura 1: Desde los años 50 distintas áreas de la IA, primero el ML y luego el DL han supuesto grandes disrupciones. ¿Cómo resuelve estas tareas una persona? Para poder emular el proceso, una computadora debe sumar a sus capacidades en cuanto a potencia de cálculo, velocidad de procesamiento y capacidad de almacenamiento de datos, otras nuevas que permitan imitar el razonamiento de la mente humana de forma funcional. Así, necesita poder: Captar información del entorno: Percepción. Los humanos, nos comunicamos con nuestro entorno por medio de nuestros sentidos. Hoy día existen multitud de sensores de todo tipo que pueden realizar esta función, recogiendo información del entorno y enviándola para su procesamiento en la computadora. Incluso pueden superar a los “sentidos humanos”, ya que no están sometidos a los límites de nuestra biología. Comprender el lenguaje natural (Natural Language Processing). Interpretar el lenguaje hablado y escrito. Comprender el significado de una frase, entender distintos acentos. Ésta es una tarea difícil, ya que el significado de una frase puede variar mucho según su contexto. Representar el conocimiento. Esta IA capaz de percibir personas, objetos, conceptos, palabras, símbolos matemáticos etc., necesita ser capaz de representar ese conocimiento en su “cerebro artificial”. También necesita la capacidad de razonar. Ser capaz de conectar todo ese conocimiento, datos y conceptos, para poder resolver problemas usando la lógica. Por ejemplo, una máquina de ajedrez detecta los movimientos de las fichas sobre el tablero, y aplicando las reglas del ajedrez a los datos que ha recogido, decide la mejor jugada. Ser capaz de planificar y desplazarse. Paraparecerse realmente a un humano, no basta con pensar como un humano. Nuestra IA debe ser capaz de moverse en un mundo tridimensional, eligiendo la ruta óptima. Esto es lo que hacen ya lo vehículos autónomos, pero deben hacerlo bien, porque en este caso, los errores cuestan vidas. ¿Qué factores han ayudado a impulsar el desarrollo de la IA? A lo largo de las últimas décadas aquello que en un principio parecía una utopía ha ido haciéndose realidad. Son varios los factores que han ayudado a impulsar el desarrollo de la IA.Uno de los factores que más ha contribuido al avance de la IA, además de la inversión de las grandes tecnológicas en I+D, ha sido la ley de Moore. La ley de Moore no es una ley en el sentido científico, sino más bien una observación. En 1965 Gordon Moore predijo el incremento continuado de la complejidad de los circuitos integrados, (medida por el número de transistores contenidos en un chip de computador), al tiempo que se reducía su coste. Esto permitió a la entonces naciente la industria de semiconductores crear el microprocesador (en 1971) y otros circuitos integrados que en principio de aplicaban a las computadoras, pero hoy en día podemos encontrar en cualquier dispositivo (móviles, televisores, vehículos) o incluso en seres vivos (como los chips de identificación implantados en animales). Gracias a esto, las aplicaciones de inteligencia artificial forman hoy en día parte de nuestra vida cotidiana.Otro de los factores que ha impulsado en gran medida el desarrollo de la inteligencia artificial (IA) han sido las tecnologías Big Data. En 2012 Google dio la campanada cuando demostró ser capaz de identificar la imagen de un gato en una foto con un 75% de precisión. Para lograrlo, utilizó redes neuronales a las que entrenó con un corpus de 10 millones de vídeos de Youtube. Evidentemente, esto no hubiera sido posible sin recurrir al Big Data. Figura 2: El cerebro artificial de Google aprende a identificar la imagen de un gato.(fuente) ¿Y qué tipos de IA hay? Básicamente, hay dos tipos de inteligencia artificial. La conocida como “débil o estrecha” (narrow/weak AI) se caracteriza por estar “especializada” en una tarea concreta. Por ejemplo, ganar a un juego. Deep Blue, creada por IBM ganó a en 1996 al gran maestro de ajedrez Gary Kasparov. En 2016, DeepMind’s AlphaGo, creada por Google, venció al el jugador profesional de Go surcoreano Lee Sedol. Los asistentes digitales como Siri y Cortana también son ejemplos de este tipo de IA. Pueden darnos la predicción meteorológica, o recomendarnos una ruta alternativa para ir al trabajo, pero no leer nuestros mensajes y borrar los que no son importantes. No pueden ir más allá de aquello para lo que originalmente fueron programados. Figura 3: Primeras 99 jugadas de la partida de AlphaGo vs Lee Sedol (fuente) La inteligencia artificial “fuerte” (strong AI) sí nos lleva al mundo de la ciencia ficción. Un excelente ejemplo sería Samatha, asistente personal del protagonista Theodore Twombly en la película Her. Samantha es la asistente personal perfecta, porque puede aprender cosas nuevas y modificar su código base. Puede organizar tu correo, tus reuniones, ganarte al ajedrez y escribir la lista de la compra. Es inteligente, empática, adaptativa… Ya tenemos una idea más clara de lo que es la inteligencia artificial. Una de sus áreas de aplicación más conocidas es la robótica, pero tiene también importantes aplicaciones en los campos de la medicina, la educación, el entretenimiento, la gestión de la información, las matemáticas, las aplicaciones militares, diseño urbano, arquitectura etc. Figura 4: Robot.(fuente) ¿Qué es el Machine Learning (ML)? Los primeros programas basados en IA, como Deep Blue, se basaban en reglas y eran programados por una persona. Machine Learning o Aprendizaje Automático es una rama de la inteligencia artificial que empezó a cobrar importancia a partir de los años 80. Es una forma de IA que ya no depende de unas reglas y un programador, sino que la computadora puede establecer sus propias reglas y aprender por sí misma.DeepMind de Google, que consiguió ganar al campeón del mundo de Go, lo hizo aplicando técnicas de aprendizaje automático y entrenándose con una gran base de datos que recogía jugadas de expertos en el juego. Por tanto, es un buen ejemplo de aplicación de MLLos sistemas de ML trabajan sobre grandes volúmenes de datos, identifican patrones de comportamiento y, basándose en ellos, son capaces de predecir comportamientos futuros. De esa forma son capaces de identificar a una persona por su cara, comprender un discurso, distinguir un objeto en una imagen, hacer traducciones y muchas otras cosas más. Es la herramienta más potente en el kit de IA para los negocios. Por ello, las grandes empresas tecnológicas como Amazon, Baidu, Google, IBM, Microsoft y otros más, ofrecen sus propias plataformas de “ML for business”. ¿Y cómo aprenden las máquinas? El aprendizaje automático se produce por medio de algoritmos. Un algoritmo no es más que una serie de pasos ordenados que se dan para realizar una tarea. El objetivo del ML es crear un modelo que nos permita resolver una tarea dada. Luego se entrena el modelo usando gran cantidad de datos. (En los próximos post de la serie lo analizaremos con más detalle). El modelo aprende de estos datos y es capaz de hacer predicciones.Según la tarea que se quiera realizar, será más adecuado trabajar con un algoritmo u otro. Los modelos que obtenemos dependen del tipo de algoritmo elegido. Así, podemos trabajar con modelos geométricos, modelos probabilísticos, o modelos lógicos. Por ejemplo, uno de los modelos lógicos más conocidos es el basado en el algoritmo árbol de decisión, que también veremos con detalle más adelante. Pero como “tráiler” os remito a este clásico ejemplo de aprendizaje basado en árboles de decisión, sobre las probabilidades de supervivencia de un pasajero del Titanic, según su sexo, su edad y si tenían hermanos/as a bordo. Se trata de resolver una tarea de clasificación, de asignar a cada individuo una etiqueta “died“(murió) o “survived” (sobrevivió), basándose en las respuestas a las preguntas que se plantean en cada uno de los nodos. Figura 5: Árbol de Decisión de los supervivientes del Titanic. (fuente) ¿Qué es el Aprendizaje Profundo o Deep Learning? Las redes neuronales son una de las familias de algoritmos de ML que más expectación despiertan. Se trata de una técnica que se inspira en el funcionamiento de las neuronas de nuestro cerebro. Se basan en una idea sencilla: dados unos parámetros hay una forma de combinarlos para predecir un cierto resultado. Por ejemplo, sabiendo los píxeles de una imagen habrá una forma de saber qué número hay escrito. Los datos de entrada van pasando secuencialmente por distintas “capas” en las que se aplican una serie de reglas de aprendizaje moduladas por una función peso. Tras pasar por la última capa, los resultados se comparan con el resultado “correcto”, y se van ajustando los parámetros (dados por las funciones “peso”). Aunque los algoritmos y en general el proceso de aprendizaje son complejos, una vez la red ha aprendido, puede congelar sus pesos y funcionar en modo recuerdo o ejecución. Google usa este tipo de algoritmos, por ejemplo, para las búsquedas por imagen. No existe una definición única de lo que es Deep Learning. En general, cuando hablamos de Deep Learning hablamos de una clase de algoritmos de Machine Learning basados en redes neuronales que, como hemos visto, se caracterizan por un procesamiento de los datos en cascada. La señal de entrada se va propagando por las distintas capas, y en cada una de ellas se somete a una transformación no lineal que va extrayendo y transformando las variables según determinados parámetros (pesos o umbrales). No hay un límite establecido para el número de capas que debe tener una red neuronal para considerarse Deep Learning. Sin embargo, se considera que el aprendizaje profundo surgió en los años 80, a partir de un modelo neuronal de entre 5 o 6 capas, el neocognitrón, creado por el investigador japonés Kunihiki Fukushima. Las redes neuronales son muy efectivas en la identificación de patrones. Un ejemplo muy llamativo de aplicación de Deep Learning es el proyecto conjunto de Google con las Universidades de Stanford y Massachusetts para mejorar las técnicas de procesamiento de lenguaje natural de un tipo de IA llamada Modelo de Lenguaje de Redes Neuronales Recurrentes (Recurrent Neural Network Language Model RNNLM). Se usa para traducción automática y creación de subtítulos, entre otras cosas. Básicamente, va construyendo frases palabra a palabra, basándose en la palabra anterior. Incluso, puede llegar a escribir poemas. Figura 8: Poema escrito por una IA de Google después de entrenarse con miles de novelas románticas. Una vez puestos en contexto, os invitamos a aprender más sobre Machine Learning en los próximos post de esta miniserie sobre el tema.¡No te los pierdas!
17 de octubre de 2017
Cloud
AI & Data
Cloudera, MapR, Hortonworks...¿Qué distribución Hadoop necesitas? (IV y fin)
En este último post de esta serie sobre Hadoop, hablaremos de las distribuciones comerciales líderes en el mercado y cómo elegir cuál es la que más nos interesa. Aunque Hadoop no ha cumplido todavía su primera década en el mundo empresarial, sus expectativas para el futuro son de lo más prometedoras. Forrester, en su informe “The Forrester Wave™: Big Data Hadoop Distributions, Q1 2016” estima que, en los próximos dos años, el 100% de las grandes empresas adoptarán Hadoop y otras tecnologías relacionadas, como Spark, para sus analíticas Big Data. Por tanto, la cuestión no va a ser tanto preguntarse: ¿Hadoop o no Hadoop? Sino: ¿Qué distribución de Hadoop me conviene más? ¿Por qué hay distintas distribuciones? Al desarrollarse como proyectos independientes, es fácil encontrarse con problemas de compatibilidad entre versiones de distintos componentes. Siguiendo la senda abierta por RedHat en el caso de Linux, otras compañías han encontrado la forma de comercializar productos basados en desarrollo de software opensource, en este caso, con Hadoop. Así, han “empaquetado” composiciones estables de estos componentes, creando sus propias distribuciones de Hadoop. Añaden a ésta otros componentes “de su cosecha” y servicios de soporte como “valor añadido” y ya tienen el pack completo. Ejemplos de estos componentes propietarios pueden ser, Impala propio de la distribución de Cloudera, y Tez de Hortonworks. ¿Y cuáles son estas distribuciones?. Los líderes en este mercado son Cloudera, MapR Technologies, IBM, y Hortonworks. Vamos a conocerlas un poco y después veremos qué tipo de criterios nos serán útiles para elegir entre una u otra. Cloudera : Cloudera fue la primera distribución Hadoop del mercado. Su chief architect es el propio Dough Cutting, uno de los creadores de Hadoop. Por ello su ritmo de innovación es vertiginoso. Su producto “Cloudera Enterprise” está formado por su propia distribución de Hadoop (CDH), un “ Cloudera Manager” propietario y soporte de usuario para los componentes core de CDH. Figura 1: Logo Cloudera. Cloudera fue la primera empresa que, ya en 2013, anunció su estrategia diferenciadora basada en crear componentes propietarios de valor añadido sobre el Hadoop opensource, como Impala, que junto con otras herramientas add-on como Cloudera Manager y Cloudera Navigator son muy valoradas por los clientes. También se caracteriza por acelerar la introducción del código opensource de nivel alfa o beta de las versiones más recientes de Hadoop y por su política de adquisiciones o colaboraciones con otras empresas que permitan cubrir las carencias en seguridad, gestión de datos y analíticas. Cloudera también ofrece un completo (aunque caro) programa de formación y certificación de profesionales. Figura 2: Ecosistema Hadoop Cloudera.(haz click para ampliar) MapR Technologies: Mapr pone el foco en ofrecer el máximo rendimiento y tolerancia a fallos, aprovechando el potencial de Hadoop para trabajar a gran escala, con el menor esfuerzo. Es el distribuidor de Hadoop que mayor esfuerzo ha hecho en hacer fiables y eficientes las mayores implementaciones de clusters Hadoop. Para ello ha desarrollado su propio sistema de ficheros nativo en Unix. Por tanto, mientras Cloudera y Hortonworks distribuyen los metadatos y procesamiento en los DataNodes y NameNodes propios de HDFS, MapR tiene una arquitectura distinta, con un enfoque más distribuido que se traduce en mejores rendimientos. También se diferencia de sus competidores por sus características de alta disponibilidad ( snapshots, mirroring, statefulfailover) e incluye el proyecto Apache Drill, basado en Google Dremel, para ofrecer procesamiento en tiempo real. Figura 3: Logo MAPR. Figura 4: Ecosistema Hadoop MapR.(haz click para ampliar) HortonWorks: La filosofía de HortonWorks esta más cercana al modelo de innovación opensource. Toda la tecnología de la distribución HortonWorks es Apache open source 100%. Está tan comprometida con este modelo, que incluso cuando adquiere alguna empresa para rellenar algún “gap” no cubierto por el core de Hadoop, aporta el código al proyecto Apache en beneficio de la comunidad, como hizo cuando adquirió XA secure, que pasó a convertirse en Apache Ranger. Fue el primer vendor en usar la funcionalidad HCatalog para los servicios de metadatos y logró optimizar el proyecto Hive, el estándar de facto para las queries SQL interactivas, con la iniciativa Stinger. Figura 5: Logo Hortonworks. Hortonworks ofrece una práctica herramienta de gestión y administración del cluster, Apache Ambari cuya funcionalidad es similar al Cloudera Manager, pero tiene ventaja de ser un software no propietario. Otra de las ventajas de esta distribución es una sencilla y práctica “sand-box”, para aprender a manejar el entorno, así como numerosos y tutoriales online. Pero la mayor diferencia entre Hortonworks y sus competidores fue el desarrollo de importantes mejoras en el core trunk de Hadoop que permiten que se ejecute de forma nativa en plataformas Windows, tanto en servidores onpremise, como en la nube (Windows Azure), mientras que sus competidores trabajan únicamente sobre Linux. Figura 6: Ecosistema Hadoop HortonWorks (haz click para ampliar) Todas estas distribuciones pueden usarse de forma independiente, o en combinación con una Big Data Suite. Las distribuciones Hadoop te ofrecen un práctico “empaquetado” , herramientas y soporte. Pero aún así pueden requerir un gran esfuerzo en codificación de jobs en MapReduce o integración de las diferentes fuentes de datos en Hadoop. Aquí es donde entran las “ Big Data Suites”, aportando ventajas en modelado, generación de código, programación de jobs e integración de distintas fuentes de datos. Las Big Data Suites pueden ser de código abierto, como Talend o Pentaho, o propietarias. La mayoría de los grandes fabricantes de software, como IBM, Oracle o Microsoft, integran suites de Big Data en su portfolio de software. Es importante asegurarse de la compatibilidad entre la Big Data Suite y la distribución con la que estamos trabajando. Algunas distribuciones son más “flexibles” que otras en cuanto a compatibilidad. ¿Qué preguntas tenemos que hacernos a la hora de elegir? A la hora de elegir qué distribución instalar, conviene hacerse una serie de preguntas. ¿Qué problema de negocio quieres resolver?. ¿Qué tipo de datos tienes que analizar?. ¿Componentes opensource o software propietario?. La infraestructura Hadoop que estás considerando, es lo suficientemente flexible para tus distintos casos de uso?. ¿Qué herramientas ya existentes quieres integrar con Hadoop?. ¿Necesitan tus administradores herramientas de gestión? (la distribución core de Hadoop no las incluye). ¿Necesitas recursos de formación? ¿Cómo de compleja es la instalación?. ¿Necesitas soporte?. ¿Puedes tener problemas de vendor lock-in? (como código no transferible a otras distribuciones o formatos de datos propietarios). Lo mejor, para poder comparar, es crear una tabla que reúna las especificaciones concretas de las distribuciones que estás considerando, priorizando las que son más importantes para tu negocio. Por ejemplo, si tienes instalaciones mixtas, con sistemas operativos UNIX y Microsoft, la opción a elegir será Hortonworks. Si necesitas un cluster muy optimizado para funcionar en tiempo real, investiga MapR. Si necesitas un potente motor de consultas SQL, puede interesante Cloudera, por la potencia de Impala… Sólo hemos visto las distribuciones más importantes, pero no las únicas. Lo principal es hacerse una idea del tipo de cuestiones que debemos valorar a la hora de elegir.
10 de octubre de 2017
Cloud
AI & Data
El Ecosistema Hadoop (III) : Una gran diversidad “biológica"
Ya estamos llegando al final del camino. En esta miniserie nos planteamos desentrañar la compleja madeja de Hadoop. Explicar de forma clara y legible en qué consiste, para qué sirve, y por qué, si hablamos de Big Data, tendremos que acabar hablando también de Hadoop. En el post de hoy trataremos el Ecosistema Hadoop. Es un entorno "vivo" en el que van surgiendo nuevos proyectos, o mejorándose los anteriores, para ir cubriendo las nuevas necesidades que se nos plantean cada día al trabajar con Big Data. Hadoop no es un proyecto Opensource independiente. Es más bien un complejo ecosistema de proyectos muy diversos que trabajan a la par. Su objetivo es crear un conjunto común de servicios capaces de transformar lo que llamamos “ commodity hardware” (hardware de bajo coste, sin capacidad de redundancia), en un servicio coherente que permita almacenar de forma redundante petabytes de datos, y procesarlos eficientemente. Aunque comenzó como proyecto individual, poco a poco se fueron sumando distintos proyectos abarcando áreas de: plataforma de almacenaje y procesamiento de datos lenguajes de scripting bases de datos herramientas analíticas lenguaje query gestión de workflow y mucho más... Muchos de estos componentes de la pila Hadoop son proyectos Open Source de la Fundación Apache que permiten trabajar tanto con procesos en batch, como con procesos en stream, gráficos o procesamiento en tiempo real. Otros han sido creados de forma propietaria por empresas que han comercializado diferentes versiones “empaquetadas” de Hadoop (como Cloudera, MapR, Hortonworks etc). En el último post de esta serie, analizaremos más en detalle dichas distribuciones. Veamos algunos de los proyectos más conocidos del ecosistema Hadoop. Figura 1: Proyectos del Ecosistema Hadoop. Pig: es un lenguaje de alto nivel que traduce a “MapReduce”. Convierte una descripción de alto nivel de cómo deben ser procesados los datos en Jobs de MapReduce, sin necesidad de tener que escribir largas cadenas de jobs cada vez, mejorando notablemente la productividad de los desarrolladores. Hive: Convierte una transformación en lenguaje SQL en Pig o directamente MapReduce. En Facebook se usa hasta en un 90% de las operaciones. HBase: HDFS es ideal para trabajar en procesos batch. Sin embargo no funciona bien para las analíticas en tiempo real, uno de los requerimientos más demandados en la industria IT hoy en día. HBase se creó para cubrir esa necesidad. HBase tiene un motor de procesamiento en memoria que le agiliza enormemente las operaciones de lectura-escritura sobre Hadoop, permitiendo así trabajar con datos en streaming. También permite trabajar con bases de datos noSQL. Se puede acceder a HBase desde Hive, Pig y MapReduce y usa HDFS para almacenar la información, por tanto es completamente tolerante a fallos. Se usa por ejemplo en los mensajes de Facebook. El mensaje que le envías a un amigo es un objeto en una tabla Hbase. Almecena parte de sus metadatos en Zookeeper. Zookeeper: es otro proyecto de Apache que almacena y facilita servicios de coordinación para distintos servidores. HCatalog: es un proyecto que sacó los metadados de Hive para que también se pudiera acceder a ellos Pig y MapReduce. Es un servidor de metadatos con algunas mejoras. HCatalog puede acceder a los datos en el estándar HDFS o bien en HBase. Hay otros proyectos como: Mahout, es una librería de Machine Learning que permite escribir aplicaciones MapReduce Ambari, Ganglia, Nagios ofrecen una interfaz de acceso al cluster Sqoop, que permite ejecutar aplicaciones MapReduce que introducen o extraen información de bases de datos SQL (por tanto, estructuradas) Flume sirve para introducir datos en streaming en Hadoop. Si tenemos servidores que generan datos de forma continua, se puede usar Flume para almacenarlos en HDFS (pueden ser datos semiestructurados o no estructurados). Oozie es un gestor de workflow. Te permite definir cuándo quieres que tus jobs MapReduce se ejecuten, de forma programada o cuando haya disponibles nuevos datos. Fuse-DFS permite acceder a HDFS usando herramientas Linux Como Hadoop es un sistema distribuido en el que distintos componentes tienen que hablar unos con otros, también se da soporte a librerías de serialización como ( Protobuf (creado por Google) y Avro y Thrift (de Apache)
4 de octubre de 2017
AI & Data
Hadoop por dentro (II): HDFS y MapReduce
En nuestro primer post sobre Hadoop hablamos de su origen y sus características principales. Ahora vamos a conocer un poco la arquitectura que da soporte a la fiabilidad, escalabilidad y gran potencia que hacen de él un entorno ideal para las aplicaciones Big Data. La idea que subyace en la filosofía Hadoop es distribuir algo muy grande, estamos tratando con Big Data, entre muchos nodos diferentes. Y tenemos dos cosas que repartir. Por un lado, la gestión y almacenamiento de la información. Y por otro, el procesamiento de los datos. Por tanto, Hadoop se basa en dos componentes principales: El Sistema de Ficheros distribuido Hadoop (HDFS), para la parte de almacenamiento El Servidor MapReduce, para la gestión distribuida del procesamiento Figura 1: Ejemplo de cluster Hadoop con dos nodos.(Fuente) HDFS (Hadoop Distributed File System) Es el sistema de ficheros que almacena los datos en Hadoop. Para hacer frente al desafío que supone el gran tamaño de ficheros en Big Data, HDFS “rompe” estos ficheros en bloques (de tamaño configurable, aunque suelen ser de 128MB o 256 MB), y luego los distribuye entre los distintos Data Nodes que conforman el cluster HDFS. Figura 2: Lectura y Escritura en HDFS. Además de distribuir los bloques entre distintos nodos de datos, también los replica (al menos en 3 nodos diferentes, 2 en el mismo rack y 1 en otro) para evitar pérdidas de información si alguno de los nodos falla. El servidor HDFS en un cluster se llama Name Node. El NameNode almacena los metadatos, como el árbol de directorios del sistema de ficheros (Espacio de Nombres), y sabe en qué nodo del cluster está cada bloque de información (Mapa de Bloques). Por su gran importancia, este nodo se suele replicar en un Secundary Name Node. Cuando una aplicación cliente necesita leer o modificar un bloque de datos, el Name Node le indica en qué nodo se localiza esa información. También se asegura de que los nodos no estén caídos y que la información esté replicada, para asegurar su disponibilidad aun en estos casos.(Ver Figura 2). Por todo esto, HDFS le proporciona a Hadoop una gran escalabilidad. Según aumenta el volumen de datos a tratar, se pueden ir agregando nodos al cluster de forma dinámica. Los mayores clusters de Hadoop pueden llegar a tener tamaños de decenas de petabytes de datos , distribuido s entre miles de nodos. En la wiki de Apache Hadoop podemos encontrar un listado de empresas e instituciones que trabajan con Hadoop, con detalles sobre el tamaño de sus clusters y el tipo de hardware que utilizan. Por ejemplo, Facebook tiene dos clusters principales: Un cluster de 1100 máquinas, con 8800 nodos y cerca de 12 PB de almacenamiento. Un segundo cluster de 300 máquinas con 2400 nodos y cerca de 3PB de de almacenamiento. Mapreduce Es el componente de procesamiento de Hadoop. Consiste en un framework de programación (librerías y entorno de ejecución) que trabaja sobre HDFS y se basa en el uso de dos tipos de funciones: Map – “Divide y vencerás”: divide la tarea de entrada en subtareas y las ejecuta entre distintos nodos. Reduce – “ Combina y reduce la cardinalidad”: la función “Reduce” recoge las repuestas a las sub-tareas en cada subnodo y las combina y agrupa para obtener la respuesta final. Figura 3: Filosofía MapReduce. Un ejemplo típico de uso Uno de los típicos ejemplos de aplicación de MapReduce consiste en contar el número de veces que se repite una palabra en un texto. Se divide en texto original en bloques o “tokens” (en este caso, grupos de 3 palabras). Cada token se pasa a una instancia de mapper que los organiza en parejas (clave=nombre fruta, valor=1 si está). En el proceso de Sort and Shuffle se organizan todos los resultados parciales obtenidos por los mappers en cada instancia o nodo y se reducen al agrupar y sumar todas las ocurrencias de una palabra en concreto. En el ejemplo de la Figura 4 “Apple” aparece 4 veces, “Grapes” 1 vez, etc... Así se obtiene el resultado final con la suma de las ocurrencias de cada palabra en el texto. Figura 4: Ejemplo de aplicación de MapReduce para contar palabras de un texto. "Llevar la ejecución a los datos" Antes de que existiera el framework MapReduce la única forma de distribuir el procesamiento era, o bien compartiendo el mismo almacenamiento, o desplazando los datos de los nodos esclavos, al nodo de computación. Cuando los volúmenes de datos se hicieron enormes, surgieron problemas: aumentaron los costes y los tiempos de respuesta (peores rendimientos de red). aumentaba el riesgo de corrupción e inconsistencia de los datos. aumentaba el riego de saturar el nodo maestro etc... Figura 5: Comparativa modelos de procesamiento distribuido (Tradicional versus MapReduce) Estos problemas se solucionaron llevando el procesamiento allá donde se encontraban los datos, mejorando notablemente los tiempos de respuesta y cumpliendo así uno de los mantras del Big Data : “move the computation to the data”. ¿Y Cómo funciona MapReduce?¿Cómo distribuye el procesamiento? Cada máquina de un cluster Hadoop tiene un servidor MapReduce que se llama TaskTracker. A su vez, hay un gestor de Jobs por cada cluster, el JobTracker, que se encarga de dividir cada proceso a realizar en subprocesos, y distribuir la computación de estos subprocesos entre distintas máquinas del cluster, enviándo a los TaskTrackers de cada una de ellas el job que le corresponde realizar. El Job Tracker también es responsable de comprobar que no haya desaparecido algún Task Tracker por fallo de hardware o sofware. En caso de detectar que un Task Tracker ha desaparecido, asigna automáticamente esa tarea a otro Task Tracker del cluster. Figura 6: Cluster Hadoop de 3 nodos. Para terminar, vamos a hablar sobre las versiones de Hadoop. En la versión 1, si se caía el Job Tracker o se saturaba, el cluster dejaba de funcionar. También, en esta versión, el motor MapReduce estaba integrado en el Core de Hadoop y era la única API que podía interactuar con NTFS. Esta situación cambió en 2011 con el lanzamiento de la versión 2. MR2 incorporaba YARN ( Yet Another Resource Navigator ), un gestor de cluster mejorado que separaba la tareas que realizaba el Job Tracker en la versión anterior en dos daemons: Un Gestor de recursos global: Global ResourceManager. Un programador/Monitor de aplicaciones (por aplicación): ApplicationMaster (AM). Figura 7: Comparativa de versiones de Hadoop. En la versión 2 se desarrolló una nueva versión de MapReduce, muy diferente de la anterior, ya que dejó de estar integrada en el Core (se ejecuta como una aplicación independiente). Gracias a esto, ahora es posible el acceso al sistema de ficheros de Hadoop desde otros entornos de programación y ejecución. Esto es importante porque, aunque MapReduce es el framework ideal para muchas de las aplicaciones Big Data, no lo es para todas. Por ejemplo, Facebook no usa MapReduce sino Apache Giraph para analizar los grafos sociales generados entre sus usuarios y Contactos. Figura 8: La pila YARN No te pierdas el tercer post de esta mini-serie sobre Hadoop, donde hablaremos de las aplicaciones que conforman su ecosistema. Ya está publicada la serie completa. Puedes leerla aquí: Big Data y Hadoop: Episodio (I) Hadoop por dentro (II): HDFS y MapReduce El Ecosistema Hadoop (III): Una gran diversidad "biológica" Cloudera, MapR, Hortonworks...¿Qué distribución Hadoop necesitas? (IV y fin) ) No te pierdas ninguno de nuestros post. Suscríbete a LUCA Data Speaks.
26 de septiembre de 2017
Cloud
AI & Data
Big Data y Hadoop: Episodio (I)
Cuando leemos sobre Big Data, uno de las “buzzwords” con la que más nos encontramos es “Hadoop”. Aunque Hadoop lleva dando vueltas por el mundo tecnológico desde 2006 y ya existe mucha literatura técnica sobre el tema, en este post vamos a intentar explicar de forma sencilla qué es Hadoop y por qué es tan importante para el mundo del Big Data. Hadoop es un proyecto opensource de la Apache Foundation, introducido en 2006, y desarrollado en Java cuyo objetivo es ofrecer un entorno de trabajo acorde con las necesidades del Big Data (las 4 "V"). Hadoop, por tanto, está diseñado para trabajar con volúmenes de datos masivos (Volumen), estructurados o no (Variedad), y procesarlos de forma segura y eficiente (Veracidad/Velocidad) , tanto en costes como en tiempo. Al principio, según aumentaba el volumen de datos de trabajo, la solución tradicional consistía en invertir en equipos más potentes, con mayores capacidades de almacenamiento-procesamiento, y, por supuesto, más caros. Pero pronto se vio que había que plantearse otra forma de hacer las cosas. Ese camino no era viable. La clave estaba en distribuir, tanto el almacenamiento de la información, como su procesamiento, entre muchos equipos trabajando de forma coordinada en “clusters”, con uno o varios nodos maestros encargados de gestionar, por una parte el sistema de ficheros distribuido donde los datos se almacenan en diferentes bloques redundados; y por otra, la coordinación y ejecución de los distintos jobs o tareas entre los miembros del cluster. Al trabajar de forma distribuida los retos principales eran: poder acceder a los datos, procesarlos a gran velocidad y evitar la pérdida de información si alguno de los nodos fallaba. Figura 1: Ejemplo de un cluster Hadoop compuesto por tres nodos Hadoop dio respuesta a estos problemas, ofreciendo: • Fiabilidad. Distribuye los datos y las tareas entre distintos nodos. En caso de fallo de un nodo, la tarea se reasigna automáticamente a otro y los datos no se pierden porque están replicados en otros nodos del cluster. • Escalado horizontal: el mismo programa se puede probar en una máquina, y después escalarse a 1000, o a 4000 máquinas • APIS muy sencillas, tanto para procesamiento como para acceso a los datos • Potencia, al dividir el procesamiento entre distintas máquinas, se pueden procesar enormes volúmenes de datos en tiempos eficientes Sus capacidades para distribuir la capacidad de almacenamiento y el procesamiento de los datos entre un gran número de máquinas, y ofrecer redundancia basada en software, se traducen en otra de las mayores ventajas de trabajar con Hadoop: No hace falta comprar hardware especial, ni costosos sistemas RAID. Puede ejecutarse sobre “commodity hardware”, lo cual supone una gran flexibilidad y un importante ahorro. Otra de las ventajas de Hadoop es su escalabilidad. Especialmente cuando se despliega en plataformas de nube pública como Microsoft Azure, Amazon AWS y Google Compute Cloud, que permiten ir añadiendo-reduciendo recursos según varíen las necesidades del negocio. En estos casos se suelen usar los sistemas de almacenamiento propios de estas plataformas para desacoplar la computación del almacenamiento. Así, la computación se dedica a ejecutar procesar y analizar los datos en lugar de a mantener el sistema de archivos que los sustenta Un poco de historia para situarnos En realidad, los creadores de Hadoop, Doug Cutting y Mike Cafarella simplemente querían diseñar un motor de búsqueda open source, al que llamaron Nutch (en 2002). Pronto se tropezaron con las dificultades propias de trabajar con grandes volúmenes de datos. Vieron que su buscador era lento, que necesitaban equipos muy potentes y que tenían que estar monitorizando continuamente que no fallaran los procesos. Cuando poco después, Google publicó dos trabajos sobre su sistema de ficheros y la filosofía MapReduce ( Google File System paper en Octubre 2003 y MapReduce paper en Diciembre de 2004) Cutting y Cafarella vieron la solución a sus problemas, ya que este nuevo enfoque les permitía automatizar muchas de los pasos que estaban realizando de forma manual. Se pusieron manos a la obra y en unos pocos meses, diseñaron (en Java) el sistema de ficheros y el entorno de procesamiento que permitía distribuir, tanto el procesamiento como el almacenamiento entre distintas máquinas. Poco después, Cutting empezó a trabajar en Yahoo, donde había un gran interés en desarrollar tecnologías open source basadas en Map Reduce y el sistema de ficheros Google. Tomaron de Nutch la parte de almacenamiento y procesamiento y así, en 2006, nació Hadoop, como un nuevo proyecto open source de la Apache Software Foundation. El nombre y la imagen, lo tomaron del elefantito de peluche del hijo de Cutting. El buscador Nutch quedó entonces como proyecto independiente. Figura 2: Dough Cutting con el elefante de juguete que dio nombre a Hadoop Como el origen de Hadoop fue un poco circunstancial, y lo que se buscaba era dar soporte al buscador Nutch, cuando se empezó a usar con una perspectiva más amplia aparecieron una serie de carencias. Para cubrir estas carencias, surgieron diferentes proyectos open source que iban complementado Hadoop, creando un auténtico ecosistema. Así, el pequeño elefante amarillo fue el primer animalito de un auténtico "zoológico", al que luego se fueron sumando otros más: cerditos, impalas, orcas, abejas con cabeza de elefante… hasta un “cuidador del zoo”, añadiendo un toque de humor a toda esta complejidad tecnológica. En un próximo post, hablaremos con más detalle del entorno Hadoop y las herramientas que lo conforman, pero como aperitivo, os dejamos algunos de sus coloridos logos en la siguiente imagen. Hay unos cuantos más… Figura 3: Algunos componentes del ecosistema Hadoop Al igual que ocurre con otros proyectos Open Source, algunos fabricantes ofrecen distribuciones estables, que aderezan con herramientas propias y, sobre todo, soporte. Las más habituales son Cloudera Hadoop, HortonWorks, MapR, Microsoft HD Insight, IBM InfoShere BigInsights, AWSEMR (Elastic MapReduce), etc.
14 de septiembre de 2017
AI & Data
¿Pedaleas en la ciudad?: Analiza con Excel la seguridad de los ciclistas en Madrid
En este post vamos a ver un ejemplo de cómo podemos realizar unas sencillas analíticas descriptivas sobre un conjunto de datos de nuestro interés, sin necesidad de recurrir a complejas herramientas específicas. Excel es una herramienta muy extendida, pero muchas veces no somos conscientes de su gran potencia. Al igual que en un post anterior la hemos usado para tareas de depuración y preparación de datos, en este ejemplo la usaremos como herramienta analítica que nos permita responder a las preguntas que nos planteamos sobre Bicimad. En 2014 entró en funcionamiento el servicio público de bicicletas BiciMAD. Como a muchos otros madrileños que sufrimos el día a día de atascos en Madrid, nos pareció una buena noticia contar con otras alternativas de transporte público. Pero nos preocupaba un tema: la seguridad. ¿Habría más accidentes? ¿Se transmitiría esta información de forma transparente a los ciudadanos? Decidimos investigar el tema y buscamos en el portal de Datos Abiertos del Ayuntamiento de Madrid información sobre accidentes relacionados con bicicletas. Encontramos este dataset que recoge los ”Accidentes de Tráfico con implicación de bicicletas”. El volumen de datos no es muy grande, ya que, aunque el servicio se arrancó en 2014, sólo tenemos información a partir de Enero de 2017. Sin embargo, esta información se va actualizando mensualmente. Aunque el tamaño de la muestra sea pequeño y, por tanto, las conclusiones que obtengamos tampoco serán muy determinantes, nos interesa ver cómo podemos “hacer hablar” a estos datos para dar respuesta a las preguntas que nos preocupan. Figura 1: Portal de Datos Abiertos del Ayuntamiento de Madrid. Desgraciadamente, en Julio de este año 2017 se produjo el primer accidente mortal de BiciMad en un punto cuya peligrosidad ya había documentado en su blog otro usuario un año antes. Es muy importante detectar estos “ puntos negros” para ver qué medidas se pueden tomar para evitar accidentes. Vamos a analizar con Excel este conjunto de datos para encontrar nosotros mismos las respuestas a estas cuestiones sobre la seguridad de BiciMAD. En primer lugar, nos descargamos el conjunto de datos en formato Excel. En este fichero tenemos información sobre los accidentes de tráfico donde está implicada al menos una bicicleta, indicando día, hora, nº de víctimas, distrito, nombre de la vía y tipo de accidente. Los tipos de accidente considerados son los siguientes: Colisión doble: Accidente de tráfico ocurrido entre dos vehículos en movimiento. Colisión múltiple: Accidente de tráfico ocurrido entre más de dos vehículos en movimiento. Choque con objeto fijo: Accidente ocurrido entre un vehículo en movimiento con conductor y un objeto inmóvil que ocupa la vía o zona apartada de la misma, ya sea vehículo estacionado, árbol, farola, etc. Atropello: Accidente ocurrido ente un vehículo y un peatón que ocupa la calzada o que transita por aceras, refugios, paseos o zonas de la vía pública no destinada a la circulación de vehículos. Vuelco: Accidente sufrido por un vehículo con más de dos ruedas y que por alguna circunstancia sus neumáticos pierden el contacto con la calzada quedando apoyado sobre un costado o sobre el techo. Caída motocicleta: Accidente sufrido por una motocicleta, que en determinado momento pierde el equilibrio, por causa del conductor o por las circunstancias de la vía. Caída ciclomotor: Accidente sufrido por un ciclomotor, que en determinado momento pierde el equilibrio, por causa del conductor o por las circunstancias de la vía. Caída bicicleta: Accidente sufrido por una bicicleta, que en determinado momento pierde el equilibrio, por causa del conductor o por las circunstancias de la vía. El fichero descargado tiene este aspecto: Figura 2: Fichero descargado en formato Excel. Vamos a empezar creando una tabla. Es tan sencillo como elegir la opción “Insertar tabla” en el menú ¿Qué desea hacer?. Automáticamente nos preselecciona toda la tabla y detecta que tiene encabezados. Sólo tenemos que confirmar. (Hemos eliminado antes la primera fila porque la información que nos facilita es redundante). Figura 3: Creamos una tabla. Nos queda algo así: Figura 4: Aspecto de la tabla. Podemos insertar valores totales. Para ello, activamos la casilla “Fila de totales ”, que podemos encontrar en Herramientas de tabla / Diseño Figura 5: Insertamos fila de totales. Después, en la columna que nos interese, desplegamos y elegimos la función (suma, promedio, máximo etc.). En este caso, elegimos ”la cuenta” de los accidentes. Como vamos a analizar la distribución de casos por franjas horarias vamos a asignar a cada registro una etiqueta: Mañana: de las 7 a las 12 Tarde: de las 13 a las 20 Noche: de las 21 a las 6 Para ello, primero quitamos los “DE” con la función “Buscar-Reemplazar” (del menú Inicio) Figura 6: Uso función Buscar-Reemplazar. Después extraemos el dato “hora” de la columna “Tramo horario”. Como el intervalo es siempre de 1 hora, sólo nos interesa el primer valor numérico de la columna. Insertamos dos columnas adicionales, y desde el menú Datos, seleccionamos: Datos, Texto en columnas, delimitados por “:” Nos quedamos con la primera columna, que indica la hora y eliminamos las otras dos. Ahora queremos asignarle una etiqueta “mañana/tarde/noche”, según el valor de esa columna. Para eso, podemos utilizar funciones SI anidadas. Como a veces resultan un poco complejas, si tenéis algún problema con ellas os serán muy útiles estos vídeos. Insertamos una nueva columna, y con la función SI anidada asignamos las etiquetas que corresponden: =SI(O([@[TRAMO HORARIO]]>=20;[@[TRAMO HORARIO]]<=6);"Noche"; SI([@[TRAMO HORARIO]]>=13;"Tarde";"Mañana")) Figura 7: Uso de la función SI anidada. Una vez etiquetadas las franjas horaria, vamos a insertar la tabla dinámica. Estas tablas (pivot table) nos permitirán crear un sencillo "tablero de mandos" para analizar los datos de forma dinámica. Antes de insertar la tabla dinámica, nos aseguramos de que los nombres de las columnas sean correctos, para facilitarnos la selección de campos en la siguiente fase. Después, seleccionamos “Insertar”-Tabla Dinámica, y pedimos que la agregue en una hoja nueva. Figura 8: Crear tabla dinámica. Ahora, tendremos que ir añadiendo los campos que nos interesan en nuestra tabla dinámica. Por ejemplo, sólo con añadir Tramo Horario y Meses en filas, y como valores, Tipo de Vehículo (que al ser todos “bicicleta” nos sirve para contar los casos): Figura 9: Elegimos campos. Figura 10: Incidencias por mes. ... podemos empezar a ver cómo el número de accidentes registrado en Enero (44), prácticamente se duplica en los meses de verano, con un valor máximo de 80 incidentes en Junio. Recordemos que nuestro objetivo es crear un “tablero” donde podamos responder preguntas como: ¿Cuáles son los accidentes más frecuentes? ¿Cuándo ocurren?¿Hay más en unas épocas del año que en otras?¿en unas franjas horarias que en otras? ¿Dónde suceden?¿Son más frecuentes en unos distritos que en otros?¿Hay “puntos negros” de acumulación de accidentes? 1. Empezamos creando la primera visualización. Agregamos los campos: Tipo de accidente (Filas) Distrito (Filtro) Tramo horario (Columnas) Número de incidentes (valores) Podemos ver cuántos accidentes de cada tipo suceden según la franja horaria, en todos los distritos, o filtrando los que nos interesen. Figura 11: Accidentes por franja horaria y distrito. 2. Creamos una segunda tabla en la misma hoja Recordemos que nuestra intención es crear un tablero. Para ello, al agregar la nueva tabla desde la hoja “listado de accidentes…” indicamos el nombre de la hoja y su posición (simplemente, eligiendo una celda) en la que hemos creado la primera tabla dinámica en lugar de “ hoja nueva”. En esta segunda tabla vamos a hacer el análisis de los accidentes por distrito. Por ello, vamos a añadir los siguientes campos: Distrito (Filas) Meses (Filtro) Número de incidentes (valores) Obtenemos este resultado: Figura 12: Incidentes por distrito. Ahora, vamos a hacer un filtrado por franja horaria más visual. Queremos crear unos “botones” etiquetados como “ Mañana”, “ Tarde” y “ Noche”, y colocarlos sobre cada una de las tablas dinámicas que hemos creado. Para ello, en el selector de campos para la tabla dinámica, sobre la opción “ Tramo horario” elegimos “Agregar como segmentación de datos”(slicing) en el menú contextual. Figura 13: Agregamos segmentación por Tramo Horario. Con esto obtenemos los “botones”. Ahora, para que quede mejor en el panel, ponemos los botones sobre la tabla dinámica y, usando el menú “Herramientas de segmentación de Datos”, elegimos la opción “3 columnas” para visualizarlo en horizontal. Figura 14: Configuración de columnas para "botones". Y nos queda así: Figura 15: Botones de segmentación sobre la tabla. Así, simplemente pulsando el botón que nos interese, podremos ver los datos de la tabla segmentados por ese valor. Ahora queremos que esa segmentación afecte también a la otra tabla. Ya que estamos construyendo un panel, queremos que todas las tablas/diagramas estén “sincronizados” en cuanto a franja horaria. Para ello, en el Menú “Herramientas de segmentación de datos”, seleccionamos “Conexiones de informe” y marcamos también la primera tabla (Tabla dinámica 8). Vemos que la segmentación puede sincronizarse incluso con tablas dinámicas que estén ubicadas en otras hojas, lo cual nos permite hacer informes multipágina. Figura 16: Conexiones de informe. 3. Insertamos gráficos dinámicos. Ahora que ya tenemos las dos tablas, y una segmentación que nos interesa, podemos insertar gráficos dinámicos que nos ayuden a analizar la información de forma más visual. Por ejemplo, en la primera tabla insertamos un gráfico dinámico tipo “tarta” (pie chart). Para insertar el gráfico dinámico, nos ponemos sobre la tabla que nos interese, y seleccionamos la opción “Insertar gráfico dinámico” del menú Herramientas de tabla dinámica, Analizar Figura 17: Insertamos gráfico dinámico. Así, según vamos seleccionando los “botones” que filtran por franja horaria, se van actualizando tablas y gráficos dinámicos. Así, podemos ver que, por las mañanas, en el conjunto de distritos, el tipo de accidente más habitual es la colisión doble. Figura 18: Gráfico dinámico tipo de incidente/mañana. También vemos que, por las noches, se diversifica más el tipo de incidentes. Figura 19: Gráfico dinámico tipo de incidente/noche Ahora insertamos un segundo gráfico dinámico que nos muestre el número de casos por distrito. Desde la segunda tabla que hemos creado, añadimos un gráfico dinámico igual que hemos hecho en el caso anterior. En este caso elegiremos, por ejemplo, un diagrama de barras. Igual que en caso anterior, crearemos un nuevo menú de segmentación de datos. En este caso, segmentaremos por “tipo de accidente”. Así, tenemos ya un panel en el que podemos analizar y visualizar los datos eligiendo la segmentación que más nos interese. Recolocaremos los gráficos y botonaduras de segmentación de la forma que nos sea más cómoda (por ejemplo así), y ya tenemos un panel de control que nos permite analizar cómodamente los datos. Al colocarlos, habrá que tener en cuenta que no se pueden superponer unas tablas con otras. Por tanto, habrá que dejar para cada tabla el espacio máximo que ocupa en cada segmentación. Este tipo de detalles son los que están optimizados en las herramientas específicas que encontramos en el mercado sobre analíticas de datos, así como tener una mayor facilidad para que el resultado sea visualmente atractivo. Pero para el objetivo de este ejemplo, Excel nos resulta más que suficiente. Figura 20: Ejemplo de panel. Usando los dos juegos de botones, se van actualizando automáticamente las gráficas y las tablas dinámicas. Ahora podemos responder a las preguntas que nos hemos planteado al principio de este post. ¿Qué accidente es el más frecuente? ¿A qué horas se producen más accidentes? ¿En qué distrito se producen más accidentes? ¿alguna calle en concreto? ¿Varía el número de accidentes según la estación del año? Vamos a responder a éstas preguntas, pero luego, te invito a plantear las tuyas propias. ¿Qué accidente es el más frecuente? ¿A qué horas se producen más accidentes? Seleccionando todos los tipos de accidente y todas las franjas horarias, podemos ver que, los más frecuentes son las caídas y las colisiones dobles, y que es en la franja de la tarde cuando más incidencias se producen. Por las mañanas, el número de caídas es ligeramente inferior al de colisiones dobles, pero van aumentando conforme avanza el día, siendo la incidencia más habitual por las noches. Por las noches, los atropellos disminuyen, pero aumentan los choques con objeto fijo. ¿En qué distrito se producen más accidentes? ¿alguna calle en concreto? Si observamos la segunda tabla dinámica y su gráfico asociado (lo hemos cambiado a barras verticales ya que se puede modificar el tipo de gráfico cuando nos interese sin mayor dificultad), vemos, sin hacer ningún filtrado previo por horario ni por distrito, que el mayor número de incidentes se concentran en el distrito de Centro, seguido, a cierta distancia por los distritos de Retiro y Arganzuela. Curiosamente, si analizamos esta misma gráfica según la franja horaria, vemos cómo el patrón de incidentes por distrito va cambiando. El distrito Centro siempre está en primer lugar, pero el resto de posiciones varían. Este hecho seguramente tenga que ver con el hecho de que en algunos distritos haya una mayor concentración de locales de ocio, o zonas comerciales, de oficinas etc. Por ejemplo, en conjunto, los distritos con mayor número de accidentes son Centro, Arganzuela y Chambertí. Sin embargo, por las tardes, los distritos con mayor número de incidentes son, por ese orden, Centro, Retiro ,Chamberí y Carabanchel. Y por las mañanas, son Centro, Moncloa y Arganzuela. ¿Varía el número de accidentes según la estación del año? En la primera tabla dinámica que hemos creado ya hemos visto la respuesta a esta pregunta. El número de incidentes se ha ido incrementando gradualmente desde los 30 del mes de Enero al máximo de 58 registrados en Junio. Es lógico que conforme mejoran las condiciones climatológicas, aumente el número de incidencias, ya que con el buen tiempo más usuarios se animan a utilizar el servicio. Nos hemos dejado una pregunta sin responder. Una pregunta que puede ser de las más importantes, ya que puede ayudar a prevenir accidentes. ¿Podemos detectar algún “punto negro”?¿Hay alguna calle donde se produzcan más accidentes? Para responder a esta pregunta, volvemos a la tabla inicial “Listado de Accidentes Bicicletas”. Junto a la columna “ Dirección” vamos a insertar una fila nueva con una función que nos indique cuántas veces se repite un valor en una columna. La fórmula que usaremos es “CONTAR.SI”: =CONTAR.SI([Lugar];[@Lugar]) Figura 22: Uso de ContarSi para contar registros repetidos. Después, en la columna resultado, podemos filtrar por aquellas calles con un número de ocurrencias mayor. Si observamos el mayor número de ocurrencias, “11”, vemos que corresponde a la calle Alcalá. Sin embargo, al comprobar la columna Número, vemos que no hay coincidencias, luego no muestra ningún punto concreto de mayor peligrosidad. Lo mismo pasa si filtramos por los números de ocurrencia “6” y “5”. Nos encontramos con las calles Bravo Murillo y Paseo de la Castellana, que, después de la Calle Alcalá, son la segunda y tercera calles más largas de Madrid. Figura 23: Incidentes ocurridos en la Calle Alcalá. En conclusión: Habrá que seguir atentamente las incidencias que se vayan registrando en biciMAD para poder sacar conclusiones sobre estos datos, que puedan revertir en la mejora del servicio. Hoy por hoy, los datos recogidos no señalan ningún punto negro concreto en el que haya una mayor concentración de accidentes. Sin embargo, sí que sería recomendable investigar los puntos denunciados por los propios usuarios, ya que, aunque todavía no se hayan registrado incidencias en esos puntos, es posible que acaben ocurriendo en el futuro. No te pierdas ninguno de nuestros post. Suscríbete a LUCA Data Speaks.
13 de septiembre de 2017
AI & Data
Las analíticas Big Data llegan a la Vuelta en 2017
Recién terminada la Vuelta a España, el equipo Movistar Team hace balance de la temporada 2017 y anuncia importantes novedades para el 2018 en el auditorio del Edificio Central de la sede de Telefónica en Madrid. El evento contó con la presencia de Carlos López Blanco, Director Global de Asuntos Públicos y Regulación de Telefónica; Eusebio Unzué, Mánager General de la escuadra; y Alejandro Valverde, todavía en recuperación de su grave lesión por caída en la primera etapa del Tour de Francia. Esta temporada ha habido dos etapas muy diferenciadas. Una primera, en la que el equipo estaba funcionando a pleno rendimiento. Y una segunda, tras la caída de Alejandro Valverde, en la que los resultados han estado por debajo de las expectativas. Ha sido un año agridulce, de pequeñas y grandes satisfacciones. No obstante, Telefónica, pese a ser un patrocinador exigente, comprende que hay factores importantes que están fuera de nuestro alcance, y mantiene intacta su ilusión por el equipo Movistar Team. En concreto, porque pese a las dificultades que se han vivido en esta temporada, ha sido un año muy especial para Telefónica. Esto ha sido así por dos motivos. Figura 1: Presentación de la nueva equipación Movistar Team 2018. En primer lugar, por los excelentes resultados obtenidos por la aplicación de analíticas Big Data a los datos generados por la Vuelta. LUCA, la unidad de datos de Telefónica, ha trabajado sobre tres fuentes de información: los datos de audiencias de TV, movilidad de personas alrededor de las etapas y conversaciones sobre la Vuelta en redes sociales, con el fin de analizar su seguimiento e impacto en las localidades que son parte de su recorrido. No se trata de datos procedentes de encuestas, sino de datos en tiempo real, convenientemente anonimizados para garantizar en todo momento la privacidad de los mismos. Las conclusiones principales fueron: Audiencia televisiva. Se registró un impacto creciente, llegando a alcanzar casi 900.000 hogares en los finales de etapas y etapas más relevantes, como la Etapa 15: Alcalá la Real y Sierra Nevada. Resulta llamativo el incremento de audiencia en una determinada región en las etapas de la Vuelta que transcurren por dicha provincia, llegando a duplicarse y hasta triplicarse. Movilidad. La Vuelta ha tenido un importante impacto en la movilidad de las personas, claramente detectable en poblaciones de tamaño pequeño y mediano, o en aquellas relativamente aisladas. Los patrones de entrada y salida al municipio se alteraban claramente influenciados por los horarios de desarrollo de las etapas. Redes sociales: La monitorización en redes sociales reveló el gran interés que despierta la Vuelta, con un alcance promedio de 150 millones de cuentas, carácter internacional, destacando países como Venezuela, Colombia y Ecuador como cuentas de mayor influencia, y el sentimiento mayoritariamente positivo que despierta en la audiencia.  Figura 2: Pedro Antonio de Alarcón y Elena Gil nos muestran las analíticas de la Vuelta. Y en segundo lugar, por el lanzamiento, en colaboración con otras instituciones como la DGT, el Consejo Superior de Deportes, Televisión Española y la Real Federación de Ciclismo en la campaña de promoción del respeto mutuo entre ciclistas y conductores #RodamosJuntos. En este mismo acto se anunció también una importante novedad. Telefónica, siempre implicada en políticas de diversidad, ha decidido extender ese compromiso a los deportes que patrocina, y ha dado el gran paso de crear un equipo femenino que dispute las más importantes competiciones internacionales la próxima temporada. También, colaborará con la Real Federación Española de Ciclismo en distintos proyectos de apoyo al deporte base y fomento del deporte femenino. No te pierdas ninguno de nuestros post. Suscríbete a LUCA Data Speaks.
12 de septiembre de 2017
AI & Data
Las 5 preguntas que puedes responder con Data Science
El mundo del Data Science puede llegar a ser extremadamente complejo, pero, curiosamente, son sólo 5 las preguntas básicas a las que tiene que dar respuesta un científico de datos. ¿Y cómo encuentra estas respuestas? El Data Scientist utiliza por un lado datos y por otro, algoritmos. Si tuviéramos que explicarle a un profano en la materia en qué consiste el trabajo de un Data Scientist , podríamos decir consiste en buscar respuestas a las siguientes preguntas: 1. ¿Esto es A o B? 2. ¿Es esto normal o aquí pasa algo raro? 3. ¿Cuánto o cuántos …? 4. ¿Cómo está organizado esto? 5. ¿Y ahora, qué conviene hacer? Para ello utiliza un “libro de cocina” con distintas recetas. Los ingredientes, son los datos. Y las recetas, que nos dicen cómo preparar y combinar esos datos, serían los algoritmos. A cada pregunta se corresponde una familia de algoritmos concreta. Vamos a verlos uno por uno. Figura 1: Las 5 preguntas que responde el Data Science. 1. ¿Esto es A o B? ¿A o B? ¿Si o No?, ¿peras o manzanas?... Para responder a esta pregunta, el Data Scientist utiliza Algoritmos de clasificación. Pueden ser de clase 2, si sólo hay dos respuestas posibles (¿A o B?), o multiclase, en el caso de que haya más de dos respuestas posibles. Figura 2:¿A o B?. Sirve para responder preguntas como éstas: • ¿Fallará esta pieza de maquinaria en los próximos días? • ¿Qué atrae más clientes, un cupón regalo o un % de descuento? • ¿Éste tweet es positivo? • ¿Qué servicio elegirá este cliente A, B o C? Por tanto, permite identificar a qué categoría pertenece nueva información. Un ejemplo de estos algoritmos son los árboles de decisión. Figura 3: Árbol de decisión. 2. ¿Es esto normal o aquí pasa algo raro? La siguiente pregunta a la que puede responder la ciencia de datos es si lo que estamos observando es normal o no. Para responder a esta pregunta, se usa una familia de algoritmos que se llama detección de anomalías. Estos algoritmos identifican y predicen comportamientos que se salen de lo normal. Figura 4: Detección de anomalías. Sirven para responder preguntas de este tipo: • ¿Es normal este cargo de una tarjeta de crédito? (prevención de fraude) • ¿Es normal este mensaje de correo? (prevención de spam) • ¿Es normal esta medición registrada? (prevención de averías) Estos algoritmos generan alertas sobre posibles eventos o comportamientos futuros que nos dan pistas muy útiles para evitar problemas. Por ejemplo, si una entidad financiera detecta un cargo por un volumen muy alto en una tarjeta donde no es habitual que haya este tipo de operaciones, se emite una alerta de posible fraude y se toman acciones para verificar la legitimidad de la operación. También se puede crear una alerta si la operación bancaria se realiza desde una ubicación que no coincide con la del móvil del cliente. Es decir, si el banco detecta que se va a realizar un cargo en Londres y tiene contratado un servicio como Smart Digits de LUCA, que detecta que el móvil del usuario está en Madrid, se genera una alerta para comprobar si se trata de un fraude o no. Figura 5: Anomalía detectada  3. ¿Cuánto o cuántos …? La tercera pregunta a la que nos puede responder la ciencia de datos es ¿Cuánto o Cuántos?. En éste caso, podemos usar Machine Learning para predecir la respuesta mediante la familia de algoritmos de regresión. Estos algoritmos permiten precedir el valor numérico que tendrá una variable, basándose en comportamientos anteriores. Puede responder a preguntas como éstas: • ¿Cuál será el volumen de ventas de este trimestre? • ¿Qué temperatura hará mañana? • ¿Cuál será el consumo eléctrico previsto a la hora del partido? En la siguiente figura, podemos ver un ejemplo de cómo una empresa de coches de alquiler aplicaría un algoritmo de regresión para estimar la demanda sus servicios. Figura 6: Haz click sobre la imagen para ver la infografía original. 4. ¿Cómo está organizado esto? Las dos últimas preguntas son un poco más complejas. A veces, necesitamos comprender la estructura de los datos, saber cómo podrían organizarse. Una de las formas más habituales para sacar a la luz la estructura de los datos es agrupándolos en conjuntos de elementos similares en algún aspecto. Por ejemplo, los clientes de TV por cable pueden agruparse según el tipo de películas que les gustan. También se pueden agrupar según criterios socio-económicos (edad, sexo, nivel de estudios, situación laboral etc.). Por ello, cuando aplicamos técnicas de clustering, no hay una única respuesta correcta, sino varias que nos pueden aportar más o menos información de valor. Son muy útiles para realizar segmentaciones de clientes, predecir sus gustos o determinar un precio de mercado. Figura 7: Ejemplo de clustering. Permiten responder preguntas como éstas: • ¿Qué modelos de impresora tienen la misma avería? • ¿Qué libros debemos recomendar a este cliente? • ¿Qué oferta personalizada debemos hacer a este cliente? Si comprendemos cómo se estructuran los datos, podremos comprender y predecir comportamientos y eventos futuros. 5. ¿Y ahora, qué conviene hacer? Para responder a esta última pregunta se usa la familia de algoritmos de aprendizaje por refuerzo. Se basan en los estudios sobre cómo fomentar el aprendizaje en humanos y ratas basándose en recompensas y castigos.El algoritmo aprende observando el mundo que le rodea. Su información de entrada es el feedback o retroalimentación que obtiene del mundo exterior como respuesta a sus acciones. Por lo tanto, el sistema aprende a base de ensayo-error. Figura 8: “Tekno the Robotic Puppy” by Toyloverz – Own work. Licensed under CC BY-SA 3.0 via Wikimedia Commons Estos algoritmos nos dan respuesta a preguntas que “se puede plantear” un robot o una máquina ,como : • Soy un coche sin conductor y esto es un semáforo en amarillo: ¿acelero o me paro? • Soy un robot aspirador, y me queda un 30% de batería, ¿sigo aspirando o voy a la estación a recargar? En resumen, la ciencia de datos nos puede dar respuesta a estas 5 preguntas básicas. ¿Dónde encaja la tuya? Para mantenerte al día con LUCA visita nuestra
31 de agosto de 2017
AI & Data
Data Storytelling: dale voz a tus datos
Cuando se trabaja con Big Data, se maneja tal cantidad de información que resulta fácil “perderse”. Podemos tener ante nuestros ojos un informe estadístico, o una compleja gráfica que ponga de relieve la necesidad de cambiar nuestros procesos de negocio. Sin embargo, las personas somos muchas veces resistentes al cambio, y cuando se trata de rutinas y procesos que llevan largo tiempo establecidos, vamos a necesitar algo mucho más convincente para cambiar nuestro comportamiento. Y para convencernos, lo mejor es que nos cuenten una historia que de sentido y humanice los datos. El Data Storytelling consiste en comunicar la información (los Insights) o los resultados del análisis que hemos hecho sobre un conjunto de datos por medio de una narración. ¿Y por qué una narración? Porque los humanos somos seres que cuentan historias, que se comunican mediante historias: una película, una narración junto al fuego, una canción, un poema… Porque nos cuesta mucho menos recordar una historia que una estadística, porque nos mueve a la acción, porque cuando escuchamos historias, estamos más abiertos a creer lo que nos quieren transmitir, somos menos escépticos… Como ya han confirmado estudios neurocientíficos, el proceso de toma de decisiones en las personas está íntimamente relacionado con las emociones. Así, las emociones juegan un papel esencial en ayudar a nuestro cerebro a considerar distintas alternativas y tomar una decisión. Hasta el punto de comprobar cómo personas con daño cerebral en el cortex prefrontal (área del cerebro donde se procesan las emociones), tienen grandes dificultades para tomar una decisión básica cuando se presentan varias alternativas. ( ver estudio) Figura 1: "La gente escucha las estadísticas, pero siente las historias" ¿Por dónde empezar? Ya hemos visto que el Data Storytelling es un medio o canal para comunicar de forma más efectiva cualquier contenido que esté basado en datos. Se basa fundamentalmente en la visualización, por ello, muchas veces, también se le llama “ data viz storytelling" y/o “visual storytelling”. Los objetivos del Data Storytelling pueden ser: Transmitir un conocimiento Motivar la reflexión sobre un tema determinado Una llamada a la acción Lo fundamental es que la audiencia sea capaz de comprender y recordar el mensaje que queremos transmitir. Para ello, es muy importante conocer esa audiencia, sus conocimientos y expectativas. De esta forma, podremos adaptar la “data story” a su lenguaje. Por ejemplo, personas con perfiles más técnicos prefieren una información más detallada y granularizada, mientras que personas más enfocadas al negocio, están más interesadas en las implicaciones o consecuencias que puedan tener para el negocio esos Insights que en datos intermedios o procesos concretos. Efectivamente, el perfil de las personas que analizan datos (Data Scientist) es muy distinto del de las que los usan para tomar decisiones de negocio (Big Data Consultant). Pero ambos sólo van a poderse beneficiar de esta información si encuentran una manera de comunicarse. Pasos para preparar un Data Story Para preparar un Data Story hay que hacerse las siguientes preguntas. Figura 2: Preguntas previas para preparar una Data Story. Según sea el Objeto de la historia utilizaremos un enfoque distinto. Hay dos opciones: Enfoque exploratorio. En el momento inicial no hay definidas las preguntas ni hipótesis, sino solamente los datos como base de información. Suele iniciarse con a descripción de las variables. Y la pregunta es ¿Qué podemos encontrar para crear nuestra data story? Enfoque descriptivo. Las preguntas de investigación están definidas desde el principio. La data story es una representación descriptiva de estos resultados. También habrá que plantearse qué Formato va a ser más adecuado según la audiencia. Igualmente, en este caso tenemos dos opciones: Enfoque Expositivo o “Author Driven”, donde el autor conduce a los espectadores mediante texto, observaciones y explicaciones sobre las imágenes. Estos mensajes ayudan a clarificar los elementos visuales pero hay que tener cuidado en no utilizar demasiados elementos. Enfoque Interactivo o “Viewer Driven”, que permite al espectador manipular la visualización usando técnicas tipo: Buttons, Hover Highlighting, Filtering Search, time slides. Una vez tengamos claras las respuestas a estas preguntas, estaremos listos para comenzar nuestra "Data Story". Veamos a continuación por dónde empezar. Fases de una Data Story La estructura de una Data Story es igual que la de cualquier “Story”. Necesitamos crear un escenario, plantear el principio de la historia, desarrollarla, crear tensión (el nudo de la historia), y por último, escribir el desenlace final. Figura 3: Pasos para crear una DataStory. Antes de ponernos manos a la obra hay un par de consideraciones finales que no debemos olvidar. La primera es que debemos asegurarnos de nuestra audiencia entienda bien la historia y pueda interpretar la visualización de forma correcta. Para ello, nos resulta de gran ayuda hacernos las siguientes preguntas: ¿Cuáles son las fuentes de datos?, ¿Cómo evaluamos si son fiables? ¿Quién ha analizado los datos y cuál ha sido la metodología seguida? ¿Cuál es el objetivo del proyecto, transmitir una historia o posibilitar extraer nuevas interpretaciones o encontrar nuevos patrones? Y la segunda es que una visualización no tiene por qué ser siempre bonita y auto-entendible. En ocasiones hay conjuntos de datos y relaciones ente variables que van a requerir visualizaciones complejas. Sin embargo, siempre hay que buscar un visual encoding que ayude a entender la historia, usando determinados colores para captar la atención de la audiencia, distinguir diferentes categorías o identificar objetivos comunes. Como en la consideración anterior, resulta útil plantearse algunas preguntas: ¿Qué aporta cada elemento de la visualización?,¿son realmente necesarios? ¿Cuál es el objetivo principal de la historia?, ¿el visual encoding ayuda a entender y transmitirlo? Una visualización muy bonita que no ayude a entender la historia que queremos contar es una visualización inútil. Por último, y como ejemplo de inspiración para los que queráis empezar vuestra primera data Story, un par de ejemplos. Caídos en la II Guerra Mundial es un documental interactivo que analiza el coste en vidas humanas del conflicto. Se trata de una visualización de 15 minutos que usa técnicas de storytelling cinematográfico para ofrecer a los espectadores una nueva y dramática perspectiva de un momento crítico de la historia. (Para ver la visualización, haced click sobre la imagen o sobre el link del título). Figura 4: Ejemplo de Data Story sobre los Caídos de la II Guerra Mundial. En este segundo ejemplo, donde la autora, Angela Morelli nos muestra la relación entre los alimentos que consumimos a diario y el agua necesaria para producirlos. (Para ver la visualización, haced click sobre la imagen). Figura 5: Ejemplo de Data Story sobre el "agua que comemos". Si quieres mejorar tus habilidades en DataStorytelling, no dejes de leer este otro post de nuestro blog.
24 de agosto de 2017
AI & Data
Cómo mejorar tus habilidades en Data Storytelling (Infografía)
Las historias bien contadas pueden influir en las personas que las leen e incitarles a la acción. Si queremos que los Insights que hemos obtenido se conviertan en "Acciones", es importante saber presentárselos a los responsables de toma de decisiones en la empresa de forma atractiva y convincente. Para ello, el Data Storytelling es una herramienta de gran utilidad. Todas las personas somos capaces de crear historias. Somos seres sociales y el lenguaje es parte de lo que nos hace humanos. Aunque otros animales también pueden comunicarse entre sí, la nuestra es la única especie capaz de articular un lenguaje complejo y registrar los mensajes mediante la escritura. Pero también es cierto que contar historias se les da mejor a unas personas que a otras. Las personas con una mente más técnica, tienden a centrarse demasiado en los detalles. Sin embargo, una buena historia, que llame la atención del que escucha (o lee), que mantenga su interés y le mueva a hacer algo, tiene que sorprender, tiene que conectar con las emociones, y tiene más que ver con no perder de vista "la historia global" (the big picture). Un buen Data Storytelling tiene una estructura muy similar a la de cualquier otra historia, con tres etapas muy definidas, que habrá que "aderezar" con un nivel de detalle suficiente para mantener el interés, pero no tan profuso que nos haga perder la visión de conjunto. En el inicio, planteas la situación de partida, el problema que quieres analizar En la segunda fase, desarrollas las ideas o conceptos planteados, explicando el cómo y el por qué vas por uno u otro camino En el final, cierras la historia haciendo una recapitulación de las conclusiones , ideas, o resultados finales que quieras transmitir En la siguiente infografía podrás encontrar algunos consejos prácticos para mejorar tus habilidades en Storytelling inspirados en un post de Tyler Baers para KDnuggets. Si quieres saber más sobre Storytelling, no te pierdas este otro post de LUCA. Figura 1: Infografía (elaboración propia).
24 de agosto de 2017
AI & Data
Analíticas Big Data, si, ¿pero cuáles?
Las empresas ya son conscientes de que, en el mundo actual, si no aprovechan al máximo el potencial de sus datos, se van a quedar fuera de juego. Saben que los sistemas de inteligencia de negocio tradicionales (BI) se han quedado cortos. Escuchan por todas partes hablar del Big Data, del Data Analytics, de Data Science… Leen informes de consultoras tecnológicas de primer nivel que predicen llamativos crecimientos del volumen de negocio de estas industrias para los próximos años. Han empezado a invertir recursos en almacenar datos. Pero, llegados a este punto, no saben cómo empezar a sacar partido de toda esta información. Como ya imaginaréis por el título, en este post vamos a hablar de los distintos tipos de analíticas que existen (Big Data Analytics), en qué consisten, cuán extendido está su uso en el mercado y cómo las están usando las empresas más innovadoras hoy en día. Toda esta información nos dará una pista sobre cuál es la que puede encajar mejor para un negocio concreto. Lo primero que tiene que hacer es decidir qué tipo de analítica necesita tu negocio. Esto no es una cuestión baladí, porque no hay unas “analíticas universales” que sirvan para todos los casos. Tradicionalmente, se trabajaba con herramientas de análisis que operaban de forma reactiva. Herramientas que permitían generar informes o visualizaciones sobre “lo que ha sucedido en el pasado”, pero que no daban ninguna pista sobre posibles oportunidades de negocio o problemas que pudieran surgir en el futuro. Por ello se puso de manifiesto la necesidad de evolucionar, en los procesos de análisis, de unas Analíticas Descriptivas hacia unas Analíticas Predictivas. De unas analíticas lineales, en un entorno controlado hacia unas aplicadas a un mucho menos estructurado entorno real: Data Science Analytics. Esta necesidad es tan latente, que la consultora tecnológica IDC estima una tasa de crecimiento anual (CAGR) de un 26,4% para la industria de Big Data y Analíticas avanzas a finales de 2018. En este artículo vamos a explorar los distintos tipos de analíticas (Descriptiva, Predictiva y Prescriptiva) para conocer qué puede aportar cada una de ellas a la mejora de las capacidades operacionales de una empresa. 1 Analíticas Descriptivas (Descriptive Analytics) Es la analítica más básica, y todavía hoy, es la usada por el 90% de las empresas. Este tipo de analítica responde a la pregunta ¿Qué ha pasado? Analiza datos históricos y datos recogidos en tiempo real para generar Insights sobre cómo han funcionado estrategias de negocio en el pasado, por ejemplo, una campaña de marketing. Objetivo: Identificar las causas que motivaron un éxito o fracaso en el pasado para comprender cómo pueden afectar al futuro Se basan en: Funciones agregadas estándar de las bases de datos. Requieren un nivel matemático básico. Ejemplos: Este tipo de métricas se usan para social analytics y son el resultado de operaciones aritméticas básicas (tiempo promedio de respuesta, porcentaje de vistas de página etc). Número de seguidores Likes Posts Fans… Aplicación: Usar las herramientas de Google Analytics para analizar si una campaña promocional ha funcionado bien o no, usando parámetros básicos como el número de visitas de una página.Se suelen visualizar con Dashboards o monitores para datos en tiempo real, o emisión de informes por email. Analíticas predictivas (Predictive Analytics) Es el siguiente paso en la reducción de datos y, según Gartner, es usada por un 13% de las organizaciones. Este tipo de analítica responde a la pregunta ¿Qué puede pasar en el futuro según si nos basamos en lo que ha pasado antes? Analiza las tendencias y modelos de datos pasados para intentar predecir cómo van a evolucionar en el futuro. Por ejemplo, una empresa puede predecir el crecimiento del negocio extrapolando el comportamiento en el pasado y asumiendo que no haya cambios relevantes en el entorno. La analítica predictiva facilita mejores recomendaciones y respuestas a preguntas a las que no puede atender el BI. Objetivo: Identificar las causas que motivaron un éxito o fracaso en el pasado para comprender cómo pueden afectar al futuro. Puede ser muy útil para establecer objetivos de negocio realistas, planificar de forma más efectiva o acotar expectativas de forma razonable. Se basan en: Utilizan diferentes algoritmos estadísticos y de machine Learning para predecir la probabilidad de un resultado futuro. Los datos que alimentan los algoritmos, proceden de CRMs, ERPs o sistemas de recursos humanos. Éstos algoritmos son capaces de identificar relaciones entre distintas variables del dataset. También son capaces de rellenar las lagunas de información con las mejores predicciones posibles. Pero no por ser “las mejores posibles”, dejan de ser predicciones. Ejemplos: Se suele usar para Análisis de Emociones (Sentiment Analysis). Los datos de entrada del modelo de aprendizaje tienen formato de texto plano. A partir de ellos, el modelo asigna un valor en una escala que indica si la emoción es positiva, negativa o neutra. Aplicación: En entornos financieros para asignar a los clientes un “credit score”, o valor que predice la probabilidad de que ese cliente pague sus facturas puntualmente. También lo usan las grandes empresas de retail para identificar patrones de compra en los clientes, hacer predicciones de inventario o de los productos que suelen comprarse juntos (para ofrecer recomendaciones personalizadas) etc.Las analíticas predictivas se pueden clasificar en: Figura 2: Tipos de analíticas predictivas (producción propia). 3 Analíticas Prescriptivas (Prescriptive Analytics) Este tipo de analíticas va todavía un paso más allá, ya que pretenden influir sobre el futuro. Por ello se las conoce como “la última frontera de las capacidades analíticas”. Las analíticas predictivas especifican qué acciones debemos emprender para lograr determinados objetivos. Las prescriptivas indican esto mismo, pero añaden los posibles efectos interrelacionados de cada opción. Buscan una respuesta a la pregunta: “¿Qué debería hacer el negocio?” Su complejidad hace que, a pesar de lo valiosas que pueden ser este tipo de analíticas para el negocio, no sean muy utilizadas. Según Gartner, sólo un 3% de las organizaciones las utilizan. Figura 3: las tres fases de la analítica (fuente). Objetivos: Las analíticas prescriptivas no solo anticipan qué va a pasar y cuando, sino que también nos van a decir el ¿Por qué? Más aun, nos van a sugerir qué decisiones debemos tomar para sacar partido a una oportunidad de negocio futuro, o mitigar un posible riesgo, mostrando la implicación de cada opción sobre el resultado. Se basan en: Se basan en la ingesta de datos híbridos, estructurados (números, categorías) y no estructurados (vídeos, imágenes, sonidos, textos). Estos datos pueden proceder de fuentes internas a la organización, o bien externas (como las redes sociales). Sobre estos datos se aplican modelos matemáticos estadísticos, de machine Learning, o de procesamiento de lenguaje natural. También se aplican las normas, leyes, buenas prácticas y regulaciones del negocio de que se trate.Estos modelos puedan seguir recogiendo datos para seguir adelante con las predicciones y prescripciones, De esta forma, las predicciones son cada vez más precisas y pueden prescribir mejores decisiones de negocio Ejemplos: Se usa software de análisis prescriptivo en los procesos de toma de decisiones relacionadas con la exploración y producción de petróleo y gas natural. Se captura una gran cantidad de datos, se crean modelos e imágenes sobre la estructura de la Tierra, se describen las distintas características del proceso (rendimiento de la maquinaria, flujo del crudo, temperatura y presión del reservorio etc.). Estas técnicas se usan para decidir dónde y cuándo conviene perforar y así construir los pozos minimizando costes y reduciendo al máximo la huella medioambiental Aplicación: Además de la industria petrolífera, se usan mucho en; Proveedores de servicios de salud; Para planificar de forma más eficaz futuras inversiones en equipamientos, instalaciones etc. basados en datos económicos, demográficos, de salud pública etc. Obtener mejores resultados en las encuestas de satisfacción de pacientes, evitar el abandonado (churn) de pacientes Identificar los modelos de intervención más adecuados según grupos de población específicos Empresas farmacéuticas: para localizar qué pacientes son más adecuados para participar en un ensayo clínico NO tenemos una bola de cristal que nos dicte lo números que van a salir en la lotería, pero está claro que las tecnologías Big Data sacan a la luz los problemas existentes en nuestro negocio, nos ayudan a comprender por qué ocurren. Así, podremos transformar los datos en acciones inteligentes y reinventar los procesos de negocio. Figura 4: Del dato a la acción. Pasaremos del “¿Qué ha pasado?” a entender ¿Por qué ha sucedido?”, predecir “¿Qué va a pasar?” y prescribir “¿Qué debo hacer ahora?”. Entonces, podremos crear una empresa inteligente.
10 de agosto de 2017
AI & Data
Dato o Data... ¿Tienen género los datos?
Ya conocemos el enorme potencial de aplicar herramientas de Big Data en distintos campos de nuestra vida, siendo, uno de ellos el Desarrollo Sostenible y la Acción Humanitaria. Sin embargo, las acciones y políticas que se emprendan basadas en Insights extraídos de esta información presentan un sesgo muy claro que impide que lleguen a uno de los grupos más vulnerables. Nos referimos al sesgo de género, especialmente en países donde culturalmente no se reconocen los derechos de las mujeres y las niñas. Si no se las considera individuos con derechos, no se registran datos sobre ellas o sobre los problemas que les afectan. Por ello, la desigualdad en los datos es un nuevo factor de desigualdad contra el que hay que luchar. Afortunadamente, hay importantes iniciativas que van en esta dirección. Vamos a ver cuáles son. Posts de Twitter, compras con tarjetas de crédito, llamadas telefónicas, datos de satélites… Todos estos datos pueden ser captados, almacenados, procesados y analizados para generar Insights que permitan a los gobiernos o a las organizaciones no gubernamentales definir políticas y estrategias que mejoren la calidad de vida de las personas. Figura 1: "Good Data helps make good decisions". Sin embargo, muchas veces estos datos son incompletos o responden a prejuicios que nos ofrecen una visión distorsionada de la realidad. Por ejemplo, en países donde existe discriminación hacia las mujeres, no se considera necesario recopilar datos sobre aspectos tan importantes como: Mortalidad materna Salud de las adolescentes Exclusión del sistema educativo Resultados de aprendizaje Propiedad de activos por parte de mujeres Acceso a teléfonos móviles e Internet Registro de votantes etc. El análisis de estos datos incompletos o sesgados puede llevar a conclusiones inexactas que, por ejemplo hacen que las mujeres parezcan más dependientes y menos productivas de lo que son. Otras veces, el sesgo de los datos se debe a otras causas, como ocurre con la “brecha digital”. Aunque no es un sesgo exclusivo de género, es habitual que las mujeres tengan un menor acceso a teléfonos móviles e internet, sobre todo en zonas rurales. Por ello es fundamental trabajar con conjuntos de datos complementarios. Así, para identificar a los grupos de población que no tienen acceso a herramientas digitales se recurrirá a herramientas tradicionales, como los sondeos clásicos sobre el terreno. Figura 2: "We need the complete Data Picture".  La buena noticia es que una corriente global promueve más y mejores datos sobre mujeres para avanzar en los Objetivos de Desarrollo Sostenible (ODS). Veamos en qué consiste.  ¿Tienen género los datos? Pues, va a ser que sí. Si analizamos los datos estadísticos, junto con los obtenidos por las nuevas fuentes de datos desglosadas por sexo, podemos ver que: Figura 3: ¿Qué indican los datos desglosados por sexo o datos de género? Por ello, organizaciones internacionales como la ONU y el Banco Mundial y entidades como la Fundación ONU se han puesto al frente de un movimiento global para promover más y mejores datos sobre la vida de las mujeres, con el objetivo de fundar políticas más eficaces para avanzar en la igualdad de género y en los Objetivos de Desarrollo Sostenibles (ODS) de la ONU hasta 2030. “Medimos lo que valoramos y valoramos lo que medimos. Comprendiendo las necesidades de las mujeres, podemos trabajar juntos para asegurar que —en el espíritu de los Objetivos Desarrollo Sostenible— no se las deja atrás”. ¿Qué pasos se han dado? El I Foro Mundial de Datos ONU celebrado entre este 15 y 18 de enero en Cape Town (Sudáfrica) ha reunido por primera vez a más de 1.000 profesionales de diversos ámbitos —sectores público, privado, académico y de organizaciones sociales— en torno al uso de datos para los ODS. Entre los participantes, Data2X es una organización no gubernamental creada por iniciativa de la Fundación ONU, con el apoyo de las Fundaciones William and Flora Hewlett y Bill & Melinda Gates. Trabaja con agencias de la ONU, gobiernos, sociedad civil, académicos y el sector privado para mejorar la calidad, disponibilidad y uso de datos de género, y así rellenar esas lagunas de información sobre mujeres y niñas, que repercuten negativamente en la toma de decisiones y estrategias que afectan a su bienestar y calidad de vida. Su directora ejecutiva Emily Courey Pryor, afirma que los Objetivos de Desarrollo Sostenible (ODS) suponen una oportunidad sin precedentes para: Figura 4: Oportunidades que brindan los ODS. Una de las aportaciones más interesantes de este primer foro ha sido tener la oportunidad de debatir la cuestión de los datos de género, no sólo entre los especialistas de género, sino también entre los profesionales de la estadística y ciencia de datos. Personas ricas y personas pobres en información También se está produciendo, según alerta en un informe el Grupo Asesor de la ONU sobre revolución de datos, una nueva brecha social entre los que tienen datos y los que no los tienen, que divide a las personas en “ricas o pobres en información”. Las barreras que generan esta nueva exclusión son “viejas conocidas”: Barreras lingüísticas, Pobreza, Falta de educación o de infraestructura tecnológica, Aislamiento Discriminación Y, al igual que cuando hemos hablado de la “brecha digital” no afecta exclusivamente a las mujeres y niñas, este grupo es uno de los que salen peor parados dentro de los “nuevos excluidos”. ¿Qué propone Data2X? Data2X considera que es fundamental disponer de más y mejores datos desagregados por género, edad y otros atributos para poder lograr la plena inclusión y monitorizar sus avances. No olvidemos que el principio fundamental de la Agenda 2030 para el desarrollo sostenible de Naciones Unidas es “No dejar a nadie atrás”. Por ello, los objetivos de la agenda están descritos por indicadores muy comprometidos en expandir los esfuerzos de monitorización a nivel global de aquellos grupos previamente excluidos o infrarrepresentados, como son las mujeres y las niñas. Figura 5: Objetivos para el Desarrollo Sostenible (ODS ). Como herramienta básica de actuación, Data2X ha analizado estos objetivos y ha identificado las áreas en las que la carencia de datos de género o su baja calidad suponían un mayor obstáculo para su consecución ( Gender Data Gaps). En concreto, las áreas de: Salud Educación Oportunidades económicas Participación política Seguridad En la Figura 5 podemos ver cuáles son estas "lagunas de información" (pulsando el enlace que aparece en la leyenda se puede ver la imagen ampliada). Figura 6: Carencias detectadas en datos de género ´ Gender Data Gaps  Sobre éstas áreas, y, en colaboración con Open Data Watch, Data2X ha definido 16 indicadores que se pueden empezar a medir de forma inmediata en la mayoría de países y con un bajo coste. Sus definiciones han sido acordadas por los distintos países teniendo en cuenta la disponibilidad de instrumentos/procedimientos para su medida, asegurándose de que estén libres de sesgos de género y siguiendo las recomendaciones de las principales agencias humanitarias y estadísticas. La Figura 6 representa un ejemplo de estos indicadores para los objetivos relacionados con el fin de la pobreza y el hambre y con el de vivir en una sociedad más justa y pacífica. El listado con los 16 indicadores se puede consultar en la página web de Data2X.  Figura 7: Objetivos relacionados con el fin de la pobreza y el hambre. Sumados a los datos complementarios ya existentes para medir el progreso de los ODS, estos indicadores van a permitir la promoción y puesta en práctica de políticas más inclusivas, a la vez que ofrecen a los ciudadanos información que les permite supervisar la actuación de sus gobernantes. Llamamiento a la acción Para avanzar en la inclusión de las mujeres en todos las esferas de la vida económica y social, Data2X hace cuatro llamamientos a la acción. Figura 8: Llamamiento a la acción por parte de DataX2. Primeros resultados Data2X no se ha conformado con analizar dónde están las principales carencias de datos sobre mujeres y indicadores que ayuden a rellenar esas lagunas de información, y hacer un llamamiento a la acción. También se ha puesto manos a la obre y ha desarrollado proyectos pioneros que aplican las tecnologías de Big Data a esta labor de “rellenar estos huecos” y definir políticas que ayuden a mitigar la desigualdad de género global. En cada uno de los proyectos, se trabaja sobre una fuente de datos diferente: Procedentes de redes sociales, De telefonía móvil y movimientos en tarjetas de crédito Recogidos por un satélite. En uno de los proyectos, en colaboración con la Universidad Georgia Tech, se puede ver cómo los datos procedentes de redes sociales actúan como un preciso barómetro de salud mental, permitiendo medir niveles de ansiedad y depresión que afectan de forma significativa a la calidad de vida de las adolescentes. En un segundo proyecto, en este caso en colaboración con el MIT, se trabaja sobre los datos registrados sobre teléfonos móviles y movimientos en tarjetas de crédito. Estos datos ofrecen información sobre prioridades de gasto, estatus social, hábitos de consumo y movilidad. Al igual que en el estudio anterior basado en redes sociales, surgen desafíos relacionados con el respecto a la privacidad, y se hace necesario contrastar estos datos con otros tipos de información complementarios que pongan de relieve posibles sesgos relacionados con la capacidad económica, competencia digital u otras dificultades de acceso al entorno digital. En el tercer ejemplo, se utilizan imágenes por satélite no sólo para cartografiar accidentes naturales, sino también para medir la desigualdad de género. Este proyecto, en colaboración con la Fundación Flowmider correlaciona variables geoespaciales (como la distancia a una carretera) con otros indicadores de bienestar (como nivel educativo) que permiten extraer patrones que reflejan fenómenos sociales y relacionados con la salud que muchas veces estaban enmascarados por promedios a nivel local o de país. La Figura 8 representa, precisamente un ejemplo de la correlación entre factores geográficos y el indicador relacionado con la baja estatura ("stunting rate") en niñas menores de 5 años, respecto a de los niños en esa misma franja de edad en Nigeria. Imagen 9: Diferencia en el Indicador de baja estatura de niños respecto a las niñas. Podemos ver los casos concretos con mayor detalle en su informe Big Data and the Well-Being of Women and Girls. Challenge Para aunar fuerzas en esta dirección, Data2X ha convocado a Big Data for Gender Challenge. Este tipo de convocatoria es habitual en el mundo del Big Data. Al ser de carácter abierto, investigadores de distintos orígenes, formaciones, y experiencias aportan una gran diversidad de enfoques y estrategias que resultan muy enriquecedoras. En este desafío los objetivos de los participantes son: Usar una combinación de fuentes de datos convencionales y digitales para poder realizar investigaciones sobre determinados aspectos de la vida de las personas desde una perspectiva de género O bien: Enviar propuestas para la creación de herramientas que permitan monitorizar de forma viable el bienestar de mujeres y niñas a lo largo del tiempo Si quieres aportar tu granito de arena para contribuir a la igualdad de género a través de la igualdad de datos… ¡participa!
11 de julio de 2017
AI & Data
Tus datos más limpios (III y fin): Probando Trifacta Wrangler
En éste tercer y último post de la serie sobre Datacleaning vamos a ver la diferencia entre trabajar con una herramienta más generalista, como es Excel a hacerlo con una especializada y de uso libre. Para este ejemplo hemos escogido la herramienta Trifacta Wrangler, una de las más reconocidas en el campo de depuración de datos. Vamos a trabajar sobre un informe Excel sobre los comerciales de una empresa. Tiene este aspecto: Figura 1: Datos de trabajo en formato Excel Trifacta Wrangler es una aplicación que, como es habitual, tiene una opción gratuita y otras de pago (Wrangler Edge y Wrangler Enterprise). Para poder utilizarla, debemos descargarla y registrarnos. En el siguiente vídeo vamos a ver cómo usar esta aplicación para depurar el dataset de ejemplo. Conclusiones: La tarea de depuración de datos es una de las que más tiempo ocupa a los Data Scientist. Es una tarea que se puede realizar sin necesidad de tener conocimientos de programación, tanto con herramientas generalistas, como Excel, como con herramientas más especializadas. En nuestro caso, hemos analizado un ejemplo con Trifacta Wrangler. Lo que está claro es que la tarea será más o menos eficiente, según la herramienta que elijamos. En el caso del Excel, es sencilla porque se trata de una aplicación muy popular. Por tanto, la curva de aprendizaje es muy cómoda, y es fácil encontrar innumerables recursos de ayuda. Sin embargo, resulta algo tediosa y no es reproducible/exportable a otros casos. (O si lo es, es a base de crear macros más o menos complejas que requieren un nivel de conocimientos de Excel bastante profundo.) Trifacta Wrangler no es tan intuitivo, y para datasets pequeños o muy diferentes entre sí, a primera vista no parece aportar grandes ventajas. Sin embargo, su potencia está en la generación de “scritps” o “recetas” que permiten aplicarlo en un solo paso a otros conjuntos de datos similares. Es decir, se trata de una solución “exportable”. También es fácil encontrar tutoriales e información sobre la herramienta, pero, por supuesto, en mucha menor medida que sobre Excel. Por si acaso te perdiste los primeros post de esta serie, aquí tienes los enlace: Tus datos más limpios, casi sin frotar, Tus datos más limpios (II): Excel Waterproof.
29 de junio de 2017
AI & Data
Tus datos más limpios...(II). Excel, "Waterproof"
Como ya anunciamos en el post anterior , en este segundo vamos a trabajar sobre un ejemplo práctico. Aunque hay muchas herramientas especializadas en Data Cleansing que pueden ser más eficientes, hemos elegido empezar por Excel porque es una herramienta muy sencilla, accesible y para la que hay multitud de recursos de ayuda. Al mismo tiempo, es una herramienta muy potente. Por tanto, es una excelente elección para aquellos que se inician en este campo. Cuando trabajamos con tantos datos, es fundamental trabajar de forma sistemática y ordenada. Aunque a primera vista parezca que esto nos puede ralentizar, a la larga veremos que sale a cuenta. Por ello, crearemos una hoja de Excel para cada paso lógico, y la etiquetaremos. Datos originales Datos de trabajo Datos limpios Nuestro objetivo es mantener los datos significativos y eliminar todo aquello que dificulte su análisis o afecte a la calidad de los resultados estadísticos que obtengamos. ¿Qué tipo de cosas queremos eliminar? Registros duplicados Caracteres extraños Valores fuera de rango También nos puede interesar realizar acciones como: Sustituir caracteres, por ejemplo, ‘Madrid’ y ‘MAD’ Seleccionar partes del contenido de una celda, por ejemplo, el código de área de un número de teléfono como 001 (206) 123 4567 Combinar celdas, por ejemplo, si los campos “nombre” y “apellidos” están en dos columnas separadas Distribuir el contenido de una celda en diferentes columnas (operación inversa a la anterior) Vamos a trabajar sobre un dataset de ejemplo procedente del archivo de datos abiertos del Gobierno de Canarias. Este conjunto de datos describe la observación de cetáceos por parte de empresas autorizadas en las costas de las islas. Dado que los datos son recogidos sobre el terreno por empresas muy diversas, podemos encontrar varias de las situaciones que hemos comentado. Es un excelente ejemplo para limpieza de datos. Así que, ¡vamos a ello!. Figura 1: Portal de datos abiertos del Gobierno de Canarias. Nos descargamos los datos del siguiente enlace. Creamos una “Hoja Nueva”, seleccionando el signo + al que apunta la flecha, y la llamamos “Datos de Trabajo. Sobre ella copiamos los datos originales:   Figura 2: Añadir hoja nueva. #0 Lo ponemos “bonito”. Cabeceras más visibles con función MAYÚSCULA Empecemos por el más fácil: Ponemos otro color de fondo que nos permita ver mejor las cabeceras y…empezamos a limpiar. Seleccionamos la fila con los títulos, y, elegimos la opción “Insertar” fila del menú contextual (Botón derecho). Una vez agregada esta fila, vamos a poner los títulos en mayúsculas con la función MAYUSC. Para ello, en la celda vacía escribimos “+” y seleccionamos la función que nos interesa del combo box. Aparecerán las más frecuentes, pero si no está entre ellas, podemos buscarla seleccionando “Más funciones” al final de la lista. En este caso, se trata de una función de texto. Figura 3: Ejemplo de aplicación de la función MAYUSCULAS. Una vez damos a “Aceptar”, podemos extender la fórmula por el resto de la fila. Cambiamos el color de relleno al que más nos guste y ocultamos la fila inicial, seleccionando la opción “Ocultar” en el menú contextual, para tener una vista más clara. Figura 4: Resultado del cambio a mayúsculas y cambio de color.  Ahora que lo vemos un poco mejor, vamos a empezar a corregir cosas. #1 Buscar y Reemplazar. Es una de las funciones más conocidas y sencillas de aplicar. Nos permite encontrar determinada palabra y sustituirla por otra. Dentro de las opciones del menú Inicio, seleccionamos “Buscar/ Reemplazar”. Figura 5: Aplicar Función REEMPLAZAR. Como atributos, seleccionamos: Buscar “Mog n”, Reemplazar “Mogan”. Marcamos la opción “Reemplazar todos” y así corrige todos los casos en la columna seleccionada. Esta función también es útil para rellenar campos vacíos, o para sustituir caracteres incorrectos. Por ejemplo, vamos a corregir algunos caracteres que aparecen de forma errónea debido a los acentos: “¢” por “o”, “Tel‚fonos” por “Teléfonos” También podemos usar esta función para rellenar campos vacíos. En este ejemplo, podemos rellenar los campos “Municipio” que están vacíos con una etiqueta “No registrado”. En las opciones de sustitución hemos elegido un formato diferente (color rojo y cursiva) para detectarlos mejor. Como resultado, obtenemos esto: Figura 6: Resultado de reemplazar con un formato diferente. #2 Combinar/Separar texto. La función “COMBINAR” es muy útil cuando, por ejemplo, los datos de “nombre” y “apellidos” aparecen en distintas columnas y nos interesa unirlas. En este caso tenemos la situación opuesta. Los campos “Dirección Postal” y “Teléfonos e Internet” contienen información demasiado mezclada. Vamos a separarlos. Vemos que, en principio, los campos están separados por “;”. El problema es que en unas celdas están todos los campos, y en otras no. También, cuando hay varios números de teléfono, en algunos casos están separados por “,”, y en otros por “-“. Vamos a cambiar estos guiones por comas para que estén todos igual. Después, separaremos la columna de los teléfonos. Dentro del menú “Datos”, seleccionamos la opción “Texto en Columnas”. Le diremos al asistente que son delimitados por “;” y “C” para separar los teléfonos del resto de datos. Figura 8: Ejemplo de separar texto en columnas. Quitamos la etiqueta “Teléfonos” (con Reemplazar “Teléfono” por un espacio en blanco). Nos queda algo así:  Figura 9: Resultado de aplicar "texto en columnas". Imaginemos ahora que sólo nos interesa conservar uno de los teléfonos. (Sí de acuerdo, no tiene mucho sentido eliminar información, pero este supuesto nos viene muy bien para explicar cómo se aplicaría la siguiente función. Así que lo tomaremos como “Licencia artística”). #3 Funciones IZQUIERDA/DERECHA Estas fórmulas nos van a permitir elegir con qué parte concreta del contenido de una celda queremos quedarnos. Por ejemplo, en la columna “Teléfonos” podemos decidir quedarnos únicamente con los primeros 9 caracteres. Insertamos una nueva columna a la derecha de la columna “Teléfonos”, en la primera celda escribimos el signo “+” y seleccionamos la última opción de la lista de funciones “Más funciones”. En el cuadro “Insertar Función”, seleccionamos la categoría “Funciones de Texto”, y dentro de ella, la función “ IZQUIERDA”. Como parámetros, tenemos que dar el texto de la celda (simplemente seleccionándola) y el número de caracteres que queremos elegir empezando por la izquierda, en este caso, 11 (por los caracteres en blanco). Figura 10: Ejemplo de aplicación de la función IZQUIERDA. De esta forma, nos quedamos con un único número de teléfono para cada registro. Igual que hemos seleccionados los números empezando a contar caracteres por la izquierda, la función DERECHA nos permite hacerlo empezando a contar por el final. Figura 11: Resultado. Y ya que hemos separado un campo que puede ser bastante identificativo, ¿qué tal si intentamos localizar datos duplicados?, una de las problemáticas más habituales que podemos encontrar en un dataset. #4 Eliminar duplicados Es frecuente encontrarse con registros repetidos, que conviene identificar y, en ocasiones, eliminar. Vamos a ver cómo detectarlos con la función Lógica “SI”. Añadimos una nueva columna a la derecha de la columna Teléfonos. Vamos introducir en la primera celda una función lógica que compare cada valor con el de la celda superior. Como antes, añadimos en la primera celda el signo “+” para agregar una función y seleccionamos la función lógica “SI”. El argumento de la prueba lógica es la comparación entre el valor de las dos celdas (en este caso J2=J3). Si son iguales se cumplirá la condición “Valor_si_verdadero” y aparecerá una etiqueta “Duplicado”. Si no, lo dejará en blanco. Figura 12: Ejemplo de aplicación de la función lógica SI. Extendemos la aplicación de la fórmula al resto de la columna (arrastrando hacia abajo) y ¡ya está! Hemos detectado varios registros en los que los teléfonos coinciden, aunque los nombres comerciales registrados no. Puede ser interesante investigar un poco más detalladamente para saber si son los mismos propietarios, si están en activo ambas licencias etc. Figura 13: Valores duplicados detectados. Recordamos que, al separar los teléfonos, nos quedaron algunos datos de faxes en esa columna, y otra con un batiburrillo de email, fax y página web. Vamos a intentar organizar estos datos. Como los datos de correo ya están bien separados, podemos eliminar el resto de etiqueta “orreos”. #5 Función CONCATENAR Observamos que los valores de Fax y Páginas web están distribuidos entre las columnas I, K y L. Figura 14: Los datos están distribuidos desordenadamente entre distintas columnas. Para organizarlos, tendremos que juntarlos todos en una misma columna (usando la función CONCATENAR). Como siempre, añadimos una nueva columna (M), introducimos en la primera celda una función de texto CONCATENAR, seleccionamos como argumentos los valores I2, K2 y L2, y aplicamos el resultado de la fórmula al resto de la columna. Obtenemos el siguiente resultado: Figura 15: Agrupamos todos los datos en una única columna con la función CONCATENAR.  Ahora, tenemos que volver a separarlos en columnas independientes seleccionando el separador más adecuado. Quitamos las etiquetas “Faxes”, que ya no nos hacen falta (Usando la función REEMPLAZAR que hemos visto anteriormente). Usaremos esta misma función para convertir la etiqueta “P ginas web” en un separador “*” que nos permita separar los datos relativos a los números de fax de las URLs de las páginas web. Figura 16: Convertimos la etiqueta Página web en un separador "*". Y copiamos la columna resultante y la pegamos como “Pegado Especial: valores” en una columna nueva. De esta forma, podemos aplicar nuevamente la función “Texto en columnas”, usando como separador el carácter “*”. Ya tenemos separados los número de Fax y las URL. Ocultamos las columnas que no nos interesan, ponemos los títulos correctos y, ya sólo nos queda un pequeño detalle. #6 ESPACIOS Por último, observamos que la columna “Faxes” los números están muy descolocados. Figura 17: Datos separados, pero con espacios blancos sobrantes. Usaremos la función ESPACIOS para eliminar los espacios en blanco sobrantes. Figura 18: Ejemplo de la función ESPACIOS para eliminar espacios en blanco sobrantes. Et voilá, ya está listo. Guardamos los datos finales, con todos los detalles ya corregidos en la Hoja Final y cerramos el proceso de limpieza. Los datos limpios pueden ya procesarse con los otros conjuntos de datos procedentes de otras fuentes y ser incorporados al paquete estadístico. ¿Entendéis ahora por qué la mayor parte del tiempo de trabajo de un Data Scientist se van en preparar bien los datos? Hacerlo con Excel no es complicado, pero puede resultar un poco tedioso y repetitivo. Por eso las herramientas que agilicen estos procesos serán más que bienvenidas. Por si acaso te perdiste el primer post de esta serie, aquí tienes el enlace: Tus datos más limpios, casi sin frotar.
20 de junio de 2017
AI & Data
Tus datos más limpios, casi sin frotar
Hasta en la profesión más sexy del siglo XXI se tienen que realizar tareas “poco gratas”, como limpiar los datos. Sin embargo, la recogida, limpieza y transformación de los datos puede llegar a consumir hasta un 80% del tiempo del Data Scientist. Para obtener Insights “brillantes”, debemos alimentar los algoritmos con datos que cumplan unos mínimos de calidad. Y no siempre es fácil definir esos “mínimos”. En este post, vamos a analizar las posibles fuentes de error de los datos, cómo evaluar su calidad, identificar los tipos de errores más habituales y en qué consiste el proceso de “Data Cleansing”. En el siguiente post, nos pondremos manos a la obra con un ejemplo I. Data Cleansing, una tarea poco grata, pero necesaria Las empresas llevan años invirtiendo en almacenar datos. Es una tarea que absorbe muchos recursos (inversión, tiempo, humanos), pero está plenamente justificada, ya que les permite tomar las decisiones más adecuadas.¿Y por qué son más adecuadas estas decisiones? Porque en una empresa “Data Driven”, éstas no se basan únicamente en la experiencia o intuición de sus profesionales, sino también en los valiosos Insights extraídos de sus datos de negocio. El análisis predictivo utiliza algoritmos de Machine Learning que “aprenden” de estos datos, tanto los históricos como los que se van generando al momento. Pero los algoritmos no pueden discriminar si los datos con los que los alimentamos son buenos o malos. Y si estos datos no son de calidad, no están bien seleccionados, limpios y transformados, las predicciones o Insights que obtengamos tampoco lo serán, por muy bueno que sea el algoritmo que utilicemos. Definir exactamente qué es un dato de calidad no es tarea fácil. Pero vamos a abordarla intentando comprender de dónde proceden los errores, cómo clasificarlos y qué estrategias debemos plantearnos para reducirlos y/o eliminarlos. ¿Qué factores afectan a la calidad de los datos?¿De dónde vienen los errores? Para entenderlo mejor, podemos analizarlos desde la perspectiva de las “5 Vs del Big Data”: Volumen, Velocidad, Variedad, Veracidad y Valor. Figura 2: Las 5 Vs del Big Data. Las 5 V´s del Big Data Volumen Los procesos de control de calidad y monitorización que se realizaban en un entorno tradicional de Data Warehouse ya no son viables. Hay que definir nuevas métricas de calidad, dejar de trabajar con valores absolutos, para pasar a hacerlo con aproximaciones e intervalos de confianza. Velocidad No es solo la gran velocidad a la que se generan los datos, sino también los nuevos escenarios que necesitan información en tiempo real o de forma casi inmediata. Si los procesos de depuración de los datos no son los adecuados, para cuando se ha verificado su calidad, estos datos han perdido su valor para el negocio. En ocasiones, en vez de trabajar con el dataset completo, se recurre a trabajar con una parte de éste (sample), e incrementar así la velocidad. No obstante, este incremento de velocidad se consigue a costa de sesgar la información. Variedad La información procede de distintas fuentes y su estructura puede ser mucha, poca o directamente ninguna. Por ello, es imposible poder aplicar una misma métrica de calidad a todos ellos. Por ejemplo, podemos tener datos procedentes de: Bases de datos SQL (o noSQL), propias o de terceros Datos del CRM de la empresa Hojas de cálculo Redes sociales Programas de facturación empresarial Informes de transacciones bancarias Datos en la cabeza de alguien Ésta gran variedad de se traduce frecuentemente en grandes diferencias semánticas (campos con nombre idénticos pero significados muy diferentes, según el departamento), o inconsistencias sintácticas (por ejemplo sellos temporales inútiles por no ir acompañados de información sobre la zona horaria de captura etc). Las primeras, se pueden reducir considerablemente si disponemos de los metadatos adecuados de las distintas fuentes. Para las segundas, habrá que esperar a la fase de Data Engineering, donde se seleccionan los campos útiles para las predicciones y se descartan los que aportan ruido. Por ejemplo, los campos con valores aleatorios, o campos dependientes etc. Veracidad La veracidad de los datos tiene que ver con los posibles sesgos en la información, el ruido, y los datos anormales. Además de una posible falta de precision, los datos pueden ser poco consistentes o poco fiables (según su origen, proceso de captura de la información, procesado, infraestructura de seguridad etc.). La causa de este problema radica en que, normalmente, los proveedores de datos y los usuarios de éstos pertenecen a distintas organizaciones, con distintos objetivos y diferentes procesos operacionales. Muchas veces los proveedores de datos no tienen la menor idea de para qué los usan sus clientes. Esta desconexión entre las fuentes de la información y los usuarios finales de ésta es la causa principal de los problemas de calidad de los datos desde la perspectiva de la Veracidad Valor El “Valor” del dato es mucho más tangible. Las empresas usan los datos con distintos fines, y el hecho de que se consigan o no estos objetivos nos permite “medir” su calidad, y definir estrategias para mejorarla. Según una vieja definición, un dato es de calidad si está “listo para usar” o“fitness of use” es decir, el dato es bueno si me sirve para lo que yo quiero hacer con él. Es, por tanto, un concepto relativo. La “V” de Valor trae a colación la perspectiva ”coste-beneficio” de la calidad de los datos. Valorar qué problemas de calidad de los datos merece la pena resolver, cuáles son prioritarios etc. ¿Cómo sabemos si nuestros datos son “buenos”? Aunque los expertos no se suelen poner de acuerdo en el número y la definición de parámetros para medir la calidad de los datos, hay un gran consenso sobre los siguientes: ¿Están completos los datos?¿Hay campos vacíos o con valores nulos tipo “N/C”? ¿Son consistentes? ¿Hay conflictos entre los valores de distintos campos, por ejemplo, entre “Género” y “Título”? ¿Entre los valores de un campo en distintos conjuntos de datos? La consistencia se puede definir a distintos niveles. ¿Son únicos? ¿Hay duplicidades en el conjunto de datos?. En ocasiones, a las empresas encuentran les resulta más sencillo manejar un cierto umbral de redundancia que garantizar la unicidad de los datos. ¿Son conformes a los estándares o convenciones? ¿Se garantiza la privacidad de los datos según las legislación vigente? ¿Se monitorizan los accesos? ¿Son precisos? ¿Cuántos decimales son precisos para los valores numéricos? ¿Qué redondeo o truncamiento se usa? ¿Son razonables? ¿Tienen sentido los valores que aparecen reflejados? ¿Representan de forma correcta la realidad? Este tipo de comprobación suele requerir la presencia de un experto (Subject Matter Expert). Seguramente hemos detectado necesidades de mejora en nuestro conjunto de datos y tendremos que ponernos manos a la obra con la labor de depuración. (data cleansing, data cleaning o data scrubbing). La Wikipedia nos ofrece una excelente definición para este proceso: Figura 2: Definición del proceso de limpieza de datos o Data Cleaning. Tipos de problemas con los datos Ya tenemos una idea de dónde se pueden generar los problemas, cómo de “buenos” son nuestros datos. Ahora, tenemos que acometer el proceso de Data Cleaning.¿Cómo empezamos? Jim Barker, conocido por algunos como “Dr Data”, propone una clasificación de los problemas que afectan a la calidad de los datos muy práctica, ya que diferencia entre : los que se pueden detectar de forma automática , Tipo 1 y los “enigmáticos” Tipo 2, que requieren contextualización, y por tanto, intervención humana. Veamos una comparativa entre ambos tipos de problemas. Figura 4: Clasificación problemas de calidad de los datos (Elaboración Propia). Ya sabemos que los problemas de Tipo 1 se pueden resolver de forma rápida, sencilla y económica (veremos un ejemplo en el siguiente post). En el caso de los problemas de Tipo 2, lo fundamental es identificarlos e implementar procesos para evitar que se reproduzcan. Para ello, será necesario contar con los profesionales adecuados.Detectar y eliminar ambos tipos de problemas no es imposible. Otra cosa es que, por cuestiones presupuestarias, nos convenga o no hacerlo. Objetivos razonables Normalmente, resulta mucho más razonable plantearse los siguiente objetivos: No buscamos eliminar TODOS los errores posibles, porque sería demasiado caso. En su lugar, nos aseguraremos tener suficientes datos de calidad para extraer los Insights que necesita nuestro negocio. El presupuesto dedicado a la calidad de los datos es finito, hay que ajustarse a él. Hay que priorizar los tipos de error que vamos a corregir. Está muy bien corregir algunos teléfonos, pero es más importante corregir, por ejemplo, errores de codificación de un carácter. Por ejemplo, es posible que la letra “ñ” o los acentos estén codificados en diferentes formatos en función de dónde hayamos recogido el dato Hay que hacer verificaciones aleatorias de los datos para comprobar que vamos en la buena dirección Nos será muy útil contar con un software de calidad de datos adecuado Aunque la perfección es imposible, siempre hay oportunidad de mejorar. Y mejorar la calidad de nuestros datos es algo que claramente merece la pena. En el siguiente post, veremos un ejemplo práctico de cómo utilizar Excel para depurar y preparar los datos que queremos analizar. Excel es una excelente herramienta para empezar a trabajar en Data Cleaning sin tener conocimientos de programación. Es fácil de usar, compartir, y hay mucha información disponible online y foros donde buscar ayuda cuando te “atascas” con algún problema. Realizaremos tareas habituales de limpieza de datos tales como: Descartar campos Igualar formatos Corregir errores ortográficos Dar formato a fechas Eliminar columnas duplicadas Borrar registros no útiles AI OF THINGS Tus datos más limpios...(II). Excel, "Waterproof" 19 de junio de 2017 Sin embargo, también existe una gran variedad de herramientas especializadas en Data Cleaning como OpenRefine, Trifacta Wrangler y DataCleaner, que son sencillas, rápidas y muy eficientes.
13 de junio de 2017
AI & Data
¿Cuánto gastan los bomberos londinenses en salvar gatitos?: El Open Data responde
En este segundo post, continuación de "Ciudades Inteligentes: Exprimiendo Open Data con Power BI" analizaremos el problema y conoceremos las medidas que tomaron los Bomberos de Londres a la vista de estos resultados, para intentar paliar la situación. Hipótesis Ha llegado el momento de plantearnos qué información queremos extraer de los datos, qué respuestas estamos buscando. Algunas preguntas pueden estar claras desde el principio del análisis. Otras, sin embargo, irán surgiendo según los datos nos vayan revelando información. El problema: La señal de alarma que nos ha llevado a plantearnos el análisis es el incremento del número de intervenciones del cuerpo de bomberos para realizar estos servicios, y el coste asociado. Figura 1: Imagen de la campaña lanzada en 2016. Empezamos a plantear hipótesis que intentaremos contrastar con los datos. Con las conclusiones que obtengamos, buscaremos estrategias o definiremos iniciativas que nos permitan solucionar el problema o reducir/minimizar sus efectos. Hipótesis 1: El número de servicios se va incrementando cada año. Si no se plantea ninguna medida correctiva el coste seguirá aumentando. Hipótesis 2: El tipo de animal implicado en el incidente es fundamental a la hora de discriminar si realmente es necesaria la intervención del cuerpo de bomberos o no. La ubicación del incidente (rural o urbano) también puede estar relacionada con el tipo de animal Lo primero que conviene hacer es echarle un vistazo a los datos. Cargarlos en forma de tabla, ver los nombres de los campos (algunos nos resultarán descriptivos, otros no), y probar algunos filtros. Esta breve exploración previa nos ayudará a elegir qué campos pueden aportar información más relevante para cada informe. *En un análisis más complejo, estaríamos en la fase de seleccionar qué atributos nos proporcionan una mayor “ganancia de información” (information gain), permitiéndonos segmentar los datos de forma más eficaz. Por ejemplo, cuales son los atributos que nos permiten agrupar y predecir los valores del campo “IncidentNominalCost” (coste del servicio). Para trabajar sobre la Hipótesis 1, elegimos la visualización “Line Chart”. Seleccionamos el campo sumatorio CallYear y lo arrastramos bajo la etiqueta “Axis” para que represente este valor en el eje vertical (ordenadas) y campo PumpCount lo arrastramos bajo la etiqueta “Values” para que aparezca en el eje horizontal (abscisas). Si seleccionamos directamente los campos en la lista los puede añadir en un orden que no es el que nos interesa por eso es mejor arrastrarlos directamente a su posición final. Figura 2: El campo CalYear (año) debe aparecer bajo la etiqueta “Axis”, mientras que el campo “PumpCount” (número de casos) debe aparecer bajo la etiqueta “Values” leyenda. Obtenemos así el primer panel del informe, en el que se aprecia la evolución del número de servicios de rescate por año. Figura 3: Evolución del número de casos por año. Para hacer un análisis más eficiente de esta gráfica conviene aplicar algunos filtros. Dado que del año 2017 sólo tenemos algunos datos del primer cuatrimestre, vamos a cortar por año completo. Aplicamos el filtro: Figura 4: Ejemplo del filtro avanzado. Sólo muestra los años anteriores a 2016. Aplicado el filtro, la nueva gráfica sería la siguiente: Figura 5: Evolución del número de casos por año (filtrada). Podemos probar con otra visualización de los datos, “Funnel” donde es más fácil apreciar el valor total del número de servicios realizados por año. Cambiar de una a otra es tan fácil como seleccionar en el panel de visualización el nuevo formato con el que queremos que nos presente los datos. Power BI hará el resto del trabajo. Figura 6: Ejemplo de visualización “Funnel”. Se puede apreciar claramente un incremento de las actuaciones entre 2009 y 2011, cómo a partir de ese punto empieza a disminuir (ya veremos por qué), para volver a repuntar el 2016. La muestra no es muy grande, pero si se aprecia una tendencia al incremento progresivo del número de casos. La evolución del coste del servicio por año no es exactamente lineal ya que el coste del servicio viene determinado por el número de horas dedicadas y puede variar en cada caso. Claramente, en 2011 ha habido un cambio de tendencia en la evolución del coste, que se ha vuelto a revertir en 2015. Figura 7: Evolución del coste de servicio por año. Para trabajar sobre la Hipótesis 2, elegimos la visualización “Pie Chart”. Seleccionamos el campo sumatorio CallYear y lo arrastramos bajo la etiqueta “Axis” para que represente este valor en el eje vertical (ordenadas) y campo PumpCount lo arrastramos bajo la etiqueta “Values” para que aparezca en el eje horizontal (abscisas). Figura 8: Número de servicios por tipo de animal. Claramente, la mayor parte de los incidentes tiene que ver con animales pequeños. Al pasar el puntero por cada sector del diagrama podemos ver el dato concreto y el porcentaje sobre el total (49,61% gatos, 17,91% pájaros, y 17,79% perros). [video mp4="https://empresas.blogthinkbig.com/wp-content/uploads/2017/04/3_Visualizacion_Pie.mp4"][/video] Si lo traducimos a costes, y volvemos a visualización “Clustered Column Chart”, podemos ver el gasto público dedicado a rescatar gatos en el periodo 2009-2016: ¡ 866.834 GBP!, de ellos 115.404 GBP sólo en 2016. Figura 9: Coste del servicio por tipo de animal en 2016. En este mismo periodo 2009-2016 se han dedicado 307418 GBP a “rescatar” pájaros, 11084 GBP a rescatar ardillas. Tan sólo entre 2009-2010 el cuerpo de bomberos ha tenido 34 salidas para rescatar ejemplares de estos pequeños roedores en apuros. El analizar la distribución de avisos según el parámetro “ Animal Group Parent” nos ha revelado información de gran interés. Vamos a finalizar este análisis completándolo con información sobre su distribución geográfica. Para analizar la distribución geográfica, elegimos la visualización “Map”. Seleccionamos el campo Borough y lo arrastramos bajo la etiqueta “Location”, el campo AnimalGroupParent bajo la etiqueta “Legend” y el campo PumpCount lo arrastramos bajo la etiqueta “ Size”. [video mp4="https://empresas.blogthinkbig.com/wp-content/uploads/2017/04/4_Visualizacion_mapa.mp4"][/video] Mientras que la distribución de avisos relativos a gatos y perros es bastante homogénea en las zonas más urbanas: Figura 10: Distribución geográfica de avisos referentes al rescate de gatos (en amarillo) y perros (en naranja). La relativa a otro tipo de animales de mayor tamaño como vacas, toros, ciervos etc. resulta más dispersa y asociada a zonas rurales, como era de esperar. En estos casos, al tratarse de animales de gran tamaño, lo más probable es que sí que se haga imprescindible la participación de los bomberos para resolver la situación. Figura 11: Distribución geográfica de avisos referentes al rescate de animales de gran tamaño como toros (en rojo), vacas (en gris) y ciervos (en azul). Por ello, como hemos mencionado antes, el parámetro “AnimalGroupParent” se perfila como uno de los parámetros que aporta mayor información a la hora de discriminar o al menos priorizar los servicios. Si aparecen algunos puntos “fuera de campo” puede deberse a duplicidades o errores en los nombres de códigos postales o nombres de ciudades que coinciden a uno y otro lado del Atlántico. En esos casos, podemos hacer click directamente sobre esos puntos y excluirlos de la gráfica. Figura 12: Ejemplo de datos claramente erróneos por duplicidades de nombres, códigos numéricos etc. PowerBI también nos permite visualizar segmentaciones. Podemos segmentar los datos del informe por un valor concreto, por ejemplo, por año o por ubicación geográfica. Como ejemplo, vamos a segmentar el número de servicios realizados en 2016 relativos a animales “pequeños” (perros, gatos, pájaros, erizos, hamsters, ardillas, patos etc). Para realizar esta segmentación, elegimos la visualización “Slicer”. Seleccionamos el campo Borough (Distrito) y, automáticamente, todos los demás paneles del lienzo ofrecen la información correspondiente a ese segmento concreto que, en este caso, corresponde a un distrito. Figura 13: Aspecto del lienzo con dos visualizaciones diferentes (tabla y funnel) tras aplicar la segmentación Borugh =“City of London” Todavía podríamos profundizar más con PowerBI y realizar un análisis del texto incluido en el campo “ FinalDescription”. Por ejemplo, para agrupar y analizar con mayor detalle aquellos en los que se menciona la intervención previa de la RSPCA (“…ASSIST RSPCA…”), u ocurrencias como “Trapped” o “Stuck”. Este tipo de “Text Analytics” puede llevarse a cabo también con PowerBI gracias a su integración nativa con R. Conclusiones: Tomamos medidas Todo el análisis anterior nos ha servido para confirmar la Hipótesis 1 que se podría reformular como: “ Si no se toman medidas, el consumo inadecuado de recursos públicos en este tipo de servicios seguirá aumentando año a año” Si a esto le sumamos los siguientes datos: Los ciudadanos de Londres sienten un gran amor por los animales (puede parecer un tópico, pero los datos que hemos analizado lo corroboran) El buen ciudadano que llama a los bomberos para socorrer a un animalito no paga de su bolsillo el coste del servicio…. ¿O si lo paga? Parece evidente sacar la conclusión de que el ciudadano que da el aviso NO es consciente del coste incurrido en realizarlo. No se da cuenta del derroche en dinero público (y el mal uso de un recurso de emergencia) que supone llamar a los bomberos para que rescaten a un hámster, una paloma atrapada en un sedal o ayuden a un gato a bajar de un tejado. Aquí se planteaba un problema al que había de que dar una solución que debía repercutir en un uso más eficiente de los recursos públicos y en dar mejor servicio a los ciudadanos. En este caso se planteó una campaña de concienciación ciudadana 2012: La Campaña En Julio de 2012, el Cuerpo de Bomberos de Londres lanzó la campaña: Figura 14: Campaña de los Bomberos de Londres 2012: “I am an animal, get me out of here”. El objetivo de la campaña era educar a los ciudadano sobre cómo poder seguir siendo “buenos samaritanos” en caso de encontrar animales en situaciones delicadas sin por ello hacer un mal uso de recursos públicos. La campaña tenía dos ejes: Por una lado, el de informar del coste que supone para la ciudadanía en general el dar este tipo de avisos directamente a los bomberos Y por otro, mostrar cuál sería la vía alternativa más adecuada a la que recurrir en este tipo de situaciones. En este caso, llamar a la RSPCA (Royal Society for the revention of Cruelty to Animals). Esta campaña tuvo un inmediato efecto positivo sobre la población que se refleja en el descenso del número de avisos registrado a partir de 2012. Figura 15: Noticia sobre el descenso de servicios de rescate animal. Sin embargo, en 2015 se registró un nuevo cambio de tendencia con un rápido incremento del número de casos. Los bomberos usaron las redes sociales para difundir la campaña. Figura 16: Campaña de los Bomberos de Londres 2012. Figura 17: Campaña de la BBC. Y, en Febrero de 2017, se publicó un mapa interactivo: Figura 18: Mapa Interactivo Se pone de manifiesto la necesidad de que este tipo de campañas se repitan periódicamente para no perder efectividad. Conclusión final La mayor disponibilidad de datos en abierto sobre los servicios públicos, y de distintas herramientas que permiten combinarlos, analizar patrones y visualizar modelos se pueden traducir rápidamente en ahorros costes, y en ciudadanos satisfechos e involucrados con su entorno. Este ha sido un ejemplo muy sencillo, pero con resultados palpables. Si en 2016 descontamos las salidas del Cuerpo de Bomberos relativas a percances de animales domésticos o de pequeño tamaño, las que consideramos “evitables”, el ahorro hubiera sido de £215.160. Si tenemos en cuenta el potencial que supone el poder aplicar Data Science a todo el arsenal de datos que hoy en día recogen y almacenan instituciones y empresas, nos damos cuenta de la gran oportunidad de mejorar nuestro entorno y nuestras vidas. ¡Aprovechémosla! [video mp4="https://empresas.blogthinkbig.com/wp-content/uploads/2017/04/5_Conclusion.mp4"][/video] Para mantenerte al día con LUCA visita nuestra .
26 de abril de 2017
AI & Data
Ciudades Inteligentes: Tutorial de Power BI sobre Open Data
En este artículo, que publicaremos en dos post, hablaremos de Smart Cities y de cómo pueden utilizar sus datos para ser más “smart”. Trabajaremos con un dataset de ejemplo del London Data Store (sobre los servicios de los Bomberos) para aprender a utilizar Power BI Desktop como herramienta de análisis y visualización de datos. Y, por último, sacaremos conclusiones. I. Antecedentes: Smart Cities y Open Data Las ciudades ofrecen distintos servicios a los ciudadanos por lo cual necesitan recopilar y almacenar una gran cantidad de datos. Otros organismos y administraciones públicas, financiados por la ciudadanía, generan a su vez información geográfica, cartográfica, meteorológica, médica etc. Los partidarios de Open Data, la filosofía de Datos Abiertos, defienden que esta información debería ser accesible y reutilizable para el público en general, sin exigencia de permisos específicos. Consideran que restringir su acceso va contra el bien común, ya que se trata de información que pertenece a la sociedad, o ha sido financiada por ella. Hace ya casi una década, en 2010, se celebró el primer Open Data Day al que se sumaron 60 ciudades interesadas en poder usar esta información para ofrecer mejores servicios a los ciudadanos y ayudarles a resolver los distintos desafíos que se les planteaban. Figura 1: ¿Qué oportunidades nos ofrecen las Smart Cities? ¿Cuáles son esos desafíos? Aunque cada ciudad tiene sus particularidades, muchos de ellos son compartidos entre distintas ciudades del mundo. Hablamos de desafíos tales como el continuo aumento de la población, debido al desplazamiento de personas desde las zonas rurales a las ciudades, los problemas de tráfico, contaminación, encarecimiento de la vivienda, envejecimiento de las infraestructuras y servicios al borde del colapso. ¿Cómo se enfrenta una Smart City a estos desafíos? Cuando hablamos de Smart Cities, hablamos básicamente de infraestructura, conectividad, IoT, y, por supuesto, datos abiertos. Hablamos de tecnologías Big Data, machine learning y de extracción, transformación, normalización, procesamiento y exposición de datos, que nos permitirán sacar partido a toda esa información, detectar problemas, extraer patrones, analizar comportamientos, plantear hipótesis u optimizar modelos. En definitiva, usar los datos disponibles para optimizar los servicios ofrecidos a los ciudadanos. Un ejemplo Es muy interesante cuando el Open Data se gestiona a nivel local, ya que permite llevar a cabo iniciativas muy enfocadas a la problemática real de los ciudadanos. Por ejemplo, en muchas grandes ciudades, la escasez de plazas de aparcamiento supone un verdadero problema, mientras que a nivel regional, el número de plazas puede parecer adecuado. Las ciudades que facilitan información en tiempo real sobre la disponibilidad de estas plazas promueven el desarrollo de apps que dirigen a los conductores hacia éstas, reduciendo los tiempos perdidos en desplazamientos y a la vez los índices de contaminación. Otro ejemplo interesante son las apps basadas en los datos que ofrecen los ayuntamientos sobre contaminación y niveles de alérgenos para que las personas afectadas puedan tomar medidas que minimicen sus efectos. Figura 1: Ejemplos de Apps de Google Play que miden los niveles de polen. También se pueden combinar datos de distintas fuentes, datos procedentes de administraciones públicas con otros ofrecidos por empresas privadas (convenientemente tratados para eliminar de ellos la información confidencial de los clientes). LUCA colabora en iniciativas de Big Data for Social Good aportando un gran valor, al ofrecer a ONGs y gobiernos datos anonimizados sobre ubicación de terminales móviles que han demostrado ser de gran interés para generar insights sobre catástrofes naturales. Estos insights permiten enviar los recursos de ayuda de emergencia necesarios de forma más rápida y eficaz. Por esta razón, muchas ciudades, no solo las grandes capitales, quieren convertirse en Smart Cities. Porque una ciudad conectada usa la información y la tecnología para ofrecer a sus ciudadanos una política de transparencia (basada en datos abiertos), unos servicios más eficientes (optimizando el uso de los recursos públicos y reduciendo así los costes) y un empoderamiento efectivo (permitiendo una mayor participación de éstos en la toma de decisiones que afectan su día a día). Siempre hay un “pero…” Como siempre ocurre con los proyectos innovadores, no han faltado cantos de sirena y críticas sobre los riesgos de las Smart Cities. Algunos autores opinan que es un modelo impulsado por grandes empresas de ingeniería, tecnología y consultoría únicamente en beneficio de sus propios intereses y llegan al punto de pronosticar que serán la causa del “fin de la democracia”, como fue destacado en el articulo " The truth about smart cities: ‘In the end, they will destroy democracy". Efectivamente, en ocasiones se pone la tecnología por delante de las personas. Sólo se piensa en sensores y algoritmos, se confunden los medios con los fines y no se tiene en cuenta cuáles son realmente las necesidades o problemas de los usuarios. En estos casos el resultado nunca podrá ser positivo. William Edgers, en su estudio “ Making Cities Smarter: How Citizens’ Collective Intelligence Can Guide Better Decision Making” nos sugiere cómo tener en cuenta la inteligencia colectiva ciudadana para ayudar a los IT decision-makes a construir una smart city de verdad, construida “desde abajo” y dirigida por los ciudadanos (“bottom-up or citizen led aproach”). II. El problema Figura 2: Imagen del London Data Store. Londres fue una de las primeras ciudades europeas que apostó por una iniciativa Open Data, y, en Enero de 2010 puso en marcha el London Data Store donde se publicaron conjuntos de datos relativos a temas muy variados: economía y empleo, transporte, medio ambiente, seguridad, vivienda, salud etc. Este Data Store contiene más de 500 datasets y su web es visitada, cada mes, por 50.000 personas. En 2015 recibió el premio ODI Open Data Publisher Award por su labor pionera en la publicación de datos abiertos tanto a nivel local como regional. Es un excelente ejemplo de Open Data mantenido a nivel local, que, como hemos dicho antes, puede ser muy útil para emprender iniciativas que preocupan a sus ciudadanos, aportan soluciones a problemas concretos, y se traducen en un uso innovador de la tecnología en beneficio de los habitantes de la ciudad. En el siguiente post, vamos a trabajar sobre uno de los data sets posiblemente más “pintorescos” de los que ofrece el London Data Store. Recoge los servicios de rescate animal del Cuerpo de Bomberos de la ciudad ( London Fire Brigade). El análisis de estos datos va a poner sobre la mesa un problema al que intentaremos proponer soluciones. ¿A qué desafío tuvieron que enfrentarse los bomberos de Londres? Figura 3: Bomberos de Tottenham tras rescatar a una gata preñada. Los datos Vamos a pasar a explicar paso a paso cómo analizar los datos del London DataStore. Primero descargamos la tabla Excel correspondiente: Figura 4: Imagen del London Datastore. Pantalla de descarga de los datos de trabajo. Se trata de una tabla de 4751 registros, que recoge la información sobre las salidas de los bomberos para cubrir este tipo de servicios. Los campos principales son el número de incidente, la fecha y hora del aviso, las horas dedicadas, el coste del servicio, el tipo de animal implicado, una breve descripción del problema, origen del aviso, tipo de localización etc. Aunque no es relevante para nuestro análisis, siempre que se descarga algún fichero o documento de la web, en este caso una tabla Excel, conviene comprobar su nivel de seguridad en cuanto a exposición de metadatos. Estos “datos sobre los datos” ocultos en los ficheros pueden ofrecer información sensible sobre nuestro entorno de trabajo sin que seamos conscientes de ello. Para ello, usamos la herramienta Metashield Analyzer. En este caso, simplemente analizaremos el fichero (Step 1). Cuando seamos nosotros los que publiquemos información en un datastore, nos aseguraremos de no publicar información que nos podría perjudicar oculta en los metadatos usando Metashield Protector (Step 2). Figura 5: Opciones a elegir de la página web de Metashield Analyzer. El resultado del análisis nos muestra un nivel de riesgo bajo. La información “expuesta” inadvertidamente es la relativa a la impresora y al creador del documento. No obstante, siempre conviene hacer la comprobación. Figura 6: Resultado mostrado al analizar el Excel de trabajo con Metashield Analyzer. Vamos a trabajar con una herramienta que nos permite realizar análisis visuales de forma muy intuitiva y crear informes que pondrán de relieve los patrones que comportamiento de los datos. Se trata de la herramienta Power BI Desktop. [video mp4="https://empresas.blogthinkbig.com/wp-content/uploads/2017/04/1_Introduccion_PowerBI.mp4"][/video] “Power BI es una colección de servicios de software, aplicaciones y conectores que funcionan conjuntamente para convertir orígenes de datos sin relación entre sí en información coherente, interactiva y atractiva visualmente. Un flujo de trabajo habitual de Power BI comienza en Power BI Desktop, donde se crea un informe. Luego, ese informe se publica en el servicio Power BI y después se comparte para que los usuarios de las aplicaciones de Power BI Mobile puedan usar la información. “ Power BI permite, por tanto crear informes visuales usando distintos orígenes de datos, desde una sencilla tabla Excel a una colección de almacenes de datos híbridos locales o basados en la nube, compartirlos, actualizar la información en tiempo real etc. Pero en este caso, no necesitamos complicarnos tanto. Tenemos una sencilla tabla de Excel, vamos a cargarla en la herramienta desktop y vamos a sacar unos informes que no necesitamos publicar en ningún servicio. Podemos trabajar sin ningún problema con la versión gratuita de la herramienta, para lo cual únicamente tendremos que registrarnos. Nos descargamos la aplicación y la instalamos como cualquier otra aplicación Windows. Figura 7: Pantalla inicial de instalación de Power BI Desktop. Detecta automáticamente la arquitectura de tu S.O. y descarga la versión que corresponda (en este caso, X64). Formateamos los Datos En este ejemplo, vamos a trabajar con un archivo Excel. Si trabajáramos con archivos Excel en OneDrive, los informes y paneles en Power BI se actualizarían automáticamente al realizar cambios y guardar el trabajo. Para que Power BI pueda importar los datos del libro, los datos deben tener formato de tabla. Es fácil. En Excel, puede resaltar un rango de celdas y, en la pestaña Insertar de la cinta de Excel, haga clic en Tabla. También es importante asegurarse de que todas las columnas tengan un nombre adecuado para poder encontrar con mayor facilidad los datos que nos interesen al crear informes en Power BI. Aunque muchos de estos aspectos se pueden modificar también una vez cargado el fichero, siempre suele ser más cómodo y rápido hacer esa depuración previa de los datos antes de cargarlos. Creamos, pues un nuevo informe y elegimos la primera de las fuentes de datos disponibles: Excel. Obtener datos > Archivos > Archivo Local, para buscar y seleccionar el archivo de Excel que desea. [video mp4="https://empresas.blogthinkbig.com/wp-content/uploads/2017/04/2_Carga_datos.mp4"][/video] Figura 9: Pantalla de selección. Permite seleccionar qué hoja/hojas del libro Excel queremos cargar. Ofrece una visualización parcial de los datos y permite realizar ediciones. Figura 8: Pantalla de selección de la fuente de datos. Muestra todas los posibles “data source”. Aparece una nueva ventana que nos permite elegir qué hoja de la tabla de datos nos interesa. Nos muestra una previsualización de la tabla y nos da la posibilidad, como indicamos antes, de editarla. En este caso, la cargamos directamente seleccionando el botón “Load”. Como estas cosas nunca salen bien a la primera, nos aparece un bonito mensaje de error. Tenemos nada menos que 2853 errores. Podemos investigar su origen directamente desde aquí “View Errors”. Figura 10: Mensaje de error que aparece en este ejemplo tras cargar los datos. Parece que el formato de fecha de “Fin del Servicio” es el que da problemas. Ha puesto el mismo valor en todos los campos. Figura 11: En amarillo podemos ver los campos que no se han cargado correctamente. Como es un dato que no nos aporta información relevante (los servicios tienen una duración de horas y no de días y teniendo de forma correcta la fecha de inicio del servicio este dato es redundante), podemos directamente eliminar la columna. Seleccionamos la columna completa y en el menú contextual elegimos la opción “Remove”. F igura 12: Eliminamos una de las columnas. Otra opción sería eliminar la columna y quedarnos sólo con el dato del año: Figura 13: En lugar de eliminarla, transformamos el dato para quedarnos con el año. El formato del campo “DateTimeOfCall” tampoco parece el adecuado. En este caso, optamos por la opción “Change Type” del mismo menú, y lo convertimos en formato decimal. Figura 14: Cambio del formato del campo DateTimeOlCall a formato fecha/hora Al volver a cargar los datos, aunque se ha reducido el número de errores, sigue fallando el formato de uno de los campos. Ahora se trata del campo “IncidentNumber “. El formato que hay que aplicar en este caso es el formato “Texto”. “Close and Apply”. Figura 15: Cambio del formato del campo Incident Number a formato texto. Visualizamos los Datos con Power BI. Nociones básicas. Una vez cargados los datos podemos empezar a generar informes. Vamos a ver primero unas nociones básicas de la herramienta y después generaremos nuestro panel de informes para este caso concreto. La vista Informe tiene cinco áreas principales: La cinta de opciones, que muestra las tareas comunes asociadas con los informes y visualizaciones La vista Informe , o lienzo, donde se crean y se organizan las visualizaciones El área de pestaña Páginas situada a lo largo de la parte inferior, que permite seleccionar o agregar una página de informe El panel Visualizaciones , donde puede cambiar las visualizaciones, personalizar los colores o ejes, aplicar filtros, arrastrar campos, etc El panel de Campos, donde elementos de consulta y filtros se pueden arrastrar a la vista Informe, o bien al área Filtros del panel Visualizaciones. Al cargar los datos, es en esta zona donde podemos ver los distintos campos que se pueden seleccionar para elaborar los informes. Para crear una visualización, basta con arrastrar un campo desde la lista Campos hasta la vista Informe. La visualización que aparece como predeterminada es la de tabla de datos.También podemos elegir primero el tipo de visualización que nos interesa y luego arrastrar los campos de datos sobre el marcador de posición generado en el lienzo. Figura 16: Al elegir una visualización, aparece en el lienzo el marcador correspondiente. Según vayamos arrastrando los datos, que dependerán del tipo de visualización seleccionado, los cambios se irán reflejando de forma automática, actualizando la visualización. Figura 17: Seleccionamos de la lista los campos que queremos añadir y los arrastramos sobre el lienzo o sobre la etiqueta correspondiente bajo la ventana “Visualizations” (Axis, Legend etc.). Por último, podemos cambiar el tamaño de la visualización en el lienzo, recolocarla, editarla, añadir etiquetas, modificar colores etc. Según pasamos el puntero sobre secciones de las visualizaciones, veremos información sobre herramientas que contiene detalles sobre ese segmento, como etiquetas y su valor total. Figura 18: Podemos modificar la visualización directamente desde el lienzo (con el menú de su propia ventana), o bien con las distintas herramientas que aparecen en los menús a la derecha de la pantalla, según pasamos el puntero sobre ella. Volviendo a nuestro ejemplo, elegimos en primer lugar una visualización de tabla. Se crea el marcador de posición y, según vamos seleccionando qué campos de datos nos interesan (en amarillo), éstos se van agregando a la tabla. Figura 19: Los campos seleccionados (en amarillo) aparecen bajo la columna “Values”. En esta visualización (tabla) se pueden agregar los campos seleccionándolos directamente de la lista. En otras visualizaciones, conviene arrastrar el campo bajo la columna cuya etiqueta sea la que nos interese (Legend, Shared Axis, Column values, values etc). Al mismo tiempo, se van añadiendo filtros para cada uno de esos campos de datos: Figura 20: En nuestro ejemplo, al agregar el campo “AnimalGroupParent”, automáticamente nos va a permitir filtrar por cada uno de los tipos de animales que aparecen en el grupo. Ya tenemos una herramienta para trabajar sobre el dataset de los servicios especiales de los bomberos de Londres. Tenemos la "lupa" para analizar las pistas. La pregunta es ¿a qué conclusiones llegaremos? No te pierdas el próximo post: ¿Cuánto gastan los bomberos londinenses por salvar a gatitos indefensos? El Open Data responde También puedes seguirnos en Twitter, YouTube y LinkedIn
24 de abril de 2017