A mai bejegyzésben körbejárjuk, hogyan tudjuk eldönteni két lineáris modell közül melyik a jobb.
A Loss fügvényről szóló bejegyzésben már megemlítettük, hogy készítünk egyetlen lineáris modellt: Kipróbálunk egy rakás lineáris modellt, és a végén az kerül kiválasztásra, aminél a loss függvény eredménye a legkisebb. Ez a modell lesz az adott függő és független változók esetén a legjobb. De mit tegyünk, ha több lehetséges független változónk van. Használjuk mindet, vagy csak egyet-egyet, esetleg néhány kombinációját. Melyik fogja legjobban magyarázni a függő változónkat? Ennek eldöntésére használhatjuk a (Korrigált) Determinációs Együtthatót. Mielőtt részletesebben megtárgyalnánk mi is ez, készítsünk egy egyszerű lineáris modellt.
Példa lineáris modell
A példa modellünk a Légnedvességet szeretné előrejelezni a Szélerősség segítségével, és a tanításra a következő adatokat fogjuk használni:
Sorszám | Légnedvesség (%) | Szélerősség (km/óra) |
1 | 5,1 | 3,5 |
2 | 4,7 | 3,2 |
3 | 4,6 | 1,5 |
4 | 5 | 3,6 |
5 | 3,4 | 0,2 |
6 | 1,5 | 0,1 |
7 | 1,6 | 0,2 |
8 | 1,5 | 0,4 |
9 | 3,9 | 0,4 |
10 | 1,5 | 0,2 |
import statsmodels.api as sm
import matplotlib.pyplot as plt
adatok = np.array([
[5.1, 3.5],
[4.7, 3.2],
[4.6, 1.5],
[5.0, 3.6],
[3.4, 0.2],
[1.5, 0.1],
[1.6, 0.2],
[1.5, 0.4],
[3.9, 0.4],
[1.5, 0.2]
])
# Légnedvesség
y = adatok[:,0]
# egy Konstans + Szélerősség
X = np.array([ [1,x] for x in adatok[:, 1] ])
# model
illesztett_model = sm.OLS(y,X).fit()
print(illesztett_model.summary())
Ami eredménye:

Tehát a legjobban illeszkedő modell:
Ábrázolva:

Most, hogy kész a példa modellünk, nézzük meg mi is az Determinációs együttható.
Determinációs együttható
Az Determinációs együttható (angolul: „coefficient of determination” vagy „R-Squared”) számszerűsíti, hogy mennyire szoros a kapcsolat a lineáris modellünk és a független változó között. A legrosszabb esetben egyáltalán nincs kapcsolat a függő változó és a független között. Ekkor teljesen mindegy mi a független változó értéke, mindig ugyanazt az eredményt fogjuk kapni. Nevezzük ezt az esetet „legrosszabb modellnek”. A legrosszabb modell a függő változó átlaga lesz. A fenti példában ez Szélerősség átlaga, vagyis 3,28:

Két modell összehasonlításának legkézenfekvőbb módja a Loss függvényeik eredményének összehasonlítása. Az R² számítás során négyzetes hibát használunk, vagyis megnézzük az egyes megfigyelések milyen távol helyezkednek el a modelltől és négyzetre emeljük ezt a távolságot. Számítsuk is ki ezeket:
Sorszám | Légnedvesség (%) | Szélerősség (km/óra) | Lineáris modell négyzetes hiba | Legroszabb modell négyzetes hiba |
1 | 5,1 | 3,5 | 0,00425641 | 3,3124 |
2 | 4,7 | 3,2 | 0,04186475 | 2,0164 |
3 | 4,6 | 1,5 | 1,37430674 | 1,7424 |
4 | 5 | 3,6 | 0,06356382 | 2,9584 |
5 | 3,4 | 0,2 | 1,21377695 | 0,0144 |
6 | 1,5 | 0,1 | 0,50610002 | 3,1684 |
7 | 1,6 | 0,2 | 0,4876013 | 2,8224 |
8 | 1,5 | 0,4 | 0,94486077 | 3,1684 |
9 | 3,9 | 0,4 | 2,03907122 | 0,3844 |
10 | 1,5 | 0,2 | 0,63725821 | 3,1684 |
Négyzetösszeg (SS) | ≈ 7,312 | ≈ 22,756 |
A Determinációs együttható ezeknek a négyzetes hibáknak az összegének az aránya lesz:
Ahol:
— a Determinációs Együttható
— a legrosszabb modell négyzetösszege, az angol „Sum of Squares” kifejezés után SS-el jelölve.
— a lineáris modell négyzetösszege
A fenti példa modell esetén a konkrét érték:
Vegyünk észre valamit a fenti R² kifejezésnél: ez egy határértékkel rendelkező kifejezés. Ha a modell egyáltalán nem illeszkedik, akkor 0, mivel a lineáris és a legrosszabb modell ugyanaz lesz. Ezzel szemben, ha a lineáris modell teljesen illeszkedik az R² értéke 1, ilyenkor az értéke nulla. Ebből egyértelmű, hogy minél jobb a modellünk annál nagyobb az R² értéke.
Rendben, de mire jó ez? Ez így egymagában nem túl sokra, csak egy számod add. Amire igazán alkalmazható, hogy más modellekkel hasonlítsuk össze az eredményt. Tegyük fel, hogy van még egy független változónk, mondjuk „Hőmérséklet”. Ebben az esetben egyből három lehetséges lineáris modellt készíthetünk a Légnedvesség-re: egyet a Szélerősséggel, egyet a Hőmérséklettel, és egyet mindkettővel. Mind a három modellnek lesz egy Determinációs együtthatója. Ideális esetben ezek közül a legjobb modell az, aminek az értéke a legnagyobb. Sajnos van itt egy probléma. Nézzük mi is ez.
Korrigált Determinációs Együttható
A Determinációs Együttható majdnem mindig nagyobb amikor új független változót adunk a modellhez. Ez abból következik, hogy szinte mindig felfedezhető valamilyen szintű együttmozgás két tulajdonság között. Ennek szemléltetésére adjunk egy véletlenszerű független változót a korábbi X értékeinkhez, és készítsünk egy új modellt:
# egy Konstans + Szélerősség + Véletlenszerű szám
X = np.array([ [1,x,np.random.uniform(0,3.5)] for x in adatok[:, 1] ])
# model
illesztett_model = sm.OLS(y,X).fit()
print(illesztett_model.summary())
Ami eredménye:

Mint látható a Determinációs együttható 0,689-re nőt, pedig az új független változó igazából nem magyarázza egyáltalán a Légnedvességet. Ennek a problémának a kezelésére használhatjuk az Korrigált Determinációs Együtthatót (angolul: Adjusted R-Squared). A számítása a következő:
Ahol:
— a Korrigált Determinációs Együttható
— a korábban megismert Determinációs Együttható
- n — mintanagyság
- p — független változok száma
Ez az fenti két példa esetén:
Mint látható a Korrigált Determinációs Együttható értékét a magyarázó erővel nem bíró független változó csökkentette, így ennek segítségével már különböző számú független változóból készített modelleket is össze tudunk hasonlítani.