Archivo de la etiqueta: algoritmos

Guía para comenzar con algoritmos de Machine Learning

El interés por el concepto de “machine learning” no para de crecer. Como siempre, una buena manera de saberlo, es utilizando herramientas de agregación de intereses como son Google Trends (las tendencias de búsquedas en Google) y Google N Gram Viewer (que indexa libros que tiene Google escaneados y sus términos  gramaticales). Las siguientes dos imágenes hablan por sí solas:

Búsqueda del término "machine learning" en Google (Fuente: Google Trends)
Búsqueda del término “machine learning” en Google (Fuente: Google Trends)
El término "machine learning" en libros en el último siglo (Fuente: Google N Gram Viewer)
El término “machine learning” en libros en el último siglo (Fuente: Google N Gram Viewer)

Sin embargo, no se trata de un término nuevo que hayamos introducido en esta era del Big Data. Lo que sí ha ocurrido es el “boom de los datos” (derivado de la digitalización de gran parte de las cosas que hacemos y nos rodean) y el abaratamiento de su almacenamiento  y procesamiento (básicamente, los ordenadores  y sus procesadores cuestan mucho menos que antes). Vamos, dos de los vectores que describen esta era que hemos bautizado como “Big Data”.

Los algoritmos de machine learning están viviendo un renacimiento gracias a esta mayor disponibilidad de datos y cómputo. Estos dos elementos permiten que estos algoritmos aprendan conceptos por sí solos, sin tener que ser programados. Es decir, se trata de ese conjunto de reglas abstractas que por sí solas son construidas, lo que ha traído y permitido que se “autonconfiguren”.

La utilidad que tienen estos algoritmos es bastante importante para las organizaciones, dado que son especialmente buenos para adelantarnos a lo que pueda ocurrir. Es decir, que son bastante buenos para predecir, que es como sabéis, una de las grandes “inquietudes” del momento. Se pueden utilizar estos algoritmos de ML para otras cuestiones, pero su interés máximo radica en la parte predictiva.

Este tipo de problemas, los podemos clasificar en dos grandes categorías:

  • Problemas de regresión: la variable que queremos predecir es numérica (las ventas de una empresa a partir de los precios a fijar)
  • Problemas de clasificación: cuando la variable a predecir es un conjunto de estados discretos o categóricos. Pueden ser:
    • Binaria: {Sí, No}, {Azul, Rojo}, {Fuga, No Fuga}, etc.
    • Múltiple: Comprará {Producto1, Producto2…}, etc.
    • Ordenada: Riesgo {Bajo, Medio, Alto}, ec.

Estas dos categorías nos permiten caracterizar el tipo de problema a afrontar. Y en cuanto a soluciones, los algoritmos de machine learning, se pueden agrupar en tres grupos:

  • Modelos lineales: trata de encontrar una línea que se “ajuste” bien a la nube de puntos que se disponen. Aquí destacan desde modelos muy conocidos y usados como la regresión lineal (también conocida como la regresión de mínimos cuadrados), la logística (adaptación de la lineal a problemas de clasificación -cuando son variables discretas o categóricas-). Estos dos modelos tienen tienen el problema del “overfit”: esto es, que se ajustan “demasiado” a los datos disponibles, con el riesgo que esto tiene para nuevos datos que pudieran llegar. Al ser modelos relativamente simples, no ofrecen resultados muy buenos para comportamientos más complicados.
  • Modelos de árbol: modelos precisos, estables y más sencillos de interpretar básicamente porque construyes unas reglas de decisión que se pueden representar como un árbol. A diferencia de los modelos lineales, pueden representar relaciones no lineales para resolver problemas. En estos modelos, destacan los árboles de decisión y los random forest (una media de árboles de decisión). Al ser más precisos y elaborados, obviamente ganamos en capacidad predictiva, pero perdemos en rendimiento. Nada es gratis.
  • Redes neuronales: las redes artificiales de neuronas tratan, en cierto modo, de replicar el comportamiento del cerebro, donde tenemos millones de neuronas que se interconectan en red para enviarse mensajes unas a otras. Esta réplica del funcionamiento del cerebro humano es uno de los “modelos de moda” por las habilidades cognitivas de razonamiento que adquieren. El reconocimiento de imágenes o vídeos, por ejemplo, es un mecanismo compleja que nada mejor que una red neuronal para hacer. El problema, como el cerebro humano, es que son/somos lentos de entrenar, y necesitan mucha capacidad de cómputo. Quizás sea de los modelos que más ha ganado con la “revolución de los datos”; tanto los datos como materia prima, como procesadores de entrenamiento, le vienen como anillo al dedo para las necesidades que tienen.

