Detectando Fake News con Machine Learning

0

Recientemente tuve la oportunidad de utilizar una solución para abordar las Fake News con Machine Learning para abordar un problema que está en la vanguardia de los medios de comunicación estadounidenses, la dificultad de reconocer noticias falsas.

Específicamente, apliqué dos enfoques para las Fake News con Machine Learning para identificar artículos noticiosos deliberadamente engañosos: regresión logística y un clasificador de Bayes.

Usando un conjunto de datos kaggle de 20,000 artículos etiquetados, logré una precisión del 93% al predecir etiquetas para un conjunto de prueba.

Fue una gran oportunidad para practicar el procesamiento del lenguaje natural, así como algunas de las técnicas efectivas para construir un poderoso modelo de clasificación.

El procesamiento del lenguaje natural es el campo de la informática dedicado al procesamiento y análisis de cualquier forma de lenguaje humano natural ( escrito, hablado o de otra manera). En pocas palabras, las computadoras entienden ceros y unos, mientras que los humanos usan un amplio rango de lenguaje para comunicarse.

NLP tiene como objetivo cerrar la brecha entre estos dos mundos, para que los científicos de datos y los ingenieros de aprendizaje automático puedan analizar grandes cantidades de datos de comunicación humana.

En el contexto del problema de las Fake News con Machine Learning, NLP nos permite dividir los artículos en sus componentes y elige características importantes Luego construimos y entrenamos modelos para identificar documentos no confiables.

¡Tiempo de limpieza!

La primera orden del día para muchos proyectos basados ​​en datos después de la exploración es para limpiar sus datos. Estuve trabajando con miles de artículos de una amplia gama de fuentes, algunas mucho más limpias que otras.

Las expresiones regulares proporcionaron una forma de limitar los tipos de cadenas que permitimos incluir en nuestro análisis.

Por ejemplo, esta línea de código que utiliza el módulo de python:

clean_article = re.sub (“[^A-Za-z0–9′ ]”, ”, artículo)

Reemplaza todos los caracteres que no son alpha- numéricos con espacios vacíos. El ^ denota el complemento del conjunto especificado es lo que estamos reemplazando. Una vez que hemos eliminado los caracteres indeseables, ¡estamos listos para tokenizar y vectorizar!

Scikit-learn es un increíble paquete de aprendizaje automático para Python, que hace mucho del trabajo pesado. En particular, Count Vectorizer crea una lista de vocabulario completo de todos los textos que se analizan, y convierte cada documento individual en un vector que representa el recuento total de cada una de estas palabras.

Esto devuelve los vectores en forma de una matriz dispersa, ya que la mayoría de los artículos no contienen la mayoría de las palabras. El vectorizador permite la integración de funciones de preprocesamiento, así como su tokenizador preferido.

 

Un ejemplo de artículos vectorizados, cada fila contiene las ocurrencias de nuestras 1000 palabras de características iniciales
Un ejemplo de artículos vectorizados, cada fila contiene las ocurrencias de nuestras 1000 palabras de características iniciales

En el caso del análisis de noticias, es demasiado simplista para considere cada palabra individualmente, y por eso nuestra vectorización permitió bi-grams, o frases de dos palabras.

Limitamos el número de funciones a 1000, por lo que solo consideramos las características más importantes para clasificar un documento como real o falso.

Ingeniería de características

La ingeniería de funciones es menos simple y más compleja que una forma de arte. Incluye el proceso de considerar su conjunto de datos y dominio, decidir las características que serán más potentes para su modelo y finalmente probar sus características para optimizar su elección.

El vectorizador de Scikit-learn extrajo nuestras características de n-grama de 1000 bases, y nos propusimos agregar meta-características para refinar nuestra clasificación.

Decidimos calcular la longitud promedio de palabras y el número de valores numéricos en cada documento, lo que mejoró la precisión de nuestro modelo.

Izquierda: características agregadas, derecha: puntuaciones de sentimiento
Izquierda: características agregadas, derecha: puntuaciones de sentimiento

El análisis de sentimientos representa otra herramienta analítica de PNL, asignando valores numéricos a los sentimientos generales expresados ​​en un cuerpo de texto.

