tendencias de aprendizaje automático

Análisis de C en la investigación

Introducción

La conferencia NIPS ( Neural Information Processing Systems [1945901717]) es Uno de los eventos anuales más prestigiosos en la comunidad de aprendizaje automático. En cada conferencia NIPS, se publican una gran cantidad de trabajos de investigación. Más de 50,000 archivos PDF se descargaron y procesaron automáticamente para obtener un conjunto de datos sobre varias técnicas de aprendizaje automático. Estos documentos NIPS se almacenan en conjuntos de datos / papers.csv. El archivo CSV contiene información sobre los diferentes documentos de NIPS que se publicaron desde 1987 hasta 2017 (¡30 años!). Estos documentos discuten una amplia variedad de temas en aprendizaje automático, desde redes neuronales hasta métodos de optimización y muchos más.

Entonces, comencemos en nuestra misión de encontrar los temas más candentes en aprendizaje automático.

  1. Cargando los documentos NIPS

Primero, exploraremos el archivo CSV para determinar qué tipo de datos podemos usar para el análisis y cómo está estructurado. Un trabajo de investigación consiste típicamente en un título, un resumen y el texto principal. Otros datos, como figuras y tablas, no se extrajeron de los archivos PDF. Cada artículo discute una nueva técnica o mejora. En este análisis, nos centraremos en analizar estos documentos con métodos de procesamiento de lenguaje natural.

 IN [1]: 
 importan pandas as pd 
 papers = pd.read_csv ("datasets / papers.csv") 
 papers.head (3)

Podemos ver que las columnas como id, event_type, pdf_name no parecen importantes para nuestra predicción. Solo son redundantes y no contienen ninguna información real. Entonces, eliminaremos estas columnas de nuestro conjunto de datos.

2 . Preparando los datos para el análisis

Para el análisis de los documentos, solo estamos interesados ​​en los datos de texto asociados con el documento como así como el año en que se publicó el documento.

Analizaremos los datos de este texto utilizando el procesamiento en lenguaje natural. Dado que el archivo contiene algunos metadatos, como los identificadores y los nombres de archivo, es necesario eliminar todas las columnas que no contienen información de texto útil.

 IN [2]: 
 papers.drop (columns = ['id', "event_type", "pdf_name"]inplace = Verdadero) 
 papers.head (3)

Ahora que hemos eliminado columnas inútiles de nuestro conjunto de datos, podemos seguir adelante y preparar nuestro conjunto de datos para el modelado.

3. Explicación de cómo el aprendizaje automático ha evolucionado a lo largo del tiempo

Para comprender cómo el campo del aprendizaje automático ha crecido en popularidad recientemente, comenzaremos por visualizar el número de publicaciones por año.

Al observar el número de artículos publicados por año, podemos entender el alcance de la ‘revolución’ de aprendizaje automático! Normalmente, este aumento significativo de popularidad se atribuye a las grandes cantidades de poder de cómputo, datos y mejoras en los algoritmos.

 IN [3]: 
 groups = papers.groupby ("año") # Agrupa el papel por años 
 count = groups.size () # Determine el tamaño de cada grupo 

 importe matplotlib.pyplot como plt 