En el gran blog Dataconomy, han elaborado una chuleta que es realmente expresiva y sencilla para que podamos comenzar “desde cero” con algoritmos de machine learning. La tendremos bien a mano en nuestros Programas de Big Data en Deusto.

Guía para principiantes de algoritmos de Machine Learning (Fuente: dataconomy.com)
Guía para principiantes de algoritmos de Machine Learning (Fuente: dataconomy.com)

Cómo los metadatos nos pueden ayudar a predecir tu trabajo gracias al Big Data

El pasado noviembre, saltó a la palestra del “mundo de los datos” una noticia que en España ha pasado algo desapercibida (al menos en los  medios generalistas). No obstante, no creo que sus implicaciones sean menores. La agencia de espionaje de Canadá, la CSIS, había estado recolectando metadatos (datos generados en el uso de medios digitales como el correo electrónico, los mapas de geolocalización, etc.) durante 10 años.

El tribunal supremo de Canadá, instruyendo la causa, decretó -como no podría ser de otro modo- que esto era ilegal. Por más que tuviera un fin de eventuales espionajes o amenazas por terrorismo, la seguridad y privacidad del ciudadano por delante de todo.

Estos metadatos, para que se hagan ustedes a la idea, incluyen desde números de teléfono, localizaciones, direcciones de email, duraciones de las llamadas o comunicaciones, etc. Es decir, datos asociados a acciones, no el contenido de las mismas en sí (las llamadas y sus contenidos… en cuyo caso estaríamos hablando de algo aún más grave). El CSIS quería esto porque en 2006 puso en marcha un programa que bautizó como “Operational Data Analysis Centre” para producir información inteligente que ayudase a la toma de decisiones estratégicas en favor de la seguridad del país.

Esta noticia, me resultó bastante ilustrativa porque los metadatos (los grandes olvidados, sobre los que he escrito en alguna ocasión a colación de whatsapp y Facebook), pueden revelar mucha información sobre nosotros mismos. Cómo nos comportamos, qué y por qué decidimos qué, cómo tomamos las decisiones, etc. En definitiva, un montón de información personal, que nunca podemos olvidar. Como ha hecho el tribunal supremo de justicia canadiense, por más que se trate de una agencia pública la que ha cometido el delito.

Pues bien, me acordaba de esta noticia al leer que un equipo de investigadores de la empresa de telecomunicaciones noruega Telenor, junto con el MIT Media Lab y la organización sin ánimo de lucro Flowminder, han encontrado un método para, partiendo de metadatos, predecir el estado ocupacional/profesional de una persona (desempleado o a qué se dedica). Podéis leer el artículo aquí.

Estimating individual employment status using mobile phone network data (Fuente: arxiv.org/ftp/arxiv/papers/1612/1612.03870.pdf)
Estimating individual employment status using mobile phone network data (Fuente: arxiv.org/ftp/arxiv/papers/1612/1612.03870.pdf)

El paper explica maravillosamente el modelo predictivo que han conformado. La variable dependiente, no era otra que una variable categórica de 18 pòsibles estados (uno por cada profesión, desde estudiante, empleado/ocupado y tipos de ocupación). ¿Las independientes? (es decir, las predictoras); pues los metadatos que decíamos antes: un total de 160 características o variables (casi nada), tomadas desde dispositivos móviles y categorizadas en tres categorías: financieras, de movilidad y sociales. Para qué explicarlo, si en el paper sale una tabla con todas esas características:

Los metadatos de nuestros dispositivos móviles (Fuente: arxiv.org/ftp/arxiv/papers/1612/1612.03870.pdf)
Los metadatos de nuestros dispositivos móviles (Fuente: arxiv.org/ftp/arxiv/papers/1612/1612.03870.pdf)

