27.08.2014 / Ville Niemijärvi

ManAsiakaspoistuma-analyysi (eng. churn) tarkoittaa analytiikan prosessiketjua, jossa selvitetään mitkä asiakkaat ovat vaarassa poistua, millä todennäköisyydellä ja miksi. Poistuma tarkoittaa sitä kun asiakas lopettaa sopimuksen palveluntarjoajan kanssa tai yksinkertaisesti lopettaa asioimisen yrityksessä. Voidaan puhua myös asiakaspidosta (eng. retention).

Termi liittyy läheisesti myös asiakkuuden elinkaaren arvon määrittämiseen (customer life-cycle value) ja nykypäivän yhteen muotitermiin; customer journey. Itse näkisin kuitenkin, että kyseessä on enemmänkin yksinkertaisesti paremmasta asiakashallinnasta ja huolenpidosta…

Poistuma-analyysi sopii hyvin sopimusliiketoimintaan, esimerkiksi sähköyhtiöille, puhelin- ja internet operaattoreille, kuntosaliketjuille tai lehtitaloille. Mutta poistuma-analyysiä voidaan tehdä myös vähittäiskaupassa, jos vain asiakas tunnistetaan (kanta-asiakasjärjestelmän avulla). Tällöin pitää vain päättää milloin asiakas on poistunut? Mikä on riittävän pitkä aika, että asiakas ei ole käynyt kaupassa, jotta voidaan päätellä hänen vaihtaneen vakiokauppaansa.

Tässä ja parissa seuraavassa kirjoituksessa käydään läpi asiakaspoistuma-analyysiä ja miten se tehdään käytännössä. Lähestymme aihetta yleisestä yksityiseen. Lopussa näytämme kädestä pitäen miten homma tehdään alusta loppuun.

Asiakaspoistuma-analyysin tuotto on helppo laskea

Kaikessa analytiikkatyössä tulee laskea mitä saamme analyysistä irti, mikä on investoinnin roi, paljonko jää viivan alle. Jollei investointi tuota moninkertaisesti enemmän kuin analyysi ja tiedon keräys maksaa, ei sitä kannata tehdä.

Asiakaspoistuman osalta tämä on erittäin helppoa tehdä. Otetaan esimerkki sähkön myynnistä.

Sähköyhtiöllä on 100 000 asiakasta. Keskimääräinen laskutus per asiakas on 1000e/vuosi. Nopea selvitys sähköyhtiön sopimuskannasta kertoo, että keskimäärin vuodessa sopimuksen lopettaa 8% asiakkaista.

Tämä tarkoittaa, että asiakkaita poistuu 8000 kpl/vuosi. Rahassa tämä on siis 8000kpl*1000e=8 miljoonaa euroa. Tuo on se potti, jota lähdemme pienentämään ja sitä kautta tekemään asiakkaallemme lisää rahaa.

Osa näistä 8000:sta poistuu luonnollisen poistuman kautta, osa vaihtaa kaupunkia. Ja sitten on se osa joka vaihtaa palveluntarjoajaa koska yrityksen tuote, palvelu tai hinta ei ole riittävän hyvä. Tai kilpailijalla on parempi. Kutsuttakoon tätä laadulliseksi poistumaksi.

Kun menemme asiakkaalle, teemme aina vastaavan laskelman ja arvioimme asiakkaan kanssa yhdessä, mikä on tuon laadullisen poistuman osuus ja kuinka paljon on realistista saada pienennettyä sitä. Sähköyhtiöiden osalta voimme katsoa julkisesta datasta, esim. THL:ltä, mikä on muuttoliike kunnasta pois päin ja paljonko poistuu jalat edellä. Näin emme joudu arvailemaan vaan meillä on faktaa laskelmien taustalla. Sanottakoon esimerkkinä, että sähköyhtiön tapauksessa 3% on luonnollista/muuttopoistumaa ja loput 5% on laadullista poistumaa. Poistumaa, johon voimme vaikuttaa. Tähän iskemme kyntemme.

Entä jos voimme pudottaa tuota 5% poistumaa vaikka vain yhden prosenttiyksikön? Tämä tarkoittaisi 1000 asiakasta ja miljoonaa euroa vuodessa lisämyyntiä. Jos analyysi maksaa 20 000 euroa, on investoinnin tuotto aika huima. Se on jotain sellaista, jota kannattaisi kaikkien tavoitella.

Mitä dataa poistuma-analyysi tarvitsee?

Ensiksi otamme historiatietoa eli tietoa jo poistuneista ja ei-poistuneista asiakkaista. Toisin sanoen sähköyhtiön tapauksessa luemme sopimustietokantaa ja sähkönkulutustietoja (yhä yleisemmin tietovarastoa tai edistyneimmissä yrityksessä erikseen toteutettua analytiikkakantaa) ja haemme sieltä mahdollisimman pitkän historian, mahdollisimman monelta asiakkaalta. Mitä enemmän sitä parempi. Historia-aineistoon otetaan mukaan asiakkaiden taustatietoja sekä käyttäytymiseen liittyvää tietoa.

Taustatietoja ovat esimerkiksi

  • alue/kaupunki/postinumero
  • demografiatiedot (tulo- ja koulutustaso)
  • sukupuoli
  • ikä
  • asiakkuuden kesto
  • talotyyppi, koko, lämmitysmuoto jne. toimialaspesifistä tietoa

Käyttäytymiseen liittyviä tietoja ovat esimerkiksi:

  • kulutus- ja laskutushistoria (esim. keskimääräinen kulutus per kk)
  • ostetut tuotteet (eli millainen sopimus)
  • reklamaatiota, asiakaspalautteet, yhteydet asiakaspalveluun
  • maksuhäiriöt
  • muut toimialaspesifit tiedot
  • Ja lopuksi se tärkein tieto: onko asiakas poistunut vai ei (K/E)

Monilta yrityksiltä ei löydy kaikkia näitä tietoja, olen nähnyt yrityksiä joilla asiakkaista tiedetään käytännössä vain numero ja osoite. Ei edes nimeä tai sitä onko kyseessä yritys- vai henkilöasiakas. Ennen kuin analytiikkaa päästään hyödyntämään täysillä, on edessä usein systemaattinen tiedon keräämisvaihe ja mahdollisesti muutokset lähdejärjestelmiin/tietovarastoon.

Ennen analyysia emme tiedä mitkä tiedot ovat relevantteja ja vaikuttavat poistumisen takana ja sen selvittäminen onkin koko homman ydin.

Miten poistuma-analyysi tehdään?

Kun tiedot on kasassa, jaamme datan kahteen eri settiin: opetusdataan ja testidataan (esimerkiksi suhteessa 60-40). Opetusdatan avulla muodostamme ennustemallin, käyttäen liiketoimintaongelmaan sopivaa analytiikka-algoritmia (esim. logistinen regressio, naive-bayes). Parhaan mallin löytäminen vaatii useita iteraatioita.

