Tässä onkin mennyt jo tovi edellisestä analytiikkaan liittyvästä blogi-postauksesta, joten allekirjoittanut nakitettiin tarinoimaan. Selattuani hetken läppärin aarteita, huomasin, että on tullut tehtyä ristiinmyynnin ennustaja, kutsuttakoon sitä tästä eteenpäin ristiinmyyjättäreksi, jonka tuloksena saadaan riistiinmyynnin odotetut katteet asiakaskohtaisesti kaikille relevanteille ristiinmyytäville tuotteille. Kuullostaa melko hyvältä, en muista nähneeni vastaavaa kapistusta tarjottavan.
Seuraavassa kertaus ristiinmyynnin kysymyksistä kuvan muodossa:
Oletetaan tästä eteenpäin, että tarkastelemme liiketoimintaa, jossa saatavilla on ”kattavat” asiakaskohtaiset taustatiedot ja asiakkaiden ostohistoria tuotemyyntien lisäksi.
Ristiinmyynnin ennusteiden toteutus ostoskorianalyysin avulla ottaa huomioon vain tuotteiden väliset relaatiot. Oletuksena on siis tässä tapauksessa se, että ”Maija 20 vee stadist” ja ”Pertsa 60 vee pohjanmaalt” ostavat tuotteen B yhtä todennäköisesti, kun he omistavat jo tuotteen A. Tämä voi olla hyvin kaukana todellisesta tilanteesta ja ostoskorianalyysi tuottaa kieroutuneita tuloksia asiakaskohtaisesti! Hyvää ostoskorianalyysissä on kuitenkin se, että sen tulokset ovat laskettu suoraan datasta, jolloin mallin tuottamaa harhaa ei synny. Yleisellä tasolla ostoskorianalyysin tulokset ovat siis käyttökelpoisia.
Ristiinmyynnin ennusteiden toteutus luokitteluongelman näkökulmasta ottaa huomioon asiakkaiden taustatiedot, mutta koska asiakaskohtaiset ristiinmyyntiennusteet joudutaan tekemään automaattisesti tuotteittain, saattavat mallien tuottamat tulokset olla hyvin poikkeavia yleisestä tuotteiden välisestä relaatiosta. Mikäli jonkun tuotekombinaation osalta asiakkaan taustatiedot eivät selitä ostopäätöksiä, niin tämä ei haittaa sillä tällöin ostotodennäköisyydet vastaavat ostoskorianalyysin tuottamia tuloksia kyseisen tuotekombinaation osalta.
Kuten arvata saattaa, yhdistää raapustami ristiinmyyjätär näiden kahden mallinnustavan tulokset, jolloin ei ehkä kaikkien asiakkaiden osalta saavuteta täysin optimaalisia ristiinmyyntiennusteita (riippuu asiakkaan taustamuuttujien selitysvoimasta), mutta ei myöskään voida mennä täysin metsään.
Ristiinmyyjätär on toteutettu R-ohjelmalla ja sen osaset ovat pähkinänkuoressa seuraavat:
- Suoritetaan ostoskorianalyysi, jonka avulla saamme tuotekohtaiset relaatiot, sekä saamme karsittua tuotekombinaatioita seuraavaa vaihetta varten, joka haukkaa suuren määrän laskenta-aikaa ja muistia
- Muodostetaan luokittelumallit jokaiselle kohdan 1. säännöissä (tuloksissa) esiintyville tuotteille ja kahden tuotteen kombinaatioille
- Yhdistetään tulokset käyttämällä ”optimaalista” painotussuhdetta, joka perustuu mm. edellisen kohdan mallien tarkkuuskriteereihin
- Kootaan ristiinmyyntiennusteet yhteen tauluun ja lasketaan odotetut tuote- ja asiakaskohtaiset katteet tuotetietojen avulla (tuotteen hinta-ostohinta, eli kate)
Kohdan 2. mallien lukumäärä räjähtää helposti valtavan suureksi, joten suoritusjärjestys tulee nähdäkseni olla juuri yllä mainittu. Yllä mainitun ristiinmyynnin mallinnustavan implementointi R-koodiksi ei ole aivan ongelmatonta muistinkäytön suhteen. Tulokset tulee laskea osissa ja suuren asiakaskannan tilanteessa tulee 2. kohdan mallinnus toteuttaa useammassa erässä.
Seuraavassa todiste siitä, että ristiinmyyjätär on totta, eikä pelkkää sanahelinää powerpointissa ja blogissa
Kuvassa on kahden eri näkökulman kannalta otettu esimerkit myyjättären tuloksista.
Kuvassa A on asiakkaalle 25874 tarjottavat potentiaaliset tuotteet ProductB-sarakkeessa ja tuotteiden odotetut katteet (kate painotettu ostotodennäköisyydellä) sarakkeessa Expected_marginB. Tässä tapauksessa asiakkaalle A voisi tarjota esimerkiksi tuotteita 486, 537, joilla on suurin odotettu kate.
Toisaalta, jos varastossa sattuu olemaan tuotetta 486 liian kanssa, voidaan tulosten avulla filtteröidä joukko asiakkaita kenelle tarjotaan kyseistä tuotetta, ts. kenen asiakkaiden osalta odotettu kate on suurin tuotteen 486 osalta.
Tulostaulut on muodostettu siten, että asiakkaat eivät ennestään omista sarakkeessa ProductB olevia tuotteita, joten tarjottavat tuotteet saadaan molemmissa tapauksissa haettua helposti esimerkiksi sql-kyselyllä.
Kuvia vertaamalla huomaa, että odotetut katteet saattavat asiakaskohtaisesti vaihdella merkittävästi, esim. tuotteen 486 estimoitu odotettu kate asiakkaalle 25874 on 2.17e, kun vastaavasti asiakkaalle 20222 se on 5.78e.
Aiheeseen liittyviä koulutuksia: