Kategoriat
Yleinen

Ajankohtaisten kysymysten luokittelua: suuret kielimallit ja Suomi

Tekoälyn ympärillä pyörivä hype on lisääntynyt alkuvuodesta merkittävästi. Tämä johtuu pitkälti suurista kielimalleista, joiden keskusteluun optimoitu versio julkaistiin joulukuussa 2022 chatGPT -nimellä.

Kielimallit on opetettu valtavalla määrällä tekstidataa, ja eri kielisen datan määrä vaihtelee paljon. Esimerkiksi englanti, espanja ja kiina ovat määrällisesti aivan eri sarjassa kuin suomi, virosta nyt puhumattakaan. Suomen Turussa koulutetaan parhaillaan kotimaisia GPT3-malleja ja niitä odotellessa on hyvä testata miten hyvin ulkomailla koulutetu mallit osaavat kieltämme.

Xamkin data-analytiikkakoulutuksen ajankohtaisten kysymysten kurssilla kerättiin tekstiaineisto. Jokainen opiskelija linkkasi kurssin keskustelualueelle ajankohtaisen dataan liittyvän uutisartikkelin, minkä jälkeen artikkelien kokotekstejä haettiin verkkosivuilta niiden url-osoitteiden ja lyhyen koodinpätkän avulla. Opiskelijat saivat tehtäväksi analysoida aineistoa luokittelemalla uutistekstien teemoja. Lopputuloksena syntyi 35 artikkelin aineisto. Jokainen sai kylkeensä opiskelijoiden antamat teemat ja ne yhdistettiin samaan sarakkeeseen.

Miten tekoäly suoriutuisi luokittelutehtävästä? Tai mitä muita luokittelutehtäviä sille voisi antaa? Kokeilua varten otettiin käyttöön chatGPT-kielimallin ohjelmointirajapinta. Aineiston uutistekstit lähetettiin ”tekoälylle” ja niiden kanssa kokeiltiin erilaisia ”prompteja” eli kehotteita, jotka ovat tässä tapauksessa ohjeita siitä mitä teksteille pitäisi tehdä.

chatGPT:n rajapinta haluaa sisäänsä järjestelmäkehotteen ja käyttäjäkehotteen. Ensimmäinen määrittelee kontekstia jonka perusteella mallia ohjataan tuottamaan tietynlaista tekstiä. Uutisaineistomme kanssa käytettiin seuraavaa järjestelmäkehotetta:

”olet reipas ja tarkkaavainen tutkimusapulainen joka auttaa tekstidatan luokittelussa”

Sitten kokeiltiin erilaisia käyttäjäkehotteita joilla konetta pyydettiin luokittelemaan tekstiä tai kertomaan siitä asioita.

Käytetyt ”promptit” eli kehotteet

Ensimmäisellä kehotteella pyydettiin erottelemaan tekstistä ihmisten ja organisaatioiden nimet. Toisella pyydettiin laatimaan uutisen pohjalta pahin mahdollinen skenaario ja kolmannessa pyydettiin teemoittelua tarkasti määritellyin ehdoin.

Mutta ovatko tulokset mistään kotoisin? Ensimmäisen kehotteen kohdalla tulokset on kohtuullisen helppo tarkistaa. Lisäksi on olemassa suomen kielellä opetettuja malleja jotka on koulutettu juuri tällaisia tehtäviä varten. Ja tämän pienen aineiston kanssa vaikuttaa, että chatGPT suoriutuu tehtävästä todella hyvin. Toisen ja kolmannen kehotteen laatua on vaikeampi arvioida.

Voit tarkastella tuloksia itse lataamalla csv-tiedoston täältä: https://drive.google.com/file/d/1rgzOo1h9IwBeKBGf8kNw2UU4IeFdlPCF/view?usp=share_link

Kategoriat
Yleinen

Sankey-kaavion luominen Kouvolan ostolaskuista

Sankey-kaavio on virtakaavio, joka edustaa tietojen, resurssien tai energian virtausta yhdestä elementistä toiseen. Kaaviot koostuvat suorakaiteita, jotka edustavat kategorista dataa sekä nuolista, jotka edustavat virtauksia kategorioiden välillä. Nuolen leveys vastaa virtauksen määrää.

Kaavio Kouvolan kaupungin vuoden 2021 ostolaskuaineistosta

Yksi suosittu käyttökohde Sankey-kaavioille on oman talouden hallinta. Seuraamalla omia tuloja ja menoja ja merkitsemällä tiedot ylös exceliin luo hyvän aineiston visualisoitavaksi. Verkkopankissa tiedot ovat hyvin saatavissa ja menojen ja tulojen kategorisointi voi olla myös hyvin opettavainen kokemus.

Seuraavaksi luomme yksinkertaisen Sankey-kaavion käyttämällä ei minun, vaan kotikaupunkini Kouvolan ostolasku-aineistoa vuodelta 2021 joka on saatavilla osoitteessa https://www.kouvola.fi/kouvolankaupunki/kouvola-tietoa/avoin-data/ Kaavion luomiseen käytetään SankeyMATIC -työkalua joka puolestaan käyttää tehokasta JavaScriptin D3.js visualisointikirjastoa.

Data on Excel-tiedostossa joten lienee luontevaa käyttää datan muokkaukseen Exceliä. Ennen visualisointia data on muokattava oikeaan muotoon, joka tässä tapauksessa on seuraava:

Mistä [paljonko] Minne

Vasemmalle puolelle tulee kategoria ja oikealla toinen kategoria johon virtaus kohdistuu. Hakasuluissa esitetään virtauksen määrä, jonka täytyy olla numeerinen muuttuja.

Aluksi poimin ostolaskuexcelistä vain halutut sarakkeet. Tässä tapauksessa vasemmalle puolelle tulee pelkästään ”Kunnan nimi”, oikealle muuttuja nimeltä ”Tiliryhmä 1” sekä numeeriseksi muuttujaksi ”Laskun loppusumma” jolloin taulukon alku näyttää seuraavalta:

Seuraavaksi aineisto pivotoidaan. Tarkoitus on yksinkertaisesti ryhmitellä aineisto Tiliryhmä 1:n mukaan ja laskea jokaiselle ryhmän jäsenelle laskujen summa. Tätä varten luodaan pivot-taulukko painamalla (englanninkielisessä excelissä) Insert -> pivot table -> From Table/range.

Alueeksi valitaan sarakkeet joissa Tiliryhmä 1 ja Laskun loppusumma majailevat, eli tässä tapauksessa sarakkeet B ja C. Pivot-näkymässä Tiliryhmä raahataan hiiren avulla laatikkoon ”rows” ja laskujen eurot raahataan laatikkoon values, josta Excel oletuksena laskee summan.

Pivotoimalla valitut sarakkeet saadaan aikaan nk. GROUP BY toiminto

Seuraavaksi siirrän pivot-taulukon omalle välilehdelle, jossa suoritetaan viimeinen toimenpide ennen visualisointia. Se on datan muuttaminen sankeymaticin haluamaan mistä [paljonko] minne -muotoon.

Lisään pivot taulukon vasemmalle puolelle uuden sarakkeen A joka saa joka rivillä arvon ”kouvolan kaupunki” Edustamaan kaaviomme vasenta laitaa. Sarake B sisältää tiliryhmäluokittelut ja sarake C laskujen summat. Kätevimmin datan saa visualisoitavaan muotoon käyttämällä seuraavaa funktiota uuteen sarakkeeseen:

=CONCATENATE(A2, " [", C2, "] ", B2)

Tässä A-sarakkeen toisella rivillä oleva arvo (koska ensimmäisellä on sarakkeen nimi) tulee vasemmalle, sen väliin C-sarakkeen arvo hakasuluissa ja vasemmalle B-sarakkeen arvo. Concatenate tarkoittaa suurin pirtein toisiinsa kytkemistä tai yhteen liittämistä. Lopputuloksena on seuraavanlainen taulukko:

D-sarakkeessa on funktiolla muodostettu data muodossa mistä [paljonko] minne

D-sarakkeen sisällön voi kopioida sellaisenaan sankeyMATICin inputs-laatikkoon. Työkalu tarjoaa paljon vaihtoehtoja kaavion muokkaamiseen monipuolisella käyttöliittymällä. Esimerkiksi tässä tapauksessa virtaus lähtee yhdestä osoitteesta, mutta sen voi myös jakaa kategorioihin. Lisäksi kaavion ulkonäköä voi muokata todella monipuolisesti haluamansa näköiseksi. Lopputuloksena tiliryhmän visualisoinnista syntyi seuraava kuva, jonka voi kätevästi ladata png-muodossa:

Kategoriat
Yleinen

Power Apps tuntiseurantasovellus

Annetun tehtävänantoni perusteella minun oli luoda tuntiseurantaan suunnattu ohjelma. Ohjelman tarkoituksena olisi tarjota Xamkin oppilaille helppo ja vaivaton keino suoritetun tuntimäärän kirjaamista ja seuraamista varten, lähinnä työharjoittelun yhteydessä, ja sitä tulisi pystyä käyttämään älylaitteella kuten puhelimella tai tabletilla.

Varsinaisesta sovelluskehittämisestä itselläni ei ollut minkään sortin kokemusta, vaikka eri ohjelmointikielten alkeita oli tultukin opiskeltua, kuten muun muassa Python, JavaScript ja PHP. Sovellus oli tarkoitus luoda Power Appsia käyttäen. Nimi ei sanonut omalla kohdallani mitään, mutta helpotuksekseni asiat pian avauvuivat.


Power Apps on Microsoftin Power -tuoteperheeseen (kuva 1) kuuluva sovellusten kehittämistä varten luotu työkalu. Power -tuoteperheen sovellukset ovat suunniteltu toimimaan nimenomaan keskenään, mutta moni niistä toimii myös muiden Microsoftin -palveluiden kesken.

Kuva 1. Microsoft Power -tuoteperhe.

Power Apps -kehittämisympäristö on toteutettu pilvipalveluna ja löytyy osoitteesta https://make.powerapps.com. (kuva 2) Sillä luodut sovellukset toimivat älylaitteilla, kuten puhelimilla ja tableteilla, mutta myös selaimessa. Sovelluskehitys on yhdistelmä palikkaohjelmointia ja kyselykieltä muistuttavien käskyjen kirjoittamista.

Kuva 2. Power Apps käyttöympäristö ja ohjelman aloitussivu.

Tuot projektiisi ennalta luotuja elementtejä jonka jälkeen asetat niille haluamasi arvot ja kerrot kuinka ohjelma reagoi käyttäjän ollessa vuorovaikutuksissa käyttöliittymän kanssa. Nämä tuodut elementit voivat olla näppäimiä, listoja, ajastimia, tai pelkkiä kuvioita tai ihan vain puhdasta tekstiä.

Power Apps -ohjelmat tukevat sisäänkirjautumista Microsoft -tilin kautta, jolloin sovelluskehittäjän itse ei tarvitse huolehtia salasanojen ja käyttäjätunnuksien salaamiseen liittyvistä tietoturvaongelmista. Samalla ohjelma mahdollistaa käyttäjätietoja käsittelevien funktioiden käytön kuten User().FullName ja User().Email, jotka ovat suuri apu luodessa ohjelmaa, jonka on tarkoitus pystyä erittelemään eri käyttäjät toisistaan.

Ja kuten edellä mainitsin Power Apps on suunniteltu toimimaan vuorovaikutuksissa eri Microsoft -palveluiden kanssa. Käytin projektissani Microsoft Sharepoint -palvelun alla toimivaa Lists -sovellusta, joka mahdollistaa taulukkodatan säilömisen ja jakamisen. Loin kaksi listaa/taulukkoa johon toiseen listasin tällä hetkellä olevat työtehtävät (kuva 3) ja toiseen käyttäjien tunnit. Lisäksi siirsin taulut DataLabs Sharepoint -ryhmän alle, jotta kaikilla DataLabs ryhmän jäsenillä olisi lähtökohtaisesti oikeudet taulujen käsittelemiseen sovelluksen käytön yhteydessä. Ohjelma toimi halutulla tavalla jos käyttäjältä puuttuvat taulujen muokkaamista varten edellytettävät oikeudet.

Kuva 3. Sharepoint työtehtävät -lista.

Käyttäjä pystyy hakemaan työtehtäviä sovelluksen saatavilla olevat työtehtävät -painikkeen kautta, joka tulostaa edeltävän kuvan 3 työtehtävät -listan (kuva 4). Työtehtävän nimeä koskettamalla käyttäjä saa esille kyseistä tehtävää koskevat tarkemmat tiedot ja voi halutessaan valita tehtävän itselleen painiketta painamalla.

Kuva 4. Power Apps työtehtävät -lista.

Työtehtävän valitsemisen jälkeen kyseinen tehtävä löytyy tehtävien lisäämisessä käytetyn valikon alta (kuva 5) ja käyttäjä voi kasvattaa sen tehtävän tunteja kirjatessaan suorituksiaan. Valikon kautta käyttäjä pystyy myös muokkaamaan tai poistamaan aikaisemmin kirjattuja tehtäviä. Kenttinä ovat päiväys, työ, tunnit ja valinnainen tekstikenttä johon voi halutessaan kirjoittaa jotain.

Kuva 5. Oman tehtävän lisäys/muokkaus.

Tehtävän kirjaamisen jälkeen tehtävä tulostuu käyttäjän työtehtävät -sivulle (kuva 6), jossa käyttäjä voi tarkastella kirjaamisiaan. Kirjattuja päiviä voi suodattaa halutun päivän mukaan ja niitä voi halutessaan muokata tai poistaa. Tehtävien yhteenlaskettu tuntimäärä tulostuu sovelluksen aloitussivulle. (kuva 2)

Kuva 6. Omien tehtävien näkymä.

Sovelluksen käyttöliittymä on vielä tässä vaiheessa ei-niin-täydellinen ja siitä puuttuu muutama ominaisuus. Pohjimmiltaan sen runko kuitenkin toimii. Tarkoituksena olisi myös luoda interaktiivinen Power BI -visualisointi, jota kautta sovelluksen käyttäjät, opettajat, tai joko kummatkin pystyisivät seuraamaan tuntikirjanpitoon liittyvä tunteja ja tavoitteita.


Power Apps esittää itsensä helppokäyttöisenä ja nopeana tapana luoda sovelluksia Microsoft -ympäristössä sijaitsevan datan ympärille. Omalta osaltani ohjelma ei kuitenkaan ollut aina niin yksiselitteinen mitä se lupasi. Joskus ohjelma ei vain toiminut halutulla tavalla ja sen yksinkertaisuuden takia ongelman löytäminen osoittautui odotettua turhauttavammaksi, mutta vikaa oli aivan varmasti myös käyttäjässä. Ja vaikka välillä ohjelman palikkamainen rakenne voikin tuoda omat rajoitteensa, niin se on silti erinomainen työkalu kaikille heille, jotka eivät ole ohjelmoinnin mestareita.

Kategoriat
Yleinen

R-studio ja Eurostat

R-studio on hallitseva ilmainen avoimeen lähdekoodiin perustuva ohjelmointiympäristö, joka tarjoaa graafisen käyttöliittymän R-kielen kirjoittamiselle antaen huomattavan määrän työkaluja kielen hallintaan. R-ohjelmointikieli on alusta alken luotu datasettien käsittelemistä varten, mutta sen tarjoamista ominaisuuksista eivät nauti pelkästään data-analytiikot ja -tieteilijät, vaan sen käytön ovat omaksuneet myös muunlaiset käyttäjät. (Giorgi F, Ceraolo C & Mercatelli D. 2022.)