Työ vaatii analytiikkasoftan mutta ei välttämättä lisenssihankintaa vaan työn voi ostaa usein palveluna. Markkinoilta löytyviä analytiikkaohjelmistoja on esimerkiksi: R, RapidMiner, SAS, SPSS ja löytyypä Microsoftin SQL Serveristä data mining -moduuli.

Muodostunutta ennustemallia testataan testidataa vasten. Koska testidata on historiadataa, tiedämme onko asiakas poistunut vai ei. Testin voisi ajatella siten, että peitämme tuon poistuma-tiedon ja kuvittelemme, että kyseessä olisi täysin uutta dataa. Annamme mallin tehdä ennusteen eli kertoa todennäköisyydet poistua kullekin asiakkaalle. Tämän jälkeen tarkastamme tuloksen ja arvioimme mallin tarkkuuden. Näin varmistamme toimiiko malli ja kannattaako sitä hyödyntää uutta dataa vasten vai pitääkö sitä parantaa.

Kollegani laittaa piakkoin step-by-step ohjeen miten kuka tahansa hiirtä ja näppäimistöä osaava käyttäjä voi tehdä asiakaspoistuma-analyysin omalla datalla käyttäen RapidMineria. RapidMiner on yksi käytetyimmistä analytiikkaohjelmistoista maailmassa ja kuuluu Gartnerin analyysissä leaders-kategoriaan. Rapidista saa ladattua ilmaisversion, jonka avulla voit testata ohjeitamme ja päästä alkuun analytiikan hyödyntämisessä.

Asiakaspoistuma-analyysin tulokset

Poistuma-analyysi tuottaa kaksi erillistä tulosta:

  1. Kaikki nykyiset asiakkaat listattuna poistumatodennäköisyyden mukaan
  2. Selittävät tekijät poistuman taustalla

asiakaspoistuma_tulos

Ensimmäinen tarkoittaa siis konkreettista listaa, jonka voit heittää myynti-/asiakaspalveluyksikölle tai soittokoneistolla ja käskeä kontaktoimaan heti aluksi akuuteimmat top 100 poistujaa.

Toinen tuotos eli selittävät tekijät antavat tulkinnan ilmiölle. Ne kertovat miksi asiakkaat poistuvat. Nämä tulokset on erittäin arvokasta tietoa niin asiakaspalvelulle, myynnille kuin tuotepäälliköille, liiketoiminnan kehittämiselle ylipäätään.

Analyysissä voi tulla esille, että hinta ei olekaan merkittävä tekijä poistuman taustalla vaan huono asiakaspalvelu tai tietylle asiakassegmentille sopimaton tuotepaletti (esim. sähköyhtiöltä puuttuu ekosähkö valikoimastaan).

Parhaimmassa tapauksessa analyysin tuotoksista voidaan generoida sääntökoneisto ja sisällyttää se esimerkiksi asiakaspalvelun työpöydälle tai CRM-järjestelmään. Säännöt voivat olla yksinkertaisuudessaan kertoimia ja IF-lauseita ja voidaan toteuttaa esimerkiksi SQL-komentoina. Analytiikan tulokset kirjoitetaankin usein takaisin joko operatiivisiin järjestelmiin tai tietovarastoon.

Analyysistä toimintaan

Analytiikan pitää johtaa toimintaan. Sen pitää tuottaa tulosta. Tämä erottaa sen perinteisemmästä raportoinnista ja business intelligencestä, jossa tuijotetaan enemmänkin raportteja ja taulukoita. Näytti käppyrät mitä tahansa, hommia jatketaan kuten ennenkin. Kunnes ollaan karilla tai kortistossa.

Poistuma-analyysissa toiminta tarkoittaa monta asiaa, esimerkiksi:

  • kontaktoidaan poistumariskissä olevat asiakkaat
  • pyritään pitämään heidät tai parhaimmassa tapauksessa tekemään lisämyyntiä
  • kehitetään asiakaspalvelun laatua
  • kehitetään tuotteita/palveluita vastaamaan paremmin kysyntää
  • ennakoidaan liikevaihdon muutos kun tiedetään ennuste tulevasta poistumasta

 

Miksi yritys ei tee asiakaspoistuma-analyysiä?

Olemme tehneet vuosien varrella valtavan määrän eri analytiikan sovelluksia ja projekteja. Asiakaspoistuma-analyysi on antanut näistä todennäköisesti parhaimmat tulokset, varsinkin jos mitataan euroissa asiakkaiden saamaa hyötyä. Menetelmä on helppo ja suhteellisen nopea toteuttaa, se on helppo ymmärtää ja tulokset ovat käsin kosketeltavat.

Silti yllättävän harva yritys todella hyödyntää sitä. Syyt ovat moninaiset lähtien tietämättömyydestä aina itsepetokseen.

Surullisin on itseriittoisen sinnikäs toteamus, että ei meidän asiakkaat poistu muuta kuin manan majoille tai hinnan perässä, ne pihit penteleet.

Yrityksen tuotteessa ei ole kuulema mitään vikaa. Palvelu on priimaa ja markkinaosuus olisi 100% jos vain kilpailijat eivät myisi arvelluttavan halvalla sekundatuotteitaan. Jostain syystä liikevaihto kuitenkin mataa.

Uuden asiakkaan hankinta on aina kalliimpaa kuin vanhan pitäminen. Parhaimmassa tapauksessa tekemämme asiakaspoistuma-analyysin tuloksena kontaktoiduille asiakkaille saatiin myytyä aivan pöljänä lisää tavaraa. Asiakkaat eivät aina ole siis tyytymättömiä palveluun, he ovat vain herkkiä myynnille. Sinun kannattaa olla silloin ensimmäisenä paikalla.


Ps. Viikon päästä konkretiaan: miten asiakaspoistuma-analyysi tehdään käytännössä RapidMinerilla. Käy lataamassa Rapidin ilmaisversio koneellesi ja testaa itse.


15.08.2014 / Ville Niemijärvi

Uunituore asuntonäyttö OPKK:n välittäjän vetämänä vei uskon kotimaan asuntokaupan piristymisestä.

Minä: Milloin keittiöremontti on tehty?

Välittäjä: En kyllä tiedä yhtään.

M: Entä kylpyhyuone, näyttäisi olevan 80-luvun käsialaa tuo remppajälki?

V: Ei mitään hajua.

M: Asuntoilmoituksessa ei mainittu mitään tästä sieni- ja mikrobilöydöksestä, joka käy ilmi tästä 20 sivuisesta tutkimusraportista?

V: Niin no eihän sitä kaikkea laiteta.

M: Ei varmaan mutta miksi tutkimusraportista puuttuu keskeltä yksi sivu, sattumaa?

V: En kommentoi.

M: Suomeksi voisi sanoa, että tämä on homekämppä ja vielä todistetusti sellainen, eikö vain?

V: No niin no… mutta sehän on vanha tutkimus ja remontteja on tehty tuon -08 tehdyn tutkimuksen jälkeen paljon.

M: Kuten mitä?

V: Roskakatosta, postilaatikot on tosi tyylikkäät…

M: Eli kaikkea oleellista homevaurioiden korjaamiseksi.

Kaikeasta tästä huolimatta, asunto kiinnostaa meitä. Piha ja sijainti on mahtava. Mutta kosteus- ja home epäilyttävät. Voisitko jotenkin myydä tämän meille? Osoittaa miksi meidän kannattaisi ostaa tämä asunto? Hälventää epäilykset, poistaa ostamisen esteet ja tehdä meidän, asiakkaiden, olo turvalliseksi tehdä ostopäätös.

V: Enhän minä teille voi mitään myydä. Te joko ostatte tai ette.

M: No siinä tapauksessa tämä taisi olla tässä.


 

Kun puhutaan asunto- tai autokaupan hiljentymisestä, tarkoitetaan sitä, että asiakkaat eivät tulekaan enää ovista ja ikkunoista sisään. Kauppoja ei tulekaan itsestään kahvia juomalla ja kattoon sylkiessä. Pitäisi nostaa ahteri ja tehdä töitä. Ottaa luuri käteen ja soittaa. Mutta ehkä on vain helpompi syyttää markkinoita. Asiakkaan penteleitä. Poliitikkoja.

Menestyvän yrityksen tunnistaa usein siitä, että myynnin ja markkinoinnin analysoinnin tuloksena muutetaan suuntaa jos tarve vaatii. Analytiikka johtaa toimintaan. Jos markkinat muuttuvat, muuttuu toiminta sen mukana.

Jos taas laiva on lipumassa hyvää vauhtia karille ja kippari vain katselee menoa vierestä tekemättä korjausliikettä, on hän vain turhaa painolastia.

If you’re not prepared to change your diet or your workouts, don’t get on the scale.”
Seth Godin


28.04.2014 / Ville Niemijärvi
Lissabon 2013
Lissabon 2013

Olin vuosi sitten keväällä näihin aikoihin lomalla Lissabonissa perheen kera. Saavuimme lentokentältä keskustaan ja nousimme metrosta Praça da Figueiran aukiolle. Työnsin lastenrattaita, jossa nukkui alta puolivuotias tenavamme. Alle minuutin kuluttua tuli nuorimies tarjoamaan huumeita. “Hashis? Coke? You wan’t to party sir?”

Sama toistui joka päivä neljän päivän vierailumme aikana. Ja joka kerta olin lastenrattaiden ohjaimissa tai vauva sylissäni. Jotenkin tuntui, että diilereiden kohderyhmä oli nyt vähän hakusessa.

Tai sitten ei. En ole alan ammattilainen ja kaverit ilmiselvästi ovat. Ehkä he tietävät paremmin. Ehkä lapsiperheiden väsyneet vanhemmat, roikkuvine silmäpusseineen on oikeasti ryhmä, jolle kauppa käy. Tai sitten he ajattelevat vain tekevänsä meille palveluksen.

Seurasin kavereiden touhua tovin ja huomasin, että pössöttelyaineksia ei tarjottu ihan joka jampalle. Myyjillä oli selkeä sihti, kohderyhmä johon tarjous uppoaa parhaiten. Ehkä olin vain tilastollinen poikkeus kun en tarttunut syöttiin ja näin todennäköisyyksien jämäjoukkoa.

Myynnin ja markkinoinnin kohdentaminen

Tästähän myynnissä on kyse. Optimaalisimman ostajaporukan löytämisestä. Kaman välittäjien kannalta optimaalisinta ostoväkeä eli juhlivia nuoria miesporukoita, jotka voisi stereotyyppisesti olla parasta kohderyhmää, ei löydy joka nurkan takaa. Samoin kuin autokauppaan astuu liian harvoin keski-iän kriisistä kärsivä vakavarainen mies, joka heiluttelee setelitukkoa ja haluaa jatkaa miehuuttaan/nuoruuttaan tuliterällä urheiluautolla. Kun ilmiselvä saalis on kaluttu, pitää myynti kohdistaa siihen epäselvään massaan. Pitää laajentaa kohderyhmää mutta pitää se kuitenkin mahdollisimman pienenä ja näin fokus tarkkana.

Ja tällöin tullaan myynnin kannalta tärkeään kysymykseen: keitä asiakkaamme ovat? Minkätyyppinen kuluttajaprofiili ostaa meidän tuotetta? Keneltä saamme parhaimman konversion eli ostotodennäköisyys on suurin ja näin pidämme myynnin kulut pienenä?

Perinteiset stereotyypit vievät vain osan matkaa. Okei, autoja ostaa enemmän miehet. Kalliimpia autoja ostaa vanhemmat miehet. Naiset käyttävät enemmän kampaamopalveluita. Mutta entä sitten? Yritä mainostaa kaikille suomalaisille naisille. Populaatio on ihan liian laaja, kilpailu huomiosta liian kova ja konversio eittämättä liian pieni. Ja samalla valtava määrä potentiaalisia ostajia, eli miehiä, jää mainonnan ulkopuolelle.

Otollisin porukka, joka ostaa tuotettasi, on ominaisuuksien kombinaatio. Ehkä otollisin porukka on sinkkumiehet 25-35v. jotka ovat keskituloisia JA asuvat länsisuomessa TAI Helsingissä JA harrastavat liikuntaa sekä naiset 50-69v. äänestävät kokoomusta TAI ovat eronneet.

Tämän tiedon saaminen laskutusjärjestelmästä tai kanta-asiakasjärjestelmästä/CRM:stä ei onnistu pelkästään Excelissä pivotteja vääntämällä eikä se luonnistu QlikView:llä tai vastaavalla raportointivälineellä vaikka kuinka nopea ja helppokäyttöinen tuote olisikaan. Erilaisten kombinaatioiden määrä on vain liian suuri.

Vuosikymmenien kokemus antaa perstuntuman. Lissabonin kaman luukuttajilla oli varmasti jokin kokemuksen tuoma vainu siitä, kenelle kannattaa diilata ja kuka huutaa miliisiä apuun samantien.

Kaikilla ei ole vuosikymmenien kokemusta ja tällöin apuna on asiakaskäyttäytymisen mallintaminen. Eli asiakassegmentointi.

Asiakassegmentointi myynnin ja markkinoinnin apuna

Tällöin analytiikkasoftaan heitetään joukko muuttujia, jotka kuvaavat asiakkaita. Kanta-asiakas- tai CRM-järjestelmän tietoja kuten ikä, sukupuoli, tulotaso, harrastus, kaupunki… yhdistettynä asiakkaiden todelliseen ostokäyttäytymiseen kuten viimeisin ostokerta, ostosten tiheys (montako kertaa ostaa keskimäärin per vuosi/kk/viikko), keskiostos, ostosten kokonaismäärä, kate, konversioaste, asiakaspalvelukontaktit, reklamaatiot, mitä tuotteita/tuoteryhmiä asiakas on ostanut jne.

Softa tuuppaa ulos asiakassegmentit eli samankaltaiset asiakkaat mitä tulee heidän taustatietoihin ja käyttäytymiseen. Tällöin samaan ryhmään saattaa kuulua sekä miehiä että naisia. Sekä nuoria että vanhoja. Sekä landeja että kaupunkilaisia. Sekä varakkaita että persauksisia. Ja silti nämä kaikki saattavat olla niitä “optimaalisimpia ostajakanditaatteja”. Johtuen eri tekijöiden yhteisvaikutuksesta. Usean muuttujan kombinaatiosta.

Ehkä Lissabonissa minä pääsin myyjien listalle johtuen rinkasta selässä, huolimattomasta ulkomuodosta ja pieni tenava ja silmäpussit tässä yhtälössä vain vahvisti olettamusta. Tai sitten jotain ihan muuta.

Tämä on jokatapauksessa tieto, jota et saa selville millään muulla keinolla. Korkeintaan vuosikymmenien kokemuksella, jota voit kutsua vaikka intuitioksi, aavistukseksi, hiljaiseksi tiedoksi. Kaman luukuttajien ammattitaidoksi. Tiedoksi, joka on ehkä yhdellä parhaimmista myyjistäsi. Ja toivoisit, että voisit monistaa tuon tiedon muillekin.

No, sinä voit. Analytiikkan ja asiakassegmentoinnin avulla. Tai näin ainakin me olemme sen tehneet ja asiakkaillamme myynti tuntuu sujuvan aika mainiosti.

Seuraavassa postauksessa näytän miten tällainen yksinkertainen asiakasegmentointi tehdään 3 minuutissa. Jos tavara kiinnostaa, jää notkumaan kulmille.

 


14.04.2014 / Lasse Liukkonen

Blogikirjoituksen tarkoituksena on esitellä yksi keino estimoida kampanjan vaikutusta myyntiin. Aineistona on yrityksen “Lassen lelutehdas” myyntieurot vuodesta 1996 vuoteen 2003. Lelutehtaalla on vuosien saatossa ollut vain yksi kampanja tammikuusta (1997) elokuun (1997) alkuun saakka. Kampanjan todellinen vaikutus myyntiin tunnetaan, mutta sitä tietoa käytetään vain ennustetarkkuuden laskennasta, ts. käytämme vain tietoa kampanjan alkamisajankohdasta (ja ripauksen loppumisajankohdasta arvioitaessa kampanjan vaikutusta kampanjan jälkeiseen aikaan). Blogikirjoitus on tarkoitettu ensisijaisesti R-osaajille tai luomaan yksinkertaisen kuvan pikaisesta kampanjan vaikutuksen estimoinnista. Kampanjan vaikutuksen tutkimisessa suoritetaan seuraavat vaiheet:

  1. Myyntiaineiston redusointi; katkaistaan myyntiaineisto kampanjan alkamisajan kohdasta.
  2. Muodostetaan SARIMA-malli katkaistulle aineistolle.
  3. Ennustetaan estimoidun mallin avulla myyntiennuste seuraavalle vuodelle (1997).
  4. Tarkastellaan kampanjan vaikutuksen päättymistä ennusteen avulla
  5. Lasketaan todellisen ja ennustetun aikasarjan erotus estimoidulta kampanjan vaikutusajalta => kampanjan vaikutus (euroina).

1. Aineisto ja sen redusointi

Aineisto ja sen muodostama aikasarja graafina.

aika_sarja_kampanjaMyynti_data

aika_sarja_kampanjaMyynti_2

Kampanjan vaikutus on määritelty aikavälille 1.1997-7.1997:

(17325,15473,15443,9876,6758,3215,4360), kampanjan vaikutus=72450.

Redusoitu aikasarja 1992-1996:

aika_sarja_kampanjaMyynti_1992_1996

2. SARIMA-malli

Aikasarja malliksi valittiin acf/pacf-tarkasteluiden päätteeksi SARIMA-malli seuraavilla estimoiduilla parametreilla, jossa ar1=AR-kerroin, sar1/2=AR-kausikertoimet, 1:length(timeseries_1_48)=drifti.

sarima_malli

3. Mallin tuottamat ennusteet seuraavan vuoden myynnille

Mallin tuottamat sovitteet ja ennusteet seuraavalle vuodelle:

aika_sarja_kampanjaMyynti_1992_1996_ennuste

ennusteet_aikasarja_kampanja

4. Kampanjan vaikutuksen päättyminen

Esimerkin tapauksessa käy hyvin kampanjan päättymisen ennustamisessa, sillä kriteerinä kampanjan vaikutuksen päättymiselle voidaan pitää hetkeä, jolloin tarkasteltava aikasarja leikkaa ennustetta. Aina tilanne ei ole yhtä ruusuinen, joskus joudutaan tekemään “silmämääräinen” päätös kampanjan vaikutuksesta aineiston ja ennusteen avulla (graafien/luottamusvälien avulla). Seuraavasta kuvasta huomataan, että kampanjan vaikutus estimoidaan loppuneeksi heinäkuussa 1996 (sama kuin todellisuudessa):

aika_sarja_kampanja_vaikutus

5. Kampanjan vaikutuksen estimaatti

Edellisestä kappaleesta saamme laskettua estimoidun kampanjan vaikutuksen summaamalla positiiviset arvot yhteen. Estimoitu kampanjan vaikutus on 68581, kun oikea arvo oli 72450. Pääsimme siis hyvin lähelle todellista vaikutusta yksinkertaisella aikasarjamallinnuksella.

Esitetyn lähestymistavan etuna on sen helppo toteutus. On kuitenkin aikasarjoja, jotka eivät ole yhtä “säännöllisiä” kuin esimerkin aikasarja, jolloin kampanjan vaikutusajan estimoinnissa voi tulla ongelmatilanteita, eikä myöskään ARIMA-mallin sovittaminen ole aina järkevää/mahdollista. Mikäli ARIMA-perheen mallit eivät ole tuttuja, voi myynnin ennusteet (redusoidusta aineistosta) estimoida esimerkiksi Holt-Winters:llä tai aikasarjan dekomponoinnin avulla (estimoi trendi tuleville kuukausille lineaarisella regressiolla ja lisää trendiin kausivaihtelukomponentti).


9.04.2014 / Lasse Liukkonen

Blogin tarkoituksena on käydä läpi yksinkertainen lähestymistapa brändilojaalisuuden tutkimiseen, vaikkakin taustalla lymyävä Markovin ketjujen teoria ei ole välttämättä yksinkertaista (ainakaan tilanteissa, joissa ketjujen siirtymäydin on jatkuva vrt. siirtymämatriisi). Konstruoimme esimerkkiaineiston avulla Markovin ketjun siirtymämatriisin, jonka avulla saamme laskettua lojaalisuutta kuvaavat kertoimet (tasapainojakauman todennäköisyydet). Aluksi käymme kuitenkin aineiston kimppuun.

