29.03.2017

Auton myyntihinnan ennustaminen

Auton myyntihinnan arviointiin on useita mahdollisuuksia. Yksinkertaisinta lienee käydä katsomassa mitä vastaavilla ominaisuuksilla varustetut autot maksavat netissä, ja asettaa hinta oman fiiliksen mukaan alle, keskiarvoon tai vaikka ylitse. Tämä metodi on varmaan riittävän tarkka tapa hinnoitella auto ellei kyseessä ole jonkinlainen erikoiskappale tai muuten harvinainen ajopeli.

Mutta onnistuuko myyntihinnan ennustaminen data-analytiikan (machine learning, statistics) keinoin? Intuitiivinen vastaus on –  ”tietysti onnistuu”, mutta kyseessä ei ole ihan yksinkertainen ennusteongelma. Auton myyntihinnan asetanta kun ei ole vain logiikkaa vaan myös ns. mielipidekysymys. Esimerkiksi:

  • Myyntihinta voi vaihdella tuhansiakin euroja käytännössä identtisten autojen kesken
  • Heikommin varusteltu auto voi olla kalliimpi kuin paremmin varusteltu vastaava auto
  • Toisille ”hyvin pidetty” tarkoittaa katsastuksesta selviämistä, ja toisille uudenveroista menopeliä vuodelta 1986

Tämän lisäksi eri ominaisuuksien (kilometrit, merkki, vaihteisto, jne.) ristiinvaikutus myyntihintaan ei  todennäköisesti ole lineaarinen eri merkkien ja mallien suhteen. Esimerkiksi vanhempi mersu on sisäänajettu siinä 300 000 kilometrin kohdalla, kun rellusta tehdään silloin peltimukeja sulattamolla.

car-bw

Käytettävä data

Käytettävissä meillä oli datasetti vuodelta 2012, jossa oli tiedot vuosimallien 2000-2012 myynnissä olleista autoista. Dataa oli kokonaisuutena n. 40 000 riviä (myytävää autoa).

Datassa olevat muuttujat:

  • Pyydetty myyntihinta (ennustettava vastemuuttuja), jatkuva mja
  • Automerkki, luokittelu
  • Auton malli, luokittelu
  • Vuosimalli, jatkuva
  • Ajetut kilometrit, jatkuva
  • Korimalli, luokittelu
  • Moottorin koko, jatkuva
  • Polttoainetyyppi, luokittelu
  • Vaihteisto, luokittelu
  • Vetotyyppi, luokittelu
  • CO2-kulutus, jatkuva
  • Yhdistelmäkulutus, jatkuva

Datassa on siis mukana sekä jatkuvia että luokittelumuuttujia. Itse ennustetyyppi on ns. regressio-ongelma, eli ennustetaan jatkuvan muuttujan arvoja. Vaikka datassa on ihan mukavasti muuttujia, niin muutama oletusarvoisesti myyntihintaan vaikuttava tekijä puuttuu.

  • Auton tarkempi varustelu (peräkoukku, turvatyynyt, yms.)?
  • Onko myyjänä liike vai yksityinen?
  • Millä alueella auto on myynnissä?
  • Auton kunto (kolaroitu, naarmuja, yms.)?
  • Auton väri?

Mallinnusmenetelmän valinta

Aluksi ajattelimme tehdä vertailun regressioanalyysin ja neuroverkon välillä tehdyissä ennusteissa. Datan alustava tutkiminen kuitenkin sai meidät sellaiseen johtopäätökseen, että ilman raskasta datankäsittelyä ei regressioanalyysillä tässä kontekstissa olisi mitään mahdollisuuksia neuroverkkoa vastaan. Niinpä päätimme edetä neuroverkolla ja nopeasti testata regressioanalyysiä.

Datan esikäsittely ja splittaus

Käytettävissä oleva data oli hyvälaatuista eikä esim. puuttuvia havaintoja ollut. Emme siis juurikaan tehneet datalle esikäsittelyä (pl. neuroverkolle tehtävä muuttujien normalisointi).

Itse datasetti jaettiin kolmeen eri osaan satunnaisotannalla.

split

