Blogi

Analytiikkajytky: kuntapolitiikkaa ja machine learnigia

Suomessa pidettiin juuri kuntavaalit, jonka tuloksena kunnat saavat uunituoreet valtuustonsa. Nykyään entistä useammin prosessi kuin prosessi synnyttää dataa, näin myös kuntavaalitkin. Esimerkiksi Helsingissä lähes poikkeuksetta kaikki tosissaan valtuustoon pyrkivät vastaavat vaalikoneen kysymyksiin. Vastausten perusteella vaalikoneen algoritmi mm. peilaa äänestäjän mieltymyksiä lähimpänä olevaan ehdokkaaseen.

Koska Yle on julkaissut ehdokkaiden vaalikonevastaukset avoimena datana (Lähde: Yle, http://yle.fi/uutiset/3-9526290), päätän iltani ratoksi soveltaa aineistoon koneoppimista eli machine learningia. Tavoitteenani on rakentaa ennustemoottori, jonka malli opetetaan ehdokkaiden vaalikonevastauksilla ja jota sovelletaan ennustamaan puolueiden ääniharavien edustama puolue käyttämättä ehdokkaan puoluetietoa ja vastauksia mallissa. Eli suomeksi sanottuna ennustemoottorini kertoisi, minkä puolueen tavoitteita ja arvomaailmaa ääniharavien vastaukset parhaiten peilaavat.

Rajaan aineiston Helsinkiin ja sen ehdokasmääriltään yhdeksään suurimpaan puolueeseen. Tämän rajauksen jälkeen jäljelle jää 760 ehdokkaan 38 kysymyksen vastaukset, joissa kussakin vastausvaihtoehdot ovat akselilla 1 = täysin eri mieltä - 5 = täysin samaa mieltä

Visualisointi auttaa hahmottamaan

Mallinnusprojektin best practisen mukaan dataa kannattaa ennen varsinaista mallintamista visualisoida ja laskea siitä yleisiä tunnuslukuja. Haluttuun lopputulokseen pääsemiseksi hedelmällisintä ja toivottavaa olisi, että eri puolueiden välillä vastauksissa erot olisivat selviä, mutta puolueiden sisällä vaihtelu puolestaan pientä ja vastaaminen yhdenmukaista. Jos vastaukset menevät pahasti ristiin, mallin voi olla hankala sanoa, mihin puolueeseen kukakin kuuluu.

Aloitan analysoinnin pakolaisten työllistämiskysymyksestä (Kuva 1). Mallinnuksen kannalta tämän kysymyksen osalta toteutuu pelkäämäni uhkakuva: erot puolueiden välillä ovat pieniä ja sisällä suuria. Käytännössä tämä merkitsee, että esim. ehdokkaan ”täysin eri mieltä” vastauksen perusteella ei puoluekannasta voi päätellä mitään.

Kuva 1: Puolueiden vastausjakaumia neljästä vaalikoneen kysymyksestä. Kuvat saa suuremmaksi klikkaamalla.
Kuva 1: Puolueiden vastausjakaumia neljästä vaalikoneen kysymyksestä. Kuvan saat suuremmaksi klikkaamalla.

Jatkan kysymykseen kaupunkibulevardeista. Tämä kysymys erottaa vihreitä ja perussuomalaisia: samaa mieltä oleva on todennäköisemmin vihreä kuin perussuomalainen. Muiden puolueiden osalta ko. kysymyksen perusteella ei voi edelleenkään tehdä suoria johtopäätöksiä. Jatkan kuvien tulkintaa kysymysten ”Suomessa kaikilla on yhtäläiset mahdollisuudet rikkauteen ja onneen” ja ”Pääkaupunkiseudun joukkoliikenteen pitää olla maksutonta” avulla. Nämä kysymykset paljastavat erot Kokoomuksen ja Vasemmistoliiton välillä.

Kuvia silmäilemällä saadaan jonkinlainen kuva eri puolueiden eroista. Mutta jotta jokaiselle ehdokkaalle saadaan selvitettyä vastausten perusteella ”hänen puolueensa”, on siirryttävä eteenpäin ennustaviin koneoppimismalleihin.

Ennustus- ja todennäköisyysmallit vievät perille

Siirryn käyttämään luokittelevaa machine learning -mallia (supervised). Idea on samankaltainen kuin kuvatarkastelulla: yritetään löytää erotteluvoimaa hakemalla kysymyspatteristosta ”kuvioita” puolueittain. Kuten hyvään mallinnustekniikkaan kuuluu, nytkin teen ensimmäiseksi rajauksen opetus- ja testiaineistoihin 75 % - 25 % -suhteella. Tämä siksi, että näin malli ei ”yliopeta itseään” annettuun aineistoon. Ääniharavien puolue on tarkoitus ennustaa sokkona käyttämättä ko. ehdokkaiden vastauksia mallinnuksessa.

Annan mallille vielä lähtötiedoksi oman ennakkotietämykseni/-arvaukseni puolueiden sijoittumisesta poliittiseen karttaan: Kokoomus eroaa politiikaltaan Perussuomalaisista ja Vasemmistoliitosta, samoin Vihreät eroavat Perussuomalaisista. Tästä muodostuu mallinnusmenetelmälle niin sanottu sakkofunktio, joka ehkäisee näitä puolueita menemästä ennusteissa sekaisin antamalla sakkoa luokitteluvirheestä. Muitakin ennakkotietoja löytyisi, mutta annan mallin hoitaa loput. Opetan ennustemallia IBM SPSS Modelerilla käymällä läpi koko luokittelumenetelmäpaletin. Lopulliseksi malliksi valitsen sen, jossa testiaineiston ehdokkaiden ennustettu puolue osuu useimmiten oikeaan.

Mallista tulee varsin hyvä (Kuva 2): opetusaineistosta 73 %:lle ja testiaineistosta 57 %:lle malli ennustaa oikean puolueen. Evaluoinnissa tulee muistaa, että vertailulukuna voi pitää Kokoomuksen ehdokkaiden osuutta 16 %. Kaikki sitä suuremmat prosentit ovat mallin tuomaa plussaa. Ilman mallia kannattaisi arvata ehdokaskohtaisesti vain yleisin puolue, jolloin saataisiin noin joka kuudes oikein.

Kuva 2: Ehdokasmäärä puolueittain (vas.) sekä todellinen vs. ennustettu puolue ("sekaannusmatriisi") (oik.). Kuvan saa suuremmaksi klikkaamalla.
Kuva 2: Ehdokasmäärä puolueittain (vas.) sekä todellinen vs. ennustettu puolue ("sekaannusmatriisi") (oik.). Kuvan saa surremmaksi klikkaamalla.

Mallinnusalgoritmiksi/koneoppimismenetelmäksi valikoitui erottuluanalyysi (’discriminant analysis’), joka muodostaa erottelufunktioita jakamaan aineistoa erotteluvoiman perusteella ja tekemällä näistä uusia scorausmuuttujia tietyin painoarvoin.

Ennustemalli ääniharavien osalta loistava

Kun malli on opetettu muiden ehdokkaiden vastaajien perusteella, viimeisenä ennustetaan puolueiden ääniharavien todennäköisin puolue heidän vastaustensa avulla. Tulkintana tulokselle voidaan pitää varsin mielenkiintoista mittaria: onko puolueiden ääniharavien ajama kampanja linjassa muun puolueen kanssa. Tulos ääniharavien osalta on varsin hyvä ja malli äärimmäisen tarkka (Kuva 3) eli ennustemalli ennusti ääniharavien puolueen - vaikkakin yksi ääniharava karkasi toiseen puolueeseen: RKP:n Eva Biaudet'n vastaukset kysymyspatteristoon muistattavat pitkälti SDP:n ehdokaskunnan mielipiteitä.

Kuva 3: Puolueiden ääniharavien edustama puolue sekä ennustettu puolue.
Kuva 3: Puolueiden ääniharavien edustama puolue sekä ennustettu puolue.

Ehkä seuraava lentävä lause ”Kyllä kansa tietää!” -ilmaisulle on ”Kyllä keinoäly tietää!”.