Websays: Inteligencia Artificial, Redes Sociales y Análisis de Datos

(notas para una entrevista de Documentos TV.)

¿Cuál es la utilidad de Websays?

Websays permite que las instituciones y las empresas entiendan qué opinan las redes sociales y la Web en general.

Existen más de 200M de blogs en el mundo, así como miles de páginas de “reviews”, con millones de comentarios sobre restaurantes, hoteles y todo tipo de productos. Cada minuto que pasa se publican más de 30M de mensajes en Facebook y más de 300,000 en Twitter. Y una gran parte de esas conversaciones son públicas. Se trata de mensajes que los particulares dirigen a empresas, instituciones o al público en general. Todo ello constituye una valiosísima fuente de información sin precedentes: información sobre nuestras preocupaciones, sobre nuestras intenciones, sobre nuestras emociones.

El problema radica en que es tal la cantidad de conversaciones y de opiniones en la Web que necesitamos una tecnología punta para captar y analizar esa masa de información.

Y no es tarea fácil. En primer lugar hay que rastrear millones de páginas web, noticias online, blogs, forums y redes sociales, en tiempo real. Después, se debe filtrar la información para retener sólo la parte que nos interese, acerca de un tema, una marca, un individuo específico. Y ello resulta extremadamente difícil porque el lenguaje humano resulta muy ambiguo para los ordenadores.

Lo veremos claro con un ejemplo. Si quisiéramos saber qué opina la gente sobre la marca de ropa “Mango”, tendríamos que eliminar todas las conversaciones sobre la fruta –el mango- todas las menciones de restaurantes y bares que se llamen así…

Una vez se han filtrado adecuadamente las conversaciones, comienza el trabajo más difícil: el análisis que permita convertir los miles de conversaciones en unos pocos indicadores, tendencias, rankings… en definitiva la elaboración de un resumen de la información y la extracción de conclusiones.

Estas tareas deben realizarse miles de veces por día (en tiempo real), analizando millones de mensajes. Y, dada la enorme cantidad de conversaciones y la necesidad de conseguir datos inmediatos, es necesario que esa tarea se realice de un modo automático, mediante algoritmos1 distribuidos en muchos ordenadores (las famosas “granjas de ordenadores” que soportan “la nube”).

Sin embargo, la tarea es tan difícil que los algoritmos de que disponemos hoy en día no son capaces realizarla. A día de hoy no existe un algoritmo capaz de entender nuestras opiniones escritas y resumirlas fehacientemente. De ahí que utilicemos un equipo de analistas (humanos) que están continuamente mirando los datos y corrigiendo los errores de los algoritmos. Y a su vez utilizamos técnicas de inteligencia artificial para que los algoritmos aprendan de sus propios errores, y no los repitan.

¿ Cómo se pueden medir las palabras, cómo se puede medir el lenguaje?

Cuando alguien analiza cientos de opiniones escritas sobre un tema determinado –por ejemplo leyendo una consulta abierta, leyendo tweets o comentarios de una noticia online-, esa persona puede hacer un resumen de lo que ha leído y explicar los aspectos más importantes de lo leído. Puede indicar, por ejemplo, si las opiniones son más bien positivas, si se trata de quejas y cuál es el objeto principal de la queja, cuáles son los temas que interesan o preocupan más, quiénes son los líderes de opinión, etc.

Un algoritmo básico para analizar el sentimiento (o la polaridad) de un mensaje sería, por ejemplo, tener una lista de palabras positivas y palabras negativas en el contexto de conversación. Por ejemplo, “fría” estaría en la lista negativa (para captar frases como “la pizza estaba fría”) y “estupenda” estaría en la lista positiva (para captar frases como “la pizza era estupenda”). Pero este algoritmo tiene muchos problemas y falla en muchas ocasiones. Por ejemplo no sabe tratar las negaciones (“no está sucio”), y más importante: no es capaz de tener en cuenta el contexto (“una pizza fría” es negativo, pero una “cerveza fría” es positivo neutro). Tendríamos que añadir millones de términos, reglas y excepciones a nuestro algoritmo para que empezara a dar resultados fehacientes. Hacer esto para tratar cada caso, cada cliente, simplemente no es posible.

