Mostrando entradas con la etiqueta Big data. Mostrar todas las entradas
Mostrando entradas con la etiqueta Big data. Mostrar todas las entradas

13 diciembre 2018

Data Augmentation en Datahack Sur

Con esa sesión la academia en Big Data y Analytics Datahack en su delegación en Sevilla pone fin al ciclo de jueves que desde principio de noviembre nos ha regalado con clases magistrales de algunos de los profesionales y, a la vez, profesores en los masters que ofrece.

Esta semana Francisco Rodríguez, data scientist en Telefóncia I + D y profesor que tendremos en el módulo de Machine Learning en los próximos meses nos habló de la Data Augmentation.


data augmentation datahack
En su presentación nos ofreció casos reales en los que ha trabajado y para los cuales tuvo que "crear" un método pues, no contaba con suficientes datos para poder llevarlo a cabo, y de esta manera nos explicó la ayuda que la data augmentación ofrece..., o que, traducido al español significa aumentar datos.

¿En qué consiste? Pues en una metodología, dentro de los aprendizajes de Machine Learning, y en concreto los de aprendizaje supervisado, en los que se necesitan más datos de los que disponemos para crear un modelo. Ejemplo: podria ser el caso de reconocimiento de fotos para que entrenar al modelo con pares de imágenes etiquetadas según un concepto; Y claro, no siempre disponemos de cientos de miles de datos que nos de esta información, luego tenemos que "inventar" o "crear" esos datos con las variaciones, ruido, calidades y distorsiones que en la vida real pudieran producirse.

En realidad esto es más común de lo que pudiéramos pensar, porque solo las grandes empresas con bases de datos de millones de imágenes puede hacer, Google Maps - Street View, para calles, por ejemplo, disponen de esta posibilidad.
Francisco también nos comentó otros recursos como Imagenet que dispone de más de 14 millones de fotos etiquetadas, pero aún así no es suficiente
.
Por otra parte podemos recurrir, en caso de reconocimiento de textos, a aquellos documentos que han sido traducidos con el mismo contenido a varios idiomas, sería el caso de los que la UE pone a disposición en su portal. Google usa Neural Machine Translation para este otro tipo de casos.

En definitiva y si hay que dar una definición exacta, Data Augmentation es crear datos sintéticos a partir de datos que ya tenemos.

Estrategias.

Nos explicó dos, una basada en transformaciones, en el caso de fotos, por ejemplo la de un gato, hacer cambios a aquellas fotografías con distintos niveles de zoon, color, luz, giros, etc; de esta manera a fuerza de entrenar la modelo se crearían esos algoritmos que permitan aprenderlo.

Otra estrategia seria hacer clasificaciones trabajando con datos que venga con fuentes diferentes (cámaras profesionales o cámaras para móviles), y esto es muy importante también si pensamos en crear un modelo que va a a trabajar con teléfonos móviles, en tal caso tenemos que tener mucho cuidado de que las fotos no vengan de cámaras profesionales.

Lo ideal sería hacer fotos con el mismo móvil con el que queremos crear el modelo.

Como ejemplo de su trabajo nos puso tres casos, un trabajo que le encargaron a su equipo para detectar matrículas de coches, usaron un formato de caja grande a caja pequeña, es decir, primero detectar en el vehículo la zona donde está la matrícula, luego, en ella, cajas pequeñas como serían cada uno de los dígitos que la componen y sus letras, para ello construyeron muchos datos para entrenar el modelo a la manera "frankestein" ya que consistía en crear muchas matrículas para el dataset de entrenamiento construidas con partes de otras matrículas (dígitos y letras).

Y por otra parte, usando la data augmentation para crear otras matrículas combinando letras y números usando la misma tipografía que tiene las matrículas, pero con variaciones añadiendo ruido como manchas, rayas, ligeros cambios de posición, alturas, etc. Cuando probaron el modelo con datos reales llegaron a un acierto entre el 90 y 97% según el sistema que emplearon.

Detector de matrículas con data augmentation
Detector de matrículas con data augmentation

Otro de los trabajos en los que ha puesto en practica sus conocimientos fue la corrección de errores ortográficos, y ya que no existe una base de datos de los mismos, crearon pares de frases, como por ejemplo nombres y apellidos emparejándolas con otros nombres y apellidos que tenían las mismas letras pero con ligeros errores o aquellos errores comunes que los lingüistas están acostumbrados a detectar. Fue interesante esta prueba porque para casos en los que cambiaba una sola letra, el modelo llegaba a muy buenos aciertos, pero, incluso en los casos en los que metía mucho ruido, por ejemplo cambiar no solo varias letras sino poner letras de un nombre entremetidos en los apellidos, etc, el modelo se esforzaba en ofrecer un nombre muy parecido al original verdadero, en dichos casos era lógico que el "ruido era excesivo". En otros casos el modelo se equivocaba porque se forzaba a traducir un nombre, como Antoni en catalán y lo devolvía como Antonio en español. Todo este tipo de casos nos da una muestra de todas las variables que tenemos que tener en cuenta. A pesar de todo, el grado de acierto se llegó entre el 84% y 89 %

Como no existe un data set de errores de personas, pero lo que se puede hacer combinaciones con los errores que normalmente se cometen.
De un nombre correcto, se crea el -> augmented -> (incorrecto) para cada elemento generar otro.

Un último ejemplo que puso, pero en el que no ha trabajado fue la clasificación de curriculums, ya que, normalmente éstos están divididos en los mismos aparatos de siempre, datos personales, formación, experiencia, etc. Pues bien, se crearon datos cortando estas partes y creando otros curriculums con ellas también para crear más datos de entrenamiento.

Y bien, ya tenemos los datos que nos faltaban para tener cientos de decenas de miles (por lo menos) con los que trabajar nuestro modelo, ¿Donde se mente y qué cantidad? Nos podemos preguntar y de hecho, una compañera del master hizo. Francisco contestó: -"pues en el set de entrenamiento, nunca en el set de validación y tampoco en el Test Set donde se prueba el modelo final elegido". Tiene su lógica, es más es conveniente probar con seres humanos incluso los errores que comete en comparación con los cometidos con este tipo de datos por el modelo.

Conjuntos de datos para validar el modelo
Conjuntos de datos para validar el modelo

Es decir, si normalmente para un entrenamiento de machine learning con data real tenemos tres partes en los datos, con la data augmentation tendremos cuatro tipos de datos con los que trabajar. y en cuanto a cantidades y porcentajes, no quiso dar una cantidad fija, simplemente tener en cuenta que si en el validación tenemos 5 datos, si uno está mal, ya tenemos el 20% del modelo invalidado, es una exageración, claro, pero si, a partir de mil datos reales para las partes de validación y test, ya podemos meter con tranquilidad todos los datos "creados" en el set de entrenamiento.

Francisco también nos habló de los distintos problemas que podemos tener, como son el Overfiting, es decir que el modelo memorice las respuestas, pero no aprenda ante casos nuevos; el Underfitting. cuando ha sido tan débil el altgorismo que ni siquiera puede clasificar una vez que se "saca de la caja" y el Data Mismatch, en el que los datos "aumentados" son tan diferentes de los datos reales que resulta inútil usarlo.
También nos puso ejemplo de sus trabajos como matrículas "machacadas" que eran imposibles reconocerse o aquellas matriculas que nos se detectaban porque algunas tenía una sombra superior, estudiando estos errores, pero solo una pequeña parte, por supuesto, decidieron reducir y cambiar la forma en que se generaban las matriculas añadiendo a éstas sombra, pero no hicieron lo mismo con las matrículas rotas o deformadas, porque sería llevar el modelo con ruido a un extremo excesivo. Todo tiene su medida.

De hecho para optimizar el trabajo dio una serie de consejos.

  1. Evitar traer suposiciones o sesgos, como por ejemplo no pensar que aún existen en circulación coches con matrículas antiguas, es decir la letra de la provincia seguida de número, cosa que no pensaron.
  2. Actuar con Ideas simples, y actuar rápido. Ejemplo no implementar los errores de matriculas "machadas", por su complejidad en abordarlo, coste excesivo y bajo porcentaje en los errores.
  3. Metodología correcta. Como puede ser el uso ponderado de los datos en cada set, el proceso de etiquetado, etc.
  4. Hacer análisis error. Usar humanos para confirmar que algunos errores son inevitables, o corregir en la medida de lo posible, como dijo antes, los segos o detectar como mejor los datos aumentados.

Finalizó su exposición, con otros casos como la Red neuronal, Las Generative Adversarial Networks,  o el llamado Generative adversarial networks (GANs) que aunque salía del tema de la exposición, personalmente sentía mucha atracción, como es el ejemplo de generar imágenes de personas automáticamente, llegando a extremos en los que podríamos dudar, efectivamente que es la foto de una persona que realmente existe. o convertir y transformar incluso vídeos como puede ser un caballo corriendo convertido en una cebra, hasta el punto que incluso los detalles del fondo son modificados por la máquina, como puede ser cambiar la hierba verde por pasto seco de la sabana.



Pues lo dicho, con muchas ganas de volver a ver a Francisco como profesor el master de Datahack y seguir aprendiendo de su experiencia profesional. Y aunque las sesiones abiertas al público en general se han acabado por ahora, podéis escribir a su correo y manteneros informados de otros meetups que pudiera organizarse para el próximo curso.
Artículo: Red neuronal creando caras de personas.

08 diciembre 2018

23 noviembre 2018

Analizando datos con Python, por Antonio Marín

Dentro de la serie de Meetup que datahack Sur está realizando este curso, el pasado día 22, Antonio Marín hizo una demostración de como se puede analizar una base de datos en bruto y convertirla en información valiosa para una empresa.

Antonio, CEO de DSC Energy nos explicó en una primera parte qué era Python, nos contó que su creador desarrolló este lenguaje con la idea de que fuera fácil de aprender y de usar, y no solo es popular por una gran comunidad de usuarios, sino que además grandes empresas como Facebook o Google participan aportando recursos para que siga evolucionando. Cuenta con más de 140.000 librerías. Es eficiente, fiable y accesible.

Antonio Marín y asistentes a Jueves de Datahack en Sevilla

Nos explicó alguna de sus librerías más usadas, habló de Panda, de Matplotlib, de Seaborn y Anaconda.

Nos quiso dejar claro un par de cosas, la primera es que una exploración de los datos, llamada EDA (Exploratory Data Analytics) es esencial antes de trabajar con los datos y tan siquiera antes de imaginar el modelo, y por otra parte, también es importante antes de ponerse a trabajar es definir bien el problema, lo ideal es que el cliente te lo plantee, hecho esto será más fácil enfocar el objetivo.

¿Qué es big data? - "Es todo aquello que no cabe en una hoja de Excel"

En la segunda parte se planteó el ejercicio de demostración, imaginando por ejemplo que una empresa necesita saber como está el mercado de la clase de productos que vende y la competencia en un país en el que pretende introducirse;, pues bien, gracias a que existen países con transparencia en datos, se pudo acceder a los datos de la aduana de dicho país y extrayendo los códigos del tipo de producto en el que la empresa está especializada, a través de una serie de pasos se llegó a la visualización para el cliente de gráficos temporales de precios de los productos a los cuales se están comercializando y hasta la cantidad vendida por la competencia.

Visualización de datos con Python por Antonio Marín

Para mí, esta demostración fue nada más que suficiente para comprender lo importante que es actualmente tratar la información, y a la vez que esta sea una información abierta y transparente.

Próximamente, Antonio, que él mismo se grabó su exposición, subirá el vídeo completo para que podáis también comprender y entender la extraordinaria herramienta que es Python para estos tipos de trabajo.

26 octubre 2018

Machine Learning, introducción de Alejandro Arranz

Uno cuando lee artículos de Machine Learning puede quedar impresionado por los casos que describen en sus logros gracias a los altgorismos que emplean, pero Alejando Arránz quiso quitar tanta "mitología" y desarrolló su charla como de una manera más sencilla y cercana haciendo una introducción a los de conceptos básicos que emplea

Se presentó como informático programador que trabaja en Datahack Labs en labores de consultoría aunque también daba algunas clases, pero no era su principal función, además nos dijo que no se consideraba más inteligente que los demás sino que simplemente le pone empeño a las cosas en las que trabaja.

Alejandro Arranz
Alejandro Arranz


Empezó con dos definiciones de Machine Learning; la primera como "La ciencia (y el arte) de programar máquinas de manera que estas puedan aprender a partir de los datos".

Por "arte" él entiende que no hay una lista de reglas, sino que depende de los problemas que uno se enfrenta; uno va, con la práctica, creando estrategias y trucos que has experimentado en otros problemas similares, pero no existe un libro donde estén todas las soluciones.

Nos dijo que las personas que se adentran en el mundo del Machine Learning y vienen la parte técnica y de programación, informática, ingeniería... se tienen que enfrentar a un nuevo paradigma porque están acostumbrados a escribir órdenes para máquinas, pero si se enfrentan a Machine Learnin y surgen discrepancias a lo esperado no debe de entenderlas como errores cometidos en su "programación" sino que es la máquina la que va aprendiendo con los datos produciendo "resultados inesperados". No so fallos en "su programación".

Meetup con asistentes a Introducción Machine Learning en Datahack Sevilla
Meetup con asistentes a Introducción Machine Learning en Datahack Sevilla
Otra definición que dio para ML, un poco más técnica, era considerar la fórmula ETR.
E de Experiencia. cuanto más datos vea la máquina con relación a una T (tare) mejor va a ser los resultados (R)

Alejandro nos explico que el ML no es algo nuevo, o por lo menos los fundamentos de su uso se empezaron a usarse cuando los correos se empezaron a llenar de spam y algunos mensajes eran clasificados como tal por detectar palabras y expresiones comunes siguiendo un proceso.

- Detección de palabras
- Codificar algoritmo de detención para todos los patrones detectados.
- Probar el programa y repetir los dos pasos anteriores hasta que el resultado sea bueno.

Este proceso heredado del filtro de correo que ha heredado Machine Learning se le añade un elemento más llamado "Entrenar al modelo" (modelo matemático), que busque patrones y que sean más efectivos que el que haríamos nosotros y, además, se añade una tercera ventaja: la adaptación al cambio, ya que pueden aparecer nuevas reglas. El modelo tiene que aprender y adaptarse.
Pero cuidado, siempre tiene que haber un control para vigilar los datos que le suministremos porque puede ocurrir a veces como le ocurrió a un bot de Microsft, que aprendió de una manera tan inesperada que, al cabo de 24 horas la conversación con el robot, sus expresiones y mensajes derivaron en comentarios machistas, agresivos y xenófobos.

Hubo comentarios y preguntas a Alejandro durante su exposición con dudas y él confirmó algunos casos de errores en la identificación de patrones, como clasificar a dos personas negras como gorilas o el caso que uno de los asistentes comentó casos de machismo, pero dijo que el problema viene más de los sesgos de los datasets que se suministran a las máquinas, más que errores "de programación" (?)

Otras de las preguntas que se hizo era si era siempre necesario la intervención humana par vigilar al modelo, y confirmó que sí, que, a veces hay que realizar ciertos ajustes revisando los resultados y que las predicciones que está dando el modelo son persistentes y si los datos que se le suministra también lo son.

La máquina no solo aprende, el humano también aprende porque puede llevarnos a descubrir tendencias o relaciones que no sospechaba siquiera.

¿Cuando es buen momento para usar Machine Learning?
Cuando nos enfrentemos a problemas cambiantes, que necesiten muchas reglas, muchos datoss o sea humanamente muy difícil hacerlo.

Problemas y tipos de aprendizajes en Machine Learning


APRENDIZAJE SUPERVISADO Y TAMBIÉN PARA APRENDIZAJES NO SUPERVISADOS.
Para explicarlo introdujo dos conceptos, el de FEATURE y el de LABEL=TARGET.

Por feature explicó que serían los datos que se suministra, en caso del correo, sería por ejemplo, cuerpo del correo, asunto, la ip, etc, es decir, los datos que se le van a pasar. Y el LABEL o TARGET sería el resultado a lo que el modelo llegue, en caso del correo sería si es SPAM O NO SPAM.

En el aprendizaje supervisado es el humano el que ayuda al modelo dando las features y tambien las labels.

Sin embargo cuando se aplica el modelo hay que tener en cuenta que pueden surgir problemas, cuando los datos son insuficientes datos y si tenemos muchos o demasiados, ver que tipo de algoritmo puede ser mejor (según la cantidad).

Problemas con los datos
Distintos roblemas con los datos

Otro problema puede ser que lo datos no son representativos, y puso un caso ¿La satisfacción en la vida está relacionada con la renta percápita? y nos mostró un gráfico donde, con los datos reales (puntos azules) se elaboró un modelo diciendo que efectivamente, los países con renta per cápita lo eran, pero el problema se descubre que los datos no son representativos porque con el tiempo, las pruebas de nuevos resultados otros paises resultaron, que diendo más ricos, no estaban tan "feliz de la vida"
(eso se llama sampling noise).
Otro caso seria el sampling bias, cuando la muestra es grande pero el método no es adecuado, no había representativo.

Más problemas, com que se suministren Datos de baja calidad, como outliers que son valores que están muy distantes de los valores medios de la representación. ¿Pero como se gestionan? Se eliminan; pero ¿cómo definirlos? Depende del problema.

los Missig values, por ejemplo registros a los que le faltan algunos huecos, normalmente se dan valores concesuales, o entrenar modelos imputando valores disintos para distintos modelos.

Features irrelevantes. Por ejemplo meter en una base de datos del cliente el nombre del perro. o que países son más felices según las letras que contiene su nombre.

Pero también puede no existir correlación con una causa aparente. Puede existir otras variables ocultas que relaccione una causa con un resultado.
El machine learning dará variables lineales, el deep learning si daria las no lineales.

No solo con los datos podemos tener problemas, también puede ser por los altgoritmos los que nos den quebraderos de cabeza, lo llamados el OVERFITTING, es el riesgo de generalizar y no predecir nada más que los datos que le dan en el entrenamiento. Cuanto más complejo sea el modelo más fácil encontrar relaciones no lineales. Para ello suministraremos más datos.
Otra manera de solucionar el overfitting seria introducir REGULARIZACIÓN, es decir, limitar la libertad del modelo.

UNDERFITTING, otro problema porque se puede dar el caso de tener un modelo tan simple que no abarca la complejidad de los datos que manejamos. La solución sería si hemos metido regularizacion, aflojarla para dar más libertad al modelo.

Alejandro terminóo la última parte de su charla sobre Machine Learning hablando de TRAINING, VALIDACIÓN Y TEST

Pero no se quiso despedir de nosotros sin antes confesarnos que él fue alumno también de Datahack, nos enseñó hasta su diploma, y nos dio varias razones, eligió este máster por los profesores que lo imparten, auténticos profesionales dentro de su sector, por la parte práctica de las enseñanzas, por el trato humano que recibió desde el primer día y porque es un máster vivo, en continua mejora y cambio donde al alumno se le escucha para seguir mejorando.

Merchandaising Datahack
Regalitos, merchandaising que regaló Datahack a los asistentes
VIDEO próximamente: (Se está editando para solucionar un problema de sonido). Mientras se mejora podéis ver esta otra charla que dio en Madrid con relación al mismo tema.