Avainsana-arkisto: Data-analytiikka

Miksi Python?

Päivitetty 6.2.2024

Miksi vaivautua koodaamaan, koska datojen analysointiin sopivia valmisohjelmia (Excel, SPSS jne.) on olemassa? Seuraavassa muutamia Pythonin vahvuuksia:

  • Python kattaa kaikki data-analytiikan osa-alueet.
  • Jos sinulla ei ole aiempaa kokemusta koodauksesta, niin opit samalla koodaamaan yhdellä suosituimmista ohjelmointikielistä.
  • Python on ketterä ja toimii hyvin isojenkin datojen kanssa.
  • Perusasiat hoituvat helposti. Esimerkiksi komennolla data.describe() saat datan kaikkien muuttujien keskeisimmät tilastolliset tunnusluvut ja komennolla data.corr() saat datan muuttujien väliset korrelaatiot.
  • Kerran kirjoitettu koodi on aina suoritettavissa uudelleen. Voit analysoida rakenteeltaan samanlaisia datoja ilman koodin uudelleen kirjoittamista. Voit pienin muutoksin hyödyntää kerran kirjoitettua koodia uusien datojen kanssa.
  • Koodi toimii dokumentaationa tehdyistä analyyseistä. Voit milloin tahansa tehdä muutoksia koodiin ja suorittaa analyysit uudelleen.
  • Python tarjoaa monipuoliset mahdollisuudet tulosten graafiseen havainnollistamiseen.
  • Python on yleiskäyttöinen ohjelmointikieli ja sillä laskettuja tuloksia voit käyttää syötteenä muille ohjelmille.
  • Pythonilla voit automatisoida data-analytiikkaa.
  • Ohjemateriaalia ja esimerkkejä löytyy helposti netistä. Jos kohtaat ongelman, niin kirjoittamalla Googleen englanninkielisen kysymyksen löydät yleensä myös vastauksen (usein stackoverflow-sivustolta). Myös tekoäly (ChatGPT, Bard, Amazon Q jne.) osaa auttaa.
  • Python toimii samalla tavoin Windows-, Linux– ja MacOS-käyttöjärjestelmissä.
  • Python on ilmainen.
  • Pythonilla voit ohjelmoida ja automatisoida myös Exceliä.

Github – esimerkit omalle koneelle

Päivitetty 6.2.2024

Olen tallentanut esimerkkikoodeja Jypyter-muistioina githubiin. Esimerkit aukeavat selaimeen, josta voit halutessasi kopioida koodin pätkiä (solu kerrallaan) itsellesi. Kokonaisen Jupyter-muistion tallentaminen omalle koneelle Jupyter-muistiona ei välttämättä onnistu, mutta voit kloonata kokonaisen kansion omalle koneellesi:

  • Siirry osoitteeseen https://github.com/taanila
  • Valitse repository (kansio), jonka haluat kloonata (kaaviot, data, kuvaileva, selittava, aikasarjat, jne.)
  • Napsauta vihreää Code-painiketta ja valitse Download ZIP
  • Pura (Extract all) tallentamasi paketti omaan kotikansioosi (sinne, missä säilytät Python-koodejasi). Paketti purkautuu omaan kansioonsa (esimerkiksi kaaviot-master).

Kaikki esimerkit ovat tämän jälkeen avattavissa Jupyteriin.

Päivitän esimerkkejä aika ajoin. Tuoreimmat versiot saat käyttöösi suorittamalla yllä kuvatun kloonauksen uudelleen.

Data-analytiikka Pythonilla

Päivitetty 4.5.2023

Data-analytiikka antaa vastauksia kysymyksiin

Data-analytiikka on tavoitteellista toimintaa: tavoitteena on etsiä vastauksia kysymyksiin. Data-analytiikan avulla vastataan monenlaisiin kysymyksiin:

  • Minkälainen ikäjakauma asiakkaillamme on?
  • Mihin toimintamme osa-alueisiin asiakkaamme ovat tyytymättömiä?
  • Onko asiakkaan iällä yhteyttä asiakastyytyväisyyteen?
  • Miten yrityksen työilmapiiri on muuttunut viime vuodesta?
  • Ketkä asiakkaistamme ovat vaarassa siirtyä kilpailijalle?
  • Keille tuotteen markkinointikampanja kannattaa suunnata?
  • Mikä mainosvaihtoehdoista tehoaa parhaiten kohderyhmään?
  • Mitä oheistuotteita verkkokaupasta ostaneella kannattaa tarjota?
  • Mikä on tuotteen ennustettu kysyntä ensi kuussa?
  • Liittyykö vakuutuskorvaushakemukseen vakuutuspetos?
  • Millä todennäköisyydellä laina-asiakas ei pysty maksamaan lainaansa takaisin?