La solución es utilizar técnicas de Inteligencia Artificial (en particular las técnicas del Aprendizaje Automático o Machine Learning) para que el propio programa analice miles de ejemplos y errores y deduzca sus propias listas de términos, reglas y excepciones. Cuantos más datos etiquetados y corregidos tenemos, mejor será el resultado final de los algoritmos.

¿Encuestas –las de toda la vida- o conversaciones en la red? ¿Qué tiene más valor?

No hay duda alguna de que las encuestas son una herramienta fundamental para entender la opinión pública. Hasta hace poco, además, eran la única manera de conseguir datos cuantitativos sobre la opinión, tanto en campañas políticas como en
estudios de marketing. Pero la realidad es que las encuestas están a menudo equivocadas 2, porque realizar una encuesta presenta en la práctica muchos problemas:

  • ¿cómo elegir las preguntas?
  • ¿cómo conseguir una muestra representativa de la población, aun coste económico asumible?
  • ¿cómo conseguir que los encuestados digan lo que en realidad piensan?
  • ¿cómo reducir las respuestas a tres o cuatro posibilidades?, o, por en contrario, ¿cómo analizar miles de respuestas libres?

Las redes sociales nos brindan una alternativa a las encuestas tradicionales. Nos brindan la oportunidad de escuchar lo que la gente quiere compartir, sin necesidad de forzar las preguntas. Tenemos también la posibilidad de ser activos: lanzar muchos mensajes al público y comprobar luego cuáles tienen mayor interés para ciertas audiencias.

Websays ha realizado múltiples experimentos de predicción de votos en los que demostramos que algunos indicadores de impacto en las redes tienen mayor capacidad de predicción de voto que muchas encuestas, incluidas en algunos casos las encuestas a pie de urna. El último caso fue el estudio que hicimos del referendum inglés del 2016 (Brexit), en el que Websays junto con el consorcio SENSEI de investigadores europeos predijo que el “no” al “sí”, contrario a lo que predecían todas las encuestas.

¿Un dato tiene valor por sí mismo?

Cada datos es diferente. De los datos que analizamos en Websays, que son
opiniones emitidas en la Web, un solo dato no tiene valor por sí mismo; el valor se obtiene cuando se cotejan grandes cantidades de datos.

¿Cuánto valen los datos en el mercado?

Naturalmente, depende. Depende de cada dato, de su valor intrínseco. De hecho se forman cadenas de procesado de datos, algo así como ocurre con las materias primas que son re-procesadas, re-combinadas y re-comercializadas muchas veces hasta que llegan al cliente final en forma de producto. Websays, por ejemplo, gasta una parte de su presupuesto en la recolección y compra de datos públicos, para luego filtrarlos, analizarlos y re-venderlos.

Nos encontramos en una fase muy inicial del mercado de datos de ese tipo y por ello resulta muy difícil estimar cuál pueda llegar a ser el valor total de ese mercado. En estos momentos el sector que utiliza principalmente ese mercado de datos es el del Marketing. Sin embargo, creemos que en los próximos años otros sectores -banca, salud, turismo- serán mucho más activos. En realidad resulta difícil imaginar que a medio plazo aún existan sectores que puedan prescindir del mercado de datos de opinión.

¿Qué datos deben ser abiertos o cerrados, públicos o privados? ¿Cómo responder a la preocupación social sobre el control de datos?

Se trata de preguntas muy complejas, susceptibles de muchas
interpretaciones y repercusiones, y, claro está, a esas preguntas no se puede responder de manera simple. Y, además, la tecnología de análisis de datos avanza con tal rapidez, que resulta prematuro intentar zanjar la cuestión. ¡Cuando llegamos a una respuesta adecuada, cambian las preguntas!

En el campo de las redes sociales está claro que nos encontramos en un periodo muy temprano, en un periodo de experimentación, en el que vamos descubriendo las posibilidades que ofrecen las nuevas tecnologías para la comunicación, la organización, el marketing, la política, las relaciones amorosas y absolutamente todos los aspectos de la vida social en general. Somos algo así como un niño en una tienda de juguetes, que quiere probarlo todo y que pasa de un juguete a otro a gran velocidad. Sin embargo, el poder de cambio de estas nuevas tecnologías es tal que en nuestras propias experimentaciones estamos consiguiendo muchos resultados que hasta hace poco eran impensables -tanto positivos como negativos- desde cambios de gobierno a cyber-bulling.

En esta situación, cuando algo va mal nos volvemos, indignados, hacia las empresas de Internet (Facebook, Twitter, Instagram, y tantas otras que están por llegar) considerándolas como una especie de bien común diseñado para servirnos. Por el contrario, hay que ser conscientes que Internet crece gracias a empresas tremendamente innovadoras que nos dotan de nuevos medios de expresión y de comunicación, pero que son empresas privadas, oportunistas, carísimas, y en busca de grandes beneficios.

Un ejemplo puede ser útil. En cualquier cartel electoral de España de los últimos años observamos tres elementos: un slogan, una foto de un candidato, y un hash de Twitter! Cada cartel de cada partido de cada calle de España es una invitación a comunicar por Twitter (o Instagram, o Facebook). Con ello, se consigue un aspecto positivo enorme: una capacidad de comunicación y debate sin precedentes. Pero no hay que olvidar que Twitter no es un bien común, ni mucho menos; es una empresa americana que cotiza en bolsa en los Estados Unidos y que tiene todo su derecho en hacer lo que le plazca con las opiniones que voluntariamente le entregamos.

Si de verdad creemos que esa comunicación directa por red tipo Twitter o Whatsapp es fundamental para nuestra democracia, tendríamos que tomárnoslo más en serio y deberíamos dotarnos de las herramientas de control adecuadas.

¿Qué valor tiene un algoritmo, hoy en día?

Si un algoritmo permite aumentar considerablemente las ventas de un producto, o reducir de un modo considerable los costes de una empresa, se le puede dar un valor comercial que puede llegar a billones de euros. Si un algoritmo detecta un cáncer terminal un año antes de que pueda hacerlo el médico, el algoritmo tiene un gran valor social o de salud pública. Si un algoritmo nos permite entender mejor la opinión del público, de los ciudadanos, sobre un acontecimiento político, tiene un gran valor social o político.

Como con todos los otros productos y servicios, somos los seres humanos quienes decidimos el valor de los algoritmos en función de lo que nos permiten hacer.

¿Los algoritmos sirven para todo?

Los algoritmos son recetas lógico-matemáticas y, por lo tanto, pueden resolver sólo aquellos problemas cuya solución sea reducible a un problema lógico-matemático.

Lo que ocurre es que, en estos últimos años, la cantidad de problemas que se pueden resolver con algoritmos ha crecido mucho y muy rápido, y se hace difícil saber dónde está la frontera. Actividades como conducir un coche, pasar un examen de medicina o analizar una situación política estaban, hasta hace poco, fuera de las capacidades de los algoritmos.

¿Puede equivocarse un algoritmo que funciona de forma autónoma?

¡Claro que sí! Se equivocan continuamente. Cuanto más difícil es el problema y menos son los datos disponibles, más se equivocan.

Una parte muy importante de la teoría del aprendizaje automático es cómo medir de manera eficaz la equivocación de un algoritmo, para así intentar reducirla.

¿Un algoritmo tiene ideología?

No creo que términos tales como ideología, intención, personalidad o creencia se puedan aplicar a un algoritmo. Todas esas palabras pierden su significado normal si intentamos aplicarlas a las máquinas actuales. Tal vez en el futuro, con máquinas o algoritmos muchísimo más complejos, se pueda formular esta pregunta. Hoy por hoy, la respuesta clara es que no.

Pero los algoritmos puedes estar “sesgados” en sus concepción y sus conclusiones. Por ejemplo, si creo un algoritmo que analiza la opinión que hay sobre un tema a partir de sólo los primeros 100 resultados en un buscador de Google, entonces estará sesgado a estos resultados e ignorará los miles de otros resultados. Si estos resultados representan además sólo una ideología, entonces los resultados del algoritmo estarán sesgados por esta ideología. Pero de ahí a decir que el algoritmo tiene una ideología…

¿Qué decisiones no deben tomarse en base a algoritmos?

No creo que exista una respuesta simple a esta pregunta. Cada caso es diferente. Los algoritmos son herramientas, y cuando un ser humano decide usar una herramienta, por la razón que sea, la responsabilidad final es del humano.

Habrá casos en los que los seres humanos podremos decidir que es mejor dejar las decisiones a un algoritmo, y habrá otros casos en que no.

¿Qué papel juega la ética en todo este campo, incluyendo “machine learning”, IoT, Inteligencia Artificial?

No soy un experto en ética. Es obvio que toda nueva tecnología puede utilizarse con fines éticos, o todo lo contrario. En Websays intentamos centrarnos en el uso de la tecnología con fines acordes con nuestra Ética. Las tecnologías que desarrollamos en Websays tiene un enorme potencial para aprender de la opinión de la gente y para mejorar procesos tanto políticos como comerciales. Por primera vez podemos incluir la opinión real de la gente directamente en un proceso de decisión. Creo que ahí se encuentra un tremendo poder positivo


  1. Utilizo la palabra algoritmo porque está poniéndose de moda y es bonita; se puede considerar un sinónimo de palabras como programa informático, receta detallada, o fórmula lógica-matemática
  2. Escribo esta frase el día de la victoria de Trump… la caída de las bolsas internacionales esta mañana es un claro indicador de 1) nuestra confianza en las encuestas, y 2) su escasa exactitud. 

Evaluación de Modelos: Clasificación Multi-Etiqueta, Precisión y Cobertura

Introducción

Trataré aquí el problema de escoger una medida para evaluar clasificadores en ciertas situaciones difíciles. Este problema parece trivial pero es todo lo contrario: es un problema difícil, incómodo y a la vez de importancia absoluta! Si no se aclara desde un principio, nos hará perder cientos de horas de trabajo y (peor!) confundirá a todo el mundo a nuestro alrededor.

Cuál es el problema? Tenemos un clasificador ya entrenado y un conjunto de test, queremos medir la calidad del clasificador para poder anunciar al mundo (al cliente, al jefe…) que nuestro clasificador es «buenísimo». O más comúnmente: vamos a prometer al cliente un nivel mínimo de calidad por encima del cuál podemos declarar el éxito del proyecto (y cobrar! o recibir aplausos, ascensos…)

Como muchos detalles difíciles, este problema parece trivial y aburrido y nadie quiere en un principio dedicarle tiempo… excepto los que saben. La realidad es que no se puede decidir la medida de evaluación sin antes considerar el problema en detalle. La clave aquí está en entender las posibles salidas esperadas del sistema (clases o etiquetas, output space, desired output, true output, true labels).

NOTA: En este artículo me refiero a veces a la clasificación de «documentos», pero todo el contenido aplica de manera general a cualquier otro «objeto» que se vaya a etiquetar, como frases, imágenes, o representaciones de objetos o estados (any input pattern).

Multi-Clasificación

Los problemas de multi-clasificación son problemas en los que todos los objetos son etiquetados con una (y sólo una) etiqueta (label), que toma valores en un conjunto pre-definido (ver Wikipedia).

En los problemas de multi-clasificación la medida natural de calidad es lo que comúnmente llamamos «precisión» «exactitud» o «tasa de acierto» o «porcentaje de correctos» (accuracy, o probability of good classification (PGC) en inglés). La palabra precisión en este caso es ambigua así que utilizó «exactitud» para ser más preciso, y la abreviación PGC:

exactitud = precisión «Común» =  tasa de acierto = accuracy =

PGC = |documentos probados correctos| / |documentos probados|

