Energiankulutuksen tarkastelun ja poikkeamien havainnoinnin demon toteutus tehtiin koneoppimisella. Tavoitteena oli löytää poikkeamia pumppujen energiankulutuksesta. Demo hyödyntää kolmen eri vedenottamon dataa pumppujen tehosta ja virrasta sekä veden virtaamasta ja pinnankorkeudesta. Päämääränä on tutkia pumppujen energiankulutusta ja löytää mahdollisia poikkeamia sen datasta. Sovelluksen tarkoitus on tukea prosessin ennakoivaa kunnossapitoa ja parantaa yleistä tehokkuutta.
Sovellus toteutettiin alustamalla vedenottamoista saadusta datasta halutut parametrit, erityisesti virtaaman, tehon ja virran parametrit, sillä energiankulutusta tutkitaan suhteessa virtaama/teho parametrillä. Koska dataa saatiin csv-tiedostoista, joista löytyi myös muita sovellukselle merkityksettömiä ominaisuuksia, ne poistettiin datasta ja jäljelle jätettiin vain haluttuja tietoja.
Tämän jälkeen rakennettiin ennustemallit käyttäen hyödyksi useampaa tapaa riippuen parametristä. Pumppujen toimintaa tutkittiin z-score-menetelmällä, koska pumput toimivat tietynlaisella syklillä, jota ohjaa veden pinnankorkeus. Virtaama ja siihen liittyvät muutokset eivät ole tasaisia ja sen toimintaan vaaditaan monimutkaisempia algoritmeja, tässä tapauksessa XGBoost tunnistamaan poikkeavuuksia datasta ja Isolation forest tehostamaan sen tunnistusta ja luokittelua. Ennustemallin avulla muodostettiin energiankulutuksen eli virtaaman suhde tehoon- kuvaaja, josta nähtiin energiankulutuksen poikkeamat.
Data ja prosessin ymmärtäminen
Projekti aloitettiin ymmärtämällä ensin prosessin toiminta ja siitä saadun datan merkitys. Koneoppimismalli vaatii toimiakseen tehokkaasti laajaa ymmärrystä prosessin toiminnasta ja sovelluksen siihen tuomasta hyödystä. Tämän työn tarkoituksena oli tutkia, miten virtaaman ja tehon datasta voitaisiin nähdä mahdolliset poikkeamat ja vikatilanteet datan perusteella. Erityisesti energiankulutuksen seuraus oli päätavoite sovellusta tehtäessä.
Dataa tutkittiin pitkältä ajanjaksolta visuaalisesti kuvaajien avulla. Visualisointi oli ratkaisevassa roolissa ymmärtämään, mistä poikkeamat johtuivat ja mitkä erilaiset asiat siihen vaikuttivat. Lisäksi niiden avulla pystyttiin muodostamaan energiankulutuksen kannalta ratkaisevia datan yhdistämisiä, kun tunnistettiin halutut parametrit. Yhdistäminen edesauttoi prosessin ymmärtämistä ja datan vaikutuksia sen toimintaan. Näiden avulla mallin rakentamisesta oli mahdollista muodostaa toimiva ja luotettava ratkaisu.
Datan esikäsittely
Esikäsittely on kaikista keskeisin vaihe mallin rakentamisessa. Jos esikäsittelyssä ei synny luotettavaa ja laadukasta aineistoa, malli ei myöskään pysty tuottamaan luotettavaa ja laadukasta kuvaajaa. Esikäsittelyssä raakadata muutetaan yhtenäiseen ja tilastollisesti järkevään muotoon, jota mallin on mahdollista käyttää halutulla tavalla. Tämän jälkeen tiedostot yhdistettiin yhdeksi tiedostoksi, jossa säilytettiin kaikki tarpeellinen mallin käyttöä varten ja poistettiin turhat osat.
Jokaisella vedenottamolla oli omanlaisensa tiedostot, joista haluttiin tiettyä mittausdataa käyttöön. Tiedostoissa oli usein paljon turhaa tietoa, jotka eivät hyödyttäneet demossa haluttua lopputulosta eli energiankulutuksen ennustamista, ja niiden tietojen poistaminen oli tärkeää ennen mallinnusta. Koska demossa etsittiin poikkeavuuksia, puuttuvia arvoja ja nollia ei haluttu poistaa, sillä ne kertoivat poikkeavuuksista prosessin toiminnassa ja siten olivat tärkeässä roolissa tunnistamaan esimerkiksi mahdollisia vikatilanteita ja prosessin sammuttamista sekä energiankulutusta. Niiden sisällyttäminen vaati, että hyötysuhteen eli virtaaman suhde tehoon- muuttujan ennustus ei voinut käyttää nolla-arvoja epärealistisen jakolaskun takia.
Koska erilliset tiedostot yhdistettiin yhdeksi suureksi tiedostoksi, oli tärkeää pitää aikarakenne yhtenäisenä ja jatkuvana läpi datan keräyksen ajan. Sen avulla varmistettiin, että data pysyy eheänä eikä malli tee vääriä päätelmiä energiankulutuksesta ja poikkeavuuksista.
Mallinnus ja validointi
Mallinnusvaiheessa tärkeintä on valita menetelmät, jotka toimivat ennustettavien muuttujien kanssa ja pystyvät oppimaan niistä halutulla tavalla. Koska muuttujina oli virtaama, pinnankorkeus, teho ja virta, tarvittiin regressiomalleja ja perinteisempiä matemaattisia laskuja, jotta jokaista muuttujaa pystyttiin käsittelemään. Koska hyödynnettiin prosessidataa, muuttujien riippuvuudet eivät olleet lineaarisia ja siten hankaloittivat prosessin muuttujien vuorovaikutusten ennustamista. Menetelmät valittiin iteratiivisesti ja parhaiksi valikoitui Gradien boosting- menetelmällä toimiva XGBoost poikkeavuuksien ennustamiseen ja niiden tunnistamiseen isolation forest ja z-score.
Gradient boosting- menetelmä tarkoittaa puumallia, joka pyrkii oppimaan omista virheistään. Tässä tapauksessa virtaaman ja pinnankorkeuden dataan hyödynnettiin valvottua XGBoost-menetelmää ja valvomatonta Isolation forest-menetelmää. XGBoost-menetelmä toimii tässä pääroolissa ja se vertaa oikeisiin data-arvoihin eli opetusdataan saatuja arvoja ja tekee sen perusteella päätelmiä. Sen sijaan isolation forest-mallia ei opeteta ja sen tehtävä on hakea vain poikkeavuuksia datasta. Se mittaa, kuinka kauan jollakin datapisteellä menee aikaa eristyä muusta datasta, jos se tapahtuu heti ensimmäisillä mittauskierroksilla, piste on luultavasti poikkeama, muuten piste on normaali. Nämä menetelmät toimivat hitailla ja helposti ennustettavilla muutujilla eli virtaamalla ja pinnankorkeudella. Z-score on käytössä, koska tehon ja virran muuttujat riippuvat täysin ulkopuolisista toimista eli prosessin omasta logiikasta. Ne toimivat nopeasti, datan kannalta arvaamattomasti ja siten huonosti ennustettavasti. Z-score perustuu laskumenetelmään eli kaavaan

, jossa datan arvopisteestä vähennetään koko datan keskiarvo ja siitä saatu tulos on suhteessa koko datan keskihajontaan. Iteratiivisesti tarkasteltuna tämä oli selkeästi paras tapa tutkia muutoksia virran ja tehon muuttujissa.
Validointi on tärkeä osa mallin käyttöönottoa ja kehitysprosessia. Mallin toimivuutta tutkitaan erilaisilla metriikoilla ja visuaalisesti. Sillä varmistetaan, että mallia pystytään hyödyntämään myös ääritilanteissa ja kuormituksen aikana. Tämän demon tärkein validointi oli tilastollinen tarkkuus, jotta sen tuottamiin tuloksiin pystyttiin luottamaan.
Sovellusrakenne ja ajettavuus
Koneoppimissovelluksen rakentaminen toteutettiin useassa eri osassa. Jokaisen tarkasteltavan kohteen osat jaettiin omiksi kokonaisuuksiksi. Datan esikäsittely, mallien koulutus sekä kuvaajat ja ennusteet erotettiin toisistaan selkeyden ja muokattavuuden vuoksi.
Projektissa hyödynnettiin kielimalleihin perustuvia tekoälytyökaluja koodin suunnitteluun ja toteutuksen tukena. Työkaluja käytettiin esikäsittelyn suunnitteluun, datan puhdistukseen ja jäsentelyyn sekä visualisointiin antamatta prosessidataa, luottamuksellista aineistoa tai tunnistettavia tietosisältöjä tekoälytyökaluille tietoturvallisuuden vuoksi. Niiden hyödyntäminen rajattiin koodin toteutuksen ideointiin ja koodirakenteen suunnitteluun. Suoraa koodia ei hyödynnetty vaan sitä muokattiin ja testattiin projektin vaatimusten mukaisesti ennen käyttöönottoa. Tekoälyn tuottama koodi nopeutti demon kehitystyötä, mutta vastuu toimivuudesta, tietosisällön oikeellisuudesta, tietoturvasta ja kehityksen sopivuudesta projektiin säilyi toteuttajalla.