% matplotlib inline # Visualizando los recuentos como Gráfico de barras 
 count.plot (kind = & # 039; bar & # 039;) 
 plt.title ("Machine Learning Publications since 1987") 
 plt.xlabel ("Year")

Es interesante ver cómo el aprendizaje automático ha evolucionado a lo largo del tiempo. Si observamos de cerca el gráfico de barras anterior, podemos ver que la tendencia del aprendizaje automático casi se ha triplicado entre 2007 y 2017, mientras que solo hubo un pequeño cambio en la tendencia del aprendizaje automático entre 1987 y 2007. Esto es increíble. Ahora podemos darnos cuenta, ¿Por qué el aprendizaje automático y la ciencia de datos son los temas más candentes?

4 . Preproceso de los datos del texto

Analicemos ahora los títulos de los diferentes documentos para identificar las tendencias de aprendizaje automático. Primero, realizaremos un preprocesamiento simple en los títulos para hacerlos más fáciles de analizar. Usaremos una expresión regular para eliminar cualquier puntuación en el título. Luego realizaremos minúsculas. A continuación, imprimiremos los títulos de las primeras filas antes y después de aplicar la modificación.

 IN [4]: 
 import re
 print (papers ['title'] .head ()) # imprimir títulos de primeras filas
 artículos ['title_processed'] = documentos ['title'] .map ( lambda  x: re.sub (& # 039; [,.!?] & # 039 ;, & # 039; & # 039; , x)) # Quitar puntuación
 papeles ['title_processed'] = papeles ['title_processed'] .map ( lambda  x: x.lower ()) # convertir los títulos a minúsculas
 imprimir (papeles ['title_processed'] .head ())

5. Una nube de palabras para visualizar los datos de texto preprocesados ​​

Para verificar si el preprocesamiento se realizó correctamente, podemos hacer una nube de palabras de los títulos de los trabajos de investigación. Esto nos dará una representación visual de las palabras más comunes. ¡La visualización es la clave para entender si todavía estamos en el camino correcto! Además, nos permite verificar si necesitamos preprocesamiento adicional antes de seguir analizando los datos del texto.

 IN [5]: 
 import wordcloud 
 long_string = "" .join (papers.title_processed) 
 wordcloud = wordcloud.WordCloud () # Crea un objeto wordcloud 
 wordcloud.generate (long_string) # Genera un wordcloud 
 wordcloud.to_image () # Visualiza la nube de palabras

6. Prepare el texto para el análisis de LDA

El método de análisis de texto principal que usaremos es Asignación de Dirichlet latente (LDA) . LDA puede realizar la detección de temas en grandes conjuntos de documentos, determinando cuáles son los “temas” principales en un gran conjunto de textos sin etiquetar. Un “tema” es una colección de palabras que tienden a coexistir con frecuencia. La hipótesis es que LDA podría aclarar cuáles son los diferentes temas en los títulos de investigación. Estos temas se pueden usar como punto de partida para un análisis más detallado.

LDA no funciona directamente en datos de texto. Primero, es necesario convertir los documentos en una representación vectorial simple. Esta representación será utilizada por LDA para determinar los temas. Cada entrada de un “vector de documento” se corresponderá con el número de veces que una palabra haya ocurrido en el documento. En conclusión, convertiremos una lista de títulos en una lista de vectores, todos con una longitud igual al vocabulario. Por ejemplo, ‘Analizando las tendencias de aprendizaje automático con redes neuronales’. se transformaría en [1, 0, 1, …, 1, 0].

Luego, trazaremos las 10 palabras más comunes según el resultado de esta operación (la lista de vectores de documentos). Como verificación, estas palabras también deben aparecer en la nube de palabras.

IN [6]: 
 de sklearn.feature_extraction.text import CountVectorizer 
 import numpy como np 

 def plot_10_most_common_words (count_data, count_vata) : 
 importa matplotlib.pyplot as plt 
 palabras = count_vectorizer.get_feature_names () 
 total_counts = np.zeros (len (words)) 
 para t en count_data: 
 total_counts + = tpto. () [0]
    
     count_dict = (zip (words, total_counts)) 
 count_dict = ordenado (count_dict, key = lambda x: x [1]reverse = True) [0:10]
     words = [w[0] for w en count_dict] 
 cuenta = [w[1] para w en count_dict] 
 x_pos = np.arange (len (words)) 

 plt.bar (x_pos, count, align = & # 039; center & # 039;) 
 plt.xticks (x_pos, palabras, rotación = 90) 
 plt.xlabel (& # 039; palabras & # 039;) 
 plt.ylabel (& # 039; count & # 039; ) 
 plt.title (& # 039; 10 m La mayoría de las palabras comunes & # 039;) 
 plt.show () 

  # Inicializa el vectorizador de conteo con las palabras de detención en inglés 
 count_vectorizer = CountVectorizer (stop_words = & # 039; english & # 039;) [19659021]  # Ajustar y transformar los títulos procesados ​​
 count_data = count_vectorizer.fit_transform (papers ['title_processed']) 

  # Visualizar las 10 palabras más comunes en este paquete de valores de los juegos de valores de las unidades de información de la piscina. ] El gráfico anterior confirma la visualización de la nube de palabras que vimos arriba. Las palabras más frecuentes son, en efecto, aprendizaje seguido de neural, redes, etc.

7. Analizando tendencias con LDA

Finalmente, analizaremos los títulos de investigación usando LDA. Tenga en cuenta que para procesar un nuevo conjunto de documentos (por ejemplo, artículos de noticias), se requerirá un conjunto similar de pasos para preprocesar los datos. El flujo que se construyó aquí se puede exportar fácilmente para un nuevo conjunto de datos de texto.

El único parámetro que modificaremos es la cantidad de temas en el algoritmo LDA. Por lo general, uno calcularía la métrica de “perplejidad” para determinar qué número de temas es mejor e iterar sobre diferentes cantidades de temas hasta que se encuentre la “perplejidad” más baja. Por ahora, vamos a jugar con un número diferente de temas. A partir de ahí, podemos distinguir de qué trata cada tema (‘redes neuronales’, ‘aprendizaje de refuerzo’, ‘métodos del núcleo’, ‘procesos gaussianos’, etc.).

 IN [7]: 
 importan las advertencias 
 warnings.simplefilter ("ignore", DeprecationWarning)
 # Cargar el modelo LDA desde sk-learn 
 desde sklearn.decomposition importar LatentDirichletAllocation como LDA 
 
 # Función de ayudante 
 def print_topics (modelvcvv) , n_top_words): 
 words = count_vectorizer.get_feature_names () 
 para topic_idx, topic in enumerate (model.components _): 
 print (" nTopic #% d:"% topic_idx) 
 print ( "" .join ([words[i] para i en topic.argsort () [:-n_top_words - 1:-1]])) 
        
 # Tweak los dos parámetros a continuación (use los valores de int debajo de 15) 
 number_topics = 10 
 number_words = 6
 # Crea y ajusta el modelo LDA 
 lda = LDA (n_components = number_topics) 
 lda.fit (count_data)
 # Print th Los temas encontrados por el modelo LDA 
 imprimen ("Temas encontrados vía LDA:") 
 print_topics (lda, count_vectorizer, number_words)

 8 . El futuro del aprendizaje automático

El aprendizaje automático se ha vuelto cada vez más popular en los últimos años. La cantidad de documentos de la conferencia NIPS ha aumentado exponencialmente, y las personas buscan continuamente formas de incorporar el aprendizaje automático en sus productos y servicios.

Aunque este análisis se centró en analizar las tendencias del aprendizaje automático en la investigación, muchas de estas técnicas se están adoptando rápidamente en la industria. Seguir las últimas tendencias de aprendizaje automático es una habilidad crítica para un científico de datos, y siempre se recomienda seguir aprendiendo continuamente a través de blogs, tutoriales y cursos.

Los datos históricos indican que:

 IN [8]: 
 more_papers_published_in_2019 =  Verdadero 

Dejá un comentario