En este caso el «porcentaje de error» es exactamente 1-PGC.

El Problema de la Precisión Desequilibrada

La exactitud o precisión esconde una trampa mortal: la precisión desequilibrada.

Se dice que tenemos un conjunto «desequilibrado» (unbalanced set) cuando un gran porcentaje de documentos son de una clase y el resto de clases sean minoritarias. Los conjuntos desequilibrados no son la excepción sino la norma en muchos tipos de problemas de clasificación. Por ejemplo, en problemas binarios con una gran mayoría de negativos (e.g. detección de spam, detección de gatos en fotos familiares…).

En el caso de conjuntos desequilibrados la exactitud pierde su interés como medida de evaluación, porque si se clasifica todo siempre con la clase más común, se obtiene una exactitud muy alta.

Ejemplo: Queremos evaluar un clasificador de spam con un conjunto de prueba de 1M de documentos en los que hay 1000 de spam. La precisión de un sistema que nunca detecta spam sería del (10E6-10E3)/10E6= 0.999.

En estos casos la exactitud nos dará una  impresión de calidad completamente falsa. Peor aún: cuanto mejor seamos detectando los casos difíciles, peor será la exactitud de nuestro sistema. Necesitamos otras medidas!

Solución 1: Coste Asimétrico

Si podemos asignar una sola etiqueta a cada documento, entonces el problema de la precisión desequilibrada se puede solucionar fácilmente ponderando los errores de cada clase con una «matriz de coste». Basta definir el coste de cada tipo de mala clasificación, y calcular la media de precisión ponderada por este coste.

falta ejemplo!

Solución 2: precisión y cobertura

Además de la exactitud, existen otras medidas de evaluación. En particular hay dos medidas que nos serán muy útiles en el caso de multi-clasificación:

precisión (precision): “Proporción de etiquetas correctas respecto a las generadas»

cobertura (recall) : “Proporción de etiquetas correctas respecto a las deseadas»

(vemos que se redefine el término «precisión», que ya no es igual a la exactitud.)

La precisión como la cobertura son complementarias: es fácil aumentar una disminuyendo la otra. Por ejemplo, un sistema “conservador” preferirá hacer el mínimo número de predicciones para no errar; en ese caso su precisión será alta pero su cobertura baja. Al contrario, un sistema que genere una gran cantidad de etiquetas aunque no esté seguro dará una alta cobertura pero una baja precisión.
Formalmente: Tenemos un conjunto de prueba de tamaño n con p casos de la clase A y n-p ejemplos de la clase no A. Nuestro clasificador etiqueta los n casos, etiquetándolos como K’ o no A’. El resultado final es el siguiente:

A no A
A’ tp (true positive) fp (false positive)
no A’ fn (false negative) tn (true negative)

donde tp+fp+fn+tn=n, p = tp+fn, n-p = fp+tn.

Ahora podemos definir formalmente la precisión y la cobertura de la clase A en el conjunto de prueba como:

precisión (precision) = tp / (tp+fp)

cobertura (recall) = tp / (tp+fn)

Para combinar ambas medidas en una se utiliza la media armónica1 de ambas, llamada medida F1

F1 = 2 * (precision*recall)/(precision+recall)

Hay que tratar dos casos especiales:

  • si no hay positivos (p=0) la cobertura no está definida. Lo mejor en este caso es eliminar la etiqueta completamente de la prueba. Si esto no fuera posible, se fijar arbitrariamente a 1 para que no penalice la media (aunque esto la sube artificialmente!)
  • si el clasificador no etiqueta ningún documento con la clase (tp+fp=0), la precisión no está definida y se fija arbitrariamente a 1 (si no dices nada no te puedes equivocar…)

Clasificación Multi-Etiqueta

Cuando un objeto puede ser clasificado con cero, una, o más de una etiquetas, nos encontramos en un problema de clasificación automática. En estos problemas la evaluación se complica.

Porqué? Veamos un ejemplo:

Imaginemos que un documento debería ser etiquetado con las etiquetas A,B y C. Pero el clasificador le ha asignado las etiquetas A y D. Qué precisión damos a este resultado? Cuántas etiquetas están bien? 1 de 3? 1 de 2? 1 de 4?
Una solución es aplicar estrictamente la regla de precisión anterior y decir simplemente que el documento está mal etiquetado (era A-B-C, no A-D). Pero de hecho hemos acertado la A, es decir que nuestro clasificador es mucho mejor que un clasificador que dijera por ejemplo D-E-F-G. No parece muy útil asignarle precisión 0 y obviar que parte del problema se ha resuelto bien. Esta solución casi nunca es utilizada2.

Otra alternativa es calcular la exactitud «por etiqueta». Es decir, consideramos cada clase por separado como si se tratara de una clase binaria y luego sacamos la media. Pero ahora nos enfrentamos al problema de la precisión desequilibrada en cada una de las etiquetas! Y la definición de una matriz de coste es mucho más compleja porque además de las substituciones (A en vez de B), tenemos adiciones (A y B) y borrados (ni A ni B).

En la práctica la exactitud (o precisión común) no resulta una medida de evaluación útil y tenemos que pasar a medidas más complejas, en particular la precisión y la cobertura que vimos anteriormente.

Promedios Micro y Macro

La solución más comúnmente adoptada es calcula la precisión y cobertrua de cada etiqueta por separado, y luego calcular una media ponderada. Pero no hay un consenso de cómo se deben calcular las medias y en qué orden. Lo cierto es que llegando aquí el caos es total: cada uno calcula lo que quiere en el orden que quiere, a menudo usando términos incorrectos y sin definir las medidas. Numerosos paquetes de cálculo tienen errores o tratan los casos indefinidos de manera diferente, sin documentarlo. Tendrás que tener especial cuidado3

Existen dos maneras de calcular las medias:

Promedio Micro (micro-average): promedio ponderado por la frecuencia de cada etiqueta (da más importancia a las clases menos frecuentes y en general más difíciles)

Promedio Macro (macro-average): promedio ponderado de cada resultado (da más peso a las etiquetas más comunes).

Más exactamente, si tenemos clases C=(1,...,k) con tamaños (p_1,...,p_k), y obtenemos las precisiones (prec_1,...,prec_k), y las coberturas (rec_1,...,rec_k), entonces tenemos:

precisión media (micro) = \frac{1}{\sum_j p_j}\sum_i p_i \cdot prec_i
precisión media (macro) = \frac{1}{k}\sum_i prec_i

y de igual manera con la cobertura, remplazando en las formulas (prec_1,...,prec_k) por (rec_1,...,rec_k).

Hay que calcular por lo tanto para cada etiqueta su precisión y cobertura y su tamaño p. Luego calcular las medias macro y micro de precisión y de cobertura. Finalmente calcular el macro y micro F1 resultante.

Recomiendo siempre mirar los valores de precisión y cobertura para cada clase y por medias micro y macro, resumidas en dos tablas. Si resumes en un sólo F1 el resultado de toda la evaluación quedarás ciego, no sabrás ni qué está pasando con el clasificador ni qué está pasando con la medida de evaluación que utilizas.

Clase Tamaño Precisión Cobertura F1
clase 1
clase 2
…|…

y

Macro Precisión Macro Cobertura Macro F1 Micro Precisión Micro Cobertura Micro F1

  1. otras medias son posibles para ponderar más la precisión o la cobertura, ver aquí
  2. Esto es equivalente a reducir el problema de la multi-clasificación al problema de la clasificación, donde ahora cada subconjunto de clases en una nueva clase. Es una opción, pero muy estricta! En la práctica esta solución es útil solamente si una combinación de clases es incorrecta por tener una clase mal. Considera por ejemplo un compuesto químico en el que tener un solo elemento mal es suficiente para invalidar todo el resultado. 
  3. Por ejemplo SciKit propone 5 maneras de calcular la media, pero en todas ellas calcula las medias de F1 en vez de calcular la media de precisión y cobertura antes… Tampoco la documentación explica qué hace con los casos indefinidos.