Kategoriat
Yleinen

Xamk on mukana AIRA-hankkeessa – Power BI -raportin avulla riskit näkyviksi

Xamkin DataLAB:ssa on käynnissä mielenkiintoinen projekti osana AIRA-hanketta, ja sen tuloksena on syntynyt visuaalinen Power BI -raportti hätäkeskusdatasta. Mutta mistä tässä kaikessa on oikein kyse?

AIRA-hanke

Pelastustoimen ja alueellisen varautumisen tehtävänä on parantaa valmiutta uhkiin ja ennakoida riskejä jo ennen kuin ne konkretisoituvat. Tämä työ on tällä hetkellä pitkälti manuaalista ja hajanaista sekä vaatii jatkuvaa yhteistyötä eri toimijoiden välillä, sillä käytössä ei ole yhteistä tietopankkia tai analyysityökalua.

AIRA hyödyntää tekoälyä ja data-analytiikkaa tehostaakseen riskianalyysien tekoa ja tiedolla johtamista. Tavoitteena on vähentää manuaalista työtaakkaa ja parantaa yhteistyötä sidosryhmien välillä. Lisäksi tarkastelussa on, kuinka riskejä voisi tunnistaa aiempaa tehokkaammin, ja suunnitella alueellista kokonaisturvallisuutta parantavia toimenpiteitä.

Hanke hyödyttää konkreettisesti eri toimijoita, kuten pelastustoimia ja poliisia, jotka tarvitsevat työssään tarkkaa ja ajantasaista tietoa päätöksenteon tueksi ja yleisen turvallisuuden ylläpitämiseksi.

Täältä voit lukea aiheesta lisää: https://www.xamk.fi/hanke/aira/

DataLAB-projekti

Tiesitkö, että Suomessa eniten hälytyksiä tulee kesäkuussa ja perjantaisin? Xamkin DataLAB:ssa käynnissä olevassa projektissa on hyödynnetty hätäkeskusdataa, joka kattaa tiedot siitä, mitä on tapahtunut ja missä, ajanjaksolla tammikuu 2015 – helmikuu 2025. Rivimuotoista dataa on kuitenkin hankalaa hahmottaa nopealla vilkaisulla. Siksi sen pohjalta rakennettiin kolmisivuinen Power BI -raportti, joka havainnollistaa hälytysten määrää, ajankohtia ja alueellista jakautumista visuaalisesti ja helposti tulkittavassa muodossa. 

Projektin datan valmistelu

Hätäkeskusdata sisältää sarakkeet paikkakunnasta, kellonajasta ja päivämäärästä, tehtävän kuvauksen, yksityiskohdat, linkin uutiseen ja hätäkeskuskoodin. Projektia varten myös hätäkeskuksen nimen sisältävä sarake oli tarpeen, ja se luotiin hyödyntämällä SQL-kyselyä Microsoft Visual Studiossa. Azuren tietokannassa oleva data yhdistettiin Power BI:hin, jossa raportin teko alkoi. Raportin visuaalinen ilme on rakennettu Xamkin brändivärien ympärille hyödyntämällä HEX-värikoodeja, ja DAX-kaavojen luomisessa apuna ovat olleet ChatGPT ja Claude.ai.

Raportti sivu kerrallaan

Kuva 1. Raportin ensimmäinen sivu, jossa muun muassa karttavisuaali.

Ensimmäisellä sivulla voi tarkastella hälytyksiä paikkakuntakohtaisesti. Sivulla on kartta, slicer, taulukko ja kortteja. Kartassa näkyy valitun paikkakunnan sijainti, ja paikkakunnan voi valita viereisestä slicer-visuaalista. Kaikki sivun visuaalit reagoivat sliceriin, joten tietoja voi tarkastella paikkakuntakohtaisesti. Korteissa näkyy hälytysten yhteismäärä sekä yleisin tehtävänimike ja sen määrä. Yleisin tehtävä koko Suomessa on ollut palohälytys, joita on ollut vuosien varrella yhteensä 175 630 kappaletta. Kaikenlaisia hälytyksiä on ollut yhteensä 766 923, joka tarkoittaa keskiarvollisesti yli 200 hälytystä joka päivä noin kymmenen vuoden tarkastelujakson aikana.

Kuva 2. Raportin toinen sivu, jossa hälytyksiä voi tarkastella ajallisesti.

Toisella sivulla pureudutaan hälytyksiin ajallisesti. Hälytysten määrää voi tarkastella vuosittain, kuukausittain, tunneittain, viikonpäivittäin ja viikottain, joille jokaiselle löytyy oma visuaali tai slicer sivulta. Esimerkiksi valittaessa slicerista vuodeksi 2018, voidaan huomata tehtävien määrän olleen korkeimmillaan kesäkuussa (9426 tehtävää) ja eniten tehtäviä on tullut kello 16 aikaan. Tehtäviä on tullut eniten perjantaisin, ja selkeästi eniten hälytyksiä koko vuonna on tullut viikolla 25. Tämä on ollut juhannusviikko, jossa tehtävät ovat myös pitkälti keskittyneet perjantaihin eli juhannusaattoon.

Kuva 3. Raportin kolmas sivu näyttää Top 10 -listat ja vilkkaimmat ajankohdat.

Sivulta kolme löytää raportin Top 10 -listat. Määrällisesti eniten hälytyksiä on ollut Helsingissä, yhteensä 77 632 tehtävää. Helsinki vie myös top 1 sijan kaikista hätäkeskuksista hälytysmäärien perusteella, sijalla kaksi on Pirkanmaan hätäkeskus ja kolmannella Itä- ja Keski-Uudenmaan hätäkeskus. Eniten hälytystehtävissä törmää palohälytyksiin, tieliikenneonnettomuuksiin ja pieniin rakennuspaloihin. Vilkkain tunti vuosien varrella on ollut kello 15, eniten hälytyksiä on tullut perjantaisin, kesäkuut ovat olleet tapahtuma-alttiimpia kuukausia, ja hälytysmäärien perusteella eniten on tapahtunut vuonna 2018.

Lopuksi

Kuten huomata saattaa, hälytykset pitävät ammattilaiset kiireisinä päivittäin, mutta data paljastaa erityisen tapahtuma-alttiit kuukaudet, viikonpäivät, viikot, tunnit ja alueet. Lisäksi hälytykset voidaan lajitella tyypin yleisyyden mukaan. Raportin avulla voidaan helposti nähdä, millaisia hälytyksiä voidaan odottaa tulevan eniten ja milloin. Tämä auttaa keskittämään voimavarat sinne, missä niitä milloinkin eniten tarvitaan.

Linkki raporttiin: https://app.powerbi.com/groups/3d571500-7ded-46fd-99a2-a6399208b83b/reports/899f056b-ee1a-41d8-89ae-df2e3b76e09a/edfb6b0ddd1840ca89b8?experience=power-bi

Huomaa, että raportti näkyy vain Xamkilaisille.

Kategoriat
Yleinen

Azure avuksi opetukseen

Nykymaailma muuttuu valtavalla vauhdilla ja uusia opetusmenetelmiä tarvitaan jatkuvasti. Ennen riitti, että työntekijä osasi syöttää Exceliin numeroita ja painaa enteriä, mutta nykyään sillä ei pitkälle pääse. Teknologia kehittyy ja sen myötä tulee uusia ohjelmia, joita työntekijän on osattava käyttää ja hyödyntää. Meidän tapauksessamme tämä ohjelma oli Microsoft Azure. Azure on julkinen pilvipalvelu, jota voidaan käyttää virtuaalipalvelinten alustana. Lisäksi Azure voi toimia kehitysalustana. Azurella pystytään hallitsemaan mobiililaitteita, suojaamaan dokumentteja, analysoimaan suuria datamassoja ja luomaan esimerkiksi koneoppimista.

Mistä kaikki alkoi?

Kaikki alkoi data-analytiikan koulutuksen viidennellä lukukaudella toteutettavasta data-analytiikan tutkimus- ja kehitysprojektista. Saimme Xamkin DataLABilta tehtäväksi SQL-serverin luomisen ja käyttöoton Microsoft Azuressa. Projekti oli myös osa DataLABissa suoritettavaa syventävää harjoittelua. Tavoitteena oli saada aikaiseksi Azure-serveri, jota voidaan käyttää apuna opetuksessa sekä tehdä lyhyitä oppaita serverin luomisesta ja käytöstä.

Projektin eteneminen

Projekti alkoi hitaasti ja rauhallisesti, sillä jouduimme ensin odottelemaan, että saamme oikeudet Xamkin Azuren Resource groupiin. Loimme sinne aluksi oman SQL-serverin, johon myöhemmin avattiin SQL database. Databasen synnyttyä selvitimme, miten sinne saa ladattua dataa, ja kuinka database käytännössä toimii. Seuraavaksi haasteeksi osoittautui datan saaminen. Meillä ei ollut mitään ladattavaksi sopivaa dataa, joten pyysimme apua toiselta projektiryhmältä. Toiselta ryhmältä saimme ns. testidataa, jolla pystyimme varmistamaan serverin toimivuuden. Onnistuneen datan siirtämisen jälkeen serveri oli valmis seuraavaan projektiin.

Kaikki vaiheet dokumentoitiin ja niistä koottiin lyhyitä oppaita opiskelijoita varten. Oppaita löytyy esim. Azure-serverin luomisesta, siirtämisestä, tiedon tuomisesta ja datan avaamisesta.

Vaadittavat ohjelmat

Serverin oikeanlainen toimiminen vaatii sen, että käyttäjältä löytyy tiettyjä ohjelmia. Meidän tilanteessamme ei vaadita monia ohjelmia, mutta niiden käyttö on pakollista. Parhaaksi ohjelmaksi datan lataamiseen ja muokkaamiseen serverille osoittautui Microsoftin SQL Server Management Studio, eli SSMS. Kyseisen ohjelman avulla pystyy vaivattomasti tarkastelemaan databasen sisältöä ja muokkaamaan sitä. Lisäksi ohjelma mahdollistaa sisällön lataamisen omaan databaseen.

Jotta datan avaaminen ja tarkastelu onnistuu, on parasta käyttää joko Microsoft Excel tai PowerBI -ohjelmia. Näiden ohjelmien avulla käyttäjä pystyy avaamaan koneellensa serverillä olevat datat ja muokkaamaan niitä. Ohjelmien avulla datan analysointi on myös mielestämme helpointa ja monipuolisinta.

Mitä jatkossa?

Tällä hetkellä meillä on toimiva pilvipalvelu, eli SQL-database. Pilvipalvelua voidaan hyödyntää opetuksessa ja erilaisissa projekteissa. Jatkossa tavoitteenamme on ladata srverille jatkuvasti päivittyvää, eli ns. livedataa. Dataa kerätään Raspberry Pi:n avulla. Kerätty data analysoidaan ja visualisoidaan PowerBI ohjelmalla. Olemmekin jo onnistuneesti testanneet sitä Raspberry Pi -simulaattorin avulla.

Kategoriat
Yleinen

Instagram-kuvien analysointi Azuren konenäöllä

Kuten sadoissa muissa organisaatioissa, Kaakkois-Suomen ammattikorkeakoulussa käytetään Microsoftin ohjelmistoja ja palveluita. Teamsien ja powerpointtien lisäksi Data-analytiikka on ottanut käyttöönsä Microsoftin pilvipalvelualusta Azuren, josta löytyy monenlaista palvelua SQL-palvelimesta koneoppimismallien luomiseen.

Yksi palvelutyyppi on nk. kognitiiviset palvelut johon kuvien analysointi eli konenäkö kuuluu. Päätelmien tekeminen suuresta määrästä digitaalisia valokuvia niitä näkemättä tuntui mielenkiintoiselta ajatukselta. Azuren konenäössä on monenlaisia ominaisuuksia: on kasvojentunnistusta, kuvassa olevan tekstin tunnistusta, kuvien kategorisointia jne. Päätin lopulta kokeilla automaattista kuvatekstien ja tagien luomista valokuville jotta syntyisi jonkinlainen käsitys siitä miten se kuvia lajittelee.

Esimerkki automaattisesti generoidusta kuvatekstistä ja tageista. Tekstille ja jokaiselle tagille on myös konenäön tekemä ”confidence score”.

Testiaineistoksi valikoitui oppilaitoksemme Xamkin virallinen Instagram-tili ja sieltä 2000 valokuvaa.

Miten se toimii?

Konenäkö on API, eli ohjelmointirajapinta (Application Programming Interface). Yksinkertaisimmillaan sinne syötetään kuva ja kone palauttaa kuvalle pyydetyn datan (esim. tunnistetut kasvot, kuvauksen jne.) Tässä harjoituksessa käytin rajapintaa python-ohjelmointikielen avulla, jolle Microsoft tarjoaa kehitysalustan. Käytännössä Azureen perustetaan resurssi josta saa tarvittavan salasanan. Koodikirjastot tuodaan pythonin import-komennolla ja client autentikoidaan salasanalla, minkä jälkeen rajapintaan voi alkaa heitellä kuvia. Rajapinnasta on kattava ja johdonmukainen dokumentaatio.

Python-ohjelmointikielen tarvittavien koodikirjastojen tuonti ja clientin autentikointi konenäölle ja kasvojentunnistukselle.

Päätin hakea kuvatekstit ja tagit 2000 kuvalle ja liittää saadut tulokset osaksi Instagram-aineiston metadataa. Kahden tuhannen kuvan läpikäynti kestää koneelta jonkin aikaa, joten kerkesin käydä välillä lounaalla ja palata sitten katsomaan mitä tuloksista mahdollisesti voi saada irti.

Ja toden totta, tekoäly oli keksinyt kuville englanninkieliset kuvatekstit ja tagit. Azuressa olisi mahdollista myös kääntää tekstit automaagisesti suomeksi mutta tämä vaatisi lisää API-kutsuja, joten päätin pärjätä kolmannella kotimaisella. Analyysissä käytin pythonin pandas-kirjastoa jossa data on taulukkona (dataframe) ja sen filtteröintiin ja muokkaamiseen on paljon tehokkaita työkaluja.

Polkupyöräkuvien etsiminen – with confidence

Tagien avulla suuresta kuvamassasta voi hakea tiettyjä elementtejä sisältäviä kuvia. Kokeilin hakea 2000 kuvan joukosta ne, joissa on tägi ”polkupyörä” (eli siis bicycle). Tuloksista selvisi, että Bill Gatesin robottisilmälasit ovat nähneet yhteensä 27 kuvaa joissa on polkupyörä.

kuvat['pyörät']=kuvat['tagit'].str.contains('bicycle')

Suodatin polkupyöräkuvat tykkäysten mukaan alenevaan järjestykseen ja katsoin mitä kone on oikein nähnyt. Aluksi kaikki vaikuttaa hyvältä. Esimerkiksi 157 tykkäystä saaneessa, Vappua juhlistavassa kuvassa on selkeästi polkupyörä ja kone antaa ’bicycle’ -tagille confidence scoren 0.9501 mikä on todella kova.

Koneen mielestä tässä kuvassa on polkupyörä yli 95 % luottamustasolla.

Seuraavassa kuvassa ei kuitenkaan ole polkupyörää. Siinä on polkupyörä-tägi ja mies hymyilemässä jonkinlaisen osittain näkyvän metalliputkihässäkän luona mikä aivan ilmeisesti ei ole polkupyörä. Kuvan bicycle-tag onkin saanut confidence scoren 0.31. Luokittelua varten päätin rajata pisteytyksen 0.9 ja sitä suurempiin lukuihin. Tätä varten pandasilla on helppo luoda uusi taulukko kuvista, joissa on mukana vain tagit joiden luotettavuusarvo ylittää 0.9. Polkupyörien kohdalla tämä toimii mainiosti ja lopulta onnistun etsimään kaikista kuvista vain sellaisia, joissa oikeasti on pyörä. Lisäksi on tuntematon määrä kuvia joissa on pyörä mutta jotka eivät saa polkupyörä-tagia.

Julkiset naamat

Lievänä yllätyksenä tuli, että kuvatekstitoiminto tunnistaa julkkisten naamoja. Azuressa on erikseen kasvojentunnistin, jolla kasvoille voi generoida tunnisteen. Tunnisteen avulla samanlaisia kasvoja voi etsiä kuva-aineistoista. Kuvateksti-toiminto kuitenkin löytää suvereenisti suomalaisia julkkiksia. Koska Xamk on vahvasti mukana Emma-gaalassa, päätin katsoa onko gaalakuviin tallentunut julkisia naamoja. Etsinnässä auttaa myös tässä yhteydessä käytetty hashtag ”xamkgoesemma”. Keinosilmät ovat nähneet mm. 3 Anna Puuta, Reino Nordinin, Juha Tapion, Sanni Kurkisuon ja Erkki Liikasen (joista viimeinen ei ehkä Emma-gaalasta).

Kuvassa Pyhimys puvussa. Tekoälyn mielestä kyseessä on 0.563 todennäköisyydellä ’gentleman’.

Yksi hämmentävä ilmiö ovat julkkisten kaksoisolennot. Kone löysi Xamkin Instagramista useita ulkomaisia julkkiksia, jotka lähemmässä tarkastelussa osoittautuivat tavallisiksi tallaajiksi jotka vain sattuvat näyttämään julkkiksilta.

Scoreissa on eroja

Luottamuspisteytykset jotka kone ilmoittaa kuvateksteille ja tageille poikkeavat ratkaisevasti toisistaan. Kuvateksti joka saa pisteytyksen 0.5 on usein ”oikein” ja jopa hyödyllinen, kun taas jos haluaa luokitella kuvia tagien avulla niin 0.5 tasoa ei välttämättä kannata ottaa mukaan.

Ero käy ilmi myös luottamustasojen jakaumasta. Tarkastelin kuvatekstien ja tagien saamia pisteitä tekemällä niistä box-plotit pandasissa:

kuvat['caption_confidence'].plot(kind='box', vert=False, figsize=(10,5), title = 'caption_confidence')

Datassa on 2000 koneen generoimaa otsikkoa. Mediaani on alle 0.5:ssä. Silläkin tasolla otsikot ovat kuitenkin usein ”oikein”.
Kahdessatuhannessa kuvassa on hieman alle 18000 tagia (n.9kpl/kuva) 25. ja 75. persentiilit asettuvat välille 0.7-0.94 mediaanin ollessa 0.869.

Konenäön tekemän luokittelun luotettavuuden arvioinnissa koneen ilmoittamat pisteytykset ovat hyvä apuväline. Erityisen mielenkiintoista on etsiä tageja joista kone on omasta mielestään lähes varma, mutta jotka kuitenkin ovat päin honkia.

Seuraavia harjoitteita

Kuvatekstigeneraattorin kyvystä tunnistaa julkisuuden henkilöitä syntyi ajatus syöttää konenäölle julkisuuden henkilöitä. Suunnitelmissa on käyttää kotimaisten digitaalisten viihdeuutisten kuvastoa ja analysoida keitä se tunnistaa ja keitä ei. Jatkuu seuraavassa numerossa.