Data Science Modeling: Kuinka käyttää lineaarista regressiota Pythonin kanssa

Tarkastellaan R², Mean Squared Error ja paljon muuta

kirjoittanut Brian Henriquez, Chris Kazakis ja Dean Sublett

Kuva kampanjan luojat Unsplashista

Johdanto ja tavoitteet

Lineaarinen regressio on datatekniikassa laajalti käytetty tekniikka, koska lineaarisen regressiomallin toteuttaminen ja tulkitseminen on suhteellisen yksinkertaista.

Tämä opetusohjelma käy läpi 80 viljan tietojoukon yksinkertaisia ​​ja useita lineaarisia regressiomalleja Pythonin avulla ja käsittelee joitain asiaankuuluvia regressiomittareita, mutta emme ole aikaisempaa kokemusta lineaarisesta regressiosta Pythonissa. 80 viljan tietojoukko löytyy täältä.

Tässä on joitain tavoitteita:

  • Ymmärrä R2: n merkitys ja rajoitukset
  • Tutustu lineaarisen regression arviointimittareihin ja milloin niitä käytetään
  • Ota käyttöön yksinkertainen ja moninkertainen lineaarinen regressiomalli 80 viljan tietojoukolla

Tietojen tutkiminen

Kun olet ladannut tietojoukon, tuo tarvittavat Python-paketit ja itse viljarekisteri:

Tuotanto viljapäästä ()

Täällä näemme, että jokainen rivi on viljamerkki, ja jokainen sarake on viljan ravintoarvo (proteiini, rasva jne.) Tai tunniste (valmistaja, tyyppi). Huomaa, että luokitus on vaste tai riippuvainen muuttuja.

Seuraavaksi loimme parikaavion korrelaatioista tietojoukon kunkin piirteen välillä ja tämän visualisoinnin perusteella valitsimme kolme ennustajamuuttujaa: kalorit, kuidut ja sokerit. Jokainen korrelaatio kuvaava kuvaaja on liian suuri jaettavaksi täällä, mutta voimme tarkastella tarkemmin pienempien parien kuvaajana, joka sisältää vain ennustajamuuttujamme. Seaborn.pairplot -sovelluksella voidaan nähdä kolme sirontakaaviota, joissa on vähiten neliöt.

Parin kuvaaja kustakin ennustemuuttujasta vastemuuttujaan

Nyt kun olemme tutustuneet tietoihin paremmin, voimme aloittaa lineaarisen regression malliemme perustamisen.

Huomautus: Käsitteiden helpon välittämisen vuoksi emme laske laskettua R²: n ja oikaistujen R²-arvojen tietoja testi- / junajakoa käyttämällä. Mutta huomioi, että satunnaisesti valittujen havaintojen testi / juna-jakauman käyttämistä pidetään parhaana käytännönä, ja näin esitämme virheet ja AIC / BIC opetusohjelman lopussa.

Lineaarinen regressiomalli

Haluamme keskustella R2: sta ja sen merkityksestä lineaarisen regression malleissa. Mutta ymmärtääksesi tarkalleen, mikä R2 on, ensin on ymmärrettävä, mikä on lineaarinen malli. Katsotaanpa sirontakaaviota, jossa verrataan viljan annoksen kaloreita ja sen luokitusta:

Hajontakaavio arvioinnista ja kaloreista

Voimme selvästi nähdä, että vilja-annokset, joissa on enemmän kaloreita, saavat yleensä huonomman arvostelun. Jos oletamme, että näiden kahden muuttujan välillä on jonkin verran suhdetta, voimme rakentaa mallin, joka ennustaa viljan luokituksen kalorimäärän perusteella.

Varmistaaksesi, että suhde on todellakin lineaarinen, piirtämällä mallimme jäännökset kuvaajalle ja etsimällä kuvioita. Selvä malli jäännöksessä saattaa viitata siihen, että toinen malli, kuten neliömäinen tai logaritminen, voi kuvata paremmin kahden muuttujan välistä suhdetta. Tarkistetaan jäännökset:

Jäännöksissä ei ole selkeää kaavaa, joten ei ole näyttöä siitä, että olisi olemassa paremmin sopiva, epälineaarinen yhtälö.

Lineaarista regressiota varten olemme kiinnostuneita kaavasta:

x on vastemuuttujan y ennustajamuuttuja

Mallin tekoon voidaan käyttää scipy linregress -menetelmää.

Ja saamme seuraavan tuloksen:

  • LinregressResult (kaltevuus = -0.49701318979564285, sieppaus = 95.78802384439143, arvo = -0.6893760311652586, pvalue = 4,1402774000064275e-12, stderr = 0,06030617024600228)

Ensimmäinen kohta on b_1, toinen on b_0 ja kolmas arvo on R-arvo, joka tunnetaan myös korrelaatiokertoimena. R-arvo vaihtelee välillä 1-1 ja mittaa selittävien muuttujien ja vastemuuttujan välisen suhteen vahvuuden. Kalorien R-arvo verrattuna luokitukseen on -689, mikä osoittaa, että kahden muuttujan välillä on vahva negatiivinen yhteys. Mitä enemmän R-arvo on nollasta, sitä paremmin malli ennustaa arvoja.

R

Ruuduttamalla R saadaan määrityskerroin, R². R² on arvo, joka edustaa, mikä prosenttiosuus y-muuttujan variaatiosta voidaan selittää x-muuttujan variaatiolla. Korkea R²-arvo osoittaa vahvemman mallin. Katsotaanpa joitain R²-arvoja tietokokonaisuudessamme:

Tulostamme seuraavat:

  • Kupin ennustajalla varustetun mallin R²: 0,0412740112014871
  • R² malli, jossa on Kaloriprognoosija: 0,4752393123451636

Nämä R²-arvot osoittavat meille, että kalorit ennustavat paremmin luokitusta kuin kupit.

Yksinkertainen lineaarinen regressio on hyödyllinen, mutta haluamme usein nähdä, kuinka useita muuttujia voidaan käyttää ennustamaan yhtä muuttujaa. Otetaan 2D-joukko ennusteita viljasta ottamalla siitä siivu kaikilla kiinnostavilla muuttujillamme. kalorit, kuitu ja sokeri näyttivät olevan hyviä ennustajia, kun tarkastelimme korrelaatiopareja kuvaajaa aikaisemmin, joten katsotaanpa mallia, jossa käytetään näitä kolmea:

Saamme seuraavan tuloksen:

  • R²: 0,8483669504178866
  • R² Oikaistu: 0,8070124823500374

Huomaamme, että R²-arvo on noussut 0,475: een yksimuuttujamallissa (kalorien ollessa ennustaja), arvoon 0,848. Tämä näyttää osoittavan, että mallimme ennustevoima on lisääntynyt.

Lisäämme kuitenkin huonon ennusteen, kupit, tähän moninkertaiseen lineaariseen regressiomalliin ja katsotaan mitä tapahtuu:

Tämä koodi antaa seuraavan tuloksen:

  • R²: 0,8490487016343364
  • R² Oikaistu: 0.788668182288071

Muista, että kuppimäärillä vilja-annosta kohden ei näyttänyt olevan melkein mitään korrelaatiota kuluttajien luottoluokituksella yhdessä muuttuvassa tapauksessa. Mutta kun lisäämme sen malliin, yleinen R² nousee .849: ään, mikä tarkoittaa, että mallin ennusteteho paranee. Tiedon perusteella tämän neljän muuttujan mallin ei kuitenkaan pitäisi olla parempi kuin kolmen muuttujan malli. R²-arvon laskentatavan perusteella lisäämällä muuttujia malliin lisätään aina R²-arvoa. Joten meidän on verrattava oikaistuja R²-arvoja, mikä vähentää R²: n lisäystä lisämuuttujien takia. Oikaistun R2: n kaava on

N-näytteen koko, ennustajien p-lukumäärä

Tätä käyttämällä havaitaan, että kolmen muuttujan mallin säädetty R2 on 0,807, kun taas neljän muuttujan mallin säädetty R² on 0,788. Siksi kolmen muuttujan malli on parempi tällä metrillä.

R² on yksi tärkeimmistä mittareista arvioitaessa, kuinka hyvin lineaarinen malli sopii tietoihin, joten on tärkeää saada intuitiivinen käsitys siitä, mitä se tarkoittaa. Yhtä tärkeää on tietää R2: n rajoitukset ja kuinka näitä rajoituksia voidaan lieventää toteutettaessa lineaarisia regressiomalleja.

Keskimääräinen neliövirhe (MSE)

Regressiomalleilla on useita erilaisia ​​arviointimittareita. Yksi suosituimmista mittareista ja keskustelemme ensin keskimääräisen neliövirheen (MSE) kanssa.

Lähde

MSE on arviointimitta, joka mittaa havaittujen ja ennustettujen arvojen välisten neliöerojen keskiarvon. Toisin sanoen MSE kertoo meille kuinka tarkka tai epätarkka lineaarinen regressiomallimme on - mitä alempi MSE, sitä parempi malli on ennustamaan arvoja. Otetaanpa regressiomallimme MSE:

Muuttuva mse palaa numerolla 26,6329.

Toinen käytettävissä oleva arviointimitta on juuri keskimääräinen neliövirhe (RMSE), joka on yksinkertaisesti MSE: n neliöjuuri. Käyttämällä Python-matematiikkayksikön neliöjuuria, sqrt (mse) palauttaa arvona 5.1607.

On tärkeää huomata, että RMSE-arvomme jakaa samat yksiköt kuin vastausmuuttuja (otimme neliöjuuren neliövirheistä). RMSE-arvomme 5,1607 laskee suhteellisen alhaisella luokituksen muuttujan alueella 0–100, joten moninkertainen lineaarinen regressiomalli on ”hyvä” ennustamaan viljabrändin luokitusta. Mutta on myös muita virheitä, joita voimme käyttää.

Keskimääräinen absoluuttinen virhe (MAE)

Seuraava regression arviointitieto, jota tarkastelemme, on keskimääräinen absoluuttinen virhe (MAE).

Lähde

Koska MSE ruuduttaa jäännöserot, MSE rankaisee suurempia todellisten ja ennustettujen arvojen välisiä eroja kuin MAE. Koska neliötermit, MSE on herkempi poikkeaville kuin MAE.

Jos päätimme, että tietojoukkomme poikkeavuudet eivät olleet merkittäviä tietojen analysoinnissa, voimme kääntyä MAE: n puoleen ennen MSE: tä, koska poikkeavien jäännökset eivät ole liioiteltuja jäännösten neliöimisestä. Löydämme MAE:

Mae-muuttujamme tuottaa 3.6153. MAE on suhteellisen pieni ottaen huomioon 0–100 luokitusalue, joten MAE osoittaa, että mallimme on suhteellisen tarkka ennusteissaan.

Keskimääräinen absoluuttinen prosentuaalinen virhe (MAPE)

Viimeinen regressioarviointitieto, jota tarkastelemme, on keskimääräinen absoluuttinen virhevirhe (MAPE).

Lähde

MAPE antaa ennustavien mallien tarkkuuden prosentteina. Huomaa samankaltaisuus MAE- ja MAPE-kaavoissa. MAE: n tavoin poikkeamat eivät vaikuta suuresti MAPE: hen. Käytä MAPEa kuitenkin varoen, koska

  • MAPE on alttiina jakautumiselle nollavirheellä (katso nimittäjä summituksen sisällä);
  • MAPE voi kasvaa erittäin suureksi, jos todelliset arvot ovat hyvin pieniä (katso jälleen jakamisoperaatio summituksessa);
  • MAPE on puolueellinen kohti ennusteita, jotka ovat pienempiä kuin havaitut arvot.

Otetaan mallillemme MAPE:

MAPE-toiminto tuottaa seuraavan prosenttimäärän: 8,458%. Joten ennusteemme on “pois” keskimäärin noin 8,5%.

AIC ja BIC

AIC (Akaike Information Criterion) ja BIC (Bayesian Information Criterion) ovat objektiivisia menetelmiä regressiomallien arvioimiseksi ja ennustajien parhaan alajoukon määrittämiseksi (mikä malli sopii paremmin).

Kun lisäät parametreja malliisi, se sopii aina paremmin. Mutta silloin sinulla on riski menettää tietoa todellisesta taustasta. Siten parametrien lukumäärän ja mallin aiheuttaman virheen määrän välillä on kompromissi. AIC ja BIC arvioivat mallien kykyä ottaa huomioon ennustetun muuttujan ylimääräiset variaatiot, mutta ilman että malli tulee liian suureksi.

AIC

AIC antaa sinun arvioida malleihisi kadonneen tiedon määrän, jotta voit vertailla, mitkä mallit toimivat parhaiten, ja valita sopivampi osa ennustajia. Tarkemmin sanottuna AIC-arvo tarkastelee suhteellista etäisyyttä datan todellisen todennäköisyysfunktion ja mallisi sopivan todennäköisyysfunktion välillä. Mitä pienempi etäisyys, sitä lähempänä malli on tietosi todelliseen esitykseen. AIC merkitään tällä kaavalla:

N-havaintojen lukumäärä, K-parametrien lukumäärä sopii + 1

Jos vertaamme kahden mallin sopivuutta AIC-menetelmällä, malli, jolla on alhaisempi AIC-arvo, sopii paremmin.

Oletetaan kahden aiemmin käyttämämme monen regressiomallimme AIC-arvot. Yhdellä on kolme ennustajaa ja toisella on neljä. Ensin määrittelemme arvot, jotka lisäämme kaavaan, ja sitten suoritamme kaavan:

Tämä antaa seuraavan tuloksen:

  • Kolmen ennustajan mallin AIC: 60.51438447233831
  • Neljällä ennusteella varustetun mallin AIC: 62.31365180026097

