Mittarit
Mallia rakentaessa on tärkeää mitata sen suorituskykyä.
Tarvitsemme malliin liitetyn pistemäärän, joka kuvaa tarkasti, kuinka hyvin se sopii aineistoon. Tätä pistemäärää kutsutaan metriksi, ja saatavilla on lukuisia erilaisia mittareita.
Tässä luvussa keskitymme yleisimmin käytettyihin mittareihin.
Käytämme seuraavaa merkintätapaa:
Olemme jo tutustuneet yhteen metriikkaan, SSR (Sum of Squared Residuals), jota minimoimme optimaalisten parametrien löytämiseksi.
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ä siitä, kuinka hyvin malli suoriutuu. Tässä syy:
Oletetaan, että sinulla on kaksi mallia eri harjoitusaineistoilla (kuvassa alla).
Voit huomata, että ensimmäinen malli sopii 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 huomattavasti enemmän havaintoja, 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 ennustamisessa on 49 dollaria². Olemme kiinnostuneita hinnasta, emme hinnan neliöstä, kuten MSE antaa, joten haluamme ottaa MSE:n neliöjuuren ja saada 7 dollaria. Nyt meillä on metriikka, jonka yksikkö on sama 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 merkin poistamiseksi. 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 herkempi poikkeaville arvoille, sillä se ei korosta suuria virheitä yhtä voimakkaasti kuin MSE. Tämän vuoksi MAE on usein parempi valinta, kun aineistossa on poikkeavia havaintoja, koska sen arvo ei kasva suhteettomasti muutaman äärimmäisen virheen vuoksi.
MAE-metriikan laskemiseen Pythonilla voi 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ää mitä tahansa muuta metriikkaa.
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.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 5.26
Mittarit
Pyyhkäise näyttääksesi valikon
Mallia rakentaessa on tärkeää mitata sen suorituskykyä.
Tarvitsemme malliin liitetyn pistemäärän, joka kuvaa tarkasti, kuinka hyvin se sopii aineistoon. Tätä pistemäärää kutsutaan metriksi, ja saatavilla on lukuisia erilaisia mittareita.
Tässä luvussa keskitymme yleisimmin käytettyihin mittareihin.
Käytämme seuraavaa merkintätapaa:
Olemme jo tutustuneet yhteen metriikkaan, SSR (Sum of Squared Residuals), jota minimoimme optimaalisten parametrien löytämiseksi.
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ä siitä, kuinka hyvin malli suoriutuu. Tässä syy:
Oletetaan, että sinulla on kaksi mallia eri harjoitusaineistoilla (kuvassa alla).
Voit huomata, että ensimmäinen malli sopii 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 huomattavasti enemmän havaintoja, 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 ennustamisessa on 49 dollaria². Olemme kiinnostuneita hinnasta, emme hinnan neliöstä, kuten MSE antaa, joten haluamme ottaa MSE:n neliöjuuren ja saada 7 dollaria. Nyt meillä on metriikka, jonka yksikkö on sama 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 merkin poistamiseksi. 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 herkempi poikkeaville arvoille, sillä se ei korosta suuria virheitä yhtä voimakkaasti kuin MSE. Tämän vuoksi MAE on usein parempi valinta, kun aineistossa on poikkeavia havaintoja, koska sen arvo ei kasva suhteettomasti muutaman äärimmäisen virheen vuoksi.
MAE-metriikan laskemiseen Pythonilla voi 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ää mitä tahansa muuta metriikkaa.
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.
Kiitos palautteestasi!