Joillain ML-kehittäjillä on taipumus standardisoida datansa sokeasti ennen ”jokaista” Machine Learning -mallia ilman, että he näkevät vaivaa ymmärtääkseen, miksi standardisointia on pakko käyttää, tai edes sitä, tarvitaanko sitä vai ei. Tämän postauksen tavoitteena on siis selittää, miten, miksi ja milloin dataa kannattaa vakioida.
- Vakiinnuttaminen
- Miten dataa vakioidaan?
- Z-score
- Milloin dataa kannattaa vakioida ja miksi?
- 1- Ennen PCA:
- 2- Ennen klusterointia:
- 3- Ennen KNN:
- 4- Ennen SVM
- 5- Ennen muuttujien merkityksen mittaamista regressiomalleissa
- 6- Ennen Lasso- ja Ridge-regressiota
- Tapaukset, joissa standardointia ei tarvita?
- Logistinen regressio ja puupohjaiset mallit
- Datan vakioinnin päättäminen
Vakiinnuttaminen
Vakiinnuttaminen tulee kuvaan silloin, kun syötetiedostojoukon piirteiden vaihteluvälit eroavat suuresti toisistaan, tai yksinkertaisesti silloin, kun piirteet mitataan eri mittayksiköissä (esim. puntia, metrejä, kilometrejä … jne.).
Tällaiset erot alkuominaisuuksien vaihteluvälit aiheuttavat hankaluuksia monille koneoppimismalleille. Esimerkiksi etäisyyksien laskemiseen perustuvissa malleissa, jos jollakin piirteellä on laaja arvoalue, etäisyys määräytyy juuri tämän piirteen perusteella.
Kuvaan tätä esimerkillä : Sanotaan, että meillä on kaksiulotteinen datajoukko, jossa on kaksi piirrettä, Pituus metreinä ja Paino puntina, joiden arvoalueet ovat vastaavasti Metrejä ja Puntia. Riippumatta siitä, mitä etäisyyteen perustuvaa mallia teet tälle aineistolle, Paino-ominaisuus dominoi Pituus-ominaisuutta, ja sillä on suurempi osuus etäisyyden laskennassa vain siksi, että sillä on suuremmat arvot verrattuna Pituuteen. Tämän ongelman estämiseksi ratkaisu on siis ominaisuuksien muuntaminen vertailukelpoisiksi asteikoiksi vakioinnin avulla.
Miten dataa vakioidaan?
Z-score
Z-score on yksi suosituimmista menetelmistä datan vakioimiseksi, ja se voidaan tehdä vähentämällä keskiarvo ja jakamalla se keskihajonnalla kunkin ominaisuuden kunkin arvon osalta.
Kun vakiointi on tehty, kaikkien ominaisuuksien keskiarvo on nolla, keskihajonta yksi ja siten sama asteikko.
On olemassa muitakin vakiointimenetelmiä, mutta yksinkertaisuuden vuoksi tyydyn tässä jutussa Z-score-menetelmään.
Milloin dataa kannattaa vakioida ja miksi?
Kuten edellä on nähty, etäisyyteen perustuvissa malleissa vakiointi suoritetaan, jotta laajemman vaihteluvälin omaavat piirteet eivät hallitsisi etäisyysmetriikkaa. Syy, miksi dataa vakioidaan, ei kuitenkaan ole sama kaikissa koneoppimisen malleissa, vaan se eroaa malleista riippuen.
Mitä ML-malleja ja -menetelmiä ennen dataa on siis vakioitava ja miksi?
1- Ennen PCA:
Pääkomponenttianalyysissä piirteet, joilla on suuret varianssit/leveät vaihteluvälit, saavat suuremman painoarvon kuin piirteet, joilla on pieni varianssi, ja näin ollen ne päätyvät hallitsemaan ensimmäisiä pääkomponentteja (komponentit, joilla on maksimaalinen varianssi) epäoikeudellisesti. Käytin tässä sanaa ”laittomasti”, koska syy siihen, että näillä piirteillä on suuret varianssit muihin verrattuna, johtuu vain siitä, että ne on mitattu eri asteikoilla.
Vakioinnilla voidaan estää tämä antamalla kaikille piirteille sama painoarvo.
2- Ennen klusterointia:
Klusterointimallit ovat etäisyyteen perustuvia algoritmeja, jotka mittaavat havaintojen välisiä yhtäläisyyksiä ja muodostavat klustereita käyttämällä etäisyysmittaria. Niinpä piirteillä, joilla on suuret etäisyydet, on suurempi vaikutus klusterointiin. Siksi tarvitaan standardointia ennen klusterointimallin rakentamista.
3- Ennen KNN:
k-nearest neighbors on etäisyyspohjainen luokittelija, joka luokittelee uudet havainnot samankaltaisuusmittojen (esim. etäisyysmetriikan) perusteella harjoitusjoukon leimattujen havaintojen kanssa. Vakiointi saa kaikki muuttujat vaikuttamaan yhtäläisesti samankaltaisuusmittoihin .
4- Ennen SVM
Tukivektorikone pyrkii maksimoimaan erotustason ja tukivektoreiden välisen etäisyyden. Jos yhdellä piirteellä on hyvin suuret arvot, se dominoi muita piirteitä etäisyyttä laskettaessa. Vakiointi antaa siis kaikille piirteille saman vaikutuksen etäisyysmetriikkaan.
5- Ennen muuttujien merkityksen mittaamista regressiomalleissa
Muuttujien merkityksen voi mitata regressioanalyysissä sovittamalla regressiomallin standardoiduilla riippumattomilla muuttujilla ja vertaamalla niiden standardoitujen kertoimien absoluuttisia arvoja. Mutta jos riippumattomia muuttujia ei ole vakioitu, niiden kertoimien vertailu muuttuu merkityksettömäksi.
6- Ennen Lasso- ja Ridge-regressiota
Lasso- ja Ridge-regressiot asettavat rangaistuksen kuhunkin muuttujaan liittyvien kertoimien suuruudelle. Ja muuttujien asteikko vaikuttaa siihen, kuinka paljon rangaistusta sovelletaan niiden kertoimiin. Koska suuren varianssin omaavien muuttujien kertoimet ovat pieniä ja siten vähemmän rangaistuja. Siksi standardointia tarvitaan ennen molempien regressioiden sovittamista.
Tapaukset, joissa standardointia ei tarvita?
Logistinen regressio ja puupohjaiset mallit
Logistinen regressio ja puupohjaiset algoritmit, kuten päätöspuu, satunnainen metsä (Random forest) ja gradient boosting, eivät ole herkkiä muuttujien suuruudelle. Niinpä vakiointia ei tarvita ennen tämäntyyppisten mallien sovittamista.
Datan vakioinnin päättäminen
Kuten näimme tässä postauksessa, se, milloin vakioida ja milloin olla vakioimatta, riippuu siitä, mitä mallia haluat käyttää ja mitä haluat tehdä sillä. ML-kehittäjän on siis erittäin tärkeää ymmärtää koneoppimisalgoritmien sisäinen toiminta, jotta hän voi tietää, milloin dataa kannattaa standardoida ja rakentaa onnistuneen koneoppimismallin.
N.B.: Tässä postauksessa esitetty lista malleista ja menetelmistä, jolloin standardointia tarvitaan, ei ole tyhjentävä.