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
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
Ylisovittaminen

Ylisopeutus

Tarkastellaan kahta alla olevaa regressiosuoraa. Kumpi niistä on parempi?

Mittarit kertovat meille, että toinen on parempi. Käytämme siis sitä ennustamaan uusia arvoja! 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 ylisovittaa opetusdatan. Ylisopeutus tarkoittaa, että rakennettu malli on liian monimutkainen ja sopii täydellisesti opetusdataan, mutta ei ennusta aiemmin näkemättömiä tapauksia kovin hyvin.

Aliharsinta

On olemassa myös toinen käsite, aliharsinta. Tämä tarkoittaa, että rakennettu malli on liian yksinkertainen, eikä se sovi edes opetusdataan hyvin. Tällöin myös näkemättömien tapausten ennusteet ovat vääriä.

Voimme yrittää arvioida, ali- vai ylisovittaako malli visuaalisesti.

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

Koulutus- ja testijoukon jako

Haluamme tietää, miten malli suoriutuu näkemättömillä havaintoarvoilla. Tätä varten tarvitsemme 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 voimme rakentaa mallin koulutusjoukolla, 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ä haluat käyttää noin 20–30 % koulutusjoukosta testijoukkona, ja loput 70–80 % jää koulutusjoukoksi. Scikit-learn tarjoaa yksinkertaisen funktion joukon satunnaiseen jakamiseen:

Esimerkiksi, jakaaksesi opetusjoukon 70 % koulutus- ja 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ä, ylisovittavatko tai alisovittavatko ne koulutusjoukkoa (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

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
Ylisovittaminen

Ylisopeutus

Tarkastellaan kahta alla olevaa regressiosuoraa. Kumpi niistä on parempi?

Mittarit kertovat meille, että toinen on parempi. Käytämme siis sitä ennustamaan uusia arvoja! 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 ylisovittaa opetusdatan. Ylisopeutus tarkoittaa, että rakennettu malli on liian monimutkainen ja sopii täydellisesti opetusdataan, mutta ei ennusta aiemmin näkemättömiä tapauksia kovin hyvin.

Aliharsinta

On olemassa myös toinen käsite, aliharsinta. Tämä tarkoittaa, että rakennettu malli on liian yksinkertainen, eikä se sovi edes opetusdataan hyvin. Tällöin myös näkemättömien tapausten ennusteet ovat vääriä.

Voimme yrittää arvioida, ali- vai ylisovittaako malli visuaalisesti.

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

Koulutus- ja testijoukon jako

Haluamme tietää, miten malli suoriutuu näkemättömillä havaintoarvoilla. Tätä varten tarvitsemme 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 voimme rakentaa mallin koulutusjoukolla, 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ä haluat käyttää noin 20–30 % koulutusjoukosta testijoukkona, ja loput 70–80 % jää koulutusjoukoksi. Scikit-learn tarjoaa yksinkertaisen funktion joukon satunnaiseen jakamiseen:

Esimerkiksi, jakaaksesi opetusjoukon 70 % koulutus- ja 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ä, ylisovittavatko tai alisovittavatko ne koulutusjoukkoa (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