1. Aineisto

Esimerkkiaineistona on tarkasteltu 39 asiakkaan matkapuhelimen ostokäyttäytymistä rajoittuen kolmen matkapuhelin valmistajan tuotteisiin. Aineisto sisältää asiakaskohtaisesti neljän ostokerran tiedot ostetuista puhelinmerkeistä,

Lojaliteetti_aineisto

Aineisto on siis hyvin yksinkertainen ja helposti muodostettavissa esimerkiksi myyntitapahtumista. ID kenttää tarvitsemme tunnistamaan asiakkaan peräkkäiset ostokerrat, ostokerrat on oltava ajallisesti järjestyksessä.

2. Markovin ketjun konstruointi

Muodostettava Markovin ketju on ajallinen prosessi, joka kuvaa puhelimien vaihtoprosessia. Markovin ketjun erityispiirre on se, että uuden ostokerran arvo (puhelimen merkki) riippuu ainoastaan edellisestä ostokerrasta, ei sitä edeltävistä. Esimerkin tapauksessa Markovin ketjun tila-avaruus on {Nokia, Samsung, Iphone}, siis mahdolliset ketjun saamat puhelinmerkkien arvot. Voimme määrittää muodostettavan ketjun alkujakauman 1. ostokerran frekvenssien perusteella (alkujakauman määrittäminen ei välttämätöntä sovellettaessa):

(17/39, 11/39, 11/39)=(0.44, 0.28,0.28),

missä 0.44 on Nokia puhelimien suhteellinen osuus, sekä 0.28 Samsungin ja Iphonen suhteelliset osuudet.

Oleellisin ketjun rakenne on siirtymämatriisi, joka kertoo puhelimien vaihtotodennäköisyydet. Kappaleen alussa mainitusta erityispiirteestä johtuen saamme konstruoitua siirtymämatriisin helposti laskemalla peräkkäisien ostokertojen siirtymien osuudet. Seuraavassa kuvassa siirtymien frekvenssit (laskettu excelillä),

Lojaliteetti_siirtyma_frek

Siirtymäfrekvenssien avulla saamme laskettua siirtymämatriisin arvot jakamalla sarakekohtaiset summat siirtymän alkuarvon (1. sarakkeessa Nokia) esiintymisten lukumäärällä poislukien viimeisen ostokerran lukumäärät. Koska siirtymäfrekvenssi-sarakkeita on 9 kpl tulee siirtymämatriisissa olemaan 9 solua. Siirtymämatriisi ja ketjun siirtymiä kuvaava graafi on seuraavanlainen:

Lojaliteetti_matriisi

Nyt olemme konstruoineet diskreetissä tila-avaruudessa kuljeskelevan Markovin ketjun. Lasketaan vielä ketjun avulla esimerkinomaisesti todennäköisyys sille että (populaation) henkilö ostaa ensimmäisellä kerralla Nokian ja viimeisellä (4. ostokerta) ostokerralla hänellä on kädessään uusi Iphone. Laskenta tapahtuu yksinkertaisesti matriisilaskennan avulla, merkataan siirtymämatriisia laskennassa A:lla:

(0.44, 0.28,0.28)*A*A*A=(0.44, 0.28,0.28)*A^3=(0.35, 0.37, 0.28),

missä *-merkki tarkoittaa matriisituloa. Nyt poimimalla syntyneen vektorin 3:n komponentin (vastaa Iphonea) saamme todennäköisyydeksi 0.28.

3. Regulaarinen Markovin ketju

Aluksi mainittakoon, että sana regulaarinen ei välttämättä ole kirjallisuudessa käytetty vastine englanninkieliselle sanalle regular. Riittävä ehto Markovin ketjun regulaarisuudelle on se, että ketjun kaikki siirtymätodennäköisyydet ovat aidosti positiivisia. Selvästi nähdään, että kyseinen ehto toteutuu viime kappaleessa konstruoidussa siirtymämatriisissa. Regulaariselle Markovin ketjulle pätee seuraava tulos:

A^n –> W, kun n kasvaa rajatta.

Rajamatriisi W on matriisi, jonka rivien alkiot ovat aidosti positiivisia ja ne summautuvat 1:ksi (voidaan tulkita siirtymämatriisiksi). Matriisin W riviä kutsutaan tasapainotilaksi. Kuten arvata saattaa, tämän kyseinen matriisin rivi kuvaa esimerkissämme lojaalisuuslukuja (todennäköisyyksiä). Saadaksemme lojaalisuutta kuvaavat luvut, riittää muodostaa siis matriisitulo A^n, riittävän suurella n,

Lojaliteetti_kertolasku

Ylhäällä olevan kuvan perusteella siirtymämatriisimme konvergoi todella nopeasti, tuloksena saamme tasapainotilan

(0.35 , 0.37 , 0.28).

  • Brändien lojaliteetit: Nokia 0.35, Samsung 0.37, Iphone 0.28.

Yksinkertaisen analyysin perusteella Samsung- ja Nokia-puhelimien omistajat ovat liki yhtä lojaaleja brändilleen, Iphonen omistajat vähiten. Lojaalisuus ilmentyy tulomatriisista A^10 kahdella tavalla: a) Nokia/Samsung puhelimen omistajat ovat keskimääräistä taipuvaisempia pysymään Nokiassa/Samsungissa, jos ovat sen valinneet, sekä b) ovat keskimääräistä taipuvaisempia palaamaan Nokiaan/Samsungiin, jos ovat niistä pois hairahtaneet.


1.04.2014 / Ville Niemijärvi

Linkedin_logoLouhian tuotekehitysosasto on julkaissut beta-version uudesta ennakoivan analytiikan tuotteesta, joka on suunnattu suuryritysten henkilöstöhallintaosastoille estämään aivovuoto.

Kehittämämme algoritmi lukee yrityksen työntekijöiden LinkedIn-aktiivisuuden: uudet kontaktit, tykkäämiset, liittymiset ryhmiin, postaukset, profiilin täydentämiset jne. ja vertaa sitä edistyneeseen poistumamalliin todennäköisestä työpaikan vaihtajasta.

Tuote on nyt koekäytössä kourallisessa kansainvälisesti toimivia suuryrityksiä ja palaute on järisyttävän positiivista.

Olemme pystyneet pongaamaan Louhian algoritmilla ennakkoon kymmeniä potentiaalisia kilpailijoille siirtyjiä ja tarjoamaan heille porkkanaa, jotta he ovat jääneet taloon. 

Mikä parasta: tuotteen avulla löydetään myös ns. vähään tyytyjät. Näille kavereille on turha antaa palkankorotuksia koska näemme ettei reppanat ole mihinkään lähdössä. Mahtavaa!

Suuryrityksen HR-päällikkö

Oppivat algoritmit käytännössä – vuosien tuotekehityksen tulos

Tuotteen kehitys sai alkunsa huomiosta, että työpaikan vaihtoa tai palkankorotusta suunnittelevat LinkedIn-jäsenet aktivoituvat ja alkavat haalia uusia kontakteja, päivittävät profiiliaan keskimääräistä huomattavasti tiheämmin ja osoittavat muutenkin normaalia poikkeavaa käytöstä.

Tästä alkoi tuon hypoteesin testaus ja tuotekehitys, jossa pilvirahoituksen turvin saimme useilta kumppaniyrityksiltä todellista historiadataa heidän poistuneista ja ei-poistuneista työntekijöistä. Yhdistimme tämän tiedon näiden työntekijöiden LinkedIn-historiaan ja loimme data mining -työvälineillä ennustemallin. Opetimme algoritmit havaitsemaan, milloin työntekijä poistuu. Lopputuloksena on todella monimutkainen mutta nerokas malli, joka yhdistää työntekijän taustatietoja (ammatti, koulutus, sukupuoli, kansallisuus, ikä, tulotaso) sekä hänen LinkedIn-aktiviisuuden ja pisteyttää työntekijät poistumatodennäköisyyden mukaan.

Pätijät ilman substanssia jäävät kiinni

Malli löytää myös mainiosti tyhjän jauhajat eli name-droppaajat, jotka haluavat vain päteä keskustelupalstoilla ja luetella wikipediasta ja self-help -oppaista löytämiään hypetermejä sekä kommentoida kaikkea mikä liikkuu, omaamatta kuitenkaan mitään todellista osaamista tai mikä tärkeintä – aitoa intoa vaihtaa työpaikkaa. Tällaiset  Pätijät-Ilman-SubstanSsia eli somen Pissikset on hyvä erottaa todellisesta aivovuodosta.

Algoritmeja on jouduttu matkan varrella virittämään herkemmiksi ja herkemmiksi koska alustavissa analyyseissä 98% LinkedIn populaatiosta osui tähän segmenttiin.

Jatkokehitys: tiedämme milloin vaimosi nostaa kytkintä

Louhian R&B-osasto jatkaa tuotteen kehittämistä ja aiomme viedä sen seuraavaksi uusille markkinoille. Tällä hetkellä mallinnuksen alla on päätellä muiden sosiaalisen median alustojen kuten Facebookin, Pinterestin, Instagrammin ja Pentagrammin aktiivisuuden perusteella, milloin parisuhde on katkolla. Alustavat tulokset ovat lupaavia joten jatkossa sinun ei tarvitse enää tutkia salaa puolisosi puhelinta tai hakkeroida hänen facebook tilille, Louhian big data some-algoritmi kertoo milloin partnerisi on oikeasti lähdössä ja milloin sinun kannattaa siirtyä perusnahjuksesta kunnon stalkkeriksi ja alkaa etsimään lemmikkikanille sopivaa pataa.

 


13.03.2014 / Antti Ollikainen

Moni yritys pohtii, mikä on sen markkinointiponnistelujen vaikutus myyntiin. Kysymyksen ratkaisemisella on suuri arvo, koska tehottomista kampanjoista haluttaisiin luopua ja tehokkaisiin panostaa lisää.

Tässä esitellään kaksi yleisesti käytössä olevaa tekniikkaa kampanjan vaikutuksen arviointiin sekä näytetään, kuinka harhaan ne voivat johtaa ja miksi näin käy. Lopuksi näytetään, kuinka aikasarja-analyysillä voidaan arvioida näitä tekniikoita olennaisesti tarkemmin ja luotettavammin kampanjan vaikutus myyntiin.

Lähdetään liikkeelle esimerkillä: alla on graafi, josta ilmenee (kuvitteellisen) ”Nisupulla” -tuotteen myynti ja hinta. Tehtävänä on arvioida, onko sen mainostaminen huhti-syyskuussa 2013 nostanut sen myyntiä vai ei ja jos on, niin kuinka paljon.

Aikasarja1

Yleisiä käytössä olevia tekniikoita tutkia asiaa ja sitä myötä näkökulmia on (ainakin) kaksi:

  1. Nisupullan myynti on laskenut kampanjan alkuun verrattuna. Ja heti kampanjan loputtua sen myynti on taas noussut dramaattisesti – surkea kampanja siis!
  2. Nisupullallahan on selvä kuuden kuukauden kausivaihtelu. Jos verrataan vuoden takaiseen myyntiin, on Nisupullan myynti noussut huimasti – loistava kampanja siis!

Alla on graafi, joka havainnollistaa tätä näkemyseroa:

Aikasarja2

Näkemykset ovat niin kaukana toisistaan kuin olla ja voi. Kumpi on oikeassa?

Ei kumpikaan.

Mikä meni pieleen?

  1. Kampanjan alkuun vertaaminen ei huomioinut kausivaihtelua: Nisupullaa ostetaan tavanomaista enemmän touko- ja marraskuussa. Tämä selittää sekä kampanjan aikaisen heikon myyntimenestyksen että kampanjan jälkeisen myynnin huiman nousun.
  2. Vuoden takaiseen vertaaminen ei huomioinut trendiä: Nisupullan myynti on kasvanut tasaisesti useita vuosia. Tämä nousu ei ole kampanjan ansiota, koska trendi on ollut olemassa jo kauan ennen kampanjaa.
  3. Kumpikaan tekniikka ei huomioinut hinnan vaikutusta: sen nousu kampanjan aikana selittää osittain myynnin laskun, kuten myös hinnan lasku avitti myynnin nousua kampanjan jälkeen.
  4. Kumpikin tekniikka sivuutti sen tosiasian, että Nisupullan myynti on osittain satunnaisilmiö, eikä satunnaisesti heilahtelevaa osaa myynnistä tule laskea kampanjasta aiheutuvaksi. Esimerkiksi kampanjan jälkeinen myynnin nousu selittyy osittain sillä, että lokakuussa 2013 on ollut pienehkö sattumanvarainen lisänotkahdus alaspäin ja marraskuussa niinikään pieni satunnainen lisänousu.
  5.  
    Kampanjan todellinen vaikutus tunnistetaan soveltamalla aikasarja-analyysiä myyntihistoriaan

    Ratkaisu edellä esitettyyn ongelmaan on analysoida kampanjan vaikutus aikasarja-analyysillä. Tämä on tavanomaisesta poikkeava tapa käyttää aikasarja-analyysiä, koska melkein aina sitä käytetään tulevan ennustamiseen eikä menneen analysointiin.

    Aikasarja-analyysi puree tähän ongelmaan, koska se pystyy samanaikaisesti tunnistamaan mikä osuus myynnin vaihtelusta johtuu:

    1. Kausivaihtelusta
    2. Trendistä
    3. Hinnasta
    4. Muista tekijöistä (esim. kilpailevan samankaltaisen tuotteen hinnasta)
    5. Sattumasta
    6. Kampanjasta
    7.  
      Aikasarja-analyysillä siis tunnistetaan, mikä on kampanjan itsenäinen vaikutus, kun myynnin vaihtelusta on poistettu kaikkien muiden em. luettelossa olevien tekijöiden vaikutus. (Teknisesti tämä tehdään siten, että arimax-malliin lisätään kampanjan vaikutuksen itseensä imevät apumuuttujat. Tämän kuvailu ansaitsisi melkeinpä oman bloginsa.)

      Palataan Nisupulla-esimerkkiin. Ao. kuvassa on tehty (MS SQL Server Analysis Service:llä) aikasarja-analyysi Nisupullan myyntihistorialle. Aikasarjamallin tuottama hintaennuste (keltainen) pystyy toistamaan erittäin hyvin myynnin (sininen) säännönmukaisena toistuvat vaihtelut, tärkeimpinä trendin ylöspäin, kausivaihtelut ja hinnan (punainen) vaikutuksen. Toteutuneen myynnin ja mallin ennusteen erotus tulkitaan satunnaiseksi myynnin vaihteluksi. Näistä yli jäävä osuus myynnin vaihtelusta on kampanjan aiheuttamaa (harmaa).

      Aikasarja3

      Havaitaan, että kampanjan todellinen vaikutus oli pienempi kuin vuoden takaiseen vertaamalla saatiin tulokseksi mutta suurempi kuin kampanjan alkuun vertaaminen näytti.

      Aikasarja-analyysi mahdollistaa myös sen todentamisen, että Nisupullan kampanjoinnilla on ollut tilastollisesti merkitsevästi positiivinen vaikutus sen myyntiin (mikä on toki eri asia kuin asiallisesti merkitsevä). Vuoden takaiseen tai kampanjan alkuun vertaaminen eivät tähän kykene.

      Aikasarja-analyysin rajoitteet

      Tämäkään tilastollinen tekniikka ei ole suinkaan täydellinen, kuten ei mikään tekniikka kampanjan vaikutuksen arvioimiseksi. Yleisesti voi todeta, että kampanjan vaikutuksen tunnistaminen onnistuu aikasarjamallilla sitä paremmin, mitä säännönmukaisempaa on myynnin vaihtelu muista kuin kampanjasta johtuvista syistä (kohdat 1-5 edellä). Jos myynti on aivan kaoottista kohinaa, on vaikea erottaa kampanjan vaikutusta. Tosin silloin ajautuvat ongelmiin muutkin tähän tähtäävät tekniikat.

      Toinen haaste on se, että aikasarjamalli tulkitsee kaiken em. kohtien 1-5 ulkopuolelle jäävän myynnin vaihtelun kampanjasta johtuvaksi. Jos kampanjoita onkin täysin samaan aikaan ollut vaikkapa kaksi, tunnistaa aikasarjamalli niiden yhteisvaikutuksen. Sama pätee, jos on tapahtunut jotain muuta myyntiin vaikuttavaa samanaikaisesti kampanjan kanssa. Nisupullan tapauksessa tämä voisi olla vaikkapa kampanjan ajankohtaan osunut uutinen Nisupullassa käytetyn elintarvikevärin haitallisuudesta terveydelle. Ja jälleen on todettava, että tämä toki tuottaa ongelmia muillekin kampanjan vaikutusta arvioiville tekniikoille.

      Yhteenveto

      Perinteisillä tekniikoilla saatetaan ajautua aivan hakoteille sen arvioinnissa, mikä on kampanjan vaikutus myyntiin. Esimerkin tapauksessa kampanjan alkuun vertaaminen tuotti aivan liian synkän kuvan ja vuoden takaiseen vertaaminen aivan liian optimistisen kuvan kampanjan vaikutuksesta. Molemmat tekniikat epäonnistuivat, koska ne eivät kyenneet huomioimaan kaikkia myynnin vaihtelun säännönmukaisuuksia. Niiden avulla ei myöskään voida arvioida onko kampanjan vaikutus tilastollisesti merkitsevä vai ei.

      Aikasarja-analyysi on olennaisesti parempi tekniikka, koska se pystyy arvioimaan, mikä osuus myynnin vaihtelusta johtuu kausivaihtelusta, trendistä, hinnasta, sattumasta, muista tiedossa olevista tekijöistä ja kampanjasta. Näin kampanjan vaikutus arvioidaan realistisesti. Samalla selviää, onko vaikutus tilastollisesti merkitsevä vai ei.

      Itse asiassa aikasarja-analyysillä voidaan tunnistaa tässä esitetyllä tavalla minkä tahansa tapahtuman tai toimenpiteen vaikutus mihin tahansa aikasarjan muodossa esitettävissä olevaan ilmiöön… Vaikkapa tulivuorenpurkauksen vaikutus lentoliikenteeseen.

      – Antti O.

      P.S. Lue myös Lasse Liukkosen blogi aikasarja-analyysin alkuaskeleista.


21.02.2014 / Ville Niemijärvi
Kyltti Mumbaissa
Kyltti Mumbaissa

Olin pari vuotta sitten Intiassa reissaamassa. Kiersimme Keralan maakuntaa, piipahdimme viidakossa, lojuimme rannalla ja toisinaan oluella Ismo Alangon kanssa. Eli sitä perinteistä mitä nyt Intiassa tehdään.

Yksi asia pisti kuitenkin ärsyttämään intialaisessa autoilukulttuurissa: äänitorven käyttö.

Intialaiset autot, riksat ja mopot ajavat käytännössä koko ajan, jatkuvasti töötti pohjassa. Ihan aina. Kaikkialla. Jos vastaan tulee auto, painetaan torvea. Jos jalkakäytävällä on ihmisiä, painetaan torvea. Ja Intiassa autoja ja ihmisiä riittää. Eli torvi on pohjassa aina.

Olimme lähellä luonnonsuojelualuetta, käytännössä täysin maaseudulla. Näimme kilometrin päässä auton lähestyvän leveällä tiellä. Auto läheni ja läheni. Ja kun se pääsi juuri meidän kohdalle, ei 50 metriä ennen vaan juuri siinä korvan juuressa, kuski iskee töötin pohjaan ja värisyttää tärykalvojamme.

Voitte siis uskoa, että äänitorvi on käytännössä turha väline intialaisissa autoissa. Jos se on koko ajan pohjassa, ei sitä noteerata. Se ei ole poikkeus muusta äänimassasta. Se on standardi. Aina vallitseva melu.

No miten intialainen autoteollisuus vastaa tähän haasteeseen ja ilmiselvään turvallisuusongelmaan? Näin uutisen missä automerkki mainosti kovempia äänitorvia! “Meidän äänitorvi ylittää 180DB ja se on roimasti enemmän kuin kilpailijalla.” Tämä oli oikeasti firman ainoa myyntiargumentti.

Ja sitten liiketoimintaan ja hiljaiseen härmään.

Jos olet yrityksesi raportointi- tai tietovarastovastaava, yritykselläsi on hieno business intelligence -softa ja olet panostanut muutaman vuoden ajan raportoinnin kehittämiseen, olet todennäköisesti kuin intialainen autoteollisuus tai taksikuski Mumbain ruuhkassa.