Training datalla muodostetaan ennustemalli. Validation data on mallin muodostuksesta riippumaton data, jonka avulla testataan miten hyvin muodostettu ennustemalli toimii riippumattomassa datassa. Samalla voidaan huomata esim. jos ennustemalli on kovasti ylioppinut (overfitted).  Kun sopiva malli on löytynyt, niin sitä lopuksi testataan testidatalla ja katsotaan pysyvätkö tulokset linjassa training- ja validation datalla saatujen tulosten kanssa.

Koska datassa olevien luokkien määrä on suuri (paljon merkkejä, malleja, vuosia, yms.), niin datasetti olisi saanut olla isompikin.

Mallinnusvaihe

Aluksi päätimme siis kokeilla tavallista regressiomallia, mutta siitä saadut hintaennusteet olivat painokelvotonta materiaalia. Kuten arvelimmekin, niin regressioanalyysin käyttö olisi vaatinut huomattavaa määrää datankäsittelyä, jotta esim. erilaiset ristiinvaikutukset voitaisiin huomioida. Niinpä seuraavaksi siirryimme neuroverkkoilemaan.

shutterstock_519056515Tällä kertaa neuroverkon tekemiseen käytettiin Wekan MLP:tä (multilayer perceptron). Aika pian kävi selväksi, että läppärillä tehtynä ei kovin kattavaa parametrien ja hidden layereiden  optimointia tulisi tehtyä, koska ajoajat vaihtelivat 3-9 tunnin välillä per testattava malli. Toisaalta tällaiseen demotarkoitukseen laskentakapasiteetin hankinta pilvestä tuntui liioittelulta.

Nyt ei ole tarkoitus upota sen syvällisemmin optimointeihin, mutta mainittakoon, että optimoimme lähinnä ”Learning rate” ja ”Momentum” parametreja sekä kokeilimme erilaisia ”Hidden layereiden” määriä sekä kokoja.

Lopulta paras tulos syntyi kahden ”Hidden layerin” mallista, ja se olikin kohtalaisen hyvä. Training datassa malli toimi jonkin verran paremmin kuin Validation ja Testing datassa, mutta hyväksyttävissä rajoissa. Sen sijaan malli toimi yhtä hyvin Validation ja Testing datan välillä.

Tuloksia ja visualisointeja

Numeeristen tulosten kertominen tarkkuuskriteerien kautta on nörttikauraa, joten tarkastellaan sen sijaan visualisointeja, jotka tehty testidatalla.

Kuva – ennustettu vs. todellinen hintapyyntö 

car-price

Kuvan y-akselilla on ennustettu hintapyyntö ja x-akselilla toteutunut. Pallukoiden värit edustavat vuosimallia – vanhemmat autot ovat sinisellä ja uudet punaisella. Kuvasta voidaan heti huomata, että toteumat ja ennusteet kulkevat yhdessä ja ympärillä on luonnollista hajontaa hinnassa (rmse 1716). Joukossa on myös muutamia todellisia hutiennusteita, esimerkiksi kuvassa ”400 000 km ajettu” auto. Tästä ei tosin pidä vetää johtopäätöstä, että iso kilometrimäärä selittäisi ennusteen pieleen menemisen. Ehkä auto on kolaroitu tai se on ajokelvoton.

Yksi huomio on myös, että ennusteiden ja toteuman välinen hajonta kasvaa, kun auton hinta kasvaa ja vuosimalli tulee uudemmaksi. Tässä on todennäköisesti kyse siitä, että varustelu vaikuttaa hintaan, mutta siitä ei ollut kunnollista dataa saatavilla.

Kun muistetaan, että autojen hintoihin vaikuttaa myös mielipiteet, niin ennustemallin tulos on hyvin looginen hajonnan osalta. Todennäköisesti lisämuuttujilla voisi hajontaa pienentää ja ennustetarkkuutta nostaa, mutta tuskin mitään todella dramaattista parannusta olisi mahdollista tehdä. Hinnat kun vaihtelevat luonnostaankin paljon.

Kuva – ennustetarkkuus automerkeittäin

car-pred-acc

Oheisessa kuvassa on automerkeittäin laskettu miten hyvin ennusteet pitivät paikkaansa. Mitä lähempänä sininen viiva on kunkin merkin kohdalla punaista vaakaviivaa (y-akselin arvo 1), niin sitä parempia ennusteet ovat. Kuvasta nähdään, että esim. Fordin, Hondan ja Opelin ennusteet olivat keskimäärin selvästi tarkempia kuin Cadillacin, Daewoon tai Land Roverin.

Kuva – kilometrien vaikutus hintaan

car-price-km

Tässä kuvassa pallukan koko kertoo paljon ko. autolla on kilometrejä takanaan (y-akselilla ennustehinta ja x-akselilla toteutunut). Sinisellä on vähäisillä kilometreillä varustetut ajopelit ja punaiseen päin mentäessä kilometrien määrä kasvaa.

Edelliset tarkastelut siis koskivat kaikkia autoja, mutta entäpä jos tutkitaan ennusteita ja toteumia merkkikohtaisesti?

Kuva – Toyota Avensis (y-akseli ennusteet, x-akseli toteumat)

car-avensis

Toyota Avensis on ollut suosittu automerkki, ja siitä syystä Training-datassa oli runsaasti siihen liittyviä hintapisteitä. Tämä näkyy myös testidatalla tehdyssä kuvassa, jossa hintapyynnön ennusteiden ja toteumien välillä vaihtelu on kohtalaista.

Seuraavaksi vastaava kuva Honda Accordin osalta.

Kuva – Honda Accord (y-akseli ennusteet, x-akseli toteumat)

car-accord

Tässäkin tapauksessa ennusteet ja toteumat ovat suhteellisen hyvin linjassa keskenään.

Lopuksi vielä kaksi selvästi vähemmän myytyä automerkkiä kuvan kera.

Kuva – Mini Cooper (y-akseli ennusteet, x-akseli toteumat)

car-minicooper

Kuva – Chyrsler 300c (y-akseli ennusteet, x-akseli toteumat)

car-chyrsler300c

Tässä tapauksessa hajontaa on melko paljon etenkin yli 20 000 euron ylittävissä hintapyynnöissä. Todennäköisesti Training-datassa ei ole ollut riittävästi havaintoja tältä osin.

car-c

Yhteenveto

Yhteenvetona voi todeta, että neuroverkkoa käyttäen autojen hintapyynnön ennustaminen onnistuu varsin hyvin käytetyllä datalla. Varmastikin paremmalla datalla ja tehokkaammalla raudalla (optimoida neuroverkkoa) olisi päässyt vielä parempiin ja tarkempiin tuloksiin.

Periaatteessa autoja netissä tarjoavat web-sivustot voisivat tarjota tällaista palveluna käyttäjille. He syöttäisivät auton tiedot selaimen kautta ja neuroverkko (tai markkinoinnissa ”tekoäly”) kertoisi autosta parhaan hintarvion. Tai onhan näitä ratkaisuja, mutta joko maksullisena tai sitten vaaditaan muuta vastetta (esim. yhteystietoja). Luultavasti noiden ratkaisujen taustalla ei ole neuroverkkoa, mutta ei sitä välttämättä tarvitakaan. Vastaaviin tuloksiin voi päästä useampaa reittiä pitkin.

Joka tapauksessa autojen hintapyynnön muodostaminen lienee yksi niistä lukuisista asioista, jonka tekoäly (tai machine learning) ratkaisut tekevät ajanmittaan nopeammin ja tarkemmin kuin asiaan perehtynyt ihminen. Hintapyynnön lisäksi vastaavalla tavalla voitaisiin ennustaa myyntiaika eri hinnoilla. Autoliikkeille tämä siis lienee pian yksi kilpailutekijä, joka tulee ottaa huomioon.

Kirjoittaja: Mika Laukkanen,

Mallinnus: Louhia DataLab tiimi

Käytetyt ohjelmistot: RapidMiner-Weka, R, Excel

car-c2

Artikkeli julkaistu alkuperäisenä kouluttajakumppanimme Louhian kotisivuilla 27.3.2017.

Saattaisit olla kiinnostunut myös näistä

Microsoft Fabric: Shortcuts

Lue lisää

Data Lakehouse -projektit käytännössä: Kokemuksia asiantuntijoilta

Lue lisää

Eettinen tiedonkäyttö: Vastuullisuuden peruspilarit

Lue lisää