Ohjelmointikieli tukee sovitettujen kirjastojen luomista, jotka pitävät sisällään ennalta luotuja komentoja laajentaen ja tehostaen R-kielen käyttöominaisuuksia. Yhtenä näistä kirjastoita on Eurostatin tarjoama eurostat-kirjasto. Eurostat (https://ec.europa.eu/eurostat/web/main/home) on Euroopan komission alainen yksikkö, joka tuottaa tilastotietoa Euroopan unionin käyttöön. Palvelun tarkoituksena on tarjota mahdollisuus suurien tilastojen jalostamiseen EU alueella ja palveluiden parantamiseen. (European Commission. 2022.) Tilastoihin pääsy ja niiden käyttäminen on täysin maksutonta.

Eurostat-kirjasto pitää sisällään funktioita, jotka mahdollistavat R-kielen tarraamisen Eurostatin ylläpitämän tietokannan (https://ec.europa.eu/eurostat/web/main/data/database) ohjelmointirajapintaan. Näin ollen käyttäjä voi tarkastella, käsitellä ja tallentaa sivustolta löytyvää dataa suoraan R-kielen välityksellä.

Eurostatin käyttöönotto

Eurostat kirjaston käyttämäinen edellyttää eurostat paketin asennusta ja se tapahtuu samalla lailla kuin minkä tahansa muunkin paketin asennus. Voit asentaa sen joko R-studion yläreunasta löytyvästä Tools -> Install packages valikosta tai käyttäen install.packages() funktiota malliin install.packages(”eurostat”) (kuva 1). Paketin asentamisen jälkeen saat kirjaston käyttöösi lisäämällä eurostat kirjaston projektiisi library(eurostat) funktiolla.

Kuva 1. Eurostat pakettien ja kirjaston asennus.

Tämän jälkeen Eurostatin eurostat-kirjasto on käytettävissäsi ja pystyt hyödyntämään sen tarjoamia uusia funktioita. Yhtenä alustavimmista funktioista on get_eurostat_toc(), joka tulostaa kaikki Eurostatista nykyhetkellä löytyvät datasetit. Alhalla (kuva 2) on esimerkki kyseisen kyselyn muuttujaan asettamisesta.

Kuva 2. Eurostat datasettien hakeminen.

Muuttujan asettamisen jälkeen voit avata sen ja tarkastella funktion tuoman kyselyn tulosta (kuva 3). R-studio muuntaa datan oletuskohtaisesti taulukkomuotoon, jossa se on myös ihmissilmälle helposti luettavassa muodossa. Taulukosta löytyvä code-sarake on olennainen tieto asian etenemisen kannalta, sillä se toimii taulukon tunnuksena.

Kuva 3. Haetut datasetit.

Datasetin hakeminen

Haetaan cens_hnmga tunnusta käyttävä taulu komennolla df <- get_eurostat(”cens_hnmga”, type = ”label”, time_format = ”num”). Taulu on avattavissa myös selaimella osoitteessa https://ec.europa.eu/eurostat/web/products-datasets/-/cens_hnmga. Taulu sisältää 30 Euroopan valtion väkiluvun vuosina 1981, 1991 ja 2001, sekä sukupuolijakauman. Taulun hakemisen jälkeen se on käytettävissä kuin mikä tahansa muukin R-studiossa sijaitseva taulu, mahdollistaen sen sisältämän datan suodattamisen ja muokkaamisen. (kuva 4)

Kuva 4. Taulun muokkaus.

Muokkaamisen lisäksi taulun dataa voidaan myös tulostella perinteiseen tapaan esimerkiksi ggplot-kirjaston voimin. (kuva 5)

Kuva 5. Esimerkkitulostus.

Loppumietteet

Tarpeen sitä vaatiessa Eurostat soveltuu hyvin erinäisten dataharjoitusten ja projektien datalähteeksi, mutta kaikki Eurostatin tietokannasta löytyvä data ei kuitenkaan käänny yhtä helposti käsiteltävään muotoon. Kokenut R-kielen osaaja jalostaa datasetin kuin datasetin, mutta kokeneemmattomalle käyttäjälle sopivan datasetin löytäminen tuhansien joukosta voi osoittautua omaksi ongelmakseen.

Palikoiden osuessa kohdalleen Eurostat kuitenkin hoitaa roolinsa sujuvasti ja näen sen varteen otettavana vaihtoehtona data-analytiikkaa opiskeleville vailla aineistoa, tai vaikkapa opettajille uuden opetusmateriaalin luonnin yhteydessä.

Lähteet

Giorgi F, Ceraolo C & Mercatelli D. 2022. The R Language: An Engine for Bioinformatics and Data Science. Päivitetty 4.2021. Saatavissa: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9148156/ [viitattu 18.11.2022].

European Commission. 2022. About Eurostat. Saatavissa: https://ec.europa.eu/eurostat/web/main/about-us/ [viitattu 18.11.2022].

Kategoriat
Yleinen

Datalab harjoittelu

Harjoittelussani oli tarkoitus tehdä tehtäviä Excelissä ja tutustua syvemmin sen ominaisuuksiin. Tarkastelin erityisesti analysointityökalua, mikä on Excelin lisäosa. Se antaa mahdollisuuden analysoida isoakin määrä dataa helposti. Analysointityökalun tutkiminen on ollut erittäin kiinnostava ja opettava kokemus.

Data

Näihin töihin data on kerätty Yahoo financista. Keräsin dataa kullan, raakaöljyn, platinan ja hopean hinnan muutoksista. Data oli vuoden 2012 alusta vuoden 2022 huhtikuun loppuun. Tarkemmin sanoen data koostui päivittäisistä päätöshinnoista. Yahoo financista ei ollut suoraa lataus mahdollisuutta näistä tiedoista, joten tietojen keräyksessä piti käyttää luovuutta. Lopulta sain siirrettyä tiedot Exceliin komentoja Ctrl-C ja Ctrl-V käyttäen. Aluksi siirrettyä dataa piti muokata, sillä luvut olivat muodossa 1,000.00, mitä Excel ei ymmärtänyt. Muokkaus perusmuotoon 1000,00 tehtiin käyttäen Excelissä komennolla Ctrl-F avautuvaa Korvaa-työkalua. Korvaa-työkalulla muutin myös päivämäärät muodosta kk.pp.vv muotoon pp.kk.vv.

Kuva 1 Viiva diagrammi raaka-aineiden hinta indeksistä

Valitsin arvokkaita raaka aineita, koska niistä voi nähdä mitä maailman taloudessa tapahtuu. Kullan, hopean ja platinan hinnat Yahoo finanssissa annettiin dollareina unssilta. Öljyn hinta sen sijaan annettiin dollareina tynnyriltä.

Kullalta oli ensimmäinen raaka-aine, jonka päätin valita. Kulta on perinteisesti ollut sijoittajien turvasatama markkinoiden epävakaina aikoina (Talousanomat, 2019). Kulta on siis historiallisesti luotettava ja tasainen arvon osoittaja taloudessa. Yllä olevasta käyrästä voit nähdä kullan hinnan on muutokset prosentteina viimeisen 10 vuoden aikana. Kullan hinta on noussut 70 prosenttia eli noin 800 dollaria viimeisen 10 vuoden aikana.

Hopea valittiin sen halvan hinnan ja sen käytöstä taloudessa. Hopean hintaa heiluttaa paitsi koronatilanne myös toiveet teollisuuden tuotannon elpymisestä ja lisäkysynnästä ja toisaalta huoli tuotannon riittävyydestä (Taloussanomat, 2020). Hopean hinta on korkeimmillaan noussut 170 prosenttia. Hopean alhaisen hinnan takia tämä muutos on ollut vain kymmenien dollarien verran.

Platina taas on arvoltaan kullan ja hopean välissä. Ei liian kallis jalometalli mutta ei myöskään liian halpa. Kuvan 1 mukaan platinan hinta on laskenut huomattavasti viimeisen 10 vuoden aikana. Platinan hinta on pudonnut 40 prosenttia eli noin 700 dollaria.

Raakaöljyn valitsi Ukrainan sodasta seuranneesta hinnan noususta. Jolloin korrelaatio olisi helpompi huomata hinnan muutoksista. Öljyn hinta on noussut 29 prosenttia eli noin 20 dollaria viimeisen 10 vuoden aikana. Öljyn hinta vuonna 2020 putosi 88 prosenttia. Seuraavan kahden vuoden aikana öljyn hinta nousi huimat 117 prosenttia.

Kuva 2 Näkymä datasta Excelissä

Datan käsittelyyn käytettiin Excelin apuohjelmaa analysointityökalut. Analysointityökalut voi aktivoida asetuksista. Kyseisellä työkalulla voit tehdä monenlaisia data-analyysejä suurellekin määrälle dataa helposti. Sen helppokäyttöisyys ja käyttäjäystävällisyys käy ilmi nopeasti.

Korrelaatio

Yksi analysointityökaluista on nimeltään Korrelaatio. Kyseinen työkalu hyödyntää Pearsonin korrelaatiokerrointa, joka mittaa lineaarisen yhteyden voimakkuutta kahden muuttujan välillä. Työkalulla pystyt helposti laskemaan (pareittaiset) korrelaatiokertoimet usean muuttujan tilanteessa (Kuvat 3 ja 4). Huomaa, että jos käytät ainoastaan KORRELAATIO-komentoa Excelissä, saat vain yhden korrelaatiokertoimen. Korrelaatio-työkalun tutkiminen ja sen käyttöön perehtyminen oli kiinnostava projekti ja oli hyvin opettavaista.

Kuva 3 Esimerkki korrelaatio matriisista

Korrelaatio on voimakkaampi mitä lähempänä korrelaatiokerroin on 1 tai -1. Se on sitä heikompi mitä lähempänä se on nollaa. Matriisista (Kuva 3) näet, että kullalla ja raakaöljyllä on heikko suora korrelaatio. Platinalla ja kullalla on sen sijaan heikko suora korrelaatio. Hopealla ja platinalla on voimakas suora korrelaatio. Platinalla ja raakaöljyllä sekä Hopealla ja kullalla on taas vahva korrelaatio. Raakaöljyllä on vahva korrelaatio hopean kanssa.

Korrelaatio matriisia tutkiessani huomasin, miten datasetin laajuus vaikutti suuresti matriisiin. Datan keräys suppeasti tai pieneltä aikaväliltä voi vaikuttaa korrelaatiomatriisiin tuloksiin. Kuvan 4 data on kerätty vuoden alusta alkaen toukokuun alkuun. Kuvien 3 ja 4 matriisit ovat selvästi hyvin erilaiset.

Kuva 4 Esimerkki suppean datan käytöstä korrelaatio matriisissa

Tunnusluvut

Toinen työkalu mihin tutustuin, oli Tunnusluvut-työkalu. Se on hyvin käytännöllinen työkalu, jonka avulla voit saada datasta laskea datasta perustunnusluvut, kuten keskiarvon, moodin ja mediaanin. Huomaa, että moodi voi näkyä myös muodossa #puuttuu! (kuva 5), jos datasetissä ei ole yhtäkään samanlaista arvoa. Kuvassa 5 voit nähdä, mitä kaikkea Tunnusluvut-työkalulla saadaan selville. Tämä työkalu vaikuttaa tehokkaalta työvälineeltä, joten aion tulla käyttämään sitä tulevaisuudessa. Mielestäni sillä on paljon potentiaalisia hyötyjä.

Kullan tämänhetkinen hinta on keskiarvon yläpuolella yllättävän paljon. Kullan hinta on nyt 1909,30 (dollaria unssilta) verrattuna koko datan keskiarvoon 1522,71. Kullan hinta on vaihdellut paljon vuosien varrella, tämän voi nähdä kohdasta Alue, joka tarkoittaa tunnuslukua vaihteluväli (joka kertoo suurimman pienimmän arvon erotuksen). Mielestäni kiinnostavin havainto koskien tunnuslukuja oli raakaöljyn halvin hinta, mikä oli vain -37,63 dollaria tynnyriltä. Tämä oli mielestäni hyvin kiinnostava havainto.

Kuva 5 esimerkki tunnusluvut työkalusta

Pohdinta

Mielestäni aikani analysointityökalu apuohjelman parissa on ollut todella palkitsevaa ja kiinnostava. Opin jopa tämän blogikirjoituksen aikana uusia asioita Excelistä. Odotan innolla, mitä tehtäviä tulee vielä harjoitteluni aikana. Haluaisin tutkia myös muita apuohjelmia ja saada niistä tietoja.

Lähteet

STT–AFP. 2019. Kullan hinta singahti ylimmilleen kuuteen vuoteen. Talousanomat 21.6.2019. Verkkolehti. Saatavissa: https://www.is.fi/taloussanomat/art-2000006150257.html

Startel–Bloomberg. 2020. Kullan hinta harppasi ennätyslukemiin, hopea kalleinta seitsemään vuoteen. Talousanomat 22.7.2020. Verkkolehti. Saatavissa: https://www.is.fi/taloussanomat/art-2000006578695.html

Kategoriat
Yleinen

Harjoittelu: DataLAB

Kokonaisuudessaan harjoitteluni koostui useasta osasta. Minulla oli hieman aikaisempaa työkokemusta, jota kykenin hyödyntämään osana perusharjoittelua. Lopun perusharjoittelun ja syventävän harjoittelun suorituspaikkana toimi DataLAB, jossa työskentelin muutaman isomman projektin ja tehtävän parissa. Harjoittelun suoritin toukokuun 2021 ja joulukuun 2021 välillä.

Hävikki-projekti

Hävikki-projektiin haettiin data-analytiikan opiskelijaa keväällä 2021. Projekti oli kuvauksen perusteella kiinnostava ja mikä tärkeintä, siinä pääsi vaikuttamaan oikeisiin ja olemassa oleviin ongelmiin. Projektin tarkoitus oli selvittää vähittäistavarakaupoista kerättävän datan avulla, voiko ruoan hävikkiä ennustaa.

Pitkälti projektin työkaluna toimi R-studio. Projektin ensimmäisessä vaiheessa hävikkiä ennustettiin regressiomallien avulla. Projektin toisessa vaiheessa saatiin lisää dataa käyttöön ja lähestymistapaa vaihdettiin. Hävikin esiintyvyyttä alettiin tarkastelemaan keskiarvon ja keskihajonnan avulla, joita laskettiin sitä mukaa kun päiviä kertyi. Tällä tavoin ennusteen tarkkuus parani, mitä enemmän dataa saatiin kerättyä.

Hävikki-projekti sai myös jatkoa syksyllä 2021 data-analytiikan opintoihin sisältyvän projektin yhteydessä. Projektin tarkoituksena oli löytää sopiva määritelmä ongelmallisille tuotteille, joilla on suurempi riski aiheuttaa hävikkiä.

Kesätehtävät

Kesän ajaksi sain kolme isompaa tehtävää suoritettavaksi. Ensimmäisenä tehtävänä oli luoda frekvenssejä kuvaava puudiagrammi hyödyntäen R-Studiota. Esimerkiksi kyselytutkimuksen analysoinnissa voi olla hyödyllistä käyttää puudiagrammia, sillä se kuvaa selkeästi muuttujien jakautumista sekä näyttää lisäksi niiden arvot ja frekvenssit. Kirjoitin aiheesta myös erillisen blogin: Frekvenssejä kuvaava puudiagrammi.

Toinen kesätehtäväni oli muokata BRFSS-data kyselytutkimusainestoa vuodelta 2019, jossa on tutkittu Yhdysvaltain kansalaisten terveyttä ja elintapoja. Tarkoituksena oli saada aikaan selkeämpi ja suomennettu kokonaisuus, joka sisältää jatkuvia ja epäjatkuvia muuttujia hyödyntäen R-Studiota. Tarkemmin muokkauksesta kerron blogissa: BRFSS-datan muokkaus.

Kolmas kesätehtäväni oli R-Studion avulla tarkastella logistista regressiota. Tehtävänä oli esitellä logistisen regression teoriaa, mallin tekeminen, ennustaminen ja selvittää mallin toimivuus. Tehtävässä hyödynsin aiemmin muokkaamaani BRFSS-dataa.

Muuta

DataLAB pitää sisällään myös muita työtehtäviä. Niihin kuuluu kuukausittaiset palaverit, joissa käydään läpi sen hetken työtilanteita ja jatkotoimenpiteitä. Kouvolan kampukselle avatun FUEL-tila myötä myös DataLAB sai fyysiset toimitilat syksyllä 2021. Olin itse mukana tekemässä muuttoa ja järjestelyitä uusissa tiloissa. DataLAB piti FUEL-tilan avajaisissa myös omaa pistettä, jossa esiteltiin aikaan saatuja töitä. Omalta osaltani esittelin keväällä 2021 tehtyä Hävikki-projektia.

Lopuksi

Harjoittelusta opin paljon. Tehtävät olivat välillä haastavia, mutta koen sen olleen myös suuri etu. Hienoa oli myös päästä vaikuttamaan oikeisiin ongelmiin sekä nähdä oma työnsä jälki, ja että siitä oli myös hyötyä. DataLAB tarjoaa monipuolisia työtehtäviä opiskelijoille, joten siellä harjoittelun suorittamista kannattaa ehdottomasti pitää mahdollisuutena.

Kategoriat
Yleinen

FREKVENSSEJÄ KUVAAVA PUUDIAGRAMMI

Puudiagrammi on kätevä työkalu, jota voidaan hyödyntää esimerkiksi kyselytutkimuksen analysoinnissa. Puudiagrammi kuvaa selkeästi muuttujien jakautumista sekä näyttää lisäksi niiden arvot ja frekvenssit.

Kuva 1. Esimerkki puudiagrammista

Puudiagrammin tekoon löytyy ohjeistus: Introduction to vtree(Barrowman 2021). Barrowmanin opas toimi pohjana puudiagrammin luomisessa R-Studiolla.

Data

Puudiagrammi toimii parhaiten tarkasteltaessa epäjatkuvia muuttujia. Kyseistä diagrammia luodessa käytettiin Armeniassa sijaitsevien anniskeluravintoloiden ja niihin kohdistuneen kyselytutkimuksen tuloksia (Hambardzumyan. 2017). Yllä olevassa puudiagrammissa on esiteltynä vastaajien sukupuoli, ikä ja syy käydä ravintolassa.

Puudiagrammien tarkastelussa tulee muuttujien arvojoukkojen olla riittävän suppeita. Tarkasteltaessa jatkuvia muuttujia arvojoukot saattavat hyvin usein olla liian laajoja. Tästä syystä muuttujat kannattaa muuntaa epäjatkuviksi muuttujiksi. Tässä tapauksessa esimerkiksi ikä oli jatkuva muuttuja, joka muunnettiin ikäluokaksi.

Diagrammin luominen käytännössä

Puudiagrammin luominen R-Studiossa on yksinkertaista ja funktion avulla vielä yksinkertaisempaa ja nopeampaa. Funktion luominen mahdollistaa sen, että käytännössä käskytykseen tarvitsee syöttää vain halutut sarakkeet, eli muuttujat, joita puudiagrammin avulla halutaan tarkastella.

Kuva 2. Puudiagrammin luominen.

Käytännön kannalta ongelmallista oli, että puudiagrammia ei saatu näkymään muuten, kuin kääntämällä RMD-tiedosto HTML-tiedostoksi. Tarvittaessa puudiagrammi saadaan kopioitua esimerkiksi Word-tiedostoon. Puudiagrammi on myös kuvana iso, joten muuttujien lisääntyessä kannattaa puudiagrammi piirtää pitkittäin. Poikittain piirrettäessä arvojen ja frekvenssien tarkastelu voi olla vaikeaa sillä kuva on pieni.

Tulevaisuudessa hyödyllistä olisi myös luoda työkalu, jolla R-kieltä osaamatonkin henkilö kykenee luomaan puudiagrammin esimerkiksi Excel-taulukon pohjalta.

Lähteet

Barrowman, N. 2021. Introduction to vtree. Opas. Päivitetty 3.10.2021. Saatavissa: https://cran.r-project.org/web/packages/vtree/vignettes/vtree.html [viitattu 12.12.2021].

Hambardzumyan, E. 2017. Armenian Pub Survey. Data. Päivitetty 17.3.2017. Saatavissa: https://www.kaggle.com/erikhambardzumyan/pubs [viitattu 12.12.2021].

Kategoriat
Yleinen

BRFSS-DATAN MUOKKAUS

BRFSS-data on kyselytutkimusainestoa vuodelta 2019, jossa on tutkittu Yhdysvaltain kansalaisten terveyttä ja elintapoja. Data on taulukkomuodossa XPT-tiedostona ja sitä oli noin 400 000 riviä ja yli 300 saraketta. Data on saatavissa täältä (CDC. 2020).

Tehtävänä oli muokata datasta lyhyempi ja selkeämpi kokonaisuus, jota voi käyttää esimerkiksi opetuksessa ilman, että datan muokkaamiseen tarvitsee käyttää paljoa aikaa. Datan käyttö edellyttää jonkin tapaista muokkausta, sillä alkuperäisen datan arvojen tulkitseminen vaatii erillisen tulkintaa varten tehdyn tiedoston (CDC. 2020). Esimerkiksi kyselytutkimuksessa osa vastaajista oli antanut painonsa nauloina ja osa taas kilogrammoina. Lisäksi joukosta löytyi vastaajia, jotka eivät halunneet kertoa painoa tai kohta on jätetty tyhjäksi.

Kuva 1. Painon alkuperäiset arvot tulkinnan avuksi tehdyssä tiedostossa (CDC. 2020).

Datan muokkaus alkoi sillä, että valittiin tiedot, joihin selkeytetty data haluttiin rajata. Yhteensä uuteen dataan kerääntyi saraketietoja noin 30 kappaletta ja rivitietoja rajausten jälkeen oli noin 300 000. Uuteen ja rajattuun dataan valitut tiedot olivat haastateltavan joukon perustietoja (pituus, paino, sukupuoli yms.), alkoholin käyttöön liittyvät vastaukset sekä tupakointiin liittyvät vastaukset.

Itse konkreettinen datan muokkaus oli suurimmilta osin vain arvojen määrittämistä uudelleen. Datan oli tarkoitus koostua sopivassa suhteessa sekä jatkuvista ja epäjatkuvista muuttujista. Lisäksi data käännettiin suomen kielelle. Työkaluna datan käsittelyssä toimi R-studio.

Kuva 2. Arvojen muokkausta.

Lopuksi uusi data tallennettiin omaksi R-tiedostoksi, josta sen voi muuntaa tarvittaessa esimerkiksi Excel-tiedostoksi ja testattiin datan toimivuutta laskemalla jatkuvien muuttujien keskiarvot. Lisäksi muokatulle versiolle tehtiin myös Word-tiedosto, johon kirjattiin kaikki muuttujien nimet ja niiden arvojoukot. Muokatusta datasta tehtiin myös lyhennetty versio, jossa muuttujien nimet on lyhennetty.

Kuva 3. Jatkuvien muuttujien keskiarvot.

Lähteet

LLCP 2019 Codebook Report Overall version data weighted with _LLCPWT Behavioral Risk Factor Surveillance System. 2020. CDC. WWW-lähde. 31.7.2020. Saatavissa: https://www.cdc.gov/brfss/annual_data/2019/pdf/codebook19_llcp-v2-508.HTML [viitattu 12.12.2021].

LLCP2019XPT. 2020. CDC. XPT-tiedosto. Saatavissa: https://www.cdc.gov/brfss/annual_data/annual_2019.html [viitattu 20.12.2021].

Kategoriat
Yleinen

Reddit-datan kerääminen r/wallstreetbets alaredditistä

Kymmenellä rivillä koodia joista osa on turhia

Python

Tässä blogitekstissä kerrotaan miten redditistä voi kerätä dataa käyttämällä yksinkertaista python ohjelmaa. Sen käyttö ei vaadi koodausosaamista, riittää jos osaa tehdä python asennuksen ja avata tiedoston mukana tulevalla työkalulla.

Datan keräämiseen tarvitaan siis python-ohjelmointikielen asennus tietokoneelle. Kätevän ja jokseenkin pöhöttyneen ratkaisun tarjoaa Anaconda ja sen voi asentaa tietokoneelleen täältä.

Kun kärmes on asennettu, voidaan siirtyä datan keräämiseen. Tässä esimerkissä käytetään Pushshift APIa sekä sille räätälöityä python kirjastoa nimeltä psaw. Jos ei jaksa lukea blogitekstiä niin koodi löytyy datalabin githubista täältä.

Psaw-kirjasto täytyy asentaa ennen sen käyttämistä. Anacondan (ja vähemmän pöhöttyneen minicondan) mukana tulee python pakettien asentaja nimeltä pip, ja tarvittavan paketin voi asentaa kirjoittamalla anacondan komentoriville komento pip install psaw

anaconda komentorivin käynnistys windows koneella

Vihko

Koodi on kirjoitettu internet-selaimessa pyörivään Jupyter-vihkoon. Sen voi käynnistää joko anacondan valikosta tai kirjoittamalla jupyter notebook promptiin. Githubista löytyvän vihkon voi avata omalla koneella ja tehdä redditiin hakuja muuttamalla hakuparametrejä mieleisekseen (ja lisäämällä uusia). Pushshift API tarjoaa useita tapoja rajata haettavaa dataa. Esimerkiksi parametrillä q voi postauksen otsikkoon tai tekstiin kohdistaa sanahakuja, mutta tässä käytetään vain seuraavia parametrejä:

  • after: ajankohta jonka jälkeen postauksia haetaan (VVVV-KK-PP)
  • before: ajankohta johon asti postauksia haetaan
  • subreddit: alareddit josta haetaan
testihaussa käytetyt hakuparametrit jupyter vihkossa

Haku tehdään postausten (submission) endpointiin ja kohdennetaan r/wallstreetbets alaredditiin. Se on aktiivinen yhteisö joka tunnetaan mm. äkillisestä innostuksesta ostaa Gamestop-yrityksen osaikkeita alkuvuodesta 2021.

Testissä haetaan postauksia puolentoista kuukauden ajalta lokakuun alusta marraskuun puoleenväliin 2021 ja niitä löytyi hieman yli 41 000, eli n.900 kpl/päivä.

Nopeata tarkastelua varten postausten data laitetaan Pandas-kirjaston avulla luotuun taulukkoon. Esimerkissä taulukko on nimetty nimellä df, joka on lyhenne sanoista DataFrame. Pandas kirjasto löytyy valmiina anacondasta. Taulukon voi muuttaa helposti esimerkiksi csv-tiedostoksi komennolla df.to_csv('myRedditDataCsv.csv')

Palkkikaavio

Seuraavaksi dataa analysoidaan värikkäällä palkkikaaviolla. Redditissä postauksella voi olla ”flair” joka on käyttäjän sille lisäämä luokittelu ja josta käy ilmi postauksen aihe. Joissain alaredditeissä sellainen vaaditaan kun taas joissain sitä ei käytetä ollenkaan. Kerätyssä datassa flair on muuttuja nimeltä "link_flair_text” ja pandas-taulukosta voi nopeasti tarkastaa, että kerätyissä postauksissa kyseinen sarake saa vain 15 Null -arvoa. Tämä kertoo siitä että kyseisessä alaredditissä postausten merkitseminen flairilla on todennäköisesti pakollista.

Eri flairien määrät on visualisoitu aina trendikkäällä palkkikaaviolla.

flairien määrärt kerätyissä postauksissa

Tuloksista näkee, että flaireja on postausten määrään nähden vähän, mikä todennäköisesti johtuu siitä että ne valitaan valmiista listasta eikä niitä voi keksiä itse.

Koodi löytyy siis Xamkin datalabin githubista. Onnistuneen python asennuksen jälkeen koodia voi pyörittää omalla koneella painamalla play-nappia. API:n avulla voi selvittää esimerkiksi miten monta kertaa iltasanomien url on jaettu Redditissä,kerätä kaikki kuva-urlit r/historymemes -yhteisöstä tai vaikka kaikki koronamegaketjuihin tehdyt kommentit.

Kategoriat
Yleinen

Datan keräys Raspberry Pi:n avulla

Viime blogissa kirjoitimme, kuinka saatiin käyttöömme oma SQL-database. Seuraavaksi tuli aika hyödyntää sitä opetuskäyttöön.

Projekti alkoi Raspberry Pi:n ja siihen kytkettävän sensorin tilaamisella. Pi:hin ladattiin oma Raspbian Os käyttöjärjestelmä ja varmistettiin, että sensori toimii ja kerää dataa. Tehtävänä oli mitata lämpötilaa, ilmankosteutta ja ilmanpainetta. Pi kuitenkin lämmitti sensoria, joten lämpötilan arvo vääristyi. Realistista arvoa varten tarvittiin johto, joka mahdollisti sensorin erille laittamisen Pi:stä. Tässä vaiheessa huomasimme, että tarvitsemme ulkopuolisia palveluja datan keräämistä varten.

NodeRed ja Azure IoT Central

Pi:lle ladattiin NodeRed lisäohjelma. Ohjelmassa spesifioitiin Pi:n IP osoite ja Pi yhdistettiin verkkoon. NodeRedin selaimessa määriteltiin kytkentäkaavio. Kaavion tarkoituksena oli aluksi käynnistää SenseHat ja sen jälkeen siirtää kerätty data Azuren IoT Centraliin.

Pian kuitenkin huomasimme, että Noden kerättyä dataa ei IoT Centralista pystynyt viemään SQL palvelimelle. Toiveena oli, että IoT Central päivittää siirretyt datat samaan tiedostoon. Siirretty data loi kuitenkin jokaisen siirron jälkeen uuden tiedoston, joten sen siirtäminen SQL palvelimelle ei ollut mahdollista.

Seurauksena NodeRed ja IoT Central hylättiin ja päätettiin siirtyä Azuren sisäisiin palveluihin.

Azuren palvelut datan keräämiseksi

Pi:lle vaadittavien ohjelmien asentamista varten tarvittiin Windows käyttöjärjestelmällä toimiva kone. Koneella oli tarkoitus kirjoittaa koodi, jolla saataisiin Pi yhdistämään Azuren IoT hubiin. Koodi myös siirtäisi sensorin avulla kerättyä dataa Azureen.

Ensimmäisenä ohjelmana asennettiin Visual Studio Code. Studioon asennettiin vaaadittavat lisäosat. Seuraavaksi asennettiin DotNet Core, Node.js, Azure Functions Core Tools, Azure Storage Explorer ja Putty.

Käyttöönotto alkoi koodaamisella. Visual Studioon kirjoitettiin C# koodi. Koodiissa määriteltiin sensorin asetukset. Asetukset koskivat esimerkiksi lämpötilan yksikköä ja kuinka usein sensori keräisi dataa. Myös kellonaika määriteltiin paikallisen kellonajan mukaiseksi. Jotta laite osaisi yhdistää Azure IoT hubiin, lisättiin sen avain.

Asetuksien määrittämisen jälkeen oli aika siirtää koodi Pi:lle. Siirtäminen tapahtui Node.js ohjelman avulla. Aluksi määriteltiin siirettävän tiedoston parametrit. Tiedosto puhdistettiin ja varmistettiin sen moitteeton toimivuus. Mikäli tiedostossa olisi virheitä, ohjelma ilmoittaisi siitä välittömästi.

Toimivuuden varmistuksen jälkeen aloitettiin tiedoston siirtäminen. Aluksi Pi:lle luotiin uusi kansio, johon tiedostot asennettaisiin. Kansion nimeksi annettiin SenseHATDotNetCore. Nodeen syötettiin koodi, joka yhdistäisi Pi:hin ja siirtäisi haluamamme tiedostot siihen.

Projektin loppusuora

Pi:llä käynnistettiin sen oma Terminal. Terminaalissa käynnistettiin juuri siirtämämme tiedosto. Tämä onnistui ensin navigoimalla juuri luotuun kansioon. Seuraavaksi ohjelma käynnistettiin./SenseHATDotNetCore komennolla.

Juuri käynnistetty koodi toimi! Dataa siirtyi vartin välein IoT hubiin. Nyt ainoana tavoitteena oli datan siirtäminen meidän SQL palvelimelle. Tämän suoritimme Stream Analytics jobin avulla. Datan sisätuloksi määritettiin IoT hub ja ulostuloksi SQL-database.

Pi saatiin toimimaan, joten se voidaan asentaa haluamamme luokkaan. Luokassa Pi mittaa vartin välein lämpötilan, ilmankosteuden ja ilmanpaineen.

Datan analysointi

Data oli siirretty onnistuneesti SQL palvelimelle. Voitiin siis aloittaa sen analysointi. PowerBi-ohjelma valikoitui analysoinnin työkaluksi. Sensorin data avattiin ohjelmassa. Seuraavana vuorossa oli datan puhdistaminen. Esimerkiksi, ilmankosteus muutettiin prosenteiksi, päivämäärä ja aika yhdistettiin. Datan käsittelyn jälkeen rakennettiin visualisoinnit, joista ilmenee mm. tämänhetkinen lämpötila, päivittäinen ilmankosteus ja ilmanpaine.

Mitä jatkossa?

Lähes kaikki tavoitteet saatiin suoritettua. Dataa kerääntyy ja sitä voidaan käyttää opetuksessa. Oppilaat voivat harjoitella esimerkiksi datan siivoamista ja analysointia. Myös koodaamisesta kiinnostuneet voivat Pi:llä testata osaamistaan.