Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Mittarit | Parhaan Mallin Valitseminen
Lineaarinen Regressio Pythonilla
course content

Kurssisisältö

Lineaarinen Regressio Pythonilla

Lineaarinen Regressio Pythonilla

1. Yksinkertainen Lineaarinen Regressio
2. Monimuuttujainen Lineaarinen Regressio
3. Polynomiregressio
4. Parhaan Mallin Valitseminen

book
Mittarit

Mallia rakentaessa on tärkeää mitata sen suorituskykyä.
Tarvitsemme mallille pisteytyksen, joka kuvaa tarkasti, kuinka hyvin se sopii aineistoon. Tätä pistettä kutsutaan metriksi, ja erilaisia metriikoita on useita.
Tässä luvussa keskitymme yleisimmin käytettyihin metriikoihin.

Käytämme seuraavaa merkintätapaa:

Olemme jo tutustuneet yhteen metriikkaan, SSR (Sum of Squared Residuals), jota minimoimme löytääksemme optimaaliset parametrit.
Merkintätavallamme SSR:n kaava voidaan esittää seuraavasti:

tai yhtä lailla:

Tämä metriikka soveltui hyvin mallien vertailuun, kun havaintojen määrä oli sama. Se ei kuitenkaan anna käsitystä mallin suorituskyvystä. Tässä syy:
Oletetaan, että sinulla on kaksi mallia eri harjoitusaineistoilla (kuvassa alla).

Ensimmäinen malli näyttää sopivan hyvin, mutta sillä on silti korkeampi SSR kuin toisella mallilla, joka visuaalisesti sopii aineistoon huonommin. Tämä johtuu vain siitä, että ensimmäisessä mallissa on paljon enemmän havaintopisteitä, joten summa on suurempi, mutta keskimäärin ensimmäisen mallin residuaalit ovat pienempiä. Siksi neliöityjen residuaalien keskiarvon käyttäminen metriikkana kuvaisi mallia paremmin. Juuri tätä tarkoittaa Mean Squared Error (MSE).

MSE

tai yhtä lailla:

MSE-metriikan laskemiseen Pythonilla voit käyttää NumPyn funktioita:

mse = np.mean((y_true-y_pred)**2)

Tai voit käyttää Scikit-learnin mean_squared_error()-metodia:

from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_true, y_pred)

Missä y_true on taulukko todellisista tavoitearvoista ja y_pred on taulukko samoille piirteille ennustetuista tavoitearvoista.

Ongelma on, että virhe esitetään neliöitynä. Esimerkiksi, jos mallin MSE talojen hintojen ennustamisessa on 49 dollars². Olemme kiinnostuneita hinnasta, emme hinnan neliöstä, kuten MSE antaa, joten haluamme ottaa MSE:n neliöjuuren ja saada 7 dollars. Nyt meillä on metriikka, jolla on sama yksikkö kuin ennustetulla arvolla. Tätä metriikkaa kutsutaan nimellä Root Mean Squared Error (RMSE).

RMSE

RMSE-metriikan laskemiseen Pythonilla voit käyttää NumPyn funktioita:

rmse = np.sqrt(np.mean((y_true-y_pred)**2))

Tai voit käyttää Scikit-learnin mean_squared_error()-metodia parametrilla squared=False:

from sklearn.metrics import mean_squared_error
rmse = mean_squared_error(y_true, y_pred, squared=False)

MAE

SSR:ssä residuaalit korotettiin toiseen potenssiin, jotta merkki saatiin poistettua. Toinen lähestymistapa on ottaa residuaalien itseisarvot korottamisen sijaan. Tämä on Mean Absolute Errorin (MAE) perusajatus.

tai yhtä lailla

Se on sama kuin MSE, mutta jäännösten neliöimisen sijaan otetaan niiden itseisarvot.

Vaikka MAE on samankaltainen kuin MSE, koska se käyttää jäännösten itseisarvoja, se on kestävämpi poikkeaville arvoille, sillä se ei korosta suuria virheitä yhtä paljon kuin MSE. Tämän vuoksi MAE on usein parempi valinta, kun aineistossa on poikkeavia arvoja, koska sen arvo ei kasva suhteettomasti muutaman äärimmäisen virheen vuoksi.

MAE-metriikan laskemiseen Pythonilla voit käyttää NumPyn funktioita:

mae = np.mean(np.fabs(y_true-y_pred))

Tai voit käyttää Scikit-learnin mean_absolute_error() -metodia:

from sklearn.metrics import mean_absolute_error
mae = mean_absolute_error(y_true, y_pred)

Parametrien valintaan käytettiin SSR-metriikkaa. Tämä johtui siitä, että se soveltui hyvin matemaattisiin laskelmiin ja mahdollisti normaalin yhtälön johtamisen. Mallien vertailuun voidaan kuitenkin käyttää myös muita metriikoita.

Note
Huomio

Mallien vertailussa SSR, MSE ja RMSE valitsevat aina identtisesti, mikä malli on parempi ja mikä huonompi. MAE voi joskus suosia eri mallia kuin SSR/MSE/RMSE, koska nämä rankaisevat suuria residuaaleja huomattavasti enemmän. Yleensä kannattaa valita yksi metriikka etukäteen ja keskittyä sen minimointiin.

Nyt voit varmasti todeta, että toinen malli on parempi, koska kaikki sen metriikat ovat pienempiä. Kuitenkin pienemmät metriikat eivät aina tarkoita, että malli on parempi.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 1

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

course content

Kurssisisältö

Lineaarinen Regressio Pythonilla

Lineaarinen Regressio Pythonilla

1. Yksinkertainen Lineaarinen Regressio
2. Monimuuttujainen Lineaarinen Regressio
3. Polynomiregressio
4. Parhaan Mallin Valitseminen

book
Mittarit

Mallia rakentaessa on tärkeää mitata sen suorituskykyä.
Tarvitsemme mallille pisteytyksen, joka kuvaa tarkasti, kuinka hyvin se sopii aineistoon. Tätä pistettä kutsutaan metriksi, ja erilaisia metriikoita on useita.
Tässä luvussa keskitymme yleisimmin käytettyihin metriikoihin.

Käytämme seuraavaa merkintätapaa:

Olemme jo tutustuneet yhteen metriikkaan, SSR (Sum of Squared Residuals), jota minimoimme löytääksemme optimaaliset parametrit.
Merkintätavallamme SSR:n kaava voidaan esittää seuraavasti:

tai yhtä lailla:

Tämä metriikka soveltui hyvin mallien vertailuun, kun havaintojen määrä oli sama. Se ei kuitenkaan anna käsitystä mallin suorituskyvystä. Tässä syy:
Oletetaan, että sinulla on kaksi mallia eri harjoitusaineistoilla (kuvassa alla).

Ensimmäinen malli näyttää sopivan hyvin, mutta sillä on silti korkeampi SSR kuin toisella mallilla, joka visuaalisesti sopii aineistoon huonommin. Tämä johtuu vain siitä, että ensimmäisessä mallissa on paljon enemmän havaintopisteitä, joten summa on suurempi, mutta keskimäärin ensimmäisen mallin residuaalit ovat pienempiä. Siksi neliöityjen residuaalien keskiarvon käyttäminen metriikkana kuvaisi mallia paremmin. Juuri tätä tarkoittaa Mean Squared Error (MSE).

MSE

tai yhtä lailla:

MSE-metriikan laskemiseen Pythonilla voit käyttää NumPyn funktioita:

mse = np.mean((y_true-y_pred)**2)

Tai voit käyttää Scikit-learnin mean_squared_error()-metodia:

from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_true, y_pred)

Missä y_true on taulukko todellisista tavoitearvoista ja y_pred on taulukko samoille piirteille ennustetuista tavoitearvoista.

Ongelma on, että virhe esitetään neliöitynä. Esimerkiksi, jos mallin MSE talojen hintojen ennustamisessa on 49 dollars². Olemme kiinnostuneita hinnasta, emme hinnan neliöstä, kuten MSE antaa, joten haluamme ottaa MSE:n neliöjuuren ja saada 7 dollars. Nyt meillä on metriikka, jolla on sama yksikkö kuin ennustetulla arvolla. Tätä metriikkaa kutsutaan nimellä Root Mean Squared Error (RMSE).

RMSE

RMSE-metriikan laskemiseen Pythonilla voit käyttää NumPyn funktioita:

rmse = np.sqrt(np.mean((y_true-y_pred)**2))

Tai voit käyttää Scikit-learnin mean_squared_error()-metodia parametrilla squared=False:

from sklearn.metrics import mean_squared_error
rmse = mean_squared_error(y_true, y_pred, squared=False)

MAE

SSR:ssä residuaalit korotettiin toiseen potenssiin, jotta merkki saatiin poistettua. Toinen lähestymistapa on ottaa residuaalien itseisarvot korottamisen sijaan. Tämä on Mean Absolute Errorin (MAE) perusajatus.

tai yhtä lailla

Se on sama kuin MSE, mutta jäännösten neliöimisen sijaan otetaan niiden itseisarvot.

Vaikka MAE on samankaltainen kuin MSE, koska se käyttää jäännösten itseisarvoja, se on kestävämpi poikkeaville arvoille, sillä se ei korosta suuria virheitä yhtä paljon kuin MSE. Tämän vuoksi MAE on usein parempi valinta, kun aineistossa on poikkeavia arvoja, koska sen arvo ei kasva suhteettomasti muutaman äärimmäisen virheen vuoksi.

MAE-metriikan laskemiseen Pythonilla voit käyttää NumPyn funktioita:

mae = np.mean(np.fabs(y_true-y_pred))

Tai voit käyttää Scikit-learnin mean_absolute_error() -metodia:

from sklearn.metrics import mean_absolute_error
mae = mean_absolute_error(y_true, y_pred)

Parametrien valintaan käytettiin SSR-metriikkaa. Tämä johtui siitä, että se soveltui hyvin matemaattisiin laskelmiin ja mahdollisti normaalin yhtälön johtamisen. Mallien vertailuun voidaan kuitenkin käyttää myös muita metriikoita.

Note
Huomio

Mallien vertailussa SSR, MSE ja RMSE valitsevat aina identtisesti, mikä malli on parempi ja mikä huonompi. MAE voi joskus suosia eri mallia kuin SSR/MSE/RMSE, koska nämä rankaisevat suuria residuaaleja huomattavasti enemmän. Yleensä kannattaa valita yksi metriikka etukäteen ja keskittyä sen minimointiin.

Nyt voit varmasti todeta, että toinen malli on parempi, koska kaikki sen metriikat ovat pienempiä. Kuitenkin pienemmät metriikat eivät aina tarkoita, että malli on parempi.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 1
some-alt