En 2015, se llevó a cabo una encuesta sociológica en Austria, centrada en comunidades que instalaron sistemas fotovoltaicos colectivos, con el objetivo de analizar qué tipo de personas participan en este tipo de actividades cooperativas. Los participantes fueron preguntados acerca de sus actitudes hacia aspectos como la protección del medio ambiente, los activos financieros, la confianza en el progreso técnico, la autonomía energética, entre otros. Estos aspectos fueron evaluados en una escala gráfica, que luego fue convertida en una escala Likert con valores nominales, desde 1 hasta 5.

La investigación muestra cómo estos datos deben ser procesados previamente para que puedan ser utilizados en un análisis mediante métodos de aprendizaje automático. El conjunto de datos obtenido, aunque pequeño, sirve como un buen ejemplo introductorio de cómo se aplican los principios fundamentales del aprendizaje automático. El conjunto de datos está organizado en lo que se denomina un objeto DataFrame, generado con el módulo de análisis de datos en Python, pandas (https://pandas.pydata.org/). Cada fila del DataFrame representa un individuo encuestado, y las columnas contienen las características que permiten describir cada caso, mientras que las celdas contienen los atributos específicos de cada característica.

En este caso, la primera columna del conjunto de datos es denominada "target" y contiene información sobre la decisión final de los encuestados: si adoptaron o no el sistema fotovoltaico. Este valor es representado con los números 1 para aquellos que adoptaron y 2 para los que no adoptaron, lo cual es una codificación poco común en el contexto del aprendizaje automático, donde usualmente se emplean los valores 1 y 0 para los valores booleanos.

Además, es común encontrar valores como -999.000000 en el conjunto de datos, lo cual indica que no se obtuvieron respuestas claras en la escala Likert. En el contexto de las ciencias sociales, estos valores pueden ser tratados sin mayores inconvenientes para la interpretación de los datos, pero en el aprendizaje automático, la presencia de estos valores podría inducir a error. Por lo tanto, es necesario procesar estos valores erróneos o ausentes para evitar que interfieran con los algoritmos de análisis.

El procesamiento de los datos erróneos se realiza típicamente durante la fase de preprocesamiento. Un ejemplo de cómo manejar estos valores problemáticos se muestra en el código proporcionado en la figura 21. Este código sustituye las respuestas erróneas por "NaNs" (Not a Number) y luego reemplaza los "NaNs" con el promedio de los valores correspondientes dentro de cada grupo de datos relacionados con una misma decisión (adoptaron o no). Este tipo de corrección es fundamental para asegurar que los algoritmos de aprendizaje automático no sean engañados por datos que no representan información válida.

Una vez que los datos han sido limpiados y ajustados, se puede proceder a aplicar técnicas de aprendizaje supervisado, un enfoque en el que los algoritmos buscan patrones y relaciones entre las características de los datos y los valores de "target" (decisión de adopción). Este proceso permite construir un modelo predictivo capaz de generalizar la información contenida en el conjunto de datos y prever decisiones de individuos cuyas características se conocen, pero sin información sobre su decisión final.

El aprendizaje supervisado se basa en identificar cuáles de las características del conjunto de datos son más indicativas para predecir el valor de la variable objetivo. En este sentido, se emplean técnicas como la ganancia de información, que mide la correlación entre las características y los valores objetivo. Para calcular esta ganancia de información se utilizan métricas como el coeficiente de Gini o la entropía de Shannon.

En el caso del ejemplo de adopción fotovoltaica, al analizar un conjunto de datos más reducido, es posible observar que ciertas características, como la edad, parecen estar más correlacionadas con la decisión de adopción que otras. Por ejemplo, se observa que las personas mayores de 40 años tienen más probabilidades de adoptar un sistema fotovoltaico. Este tipo de análisis resulta intuitivo en conjuntos de datos pequeños, pero en conjuntos grandes, con cientos de características y miles de instancias, la identificación de patrones relevantes es mucho más compleja y requiere de herramientas avanzadas para derivar correlaciones precisas.

Las métricas como el coeficiente de Gini y la entropía de Shannon son fundamentales para este tipo de análisis. El coeficiente de Gini se usa para medir la desigualdad en la distribución de los recursos, y en el contexto del aprendizaje automático, se aplica para determinar qué características son más útiles para la clasificación de datos. Un valor de Gini cercano a 0 indica que una característica es altamente informativa para predecir el valor de "target", mientras que un valor cercano a 1 indica que la característica no aporta información relevante.

De manera similar, la entropía mide la cantidad de incertidumbre o desorden en un conjunto de datos. En términos de aprendizaje automático, una entropía cercana a 0 significa que la característica es extremadamente útil para predecir el valor de "target", mientras que una entropía cercana a 1 indica que la característica no proporciona ninguna ventaja para la clasificación.

Estas métricas de información son utilizadas para construir árboles de decisión, que representan visualmente las reglas que el modelo ha aprendido para predecir el valor de la variable objetivo. Un árbol de decisión comienza en un nodo raíz, que representa el conjunto de datos completo, y se divide en ramas en función de las características más indicativas, creando un modelo jerárquico de decisiones.

Una vez que el árbol de decisión ha sido construido, puede ser utilizado para clasificar nuevos casos cuyas características son conocidas, pero cuyo valor objetivo no está disponible. El proceso de ajuste y entrenamiento de estos árboles se realiza utilizando módulos de Python como scikit-learn, que ofrecen herramientas poderosas para llevar a cabo estos análisis de manera eficiente.

Es fundamental destacar que, en el proceso de aprendizaje automático, la calidad del modelo depende en gran medida de la calidad y el preprocesamiento de los datos. Es común que los conjuntos de datos contengan ruido o valores faltantes, por lo que realizar un preprocesamiento adecuado es crucial para el éxito del modelo. El aprendizaje supervisado, a través de técnicas como la ganancia de información y la construcción de árboles de decisión, ofrece una vía poderosa para predecir y generalizar decisiones colectivas, como la adopción de tecnologías fotovoltaicas, basándose en características sociales, económicas y demográficas.

¿Cómo separar características y objetivo en el proceso de entrenamiento de modelos de machine learning?

En el proceso de entrenamiento de modelos de machine learning, es crucial separar las características (features) de los objetivos (targets) antes de realizar cualquier operación adicional. Esto puede lograrse fácilmente con un simple fragmento de código en Python, utilizando la librería pandas, donde el objeto df contiene los datos. Las variables X y y son utilizadas para almacenar las características y los valores objetivo, respectivamente.

Una vez realizada esta separación, los valores en X deben ser transformados a una escala común. Aunque en algunos casos esto puede no ser de gran importancia, como en el conjunto de datos de adopción de energía fotovoltaica (PV), donde las características ya oscilan entre 1 y 5, existen situaciones en las que las diferencias de escala entre las características pueden generar problemas. Por ejemplo, si tenemos una característica como “Edad” que varía entre 25 y 51, y otra como “Saldo de cuenta” que varía entre 29,000 y 450,000, la diferencia de magnitud es tan significativa que podría interferir con los estimadores de machine learning, dificultando el proceso de aprendizaje. Estas diferencias de escala deben ser corregidas para que el modelo pueda aprender de manera efectiva.

Para corregir la escala de los datos, la librería scikit-learn ofrece diversas herramientas, como el StandardScaler, que transforma los valores para que estén distribuidos alrededor de una media de cero con una varianza unitaria. Es importante guardar este escalador después de ajustarlo a los datos, ya que será necesario para procesar cualquier conjunto de datos no visto anteriormente (datos de test), para que puedan ser clasificados adecuadamente utilizando el modelo entrenado.

En el siguiente paso, se debe entrenar un modelo utilizando un algoritmo de machine learning adecuado. Por ejemplo, el módulo de scikit-learn ofrece un clasificador de árboles de decisión que, una vez entrenado, puede clasificar datos para los cuales el valor objetivo es desconocido. El entrenamiento del modelo se realiza de manera iterativa, ajustando los parámetros del árbol (las ramas y los valores de división) en función de una función de ajuste. Es importante entender que el modelo resultante no será perfecto, lo cual no es un problema en sí, ya que el objetivo es que el modelo sea capaz de generalizar lo aprendido a nuevos datos. Si el modelo reproduce los datos exactamente, existe un alto riesgo de que haya sobreajustado el conjunto de datos, lo que se conoce como "overfitting". En este caso, el modelo sería incapaz de reconocer patrones en otros datos que no sean los mismos en los que fue entrenado.

Para evaluar el rendimiento de un modelo, se suele dividir el conjunto de datos en dos partes: el conjunto de entrenamiento y el conjunto de prueba. El conjunto de entrenamiento se utiliza para ajustar los parámetros del modelo, mientras que el conjunto de prueba se usa para evaluar cómo se comporta el modelo con datos no vistos. Una división común es la de 75% para entrenamiento y 25% para prueba, lo cual permite obtener una evaluación fiable sobre el desempeño del modelo.

El siguiente paso consiste en aplicar el clasificador, por ejemplo, un árbol de decisión, al conjunto de entrenamiento. A través de unas pocas líneas de código, se puede acceder a diversas herramientas de scikit-learn y probar varios métodos simplemente cambiando el nombre del algoritmo utilizado. Sin embargo, la mayoría de los clasificadores incluyen parámetros ajustables (hiperparámetros), como el criterio para medir la pureza de las características. En el caso del árbol de decisión, el criterio por defecto es el índice de Gini, pero también se puede cambiar a "entropía" para obtener diferentes resultados.

Una vez que el modelo ha sido entrenado, es esencial evaluar su rendimiento utilizando las métricas estándar de evaluación en machine learning: precisión, recall, exactitud y f1-score. La precisión refleja la cercanía entre las predicciones del modelo y los valores reales. En un ejemplo donde la precisión es del 60%, esto es mejor que una suposición aleatoria, pero todavía puede mejorarse. Por otro lado, el "recall" indica cuántas instancias fueron detectadas correctamente. Existen relaciones de compromiso entre la precisión y el recall: aumentar la precisión generalmente disminuye el recall, y viceversa. Por tanto, es fundamental optimizar la puntuación f1, que es la media armónica entre ambos, para conseguir un modelo equilibrado.

Además de la precisión, el recall y el f1-score, existe otra forma de evaluar los resultados a través de una matriz de confusión. En esta matriz, se presentan los valores de Verdaderos Positivos (TP), Verdaderos Negativos (TN), Falsos Positivos (FP) y Falsos Negativos (FN), que permiten calcular de forma precisa las métricas anteriores.

Es fundamental recordar que el proceso de entrenamiento y evaluación de un modelo de machine learning es iterativo. No basta con obtener un buen rendimiento con un conjunto de datos determinado; el modelo debe ser capaz de generalizar a otros datos similares. La selección de los parámetros adecuados, así como la regularización para evitar el sobreajuste, son claves para obtener un modelo que funcione correctamente en escenarios del mundo real.

¿Cómo evitar el sobreajuste y seleccionar características en un modelo de aprendizaje automático?

El sobreajuste es uno de los problemas más comunes y difíciles de resolver cuando entrenamos modelos de aprendizaje automático. Una de las formas de mitigar este problema es ampliando el conjunto de datos de entrenamiento, especialmente cuando el tamaño de este es pequeño pero creemos que posee las características esenciales para entrenar un modelo. En este caso, se puede aumentar artificialmente el conjunto de datos mediante una ligera variación de los datos originales de acuerdo con consideraciones estadísticas. Por ejemplo, el siguiente código duplica los datos de adopción de paneles solares (PV-adoption) tomando la media y la desviación estándar de todas las características con respecto al valor objetivo (0 o 1), utilizando estos parámetros para generar nuevas instancias distribuidas normalmente alrededor de la misma media y desviación estándar, y concatenándolas con los datos originales.

Este método, sin embargo, hace una suposición fuerte: que todos los valores de las características siguen una distribución normal. Aunque esto es una suposición que puede no ser siempre válida, si se tiene la paciencia necesaria, se pueden analizar las propiedades estadísticas de las características en detalle y luego utilizar estos parámetros para generar datos sintéticos adicionales para el entrenamiento. Esto puede ser útil, pero es fundamental ser consciente de los riesgos que implica asumir una distribución normal para todos los valores de las características, ya que esto puede introducir sesgos en el modelo si la distribución real de los datos es diferente.

Otra estrategia eficaz para prevenir el sobreajuste es la reducción de características. Como hemos visto, las características contribuyen en diferentes grados a la capacidad predictiva del modelo. Algunas de ellas ofrecen más información para la clasificación que otras, y es por eso que, al entrenar un modelo, las características son clasificadas según su importancia. En el caso de un árbol de decisiones, por ejemplo, es posible visualizar estas características y su importancia observando la estructura del árbol, aunque este proceso puede ser más complejo cuando se trata de conjuntos de datos más grandes. Afortunadamente, existen herramientas en línea como graphviz que nos permiten visualizar fácilmente estos árboles y evaluar las características más relevantes.

Además, existe un método de evaluación bastante conocido como la importancia Gini. Este método mide la reducción de la impureza total que un atributo produce al dividir el conjunto de datos. En el contexto de scikit-learn, esta función es muy sencilla de implementar y permite clasificar las características según su importancia, lo cual puede ser visualizado a través de gráficos. Además, scikit-learn ofrece herramientas como la eliminación recursiva de características (RFE) y el transformador SelectFromModel, que permiten identificar qué características son las más relevantes para el modelo y cuáles podrían eliminarse sin comprometer demasiado el rendimiento. Ambos métodos son útiles para determinar un número óptimo de características a considerar.

El Análisis de Componentes Principales (PCA) es otra técnica frecuente para reducir la dimensionalidad de los datos. PCA es un método no supervisado que descompone un conjunto de datos multivariados utilizando una técnica matemática llamada descomposición en valores singulares (SVD). Esta técnica identifica las dimensiones del conjunto de datos que explican la mayor parte de la variabilidad y retiene solo aquellas que cubren una proporción suficientemente alta de esta variabilidad. Por ejemplo, en muchos casos se puede demostrar que el 95% de la variabilidad de un conjunto de datos puede explicarse con un número de componentes mucho menor que el número de características originales. Al reducir el número de características, se evita el sobreajuste y se reduce el tiempo de ejecución del modelo, lo cual resulta en una mayor eficiencia computacional.

Por supuesto, también existen otros métodos de selección y reducción de características que se pueden emplear según el contexto y la naturaleza de los datos. La clave radica en la identificación de las características más informativas y la eliminación de aquellas que no aportan valor al proceso de clasificación o regresión, lo que lleva a modelos más eficientes y generalizables.

Además de las técnicas descritas, es importante que los lectores comprendan que la elección y manipulación de las características en un modelo no debe ser un proceso aleatorio. La calidad de las características es fundamental para obtener un buen modelo. Si bien métodos como PCA y la selección de características basada en la importancia Gini son herramientas útiles, también es necesario realizar un análisis profundo de las características desde el inicio del proceso de modelado. Esto incluye la comprensión de la relación entre las características y la variable objetivo, así como la capacidad de detectar posibles correlaciones entre ellas que podrían afectar negativamente el rendimiento del modelo. Un buen preprocesamiento de datos, que considere estos aspectos, puede marcar la diferencia entre un modelo mediocre y uno altamente preciso.

¿Cómo se realiza un análisis de sentimiento en el procesamiento de lenguaje natural?

El análisis de sentimiento es una tarea crucial en el procesamiento de lenguaje natural (PLN), que busca identificar las opiniones y actitudes expresadas en los textos hacia ciertos objetos, características o situaciones. Sin embargo, mientras que para un lector humano puede ser sencillo interpretar el tono de una oración, para las máquinas este proceso resulta mucho más complejo y lleno de desafíos. Esto se debe a la ambigüedad del lenguaje, los matices contextuales y la estructura variable de las oraciones.

En este contexto, se manejan distintos términos clave que se deben comprender para abordar un análisis de sentimiento efectivo:

  1. Objeto: Es el tema principal sobre el que se emite una opinión. Por ejemplo, un iPhone.

  2. Componente: Es una parte del objeto, como la batería del iPhone.

  3. Características: Son las propiedades específicas del objeto o componente, como la duración de la batería.

  4. Opinión general: Expresión general sobre un objeto, como “Me gusta el iPhone”.

  5. Opinión específica: Se refiere a un detalle más concreto, como “La pantalla táctil del iPhone es realmente genial”.

  6. Opinión explícita: Cuando la opinión está claramente expresada, como “La duración de la batería de este teléfono es demasiado corta”.

  7. Opinión implícita: Son aquellos comentarios que no mencionan directamente la característica pero la sugieren, como “Este teléfono es demasiado grande”.

  8. Indicador de característica: En ocasiones, las palabras como "grande" no son sinónimos de tamaño, sino solo indicadores de la característica a evaluar.

Además, en el análisis de sentimientos, es esencial reconocer la orientación de la opinión: ¿es positiva, negativa o neutral? Por ejemplo, la oración "El teléfono es genial" expresa una opinión positiva explícita sobre el objeto. En cambio, una oración como “El teléfono se rompió en dos días” implica una opinión negativa implícita sobre el mismo objeto.

También se debe considerar la intensidad de la opinión, que puede variar entre fuerte (“Este teléfono es una porquería”) y débil (“Creo que este teléfono está bien”).

Una vez que se identifican las opiniones en un texto, el siguiente paso es extraer relaciones comparativas. El análisis comparativo se refiere a la evaluación de dos o más objetos en función de ciertas características compartidas. Estas comparaciones se suelen expresar mediante el uso de formas comparativas o superlativas de adjetivos o adverbios, como en "El iPhone es más rápido que el Samsung".

El proceso de extracción de opiniones directas se puede dividir en varias fases. Primero, se identifican los quintupletes de opinión, es decir, las combinaciones que incluyen el objeto, la característica, la orientación de la opinión, el titular de la opinión y el tiempo en que se expresa dicha opinión. En segundo lugar, es necesario reconocer los sinónimos y los indicadores de las características dentro del texto. Finalmente, se puede generar un resumen basado en las características de las opiniones extraídas.

Una variante del análisis de sentimiento es el resumen de tendencias, que no solo examina las opiniones directas sobre productos o servicios, sino que también monitorea la evolución temporal de las opiniones, identificando cómo cambian con el tiempo.

Otro aspecto relevante es el concepto de Reconocimiento de Entidades Nombradas (NER, por sus siglas en inglés), que se enfoca en identificar titulares de opiniones, nombres de objetos y el momento en que se emite una opinión. Además, en la detección de opiniones, es importante resaltar palabras o frases específicas que indiquen subjetividad, como “hermoso”, “maravilloso”, “bueno”, o “increíble” para opiniones positivas; y “malo”, “pobre” o “terrible” para las negativas. Las negaciones también juegan un papel crucial, ya que pueden alterar la orientación de una opinión. Un ejemplo claro es la frase “No me gusta esta cámara”, donde la palabra "no" cambia el significado original de una opinión positiva.

Con la llegada de tecnologías como los Modelos de Lenguaje Grande (LLM, por sus siglas en inglés) y herramientas como ChatGPT, el análisis de sentimientos se ha vuelto mucho más accesible y automático. Estos modelos son capaces de analizar cualquier texto en cuestión de segundos, proporcionando una comprensión detallada de los sentimientos expresados. Esta capacidad es especialmente útil en el análisis de grandes volúmenes de datos, como opiniones de usuarios en redes sociales o reseñas de productos.

Los modelos LLM no solo pueden identificar el tono general de un texto, sino que también pueden cuantificar los sentimientos y visualizarlos, mostrando la evolución de los sentimientos a lo largo de un texto o un conjunto de textos. Este tipo de análisis es útil en el campo de la investigación de mercado, ya que permite a las empresas entender mejor las preferencias de los consumidores y cómo estas evolucionan con el tiempo.

En cuanto a los avances tecnológicos, es relevante mencionar que antes de la introducción de los transformadores y los LLMs, los métodos de análisis de sentimientos requerían una preparación laboriosa y detallada, basada en técnicas específicas de codificación y la colaboración de equipos interdisciplinarios. Sin embargo, con la incorporación de la arquitectura de transformadores, el proceso ha sido optimizado. Los transformadores permiten una mayor capacidad para manejar secuencias largas de texto y mantener relaciones contextuales sin perder información, algo que los modelos anteriores, como las redes LSTM, no lograban hacer de manera eficiente.

La atención en los transformadores es clave para entender cómo se priorizan ciertos elementos del texto. En este modelo, el sistema aprende a centrarse en las partes del texto que considera más relevantes para la tarea en cuestión, lo que mejora significativamente la precisión del análisis. Esta capacidad de atención ha revolucionado el procesamiento del lenguaje, permitiendo que las máquinas comprendan de manera más precisa las opiniones y sentimientos en un texto.

Finalmente, la evolución de estas tecnologías y su capacidad para realizar análisis de sentimiento con una precisión y rapidez sin precedentes promete transformar el campo de las ciencias sociales y de datos. El análisis de sentimientos ya no es una tarea reservada solo para los expertos, sino que está al alcance de cualquier investigador, empresa o persona que necesite comprender la emoción y la opinión detrás de los textos.