Toisin sanoen hukutat liiketoiminnan käyttäjät tietoon ja estät heitä näkemästä olennaisen. Estät näkemästä muutoksen, joka heidän pitäisi havaita ajoissa.

Entisaikaan kun liiketoiminnan käyttäjä halusi uuden raportin, se piti tilata IT:stä. Jokainen tarve puntaroitiin tarkkaan. Nykypäivän tehokkailla, helppokäyttöisillä raportointityövälineillä pystyy jokainen tekemään omia visualisointeja ja raportteja. Ollaan siis kuin noutopöydässä. Ja kun suomalainen on noutopöydässä ei turhia nirsoilla. Ylin nappi aukaistaan jo pöytään astuessa. Eli raportointimaailmassa tuloksena on, että kaikki mahdollinen tieto siirretään raporteille. Tarvittiin sitä tai ei.

Laske kuinka monta erillistä raporttia yritykselläsi on. Laske montako sivua/välilehteä kullakin raportilla on. Kuinka monta erillistä listaa, graafia, pivottia, taulukkoa tai kuvaa niissä on. Kuinka monta riviä ja saraketta kussakin taulukossa on, kuinka monta solua dataa niissä on. Päädyt todennäköisesti satoihintuhansiin tiedonjyviin.

Niin, sinä olet intialainen autokuski joka ajaa torvi pohjassa ja ihmettelet kun sillä ei ole mitään vaikutusta.

Kysy huviksesi liiketoiminnan raporttien käyttäjiltä, milloin viimeksi he tekivät raporttien dataan perustuvan päätöksen. Päätöksen, jota ei olisi voinut tehdä ilman raportin sisältämää tietoa, päätöksen joka tuo firmaasi lisää rahaa, pienentää kustannuksia. Päätöksen, jolla on ylipäätään jokin vaikutus.

Sillä tästähän BI-järjestelmistä ja tiedolla johtamisesta on kyse. Päätöksenteosta ja asioihin (asiakkaisiin, markkinoihin, henkilöstöösi…) vaikuttamisesta. Jos tarjoat päätöksentekijöille melusaastetta, ei noita päätöksiä ole helppo tehdä. Tällöin BI-välineiden käyttö on vain päämäärätöntä ajelua, torvi pohjassa.

Joskus kun sinun pitää oikeasti varoittaa kanssakulkijoita tai haluat, että sinua varoitetaan edessä olevasta vaarasta, pidä huoli että ympärillä on hiljaista jotta viesti kuullaan.


18.02.2014 / Jani Liimatta

Saimme joku aika sitten tehtäväksi mielenkiintoisen projektin. Pohjimmiltaan kyse oli antureiden tuottamasta raakadatasta. Tehtävänä oli tuottaa nivaska raportteja eri laitteiden antureilta saapuvasta datasta. Laitteiden määrä lisääntyy koko ajan, jokainen anturi tuottaa dataa 5-15 sekunnin välein 24/7. Osa datasta on kumulatiivista summadataa, osa taas antureiden tuottamia mittausarvoja.

Teknologiavalinta oli tehty etukäteen, SQL Server 2012 Standard. Aikataulu oli tiukka ja budjetti pieni. Muutamia haasteita  tunnistettiin heti alkuun:

  • Dataa on paljon, ja on varauduttava siihen että vuoden päästä sitä on paljon enemmän
  • Anturidata on muodoltaan haasteellista raportointia ajatellen. Datassa oli mukana kumulatiivisia summia, lisäksi raporteilla pitäisi tutkia kestoaikoja sekä muita mittareita, jotka saadaan laskettua rivien välisistä erotuksista. Koko datanmassa sellaisenaan SQL-kannassa aiheuttaisi lisäksi takuuvarmasti suorituskykyongelmia.
  • Antureiden antamat lukuarvot eivät kerro loppukäyttäjälle mitään, ne on käännettävä ymmärrettäviksi, tämä nyt oli kuitenkin ongelmista pienin
  • On myös otettava  huomioon antureilta tulevat virhearvot, nollautumiset jne.

Jossain vaiheessa projektia naureskelimme että hei, tämähän onkin nyt sitä hypetettyä Big Dataa!

Hieman dataa tutkittuamme totesimme että yli 95% antureiden tuottamasta datasta ei kiinnosta ketään. Itse asiassa raportoinnin kannaltahan käyttäjää kiinnostavat ne rivi, joilla on tapahtunut jotain, eli anturin antama arvo on muuttunut. Täytyy saada kiinni se rivi – ja ajanhetki –  jolla haluttu anturiarvo on muuttunut – sekä tätä edeltävä rivi. Tämän jälkeen lasketaan kestot, kappaleet, rivimäärät sekä otetaan kumulatiivista summista erotukset.

Tällöin päästään eroon itse asiassa kaikista datan ongelmista; data saadaan raportointiin kelpaavaksi, sekä suorituskykyongelmista päästään eroon kun, suuri osa riveistä heitetään romukoppaan.

Miten tämä sitten tehdään teknisesti? Saamme joka päivä snapshotin päivän tapahtumista. Kaikeksi onneksi yhden päivän datamassa mahtuu serverin muistiin helposti nyt ja tulevaisuudessa. Tästä datasta rakennetaan tietovarastoon kelpaava datasetti seuraavasti Transact SQL:llä:

  1. Luetaan anturidata tietotyyppi kerrallaan @Temp-tauluun, tauluun luodaan PRIMARY KEY IDENTITY(1,1)-sarake
  2. Käyttäen hyväksi tuota muistissa olevaa IDENTITY-saraketta, loopataan taulun sisältö läpi rivi kerrallaan. Koska data on serverin muistissa, sen läpikäynti SQL:llä on hyvin nopeaa. Verrataan rivi kerrallaan käsissä olevia arvoja edellisen käsitellyn rivin arvoihin.
  3. Jos käsissä olevalla rivillä on tapahtunut relevantti muutos, kirjoitetaan ko. rivi raporttitauluun. Muistissa on myös edellisen rivin arvot – sekä edellisen raporttitauluun kirjoitetun rivin anturiarvot, niitä käyttäen saadaan laskettua tarvittavat kestot kumulatiivisten summien erotuksina sekä aikaleimoista laskettua kestot.

Lopputuloksena käsissä on nopeasti toimiva, käyttäjäystävällinen, pieni tietovarasto alun perin massiivisesta anturidatasta.

SQL-logiikan läpiajo päivittäin vie muutaman minuutin. Tässä esimerkissä siis paljon hypetetty Big Data puristetaan vanhanaikaisilla, halvoilla ja nopeilla SQL-logiikoilla  loppukäyttäjän hyödynnettävään muotoon.

Vastaavan kompressoinnin datalle voi tehdä muillakin tekniikoilla, tässä tapauksessa yllä kuvattu SQL-logiikka oli nopein, käyttäjäystävällisin ja kustannustehokkain tapa ratkoa anturidatan raportintekijälle heittämät haasteet.