sábado, 12 de diciembre de 2015

Machine learning con programas electorales: ¿qué partidos son de izquierda y derecha?

En el anterior post he probado unsupervised machine learning para organizar (cluster) los programas políticos. Para ello al programa solo le dábamos los textos, no le aportábamos más información sobre si algunos partidos eran de derechas o de izquierdas. Esa falta de información es lo que hace que el método sea unsupervised. En este post voy a hacer lo contrario.

Supervised machine learning

Supervised machine learning  se utiliza cuando tenemos un conjunto de elementos que estamos seguros que pertenecen a una clase concreta. El programa aprende (por eso se llama machine learning) qué características son propias a esas clases; posteriormente se le pide al programa que aplique ese conocimiento a otros nuevos elementos.

¿Muy abstracto? Vamos a por un ejemplo sobre autoría literaria: escogemos un grupo de textos de dos autores cuya autoría está clara. Hacemos que el programa aprenda qué rasgos distinguen los textos de un autor y los textos del otro. Una vez realizado, le entregamos al programa otro texto cuyo autor creemos que es uno de los dos analizados y vemos qué nos responde. 

Supervised Machine learning con programas políticos


Vamos a aplicar el mismo método a programas políticos; y en vez de buscar a un autor, vamos a preguntarnos por la orientación ideológica de cada programa. El eje tradicional de la política izquierda-derecha ha sido puesto en duda tanto por los votantes (PSOE, PP, la misma mierda es) como por los nuevos partidos como Ciudadanos, UPyD o Podemos. ¿Pero realmente ya no podemos ordenar a los partidos en ese eje?

Creo que tanto los partidos como los votantes están de acuerdo en que el PP es de derechas y que IU es de izquierdas, ¿cierto? A nadie se le caen los anillos por decir eso. Es decir, tenemos elementos cuya clase no está discutida. Pues esos partidos van a representar el conjunto de datos de los que nuestro programa va a aprender qué rasgos son típicos de izquierdas y de derechas.

Los rasgos sobre los que lo va a aprender son desde las 1000 hasta las 5000 palabras más frecuentes, de nuevo voy a implementarlo con stylo, mediante la función classify y he utilizado Support Vector Machines .

Comprobando el método


Antes de aplicar ese conocimiento a los otros partidos, vamos a hacer una prueba para ver si el programa hace el trabajo de manera aceptable. Vamos a darle los programas de UP y del PP 2015 (programas que no formaban el conjunto de datos de los que ha aprendido) para ver si los clasifica correctamente. El resultado es el siguiente:

1000 MFW , culled @ 0%,  2 of 2    (100%)
2000 MFW , culled @ 0%,  2 of 2    (100%)
3000 MFW , culled @ 0%,  2 of 2    (100%)
4000 MFW , culled @ 0%,  2 of 2    (100%)
5000 MFW , culled @ 0%,  2 of 2    (100%)

¿Qué significa esto? Pues que tanto en las 5 pruebas desde las 1000 hasta las 5000 palabras, tanto el programa de UP como el de PP han sido reconocidos correctamente como izquierda y derecha. Es decir, hay un acierto de 2 de 2, 100%.

(Sé que probarlo con dos programas de los mismos partidos no sería suficiente para demostrar que el experimento funciona de manera totalmente científica, pero creo que es una aproximación válida si queremos poder publicar algo antes de las elecciones.)

Resultados con 1000 palabras más frecuentes

Ahora que  ya tenemos algún dato de que el programa ha hecho  bien 2 tareas, vamos a ponerlo a prueba con los programas de los otros partidos. ¿A qué partido pondrá en la izquierda? ¿A cuál en la derecha? Los resultados son los siguientes, según las 1000 palabras más frecuentes:

CS_2008_Generales     -->     izquierda
CS_2015_Generales     -->     izquierda
Podemos_2015_Generales     -->     izquierda
PSOE_2004_Generales     -->     izquierda
PSOE_2008_Generales     -->     derecha
PSOE_2011_Generales     -->     derecha
PSOE_2015_Generales     -->     izquierda
UPyD_2008_Generales     -->     izquierda
UPyD_2011_Generales     -->     izquierda
UPyD_2015_Generales     -->     izquierda

1000 MFW , culled @ 0%,  2 of 2    (100%)

Por ahora el programa solo localiza los programas del PSOE_2008 y 2011 en la derecha. Hay que tener en cuenta que de los cuatro programas electorales del PSOE presentes en este análisis, los de 2008 y los 2011 son los que el PSOE escribió desde el gobierno, los de 2004 y los de 2015 desde la oposición. O sea, que con las 1000 palabras más frecuentes, el programa localiza al PSOE como derecha cuando gobierna. Al resto de partidos en la izquierda.

Resultados hasta 5000 palabras más frecuentes

Vamos a ver ahora qué pasa si hacemos los mismos análisis hasta las 5000 palabras más frecuentes:

CS_2008_Generales     -->     izquierda
CS_2015_Generales     -->     izquierda
Podemos_2015_Generales     -->     izquierda
PSOE_2004_Generales     -->     izquierda
PSOE_2008_Generales     -->     derecha
PSOE_2011_Generales     -->     derecha
PSOE_2015_Generales     -->     izquierda
UPyD_2008_Generales     -->     izquierda
UPyD_2011_Generales     -->     izquierda
UPyD_2015_Generales     -->     izquierda

2000 MFW , culled @ 0%,  2 of 2    (100%)



CS_2008_Generales     -->     izquierda
CS_2015_Generales     -->     izquierda
Podemos_2015_Generales     -->     izquierda
PSOE_2004_Generales     -->     izquierda
PSOE_2008_Generales     -->     derecha
PSOE_2011_Generales     -->     derecha
PSOE_2015_Generales     -->     izquierda
UPyD_2008_Generales     -->     izquierda
UPyD_2011_Generales     -->     izquierda
UPyD_2015_Generales     -->     izquierda

3000 MFW , culled @ 0%,  2 of 2    (100%)



CS_2008_Generales     -->     izquierda
CS_2015_Generales     -->     izquierda
Podemos_2015_Generales     -->     izquierda
PSOE_2004_Generales     -->     derecha
PSOE_2008_Generales     -->     derecha
PSOE_2011_Generales     -->     derecha
PSOE_2015_Generales     -->     izquierda
UPyD_2008_Generales     -->     izquierda
UPyD_2011_Generales     -->     izquierda
UPyD_2015_Generales     -->     izquierda

4000 MFW , culled @ 0%,  2 of 2    (100%)



CS_2008_Generales     -->     izquierda
CS_2015_Generales     -->     derecha
Podemos_2015_Generales     -->     izquierda
PSOE_2004_Generales     -->     derecha
PSOE_2008_Generales     -->     derecha
PSOE_2011_Generales     -->     derecha
PSOE_2015_Generales     -->     derecha
UPyD_2008_Generales     -->     izquierda
UPyD_2011_Generales     -->     izquierda
UPyD_2015_Generales     -->     izquierda

5000 MFW , culled @ 0%,  2 of 2    (100%)

General attributive success:  10 of 10 (100%)

Como vemos, algunos programas han ido pasando de la izquierda a la derecha según ampliábamos la cantidad de palabras por analizar. Vemos algo que ya habíamos visto en el post anterior: en primer lugar, el PSOE pasa a ser considerado siempre de derechas, da igual si en la oposición o en el gobierno. En segundo lugar, Ciudadanos_2015 pasa también a ser parte de la derecha.

Interpretación

En primer lugar hay que señalar que el método ha sabido no solo detectar correctamente la tendencia política de los programas actuales del PP y de UP, sino que también ha sabido ordenar correctamente a Podemos, cuya orientación política es clara. En segundo lugar, el método llega a conclusiones similares a opiniones muy extendidas y que encajan con opiniones extendidas:
  • UPyD es de izquierda
  • Ciudadanos era de izquierda, hoy en día es de derechas
  • El PSOE ha abandonado la izquierda; es obvio cuando está en el gobierno, hay que ir más al fondo del programa cuando están en la oposición
En tercer lugar, el método consigue llegar a diferenciaciones más sutiles según recoge más palabras. Parece que según más cantidad de programa electoral tiene en cuenta, mejor sabe calar a los partidos.

No hay comentarios:

LinkWithin

Related Posts with Thumbnails