Data

Tavoitteiden (kysymykset, joihin halutaan vastata) asettamisen jälkeen pitää selvittää minkälaista dataa tarvitaan. Data voi olla esimerkiksi:

  • Yrityksen tietokannoista löytyvää dataa (esimerkiksi CRM- ja ERP-järjestelmistä).
  • Erilaisten tiedontuottajien tarjoamaa ilmaista tai maksullista dataa.
  • Varta vasten kyselytutkimuksella tai kokeellisella tutkimuksella kerättyä dataa.
  • Erilaisten sensorien/mittalaitteiden automaattisesti tuottamaa dataa.

Blogissani rajoitun rakenteelliseen eli strukturoituun dataan. Rakenteellinen data on sellaista, joka voidaan tallentaa taulukkomuotoon. Yleisiä data-analytiikkaan sopivia tiedostomuotoja ovat pilkkueroteltu tekstimuoto (.csv) ja Excel-muoto (.xlsx). Tietokannoista data haetaan kyselyiden (SQL-kyselykieli) avulla. Nettikyselyohjelmista datan saa yleensä ulos pilkkuerotellussa tekstimuodossa tai Excel-muodossa.

Kun sopiva data on olemassa, niin datasta saadaan vastauksia kysymyksiin seuraavien vaiheiden kautta:

  • Datan valmistelu
  • Kuvaileva analytiikka
  • Selittävä analytiikka; selittävään analytiikkaan liittyy usein tilastollisen merkitsevyyden testaaminen: tilastollinen merkitsevyys kertoo, millä varmuudella otoksessa havaittuja eroja ja riippuvuuksia voidaan yleistää isompaan perusjoukkoon, josta otos on otettu.
  • Ennakoiva analytiikka; tähän käytetään usein koneoppimisen malleja.

Datan valmistelu

Datan valmistelulla tarkoitan datojen yhdistelyä, dataan tutustumista, datan siivoamista ja datan muunnoksia.

Datan valmistelu voi olla data-analytiikan aikaa vievin vaihe. Ensimmäiseksi kannattaa varmistaa datan taulukkomuotoisuus:

  • muuttujien nimet / kenttien nimet / sarakeotsikot ovat ensimmäisellä rivillä
  • datassa ei ole tarpeettomia tyhjiä rivejä tai sarakkeita
  • kuhunkin tilastoyksikköön/havaintoyksikköön liittyvät tiedot ovat yhdellä rivillä.

Datan valmistelu voi sisältää muiden muassa seuraavia:

  • Eri lähteistä peräisin olevien datojen yhdistely
  • Muuttujien uudelleen nimeäminen: jatkotoimet sujuvat sutjakkaammin, jos nimet ovat lyhyitä ja helposti tunnistettavia
  • Desimaalipilkkujen tarkistaminen: vaikka Suomessa desimaalipilkkuna käytetään pilkkua, niin Pythonissa täytyy käyttää pistettä
  • Päivämäärien muuntaminen päivämääriksi tunnistettavaan muotoon
  • Mittayksiköiden tarkistaminen ja tarvittavien muunnosten tekeminen
  • Puuttuvien arvojen käsittely: poistetaanko puuttuvia arvoja sisältävät rivit, korvataanko puuttuvat arvot jollain, miten puuttuvia arvoja merkitään
  • Uusien muuttujien laskeminen: esimerkiksi summamuuttuja useasta mielipidemuuttujasta, tilauksen hinta tilausmäärän ja yksikköhinnan avulla jne.
  • Arvojen luokittelu ja uudelleenkoodaaminen: esimerkiksi ikäluokat iän arvoista.

Kuvaileva analytiikka

Datan kuvailu voi sisältää seuraavia:

  • Lukumäärä- ja prosenttiyhteenvetojen laskeminen kategorisille muuttujille (frekvenssitaulukot)
  • Luokiteltujen jakaumien laskeminen määrällisille muuttujille
  • Tilastollisten tunnuslukujen laskeminen määrällisille muuttujille (keskiarvo, keskihajonta, viiden luvun yhteenveto)
  • Prosenttimuutosten laskeminen aikasarjoille
  • Aikasarjojen tarkastelu viivakaavioina
  • Liukuvien keskiarvojen esittäminen aikasarjojen yhteydessä.

Kuvailun tuloksia kannattaa visualisoida ja havainnollistaa hyvin viimeistellyillä taulukoilla ja kaavioilla.

Selittävä analytiikka ja tilastollinen merkitsevyys

Selittävä analytiikka voi sisältää seuraavia:

  • Tilastollisten tunnuslukujen vertailua eri ryhmissä
  • Kategoristen muuttujien riippuvuuden tarkastelua ristiintaulukoimalla
  • Määrällisten muuttujien välisten korrelaatioiden tarkastelua
  • Havaittujen erojen ja riippuvuuksien tilastollisen merkitsevyyden tarkastelua.

Jos käytetty data on otos isommasta perusjoukosta, niin tulokset kuvaavat otosta. Jos tarkoituksena on arvioida koko perusjoukkoa, niin otoksessa havaittujen erojen ja riippuvuuksien tilastollinen merkitsevyys kertoo, millä varmuudella eroja ja riippuvuuksia voidaan yleistää otoksesta perusjoukkoon.

Ennakoiva analytiikka ja koneoppiminen

Koneoppimisen malleilla voidaan luokitella (asiakkaat luottoriski-asiakkaisiin ja muihin, vakuutuskorvaushakemukset selviin tapauksiin ja petokselta haiskahtaviin, sähköpostiviestit roskapostiin ja kunnollisiin viesteihin jne.) ja ennakoida määrällisen muuttujan arvoja (käytetyn auton hinta, tuleva kysyntä jne.). Koneoppiminen perustuu siihen, että kone oppii käytettävän mallin parametrit olemassa olevasta datasta ja tämän jälkeen mallia voidaan soveltaa uuteen dataan.

Koneoppimisalgoritmit voidaan luokitella  seuraavasti:

  • Ohjattu oppiminen (supervised learning): Algoritmi opetetaan opetusdatalla (training data). Esimerkiksi roskapostisuodatin opetetaan sähköpostidatalla, jossa on erilaisia tietoja kustakin sähköpostiviestistä sekä tieto siitä oliko sähköpostiviesti roskapostia. Tämän datan perusteella muodostuu malli, jota käyttäen tulevista sähköpostiviesteistä voidaan tunnistaa roskapostiviestit.
  • Ohjaamaton oppiminen (Unsupervised learning): Esimerkiksi asiakkaiden jakaminen asiakassegmentteihin asiakastietojen perusteella.
  • Vahvistusoppiminen (Reinforcement learning): Algoritmi suorittaa toimia ja saa niistä palautetta palkkioiden ja rangaistusten muodossa. Algoritmi oppii saamistaan palkkioista ja rangaistuksista. Vahvistettua oppimista käytetään esimerkiksi robotiikassa.

Seuraavassa jaotellaan ohjattu ja ohjaamaton oppiminen edelleen alatyyppeihin:

mallit

Ohjattu oppiminen

Kohdemuuttuja kategorinen

Jos kohdemuuttuja (ennakoitava muuttuja) on kategorinen, niin kyseeseen tulevat luokittelua suorittavat algoritmit, esimerkiksi logistinen regressio tai päätöspuut.

Esimerkkejä, joissa on kategorinen kohdemuuttuja:

  • Roskapostisuodatin: kohdemuuttujana on tieto siitä, onko sähköpostiviesti roskapostia vai ei?
  • Lääketieteellinen diagnoosi: Kohdemuuttujana on tieto siitä, onko tutkitulla potilaalla tietty sairaus vai ei?
  • Vakuutuspetosten tunnistaminen: Kohdemuuttujana on tieto siitä, liittyykö korvaushakemukseen petos vai ei?

Kohdemuuttuja määrällinen

Jos kohdemuuttuja on määrällinen, niin kyseeseen tulevat regressiomallit ja aikasarjaennustamisen menetelmät. Esimerkkejä, joissa on määrällinen kohdemuuttuja:

  • Vanhan osakehuoneiston hinnan arviointi: Kohdemuuttujana on asunnon hinta.
  • Kysynnän ennustaminen aikaisemman kysynnän perusteella: Kohdemuuttujana on kysyntä.

Ohjaamaton oppiminen

Ohjaamattoman oppimisen algoritmi muodostaa mallin suoraan datasta (ei siis ole erillistä opetusdataa, jossa olisi valmiina kohdemuuttujan arvoja). Esimerkkinä asiakassegmenttien määrittäminen asiakasdatan pohjalta. Paljon käytetty algoritmi on k-means clustering.

Jos datassa on paljon muuttujia, jotka mittaavat osittain samoja asioita, niin datan rakennetta voidaan yksinkertaistaa yhdistämällä muuttujia uusiksi lasketuiksi muuttujiksi, joita on vähemmän kuin alkuperäisiä muuttujia. Tunnetuin algoritmi tähän tarkoitukseen on pääkomponenttianalyysi.