Näkemyksemme perusteella kolmella ennustajalla varustetulla mallilla on alhaisempi AIC-arvo ja se sopii siis paremmin kuin malli, jossa on neljä ennustajaa (mutta ei paljon tässä esimerkissä).

BIC

BIC on samanlainen kuin AIC, mutta se on paljon tiukempi siinä suhteessa, että mallisi rangaistaan ​​lisäämällä uusia parametreja. Sitä merkitään tällä kaavalla:

N-havaintojen lukumäärä, K-parametrien lukumäärä sopii + 1

Jos verrataan kahden mallin sopivuutta BIC-menetelmällä, malli, jolla on alhaisempi BIC-arvo, sopii paremmin, samanlainen kuin AIC-menetelmän prosessi.

Oletetaan BIC-arvot samoille kahdelle mallille, joita juuri käytimme. Ainoa ero tässä on rangaistus, joka kerrotaan parametrien lukumäärällä:

Tämä antaa seuraavan tuloksen:

  • Kolmella ennustajalla varustetun mallin BIC: 63.60473936129743
  • Neljän ennakointilaitteen mallin BIC: 66.17659541145987

Täältä näemme, että kolmella ennustajalla varustetulla mallilla on alhaisempi BIC-arvo ja siten se sopii paremmin kuin malli, jossa on neljä ennustajaa. Koska BIC-rangaistus on tiukempi kuin AIC-sakko, BIC-menetelmän arvot ovat suurempia kuin vastaavien mallien AIC-menetelmä.

Rangaistuseron vuoksi AIC voi valita mallin, jolla on enemmän parametreja kuin BIC. On suositeltavaa käyttää AIC: ta ja BIC: tä yhdessä ja tehdä päätöksiä malleistasi kummankin tulosarjan perusteella. Tässä tapauksessa AIC ja BIC sopivat keskenään ja valitsivat samat mallit.

Avainsanasto

Yhteenvetona keskustelemme

  • R²: indikaattori siitä, kuinka vahva lineaarinen regressiomalli ennustaa vastemuuttujaa
  • Oikaistu R²: indikaattori siitä, kuinka vahva moninkertainen lineaarinen regressiomalli vastaa riippuvaisen muuttujan varianssia korjaten samalla mallin parametrien lukumäärää
  • MSE (keskimääräinen neliövirhe): arviointimitta, joka rankaisee suuresti poikkeavia; todennäköisesti ensimmäinen virhe, jonka lasket ja jota käytät, kun poikkeamat edustavat todellista aineiston ilmiötä
  • RMSE (neliöjuuren keskiarvo): MSE: n neliöjuuri; jakaa samat yksiköt kuin vastausmuuttuja, joten RMSE voi olla ”tulkittavampi” kuin MSE
  • MAE (keskimääräinen absoluuttinen virhe): arviointitieto, jota käytetään pienentämään poikkeavuuksien merkitystä virhettä mitattaessa; käytetään, kun poikkeavuudet eivät edusta todellista aineiston ilmiötä
  • MAPE (keskimääräinen absoluuttinen prosenttivirhe): regressiomallin tarkkuuden mitta prosentteina; alttiita ajonaikaisille virheille tai epätavallisen suurille arvoille, kun vastausmuuttuja ottaa pieniä arvoja
  • AIC (Akaike Information Criterion): Eri malleista kadonneen tiedon määrän arviointi, joka rankaisee parametrien noususta. Tietojesi koosta riippumatta sillä on aina mahdollisuus valita liian suuri malli. Paras käytettävä yhdessä BIC: n kanssa.
  • BIC (Bayesin tietokriteeri): samanlainen kuin AIC, mutta rankaisee raskaammin. Tietojen koosta riippumatta sillä on aina mahdollisuus valita liian pieni malli. Paras käytettävä yhdessä AIC: n kanssa.

johtopäätös

Tässä opetusohjelmassa osoitimme kuinka toteuttaa yksinkertaiset ja moninkertaiset lineaariset regressiomallit Pythonilla ja näiden menetelmien ja niiden virheen arviointimenetelmät.

Kun työskentelet omien tietojoukkojesi kanssa, voit valita minkä tahansa näistä menetelmistä regressiomallien ja virheiden arvioimiseksi. Kuitenkin voi olla sinun edun mukaista käyttää useita näistä ja nähdä kuinka niiden tulokset vastaavat tai eroavat toisistaan ​​päättääksesi, mikä mallisi edustaa parhaiten tietojasi.

Nyt sinun pitäisi olla mukavampaa toteuttaa omia lineaarisia regressiomalleja ja olla tietoisempi kaikkien käsiteltävien regressiomittarien yhtäläisyyksistä ja eroista.