Preprocesamiento

Los datos se preprocesan antes de la clasificación, agregando las distintas columnas usando funciones que permiten entregar información sobre la historia de actividad de cada cuenta. Esto se encuentra detallado en la pagina de clasificación. Las palabras se convierten a valores numéricos usando el método de bolsas de palabras. Es decir, cada cuenta tiene asociada una frecuencia de n-gramas encontrados dentro de sus tweets, y se usan estas frecuencias para realizar los ajustes. Debido a la diferencia entre este método y usar columnas numéricas, las clasificaciones se debieron realizar por separado. Finalmente, se normalizan los atributos numéricos que se usan para la clasificación.

Resultados

Decision Trees

Los mejores arboles encontrados para la clasificación numérica y de texto se encuentran a continuación, respectivamente:

Clasificación numérica

In [10]:
from IPython.display import Image
Image(filename='img-3class/decision_num_tree.png')
Out[10]:

Clasificación de texto

In [11]:
Image(filename='img-3class/decision_text.png')
Out[11]:

Superficies de decisión

Como la importancia de la región de origen no resultó ser muy importante para los clasificadores, se analizan las superficies de decisión con la region fija en Estados Unidos. Las dimensiones no mostradas se fijan en su promedio.

Election activity distance / Maximum following

Entre los mejores clasificadores numéricos, se observa en las superficies de clasificación que para cuentas que siguen a pocas cuentas, se requiere una mayor actividad cerca del dia de elección para poder tener una mayor popularidad. Las cuentas que siguen a una gran cantidad de personas son etiquetadas con popularidad muy alta, pero si su actividad cerca de la eleccion es muy alta, pasa a tener menor popularidad.

Usando random forest

In [12]:
Image(filename="img-3class/random_fortest_num_surf-Maximum following-Election Activity Distance.png")
Out[12]:

Usando k-neighbors

In [13]:
Image(filename="img-3class/kneigh_num_surf-Maximum following-Election Activity Distance.png")
Out[13]:

Maximum updates / Maximum followers

Ambos clasificadores etiquetan a las cuentas con poca actividad pero que siguen a una gran cantidad de cuentas en popularidad muy alta, y que las cuentas que siguen a pocas personas tienen baja popularidad.

El clasificador de k-neighbors muestra que mientras mayor es la actividad de la cuenta, más dificil se hace que la cuenta pase al percentil 50 de popularidad aumentando su cantidad de seguidos.

Usando random forest

In [14]:
Image(filename="img-3class/random_fortest_num_surf-Maximum updates-Maximum following.png")
Out[14]:

Usando k-neighbors

In [15]:
Image(filename="img-3class/kneigh_num_surf-Maximum updates-Maximum following.png")
Out[15]:

Importancia de parámetros

El clasificador de random forest ofrece la posibilidad de entregar la "importancia" de los parametros, que es determinada por como estas influencian los arboles creados. Para la clasificación numérica, entrega 20% a la actividad de la cuenta, 31% a la cantidad de cuentas que sigue, 6% a su región y 42% a su actividad cerca del dia de la elección. Para la clasificación de texto, se puede visualizar en una nube de palabras.

In [16]:
Image(filename="img-3class/word_cloud_1_3.png")
Out[16]:

Recursos

La gran cantidad de los recursos que se usaron en esta parte del protyecto vienen de la documentacion de sklearn: https://scikit-learn.org/stable/documentation.html El código creado es en mayor parte propio, con las ideas generales encontradas en paginas como https://stackoverflow.com/, y la base del grafico de superficies de decision se encontró en https://chrisalbon.com/machine_learning/trees_and_forests/feature_selection_using_random_forest/, editandolo para admitir graficar más de dos atributos.