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

bookYlisovittaminen

Ylisyöttäminen

Tarkastele alla olevia kahta regressiosuoraa. Kumpi niistä on parempi?

Mittarit osoittavat, että toinen malli on parempi. Käytämme siis sitä uusien arvojen ennustamiseen! Tarvitsemme ennusteet arvoille X_new = [0.2,0.5,2.7]. Kun saimme todelliset tavoitearvot juuri ennustamillemme X_new-arvoille, kävi ilmi, että ensimmäinen malli antoi huomattavasti paremman ennusteen.

Tämä johtuu siitä, että toinen malli ylisyöttää opetusdatan. Ylisyöttäminen tarkoittaa, että rakennettu malli on liian monimutkainen ja sopii täydellisesti opetusdataan, mutta ei ennusta uusia, näkemättömiä havaintoja kovin hyvin.

Aliharjoittelu

On olemassa myös toinen käsite, alihajoittelu. Tämä tarkoittaa, että rakennettu malli on liian yksinkertainen, eikä se sovi edes harjoitusaineistoon kunnolla. Tällöin myös ennusteet näkemättömille tapauksille ovat vääriä.

Voimme yrittää päätellä, ali- vai ylisovittaako malli visuaalisesti.

Tiedämme jo, ettei monen muuttujan lineaarista regressiota voi visualisoida helposti. Onko olemassa toinen tapa arvioida, ali- vai ylisovittaako malli? Kyllä on.

Koulutus- ja testijoukon jako

Halutaan tietää, miten malli suoriutuu näkemättömillä havaintoarvoilla. Tätä varten tarvitaan näkemättömiä havaintoja, joilla on todelliset tavoitearvot. Todelliset tavoitearvot ovat kuitenkin vain koulutusjoukossa. Ratkaisuna on jakaa koulutusjoukko kahteen osaan: koulutusjoukkoon ja testijoukkoon.

Nyt voidaan rakentaa malli koulutusjoukon avulla, laskea metriikat koulutusjoukolla (nähdyt havainnot) ja sen jälkeen laskea metriikat testijoukolla (näkemättömät havainnot).

On olennaista jakaa koulutusjoukko satunnaisesti. Yleensä noin 20–30 % koulutusjoukosta käytetään testijoukkona ja loput 70–80 % jätetään koulutusjoukoksi. Scikit-learn tarjoaa yksinkertaisen funktion joukon satunnaiseen jakamiseen:

Esimerkiksi, jakaaksesi opetusjoukon 70 % koulutus-/30 % testijoukkoon, voit käyttää seuraavaa koodia:

from sklearn.model_selection import train_test_split # import the function
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
question-icon

Perustuen mallien MSE-arvoihin, selvitä ylittääkö tai alittaaanko koulutusjoukko (aineisto on sama).

Model 1: Training set's MSE=0.2, Test set's MSE=0.215 .
Model 2: Training set's MSE=0.14, Test set's MSE=0.42
.
Model 3: Training set's MSE=0.5, Test set's MSE=0.47
.

Click or drag`n`drop items and fill in the blanks

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 2

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Awesome!

Completion rate improved to 5.26

bookYlisovittaminen

Pyyhkäise näyttääksesi valikon

Ylisyöttäminen

Tarkastele alla olevia kahta regressiosuoraa. Kumpi niistä on parempi?

Mittarit osoittavat, että toinen malli on parempi. Käytämme siis sitä uusien arvojen ennustamiseen! Tarvitsemme ennusteet arvoille X_new = [0.2,0.5,2.7]. Kun saimme todelliset tavoitearvot juuri ennustamillemme X_new-arvoille, kävi ilmi, että ensimmäinen malli antoi huomattavasti paremman ennusteen.

Tämä johtuu siitä, että toinen malli ylisyöttää opetusdatan. Ylisyöttäminen tarkoittaa, että rakennettu malli on liian monimutkainen ja sopii täydellisesti opetusdataan, mutta ei ennusta uusia, näkemättömiä havaintoja kovin hyvin.

Aliharjoittelu

On olemassa myös toinen käsite, alihajoittelu. Tämä tarkoittaa, että rakennettu malli on liian yksinkertainen, eikä se sovi edes harjoitusaineistoon kunnolla. Tällöin myös ennusteet näkemättömille tapauksille ovat vääriä.

Voimme yrittää päätellä, ali- vai ylisovittaako malli visuaalisesti.

Tiedämme jo, ettei monen muuttujan lineaarista regressiota voi visualisoida helposti. Onko olemassa toinen tapa arvioida, ali- vai ylisovittaako malli? Kyllä on.

Koulutus- ja testijoukon jako

Halutaan tietää, miten malli suoriutuu näkemättömillä havaintoarvoilla. Tätä varten tarvitaan näkemättömiä havaintoja, joilla on todelliset tavoitearvot. Todelliset tavoitearvot ovat kuitenkin vain koulutusjoukossa. Ratkaisuna on jakaa koulutusjoukko kahteen osaan: koulutusjoukkoon ja testijoukkoon.

Nyt voidaan rakentaa malli koulutusjoukon avulla, laskea metriikat koulutusjoukolla (nähdyt havainnot) ja sen jälkeen laskea metriikat testijoukolla (näkemättömät havainnot).

On olennaista jakaa koulutusjoukko satunnaisesti. Yleensä noin 20–30 % koulutusjoukosta käytetään testijoukkona ja loput 70–80 % jätetään koulutusjoukoksi. Scikit-learn tarjoaa yksinkertaisen funktion joukon satunnaiseen jakamiseen:

Esimerkiksi, jakaaksesi opetusjoukon 70 % koulutus-/30 % testijoukkoon, voit käyttää seuraavaa koodia:

from sklearn.model_selection import train_test_split # import the function
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
question-icon

Perustuen mallien MSE-arvoihin, selvitä ylittääkö tai alittaaanko koulutusjoukko (aineisto on sama).

Model 1: Training set's MSE=0.2, Test set's MSE=0.215 .
Model 2: Training set's MSE=0.14, Test set's MSE=0.42
.
Model 3: Training set's MSE=0.5, Test set's MSE=0.47
.

Click or drag`n`drop items and fill in the blanks

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 2
some-alt