Hicimos uso de dos paquetes, TextBlob y Vader de Natural Language Toolkit. Estas son excelentes herramientas para realizar análisis de sentimiento de caja en documentos de texto.

Vader produce varios puntajes que miden la polaridad y la neutralidad, mientras que TextBlob ofrece una subjetividad general, así como su propia medida de polaridad.

Originalmente esperábamos que estos sentimientos se distribuyeran de manera muy diferente cuando se calcularan para artículos engañosos y verdaderos, sin embargo, no encontramos que ese fuera el caso.

 

La distribución del sentimiento neutral del artículo a través de Vader, donde 0 es completamente neutral 
La distribución del sentimiento neutral del artículo a través de Vader, donde 0 es completamente neutral

 

TextBlob Sentiment Scores (izquierda: -1 la polaridad es negativa y 1 es positiva, derecha: 0 es muy objetiva y 1 es muy subjetiva).
TextBlob Sentiment Scores (izquierda: -1 la polaridad es negativa y 1 es positiva, derecha: 0 es muy objetiva y 1 es muy subjetiva).

Como se puede ver arriba, hay muy poca información en los puntajes de sentimiento. Sin embargo, decidimos mantenerlos en nuestros modelos ya que aumentaban la precisión cuando se combinaban con nuestros clasificadores.

Regresión logística

El sistema que estamos considerando aquí es binario, donde las únicas clases son reales y falso. Necesitamos modelar la probabilidad de que un artículo no sea confiable, dadas sus características asociadas.

Este es el candidato perfecto para una regresión logística multinomial, por lo que nuestro modelo se basa en una transformación logit y estimación de máxima verosimilitud para modelar la probabilidad de falta de fiabilidad en relación con nuestras variables predictoras.

En otras palabras, LR calcula la p posterior (x | y) directamente, aprendiendo qué etiquetas asignar a las entradas de características. Este es un ejemplo de un enfoque discriminativo y, aunque técnicamente no es una clasificación estadística, da la probabilidad condicional de membresía de clase que usamos para asignar un valor. El modelo de regresión logística de SciKit-Learn ofrece una forma directa de realizar esto.

Izquierda: curva ROC para la regresión logística. Derecha: 20 de las mejores características para la regresión.
Izquierda: curva ROC para la regresión logística. Derecha: 20 de las mejores características para la regresión.

Naïve Bayes Classifier

Nuestro segundo enfoque fue utilizar un algoritmo de Naïve Bayes (NB), que a pesar de su simplicidad funcionó bien para esta aplicación. Con el supuesto de independencia entre las características, el NB aprende un modelo de probabilidad conjunta p (x, y) de cada artículo etiquetado.

Las predicciones se hacen usando la regla de Bayes para calcular la probabilidad condicional, asignando etiquetas basadas en la probabilidad máxima. Esto, por el contrario, es un ejemplo de un clasificador generativo.

Bayes Classifier, usando la regla de decisión MAP.
Bayes Classifier, usando la regla de decisión MAP.

En este caso, consideramos un modelo de evento multinomial, que representa con mayor precisión la distribución de nuestras características. Los resultados coinciden estrechamente con los alcanzados por el ajuste logístico, como se esperaba.

A la izquierda: curva ROC para el Naïve Bayes Multinomial. Derecha: 20 de las mejores características para el clasificador Naïve Bayes.
A la izquierda: curva ROC para el Naïve Bayes Multinomial. Derecha: 20 de las mejores características para el clasificador Naïve Bayes.

En conclusión

La presencia de información falsa en forma de Fake News con Machine Learning puede identificarse de manera efectiva mediante el aprendizaje automático.

Incluso sin información contextual, como título o fuente, el texto del cuerpo proporciona suficiente para hacer el truco. Como resultado, estas estrategias se pueden aplicar fácilmente a otros documentos donde los descriptores adicionales no están disponibles.

Si bien las características de opinión no fueron suficientes para la clasificación de Fake News con Machine Learning por sí mismas, sí mejoraron el rendimiento de nuestro clasificador cuando se combinaba con otras características.

Se podría hacer un trabajo futuro para compararlo con otros modelos populares, como máquinas de vectores de soporte.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *