III. Regressio

Tämän luvun tärkein oppimistavoite on toinen hieno esimerkki ohjatusta koneoppimisesta, joka on sitä paitsi lähes yhtä yksinkertainen kuin lähimmän naapurin luokitin: lineaariregressio. Tutustumme myös lineaariregression lähisukulaiseen eli logistiseen regressioon.

Huom.

Mitä eroa on luokittelulla ja regressiolla?

Vaikka luokittelu ja regressio ovat molemmat ohjattua koneoppimista, niiden välillä on pieni tärkeä ero. Luokittelumenetelmät, kuten lähimmän naapurin luokitin, valitsevat aina vastauksen tietystä rajoitetusta joukosta vaihtoehtoja (esimerkiksi roskapostia/asiallista postia, tai 0,1...9). Regressiomenetelmät kuten lineaariregressio sen sijaan tuottavat vastaukseksi lukuarvon, jonka ei tarvitse olla kokonaisluku. Tästä syystä lineaariregression kaltainen menetelmä sopii yleensä paremmin tilanteisiin, joissa vastaus on vaikkapa tuotteen hinta, etäisyys esteeseen tai seuraavan Star Wars -elokuvan lipputulot.

Lineaariregression perusidea on laskea yhteen eri syötearvojen vaikutukset. Tästä käytetään usein teknistä termiä lineaarikombinaatio. Jutun idea on hyvinkin yksinkertainen, ja sitä voi havainnollistaa kauppalaskulla.

Huom.

Lineaariregressio on kuin kauppalasku

Kuvitellaan, että menet Alepaan ja ostat sieltä 2,5 kiloa perunoita, 1 kilon porkkanoita ja kaksi purkkia maitoa. Jos perunoiden kilohinta on 2 euroa, porkkanat maksavat 4 euroa kilolta ja maitopurkki maksaa 3 euroa, kassa laskee kokonaishinnaksi 2,5 × 2 € + 1,0 × 4 € + 2 × 3 € = 15 €. Lineaariregressiossa perunoiden, porkkanoiden ja maidon määrä ovat datasta saatavat syötteet. Tuloste on kokonaishinta, joka tietysti riippuu kunkin tuotteen ostomäärästä ja hinnasta.

Sana lineaarinen tarkoittaa sitä, että kun yhtä syötteistä kasvatetaan tietyllä määrällä, tulosteena saatava arvo kasvaa aina saman verran. Toisin sanoen kun lisäät ostoskoriin esimerkiksi kaksi kiloa porkkanoita, lasku kasvaa 8 €. Jos lisäät vielä toiset kaksi kiloa porkkanoita, lasku kasvaa taas 8 €. Jos sen sijaan lisäätkin vain puolet tästä eli yhden kilon, lisälaskukin on puolet pienempi eli 4 €.

Avaintermejä

Painot ja kertoimet

Lineaariregression termein tuotteiden hintoja kutsuttaisiin kertoimiksi, painoiksi tai painokertoimiksi. (Tämä sekoittaa asioita, jos ostettavien tuotteiden määrä mitataan painon perusteella, mutta älä anna tämän hämätä itseäsi!) Yksi lineaariregression parhaista puolista on helppo tulkittavuus: joskus mallin kertoimet voivat itse asiassa olla kaikkein kiinnostavin asia.

Jos käytämme lineaariregressiota vaikkapa elinajanodotteen ennustamiseen, tupakoinnin (savukkeita päivässä) kerroin on noin miinus puoli vuotta eli –0,5 vuotta. Tämä tarkoittaa, että yhden savukkeen lisäys keskimääräiseen kulutukseen vie tupakoitsijan puoli vuotta lähemmäs hautaa. Vastaavasti vihannesten kulutuksella (kourallisia vihanneksia päivässä) on painokerroin plus yksi vuosi, joten jos syöt kourallisen vihanneksia päivässä, saat keskimäärin yhden vuoden lisää.

Ladataan tehtävää...

Tehtävässä savuttomien, vihanneksia inhoavien naisten elinajanodote, 80 vuotta, oli lähtökohtana laskutoimituksille. Tästä lähtökohdasta käytetään vakiotermi-nimitystä (engl. intercept, leikkauspiste).

Lineaariregressiomallin oppiminen

Edellä olemme käsitelleet lineaariregressiomallin käyttöä tapauksessa, jossa sekä kertoimet että syötedata on tunnettu. Meille on siis annettu data ja kertoimet ja laskemme yksinkertaisesti lineaarikombinaation – aivan kuten Alepan kassa.

Joskus meillä on kuitenkin käytössämme syötedata ja oikeat vastaukset (tulosteet) ja tehtävänämme on valita kertoimet siten, että lineaariregressiomalli ennustaa oikeat vastaukset mahdollisimman tarkasti. Tähän tehtävään sopii ohjattu koneoppiminen. (Tosin tavanomaisin lineaariregressiomallin oppimiseen soveltuva menetelmä on tunnettu jo 1800-luvun alkupuolella, jolloin ei tosiaankaan puhuttu koneoppimisesta.)

Huom.

Esimerkki

Jatkamme ostosesimerkkiä kuvittelemalla, että meille kerrotaan useamman ostoskorin sisältö ja vastaava yhteissumma eli kunkin korin sisältämien tuotteiden yhteenlaskettu hinta. Tehtävänämme olisi päätellä kunkin tuotteen (perunoiden, porkkanoiden ja niin edelleen) hinta. Yhden ainoan ostoskorin, joka sisältää 1 kilon kassleria, 2 kiloa porkkanoita ja pullon keskiolutta sekä maksaa 25 euroa, perusteella emme voisi vielä päätellä hintoja, koska samaan yhteissummaan johtavia mahdollisia hintayhdistelmiä on monia. Riittävän monen ostoskorin perusteella voimme kuitenkin yleensä ratkaista tehtävän.

Käytännössä ongelma on kuitenkin yleensä monimutkaisempi, koska oikea tulos ei välttämättä riipu pelkästään syötedatasta ja kertoimista, vaan siihen voi liittyä myös tietty määrä epävarmuutta tai ”kohinaa”. Kuvittele vaikkapa basaaria, jossa hinnat vaihtelevat alituiseen tai ravintolaa, jossa kokonaishintaan lisätään vaihteleva määrä juomarahaa. Tällaisissa tilanteissa hintojen arviointi on mahdollista vain rajallisella tarkkuudella.

Sellaisten painokertoimien löytäminen, joiden avulla lineaariregressiomallin tuottamien vastausten ja oikeiden vastausten ero on mahdollisimman pieni, on klassinen tilastotieteen ongelma, jonka historia ulottuu 1800-luvun alkuun saakka. Nykyisillä tietokoneistetuilla menetelmillä se voidaan ratkaista sekunnin murto-osissa jopa silloin, kun datan määrä on massiivinen.

Emme syvenny tämän enempää painokertoimien löytämiseen sopiviin algoritmeihin, kuten niin sanotun pienimmän neliösumman menetelmään, vaikka ne ovatkin melko yksinkertaisia. Pääset kuitenkin kokeilemaan itse tehtävän sujumista tähän lukuun sisältyvissä harjoitustehtävissä.

Lineaariregressio kuvina

Hyvä keino saada parempi ja konkreettisempi käsitys lineaariregressiosta on piirtää kaavio, joka esittää samassa kuvassa sekä datapisteet että lineaarisen mallin. Aloitetaan kuvitteellisella esimerkillä, jossa data koostuu koodarina työskentelevien työntekijöiden kahvinkulutuksesta (kuppeja päivässä) ja heidän tuottamastaan ohjelmakoodista (koodirivejä päivässä tai tarkemmin sanottuna vuorokaudessa, koska riittävällä määrällä kahvia koodia syntyy myös yöllä). Selvyyden vuoksi todettakoon, että kyseessä ei ole todellinen aineisto. Oikeasti tuottavuuteen vaikuttaa moni muukin tekijä, ja eri tekijät ovat riippuvuussuhteessa keskenään. Tuottavuutta ei myöskään kannata yrittää kasvattaa kahvia kittaamalla, koska vaikka sopiva määrä kahvia saattaakin piristää, alkaa käsien tärinä tietyn rajan jälkeen häiritä näpyttelyä. (Kaverin puolesta vaan kerron.)

012345678910051015202530354045505560koodirivejä päivässäkahvikupillisia päivässä

Kun data esitetään kuten yllä olevassa kaaviossa, jossa jokainen työntekijä on yksi datapiste, näemme selvän trendin: enemmän kahvia tarkoittaa keskimäärin enemmän koodia. Tästä datasta voimme estimoida kertoimen, joka kertoo, kuinka monta koodiriviä enemmän voidaan odottaa, jos kahvinkulutus kasvaa yhdellä kupilla päivässä. Silmämääräisesti katsoen kerroin näyttää olevan noin viisi. Vaikuttaa siis siltä, että noin kaksi kupillista kahvia kumoavat koodarit tuottavat keskimäärin 20 riviä koodia, kun taas neljä kuppia juovat tuottavat noin 30 riviä.

Huomaa, että myös ne koodarit, jotka eivät juo lainkaan kahvia, tuottavat koodia: kaavion perusteella heidän tuottavuutensa on noin 10 riviä päivässä. Tämä on mallin vakiotermi, jonka mainitsimme jo edellä. Vakiotermi on siinä mielessä aivan kuten mikä tahansa kerroin, eli sekin voidaan oppia datasta. Kuten elinajanodotetehtävässä, vakiotermi toimii lähtökohtana, kun mallin avulla halutaan tuottaa ennusteita. Malliin kuuluvien muuttujien (kuten kahvinkulutus tai tupakointi ja vihannesten kulutus) vaikutukset lisätään vakiotermiin, jotta saadaan selville mallin tuottama ennuste.

Suora viiva, joka on piirretty yllä olevaan kaavioon kuvaamaan lineaarisen mallin tuottamaa ennustetta, on saatu aikaan estimoimalla vakiotermi ja muut kertoimet niin sanotulla pienimmän neliösumman menetelmällä. Estimoinnin jälkeen mallin avulla voidaan helposti ennustaa tuotettuja koodirivejä, kunhan tunnetaan työntekijän kahvinkulutus. Huomaa, että voimme helposti ennustaa tuottavuutta myös silloin, kun kahvinkulutus on vaikkapa kolme ja puoli (3,5) kuppia.

Ladataan tehtävää...

Ladataan tehtävää...

On syytä huomioida, että edellisenkaltaiset mallit eivät voi sellaisenaan osoittaa kausaalisia riippuvuuksia. Toisin sanoen tällaisen datan perusteella ei voida suoraan päätellä, lisääkö koulutus elinajanodotetta esimerkiksi valistuneempien ja terveellisempien elintapojen tai muiden mekanismien välityksellä, vai onko datassa havaittava riippuvuus seurausta muista sekä koulutukseen että elinajanodotteeseen vaikuttavista tekijöistä. On esimerkiksi luultavaa, että sellaisissa maissa, joissa koulutustaso on korkea, on tarjolla myös hyvälaatuista ja ravitsevaa ruokaa, laadukas terveydenhuoltojärjestelmä ja turvallisempi elinympäristö. Kaikki nämä tekijät korottavat elinajanodotetta. Suoraviivainen regressioanalyysi voi vain tunnistaa riippuvuuksia, jotka voivat joka tapauksessa tuottaa hyödyllisiä ennusteita.

Lineaariregression käyttötarkoituksia tekoälyssä

Lineaariregressio on todellinen työhevonen tekoälyn ja datatieteen sovelluksissa. Sillä on omat rajoituksensa, mutta menetelmän yksinkertaisuus, suoraviivainen tulkinta sekä tehokkuus korvaavat nämä usein moninkertaisesti. Lineaariregressiota on hyödynnetty hyvällä menestyksellä esimerkiksi seuraavissa käyttötapauksissa:

  • klikkausten määrän ennustaminen verkkomainonnassa
  • kysynnän ennustaminen vähittäiskaupassa
  • elokuvien lipputulojen ennustaminen Hollywood-tuotannoissa
  • ohjelmistojen elinkaarikustannusten ennustaminen
  • vakuutuskorvausten ennustaminen
  • rikollisuuden määrän ennustaminen
  • asuntojen hintojen ennustaminen.

Voisiko regressiota käyttää luokitteluun?

Kuten sanottu, lineaariregressio ja lähimmän naapurin luokitin tuottavat erityyppisiä ennusteita. Lineaariregressio tuottaa numeerisia ennusteita ja lähimmän naapurin luokitin valitsee ennusteen rajatusta määrästä vaihtoehtoja eli luokkia.

Lineaariregressiomallin etuna lähimmän naapurin menetelmään verrattuna on tulkittavuus. Mitä se tarkoittaa? Voidaan kyllä sanoa, että lähimmän naapurin luokittimen antama vastaus on helppo tulkita, koska se perustuu suoraan yhteen opetusdatan esimerkkiin, lähimpään naapuriin! Tämä onkin totta, mutta kun on kyse koko mallin tulkitsemisesta, ero on selvä. Lähimmän naapurin luokitinta ei voida esittää joukkona kertoimia samaan tapaan kuin lineaariregressiomallia. Lähimmän naapurin luokittimen oppima malli on tavallaan yhtä kuin koko opetusdatajoukko, joka on useimmiten niin suuri, ettei sen tutkimisesta ole paljon apua. Mitä jos olisi olemassa menetelmä, joka tuottaisi samantyyppisiä vastauksia kuin lähimmän naapurin menetelmä eli luokkia, mutta olisi yhtä helposti tulkittavissa kuin lineaariregressio?

Logistinen regressio pelastaa

Meillä on sinulle hyviä uutisia: lineaariregressiomallin tuottamat vastaukset on mahdollista muuntaa luokiksi. Tekniikka, jolla tämä onnistuu on nimeltään logistinen regressio. Emme paneudu tarkemmin teknisiin yksityiskohtiin, vaan kerromme ainoastaan, että yksinkertaisimmillaan otamme lineaariregression tuottaman vastauksen, joka on lukuarvo, ja tulostamme yhden luokan, (A) lukuarvon ollessa negatiivinen eli miinusmerkkinen ja toisen luokan (B) lukuarvon ollessa positiivinen eli plusmerkkinen. Logistisen regression avulla saamme lisäksi myös arvion siitä, kuinka varma tai luotettava ennuste on. Voimme siis vaikkapa ennustaa, että asiakas X ostaa matkapuhelimen 90 prosentin todennäköisyydellä, mutta toinen, vaikeammin ennustettava asiakas Y ei osta puhelinta 55 prosentin todennäköisyydellä (eli toisin sanoen hän ostaa puhelimen 45 prosentin todennäköisyydellä).

Samaa menetelmää voidaan käyttää myös silloin, kun vaihtoehtoisia luokkia on enemmän kuin kaksi, joten sen lisäksi, että voimme ennustaa aina A tai B (ostaa uuden puhelimen tai ei, valeuutisia tai ei, roskapostia tai asiallista postia jne.), voimme myös käyttää logistista regressiota, kun haluamme tunnistaa käsin kirjoitettuja numeroita, jolloin vaihtoehtoja on kymmenen.

Esimerkki logistisesta regressiosta

Kuvitellaan, että keräämme dataa ruoanlaittokurssin oppilaista. Opiskelijanumeron, nimen ja muiden perustietojen lisäksi pyydämme oppilaita raportoimaan, kuinka monta tuntia he käyttivät loppukokeeseen valmistautumiseen (miten ruoanlaittokokeeseen sitten opiskellaankaan – varmaankin laittamalla ruokaa?). Toivottavasti he raportoivat tunnit rehellisesti! Kokeen jälkeen tiedämme, ketkä onnistuivat hyväksytysti ja ketkä reputtivat. Tässä on hiukan dataa:

Opiskelijanumero Valmistautumiseen käytetty aika (tunteina) Hyväksytty/hylätty
24 15 Hyväksytty
41 9.5 Hyväksytty
58 2 Hylätty
101 5 Hylätty
103 6.5 Hylätty
215 6 Hyväksytty

Mitä päätelmiä voit tehdä taulukon perusteella valmistautumiseen käytetyn ajan vaikutuksesta kokeen hyväksymiseen? Keräämällä satojen opiskelijoiden tiedot saisimme ehkä selville, paljonko valmistautumista tarvitaan kokeen läpäisemiseen? Kuvitellaan siis, että dataa on paljon enemmän kuin yllä ja piirretään kaavio, jonka näet alla.

Ladataan tehtävää...

Myös logistista regressiota käytetään lukuisissa oikeissa tekoälysovelluksissa, kuten finanssiriskien ennakoimisessa, lääketieteellisissä tutkimuksissa ja monissa muissa. Lineaariregression tavoin silläkin on omat rajoituksensa ja tarvitsemme työkalupakkiimme myös monta muuta menetelmää. Palaamme vielä näihin rajoituksiin seuraavassa neuroverkkoja käsittelevässä osassa.

Koneoppimisen rajat

Jonkinlaisena yhteenvetona voidaan todeta, että koneoppiminen on tehokas keino rakentaa tekoälyratkaisuja. Lähimmän naapurin menetelmän, lineaariregression ja logistisen regression lisäksi on olemassa kirjaimellisesti satoja, ellei tuhansia erilaisia koneoppimistekniikoita. Nämä kaikki perustuvat kuitenkin yhteen ja samaan periaatteeseen eli datassa olevien säännönmukaisuuksien ja riippuvuuksien etsimiseen sekä niiden käyttämiseen ymmärryksen ja ennusteiden tuottamiseen.

Ongelmat ja tehtävät, joihin koneoppimista sovelletaan, ovat usein äärimmäisen haastavia, emmekä useimmiten pysty saavuttamaan täydellistä ratkaisua, joka antaisi aina juuri oikean vastauksen. Yleensä täydellisyys ei kuitenkaan ole tarpeen, vaan hyvä on riittävä. Joskus me ihmiset voimme itse osata ennustaa paremmin kuin paraskaan koneoppimisalgoritmi, mutta tästä huolimatta algoritmi voi olla käytännöllisempi. Se voi olla esimerkiksi tuhat kertaa nopeampi ja tuottaa ennusteita yötä päivää väsymättä ja herpaantumatta. Hyviä esimerkkejä tästä ovat muun muassa suosittelujärjestelmät.

Esimerkiksi seuraavat tekijät voivat vaikuttaa siihen, kuinka tarkkoja ennusteita koneoppimisen avulla saadaan aikaan:

  • ongelman vaikeus: jos käsin kirjoitetut numerot on sutaistu huolimattomasti, edes ihminen ei aina voi arvata, mitä numeroa kirjoittaja tarkoitti
  • koneoppimismenetelmä: jotkin menetelmät sopivat tiettyihin tehtäviin toisia paremmin
  • opetusdatan määrä: vain pienellä määrällä opetusdataa on mahdotonta saavuttaa hyvää tulosta
  • datan laatu.

Huom.

Datan laadulla on väliä

Tämän osan alussa korostimme, miten tärkeää on riittävä datan määrä, jotta voimme välttyä ylisovittamiselta. Toinen yhtä tärkeä tekijä on datan laatu. Jotta olisi mahdollista rakentaa koneoppimismalli, joka on hyvin yleistettävissä muuhunkin kuin mallin opettamiseen käytettyyn dataan, datassa on oltava riittävästi relevanttia informaatiota tulokseen vaikuttavista tekijöistä. Jos esimerkiksi rakennamme kuvien luokittimen, joka pystyy tunnistamaan, mitä siihen syötetty kuva esittää, mutta käytämme opetusdatana ainoastaan kissojen ja koirien kuvia, luokitin luokittelee joka ikisen kuvan kissaksi tai koiraksi. Tämä olisi ok, jos luokitinta käytettäisiin vain kissojen ja koirien erottamiseen toisistaan, mutta ei silloin, jos sitä tarvittaisiin myös tunnistamaan veneitä, autoja tai kauniita kukkia.

Palaamme vielä viimeisessä osassa erikseen datassa mahdollisesti esiintyvien ”harhojen” tai puolueellisuuden aiheuttamiin ongelmiin.

On myös tärkeää korostaa, että eri algoritmit ja menetelmät sopivat eri tilanteisiin. Ei siis ole olemassa yhtä menetelmää, joka olisi paras kaikissa tilanteissa (”yksi algoritmi heitä hallitsee...”). Onneksi on mahdollista kokeilla useita eri menetelmiä ja selvittää, mikä niistä sopii juuri sinun ongelmaasi parhaiten.

Tästä pääsemmekin toiseen aiheeseen, joka on myös hyvin tärkeä, mutta jää liian usein käytännössä vähäiselle huomiolle. Se on kysymys siitä, mitä tarkoittaa ”sopii parhaiten”. Numeroiden tunnistuksessa hyvä menetelmä tuottaa tietysti useimmiten oikean vastauksen. Tätä voidaan mitata luokitteluvirheellä, joka on virheellisten luokitusten osuus kaikista luokituksista. Asuntojen kauppahintojen ennustamisessa ennusteen laatua arvioidaan yleensä vertaamalla toteutunutta ja ennustettua hintaa. Käytännön sovelluksissa saattaa olla pahempi virhe erehtyä yhteen suuntaan kuin toiseen suuntaan. Jos esimerkiksi asetamme hinnan ennusteen perusteella liian korkeaksi, kaupanteko voi viivästyä kuukausilla, mutta liian matala hinta tarkoittaa vähemmän rahaa myyjälle (ja välittäjälle, jos sopimus on provisiopohjainen). Toinen selvä esimerkki on jalankulkijan havaitseminen auton reitillä: on paljon suurempi virhe olla havaitsematta reitillä olevaa jalankulkijaa kuin tehdä väärä havainto silloin, kun reitillä ei ole ketään.

Kuten todettu, emme yleensä pysty saavuttamaan nollan prosentin virhettä, mutta kenties yksi virhe sadasta (1 %) on riittävä. Tämäkin riippuu sovelluksesta – tuskinpa olisit tyytyväinen 99-prosenttisesti turvallisen auton kyydissä, mutta jos saat kuunneltavaksi kappaleita, joista pidät samalla tarkkuudella, veikkaamme kuuntelukokemuksesi olevan miellyttävä. Tekoälyratkaisujen(kin) toteuttamisessa on olennaista, että pidämme tavoitteen kirkkaana mielessä ja mittaamme onnistumista mittarilla, joka on linjassa sen kanssa.

Osan 4 jälkeen sinun pitäisi osata

  • selittää, miksi koneoppimista tarvitaan
  • erottaa ohjatun ja ohjaamattoman koneoppimisen tilanteet toisistaan
  • selittää seuraavan kolmen ohjatun koneoppimisen menetelmän periaatteet: lähimmän naapurin luokitin, lineaariregressio ja logistinen regressio.

Keskustele ja esitä kysymyksiä tästä luvusta Elements of AI -yhteisössä.