Todos estos datos generamos desde nuestro dispositivo móvil. Que, como decíamos, ayudan a predecir, entre muchas cosas, una cuestión tan importante como nuestro estado de ocupación. Para ello, el equipo investigador ha comparado diferentes modelos predictivos (GBM, Random Forest, SVM, kNN, redes neuronales, etc.). Tras estudiar los rendimientos de cada modelo predictivo, se quedaron con una arquitectura de red neuronal usando un 75/25% de training/testing, siendo la precisión del modelo, de media, un total de un 67,5%. Hay profesiones donde es más fácil acertar y en otras más difícil. Será que algunos nos comportamos de manera más predecible y otros de menos :-)

Precisión de los modelos predictivos para predecir ocupaciones (Fuente: arxiv.org/ftp/arxiv/papers/1612/1612.03870.pdf)
Precisión de los modelos predictivos para predecir ocupaciones (Fuente: arxiv.org/ftp/arxiv/papers/1612/1612.03870.pdf)

¿Qué variables son  las más críticas? Es decir, las que “mejor predicen” una profesión. Nada menos que la la torre de telecomunicaciones a las que más se conecta una persona (latitud y longitud), el número de lugares visitados (por frecuencia) y el radio de viaje (cómo se aleja de su hogar, la celda de conexión más cercana y que más frecuenta -salvo que durmamos mucho en hoteles :-)-). ¿Alguien se extraña entonces por qué Google Maps es gratuito? Lo de siempre, introduzcan en el navegador maps.google.com/locationhistory. En la siguiente imagen, representan la relación de estas variables y cómo ayudan a predecir la ocupación:

Relación entre variables predictoras y ocupaciones (Fuente: https://arxiv.org/ftp/arxiv/papers/1612/1612.03870.pdf)
Relación entre variables predictoras y ocupaciones (Fuente: https://arxiv.org/ftp/arxiv/papers/1612/1612.03870.pdf)
Profesiones y variables predictoras (Fuente: http://motherboard.vice.com/read/how-metadata-can-reveal-what-your-job-is)
Profesiones y variables predictoras (Fuente: http://motherboard.vice.com/read/how-metadata-can-reveal-what-your-job-is)

Este modelo de deep learning (aprendizaje cognitivo o profundo), este tipo de software que está revolucionando tantos procesos, dado que se entrenan a sí solos para encontrar patrones en grandes cantidades de datos, está en boca de muchos ahora. Su potencial es tan grande, que permitir que una agencia pública federal los emplee para cosas como las que aquí descritas, me parece preocupante.

Y ahora ustedes se estarán preguntando de dónde habrán estos investigadores obtenido los datos. Telenor :-) Es decir, la empresa de telecomunicaciones que, obviamente de manera anonimizada, han procesado hasta 76.000 conexiones de dispositivos móviles a sus torres de comunicaciones. Y de ahí han salido estos metadatos. Un proyecto, solo basado en esos datos, pero que imagínense lo que puede mejorar si lo integramos con otras fuentes de datos. Modelos aún más precisos a nivel de predicción. Un proyecto de Big Data en toda regla.

Como ven, estos proyectos de Big Data, tienen mucho potencial. Todo está por hacer y aprender. En nuestros programas de Big Data, además de ver los diferentes modelos predictivos, también aprendemos a integrar todas esas fuentes de datos, mejorar su calidad en un modelo de datos único y unificado, así como a montar infraestructuras de Big Data que optimicen estos procesamientos.

¿Qué lenguaje debemos utilizar para Data Science?

En este blog, ya hemos hablado con anterioridad de diferentes herramientas para emprender proyectos de analítica. Fue en esta entrada, comparando más allá a nivel de herramienta, cuando comparábamos R, Python y SAS, que son sobre las que pivotamos en nuestros Programas de Big Data.

El mundo de la analítica está avanzando a la velocidad de la luz, por lo que es importante que escribamos artículos volviendo a esa pregunta original sobre ¿Qué lenguaje utilizar para Data Science? No es una pregunta sencilla, porque las opciones existentes no son pocas.

La pregunta se vuelve más complicada aún en contextos como el nuestro. Tenemos que enseñar y aprender desde cero la disciplina de Data Science. Y una pregunta muy recurrente de parte de nuestros alumnos de Bilbao, Donostia y Madrid, es, ¿por qué lenguaje empieza para arrancar en este mundo del Big Data?

Son muchas los lenguajes que ofrecen las capacidades para ejecutar operaciones de análisis de datos de una manera más eficiente que los lenguajes tradicionales (C++, C, Java, etc.). Entre ellos, destacan algunos sospechosos habituales, y otros que están emergiendo con fuerza: R, Python, MATLAB, Octave y Julia. Éste es el menú en el que tenemos que elegir; decisión, como suele pasar con estas cuestiones, no sencilla. Dejo fuera de esta comparación soluciones analíticas como SAS, Stata o Excel, básicamente, porque no están orientadas a nivel de “lenguaje de programación”, sino a nivel de herramientas.

En esta entrada, y para poder encontrar un ganador, se han comparado los lenguajes en varias dimensiones: velocidad de ejecución, curva de aprendizaje requerida, capacidades de ejecutar acciones de analítica de datos, soporte a la visualización, entornos de desarrollo, facilidad de integración con otros lenguajes/aplicaciones y las oportunidades de trabajo existentes.

Comparación entre lenguajes

Obviamente, debemos notar que las calificaciones otorgadas en cada dimensión son la opinión de Siva Prasad, la persona que lo ha elaborado. Por lo tanto, creo que no debemos tampoco sacar conclusiones exclusivamente de ello. Creo que lo más ilustrativo del caso es fijarse en que en función de cuál sea el objetivo y la necesidad concreta, hay diferentes opciones que explorar.

Lo que sí me parece igualmente interesante, son la utilidad que puede tener en función del punto en el que cada uno se encuentre. El autor, en su entrada, destaca que:

If you are a graduate student, it’s good to start with Python

Si somos estudiantes de Grado, que estamos arrancando, sugiere emplear Python.

If you are a research scholar, good to start with R and explore Octave

Si estamos por la vía de la investigación/doctorado, sugiere el empleo de R y/o Octave.

If you are an employee, I suggest to master both Python and R

Si eres una persona ya trabajando en la industria, parece que las mejores apuestas pasan por Python y R.

If you are tech enthusiast and love exploring/learning new things, you can learn Julia

Si eres un entusiasta tecnológica y te gusta explorar/aprender nuevas cosas, métete con Julia (yo, estoy en esta etapa, haciendo modelos de optimización con Julia, que es realmente potente e interesante).

If the data needs to try several different algorithms, choose R

Si necesitamos probar diferentes algoritmos para tratar el conjunto de nuestros datos, prueba con R.

If you need to use data structures and integrate with external applications, use Python

Si tenemos que utilizar muchas estructuras de datos e integrar los mismos con aplicaciones externas, probemos con Python.

Para gustos están los colores. En definitiva, que no consideremos esto como conclusiones a escribir en un libro. Pero sí por lo menos, para orientarnos, y tener primeras aproximaciones a la ciencia de datos, Data Science, así como las opciones que abre cada uno de ellos. Disfruten de todos ellos :)

El Machine Learning en la era del Big Data

El Machine Learning o “Aprendizaje automático” es un área que lleva con nosotros ya unos cuantos años. Básicamente, el objetivo de este campo de la Inteligence Artificial, es que los algoritmos, las reglas de codificación de nuestros objetivos de resolución de un problema, aprendan por si solos. De ahí lo de “aprendizaje automático”. Es decir, que los propios algoritmos generalicen conocimiento y lo induzcan a partir de los comportamientos que van observando.

Para que su aprendizaje sea bueno, preciso y efectivo, necesitan datos. Cuantos más, mejor. De ahí que cuando irrumpe el Big Data (este nuevo paradigma de grandes cantidades de datos) el Machine Learning se empezase a frotar las manos en cuanto al futuro que le esperaba. Los patrones, tendencias e interrelaciones entre las variables que el algoritmo de Machine Learning observa, se pueden ahora obtener con una mayor precisión gracias a la disponibilidad de datos.

¿Y qué permiten hacer estos algoritmos de Machine Learning? Muchas cosas. A mí me gusta mucho esta “chuleta” que elaboraron los compañeros del blog Peekaboo. Esta chuleta nos ayuda, a través de un workflow, a seleccionar el mejor método de resolución del problema que tengamos: clasificar, relacionar variables, agrupar nuestros registros por comportamientos, reducir la dimensionalidad, etc. Ya veis, como comentábamos en la entrada anterior, que la estadística está omnipresente.

“Chuleta” de algoritmos de Machine Learning (Fuente: http://1.bp.blogspot.com/-ME24ePzpzIM/UQLWTwurfXI/AAAAAAAAANw/W3EETIroA80/s1600/drop_shadows_background.png)

Estas técnicas llevan con nosotros varias décadas ya. Siempre han resultado muy útiles para obtener conocimiento, ayudar a tomar decisiones en el mundo de los negocios, etc. Su uso siempre ha estado más focalizado en industrias con grandes disponibilidades de datos. Por ejemplo, el sector BFSI (Banking, Financial services and Insurance) siempre han considerado los datos como un activo crítico de la empresa (como se generalizó posteriormente en 2011 a partir del Foro de Davos). Y siempre ha sido un sector donde el Machine Learning ha tenido mucho peso.

Pero, con el auge de la Internet Social y las grandes empresas tecnológicas que generan datos a un gran volumen, velocidad y variedad (Google, Amazon, etc.), esto se generaliza a otros sectores. El uso del Big Data se empieza a generalizar, y el Machine Learning sufre una especie de “renacimiento”.

Ahora, se convierten en pieza clave del día a día de muchas compañías, que ven cómo el gran volumen de datos además, les ayuda a obtener más valor de la forma de trabajar que tienen. En la siguiente ilustración que nos genera Google Trends sobre el volumen de búsqueda de ambos términos se puede observar cómo el “Machine Learning” se ve iluminado de nuevo cuando el Big Data entra en el “mainstream”(a partir de 2011 especialmente).

Búsquedas de Big Data y Machine Learning (Fuente: Google Trends)
Búsquedas de Big Data y Machine Learning (Fuente: Google Trends)

¿Y por qué le ha venido tan bien al Machine Learning el Big Data? Básicamente porque como la palabra “aprendizaje” viene a ilustrar, los algoritmos necesitan de datos, primero para aprender, y segundo para obtener resultados. Cuando los datos eran limitadas, corríamos el peligro de sufrir problemas de “underfitting“. Es decir, de entrenar poco al modelo, y que éste perdiera precisión. Y, si utilizábamos todos los datos para entrenar al modelo, nos podría pasar lo contrario, problemas de “overfitting“, que entonces nos generaría modelos demasiado ajustados a la muestra, y quizás, poco generalizables a otros casos.

El entrenamiento del modelo con datos y los problemas de
El entrenamiento del modelo con datos y los problemas de “underfitting” y “overfitting” (Fuente: http://i.stack.imgur.com/0NbOY.png)

Este problema con el Big Data desaparece. Tenemos tantos datos, que no nos debe preocupar el equilibrio entre “datos de entrenamiento” y “datos para testar y probar el modelo y su eficiencia/precisión“. La optimización del rendimiento del modelo (el “Just Right” de la gráfica anterior) ahora se puede elegir con mayor flexibilidad, dado que podemos disponer de datos para llegar a ese punto de equilibrio.

Con este panorama de eficientes algoritmos (Machine Learning) y mucha materia prima para que éstos funcionen bien (Big Data), entenderán por qué no solo hay muchos sectores de actividad donde las oportunidades son ahora muy prometedoras (la sección “Rethinking industries” de la siguiente gráfica), sino también para el desarrollo tecnológico y empresarial, es una era, esta del Big Data, muy interesante y de valor.

El panorama de la inteligencia de las máquinas (Fuente: http://blogs-images.forbes.com/anthonykosner/files/2014/12/shivon-zilis-Machine_Intelligence_Landscape_12-10-2014.jpg)
El panorama de la inteligencia de las máquinas (Fuente: http://blogs-images.forbes.com/anthonykosner/files/2014/12/shivon-zilis-Machine_Intelligence_Landscape_12-10-2014.jpg)

En los últimos años hemos visto mucho desarrollo en lo que a tecnología de Bases de Datos se refiere. Las compañías disponen de muchos datos internos, que se complementan muy bien con los externos de la “Internet Social”. Así, el Machine Learning, nos acompañará durante los próximos años para sacarle valor a los mismos.