\(\qquad\qquad\) FYRIRLESTRARNÓTUR UM AÐHVARFSGREININGU

Þessar fyrirlestrarnótur eru í vinnslu, og í byrjun dálítið hráar.

1  Aðhvarfsgreining

1.1  Stærðfræðileg líkön

Aðhvarfsgreining (regression analysis) snýst um stærðfræðileg líkön (mathematical models) af stærðum eða mælingum. Fyrir utan aðferðir til að finna heppileg líkön felur aðhvarfsgreining í sér að meta gæði líkana, nota þau til að spá (predict) fyrir um framtíðarniðurstöður og leggja mat á skekkju í slíkum spám.

Breytur og óvissur

Stærðirnar eða mælingarnar sem unnið er með eru gjarnan kallaðar breytur (variables). Gerður er greinarmunur á háðum (dependent,) og óháðum (independent) breytum. Stundum eru háðu breyturnar kallaðar fylgibreytur eða útkomur (outcomes, responses), og þær óháðu skýribreytur (predictors, covariates). Gert er ráð fyrir að líkanið lýsi einhverju raunverulegu sambandi milli óháðu og háðu breytanna, þannig að fyrir gefin gildi á þeim óháðu segi líkanið okkur fyrir um gildin á þeim háðu, oftast þó með einhverri óvissu.

Líkanið er oft ritað:

\[Y = f(X) + \varepsilon \tag1\]

þar sem \(Y\) er vigur með háðu breytunum, \(X\) er vigur með þeim óháðu, \(\varepsilon\) er vigur af óvissum eða skekkjum (errors) og \(f\) er fall sem lýsir líkaninu. Yfirleitt er gert ráð fyrir að óvissurnar séu óháðar X, og oft að þær séu normaldreifðar.

Reyndar þurfa \(X\) og \(Y\) ekki nauðsynlega að vera vigrar, þeir geta líka verið tölur (skalarstærðir, einvíðir vigrar). Sér í lagi er algengt (kannski algengast) að \(Y\) sé skalarstærð og verður miðað við að það gildi í framhaldinu.

Mæligögn

Yfirleitt liggja fyrir mæliniðurstöður á skýribreytum ásamt tilsvarandi gildum fylgibreytu:

\[(x_1, y_1), (x_2, y_2), \ldots, (x_n, y_n).\]

og þessar mælingar má svo nota til að finna gott líkanfall. Vigur með öllum fylgibreytumælingunum er

\[y = (y_1, y_2,\ldots, y_n)\]

Stikar og mátun

Algengt er að fallið \(f\) sé háð aukabreytum, svonefndum stikum (parameters), sem oft eru táknaðir með \(\beta\). Þannig má rita líkanið:

\[Y = f(X, \beta) + \varepsilon \tag2\]

Ákvörðun á góðu líkanfalli felur þá í sér mat á stikunum \(\beta\). Slíkir metnir stikar eru gjarna táknaðir með \(\hat{\beta}\) og metið líkanfall með \(\hat{f}\) (þannig að \(\hat{f}(X) = f(X, \hat{\beta})\)). Til viðbótar þessum \(f\)-stikum eru oft viðbótarstikar fyrir dreifingu \(\varepsilon\), t.d. dreifni þess.

Sú aðgerð að ákvarða góða stika er kölluð að máta eða mátun (fit).

Leifar

Mismunurinn á mældu \(Y\)-gildi og gildinu sem líkanið gefur, \(y_k - f(x_k)\), nefnist leif (residual). Hún er oft táknuð með \(e_k\) og vigur leifa fyrir öll gögnin verður þá

\[e = (e_1, e_2,\ldots, e_n)\]

1.2  Aðferð minnstu kvaðrata

Ein leið til að meta stika fyrir aðhvarfslíkan (máta það) er að nota ólínulega bestun til lágmarka kvaðratsummu frávika milli líkans og mælinga. Verkefnið sem leyst er má rita:

\[\min_{\beta} \sum_{i=1}^n \bigl(f(x_i, \beta) - y_i\bigr)^2\]

Ef lággildispunktur þessa verkefnis er \(\hat{\beta}\) þá fást metin gildi á óvissunum sem frávikin \(e_i = f(x_i, \hat{\beta})\) og mat á \(\sigma\) er gefið með staðalfráviki leifanna: \(\hat{\sigma} = \operatorname{SD}(e)\).

Um aðferð minnstu kvaðrata er fjallað nánar í b-lið í æfingunni í grein 1.3.

1.3  Línulegt aðhvarf

Ef fallið \(f\) er línulegt fall af stikunum \(\beta\) þá er sagt að aðhvarfið sé línulegt. Þekktasta dæmið um línulegt aðhvarf er að finna jöfnu bestu línu, og önnur dæmi eru ákvörðun besta plans og ákvörðun bestu parabólu. Til máta línulegt aðhvarfslíkan með aðferð minnstu kvaðrata er hægt að leysa jöfnuhneppi, svonefnt normaljöfnuhneppi, eins og útskýrt er í Wikipedíugreininni um línuleg minnstu kvaðröt. Í sýnidæmunum og æfingunum hér á eftir eru öll líkönin línuleg.

Athugasemd:

Líkanfallið fyrir bestu parabólu er \(\beta_0 + \beta_1 X + \beta_2 X^2\). Þetta er auðvitað ólínulegt fall, en það er ólínulegt fall af \(X\), en hins vegar er það línulega háð \(\beta\) og það er það sem skiptir máli hér.

Sýnidæmi: Jafna bestu línu

../_images/hæð-trjáa-eftir-aldri.jpg

Mynd 1.1: Hæð trjáa eftir aldri

Tré hækka með aldri. Á myndinni til hliðar eru gervigögn, \((x_1, y_1),..., (x_n, y_n)\), sem gætu lýst hæð 5–15 ára trjáa sem falli af aldri þeirra (sjá nánar í Python-fyrirlestrarnótunum). Trén hækka um u.þ.b. einn metra á ári. Ef \(X\) og \(Y\) eru aldur og hæð trés sem valið er af handahófi þá má lýsa Y með líkaninu

\[Y = \beta_0 + \beta_1 X + \varepsilon_i\]

Ef gögnin á myndinni eru notuð til að máta líkanið og finna stikagildin \(\hat{\beta}_0\) og \(\hat{\beta}_1\) fæst rauða línan sem hefur jöfnu \(y = 0.208 + 1.012 x\).

Athugasemd:

Punktarnir á mynd 1.1 eru fengnir með skipununum:

import numpy as np
rng = np.random.default_rng(seed=42)
x = rng.uniform(5, 15, size=50)
eps = rng.normal(size = 50)
y = 0.5 + 1.0*x + eps

Python:

Með Python fylgir pakki, statsmodels, sem nota má til að máta líkön. Til að máta líkanið í sýnidæminu að ofan má nota eftirfarandi skipanir:

import statsmodels.api as sm
X0 = sm.add_constant(X)
model = sm.OLS(Y, X0)
results = model.fit()
print(results.summary())
beta = results.params

sem prentar meðal annars út stikagildin 0.208 og 1.012. OLS (ordinary least squares) er klasi í pakkanum sem sér um mátunina.

Sýnidæmi: Jafna besta plans

Látum \(X = (x_1, x_2)\) tákna daglega skammtastærð af blóðþrýstingslyfjum A og B (í mg), og \(Y\) tákna breytingu (lækkun) á blóðþrýstingi sem fylgir lyfjagjöf með þeim (í mmHg). Gerum svo ráð fyrir að ef \(x_1\) og \(x_2\) eru ekki of stór þá minnki blóðþrýstingurinn um \(\beta_1\) mmHg fyrir hvert mg af lyfi A og \(\beta_2\) mmHg fyrir hvert mg af lyfi B. Líkanið sem fæst má þá rita:

\[Y = \beta_1 x_1 + \beta_2 x_2 + \varepsilon\]

þar sem \(\varepsilon\) eru normaldreifðar skekkjur með meðaltal 0 og staðalfrávik \(\sigma\) (og þar með dreifni \(\sigma^2\)). Stikar þessa líkans eru \(\beta_1\), \(\beta_2\) og \(\sigma\). Þá mætti meta með því að gefa hópi einstaklinga lyfin í mismunandi magni og ýmsum hlutföllum og fylgjast með blóðþrýstingslækkun þeirra. Í kjölfarið mætti svo nota aðferð minnstu kvaðrata til að ákvarða stikana.

../_images/blóðþrýstingur.jpg

Mynd 1.2: Blóðþrýstingur mældur

Eftir að búið er að meta gott líkan, með því að vera með nógu stóran hóp fólks og fjölbreyttar skammtastærðir má sjá fyrir sér ýmiskonar hagnýtingu. Til dæmis gætum við viljað ákvarða passlega lyfjagjöf til að komast niður fyrir tiltekin blóðþrýstingsmörk. Lyfin gætu haft hámarksskammt (stærri skammtar yllu of miklum aukaverkunum) og verð þeirra gæti spilað inn í. Einnig liggur í loftinu að búa til betra líkan, jafnvel ólínulegt, sem tekur t.d. til aldurs og kyns sjúklinga.

Ef mann grunar að áhrif lyfjanna séu ekki óháð, þannig að þegar þau eru gefin saman minnki samanlögð virkni þeirra, mætti bæta krosslið, \(\beta_3 x_1 x_2\), við líkanið.

Fleiri dæmi um línuleg líkön má finna í grein 10.1 í „Tölfræði frá grunni“ (besta lína) og í grein 13.5 í „Fyrirlestrarnótum um Python“ (besta parabóla, lína og plan).

Æfing:

  1. Skoðið dæmið um aðhvarfsgreiningu í grein 13.5 í Python nótunum. Leysið fyrri æfinguna sem þar er, nefnilega að búa til 100 punkta gervigögn fyrir fallið \(𝑦=𝑥(𝑥−2)(𝑥−4)\) á bilinu \([0,4]\), finna 3. stigs feril fyrir þau og teikna hann og gögnin.

  2. Skoðið sýnidæmið Jafna bestu línu aftast í kafla 1.9 í bókinni Valin efni í stærfræði og reiknifræði á Edbook og í framhaldi fallið sem lágmarka má til að finna jöfnu bestu parabólu í næstu grein þar fyrir aftan. Hvaða fall mætti lágmarka til að finna bestu þriðja stigs margliðu?

1.4  Hliðrun gagna

Það hefur ýmsa kosti að hliðra skýribreytunum um meðaltal sitt áður en líkan er mátað. Fyrir parabólulíkan mætti rita líkanfallið:

\[y_k = \beta_0 + \beta_1 (x_k - \bar{x}) + \beta_2 (x_k - \bar{x})^2\]

þar sem \(\bar{x}\) er meðaltal \(x\)-anna. Með þessu móti batnar stöðugleiki mátunarinnar (tölulegar skekkjur minnka) og auk þess fær skurðpunkturinn við y-ás túlkanlega merkingu því hann verður væntanlegt gildi fylgibreytu ef skýribreyta hefur sitt væntanlega gildi.

2  Mat á gæðum líkana

2.1  P-gildi

Ef ekkert raunverulegt samband er á milli \(X\) og \(Y\) er augljóslega ekki mikið vit í að smíða líkan af slíku sambandi. Hugsum okkur að rétt líkan sé:

\[Y = \beta_0 + \varepsilon\]

sem sé að \(f(X)\) sé óháð \(X\). Ef giskað hefur verið á línulegt líkan svarar þetta til þess að allir \(\beta\)-stuðlar aðrir en \(\beta_0\) séu 0. Til að kanna hvort það sé tilfellið má nota tölfræðipróf þar sem reiknað er p-gildi þeirrar tilgátu að \(\beta_1 = \beta_2 = \ldots = 0\). Ef í ljós kemur að p-gildið er lágt, t.d. < 0.05, þá er hægt að hafna tilgátunni með 95% öryggi og samþykkja að sambandið sé raunverulegt, en ef p-gildið er hærra er ekki hægt að hafna sambandsleysistilgátuni með þessu öryggi.

Hefð er fyrir því að nota orðið marktækt (signficant) um samband sem er samþykkt með slíkum reikningum, og tilsvarandi samanburðartala (hér 0.05) er kölluð marktæknistig (significance level).

Það er líka hægt að bera saman tvö mismunandi \(f\)-föll með p-gildum. T.d. gætum við kannað hvort samband sé línulegt eða kvaðratískt með því að bera saman líkönin \(f_1(X) = \beta_0 + \beta_1 X\) og \(f_2(X) = \beta_0 + \beta_1 X + \beta_2 X^2\) og kanna hvort hægt sé að hafna þeirri tilgátu að \(\beta_2 = 0\).

Python:

Summary í statsmodels skilar sjálfkrafa p-gildum fyrir einstaka stika, sbr. síðastnefnda prófið, að kanna hvort \(\beta_2 = 0\). Fyrir samsett próf eins og það fyrrnefnda að ofan, hvort margir stikar séu 0, býður statsmodels upp á F-próf sem t.d. má nota svo:

X = sm.add_constant([x1, x2, x3])
model = sm.OLS(y, X)
results = model.fit()
print(results.f_test("x1 = x2 = x3 = 0")

Hér er núlltilgátan sú að það sé aðeins fastaliðurinn (sem statsmodels skírir const) sem er ekki 0.

Sýnidæmi: p-gildi

../_images/lína-og-parabóla.jpg

Gervigögn eru búin til með skipununum:

rng = np.random.default_rng(seed=42)
x = rng.uniform(1,4, size=20)
eps = rng.normal(size=20)
y = 0.5 + 1.0*x + eps

og síðan er besta lína ákvörðuð og p-gildi fyrir \(\beta_1\) (stuðulinn við \(x\)) reiknað með statsmodels. Það gefur p = 0.0009. Línulegi liðurinn í líkaninu er sem sé marktækur á 5% marktæknistigi. Næst er besta parabóla fundin og það gefur \(p = 0.172\) fyrir \(\beta_2\). Við getum ályktað að kvaðratíski liðurinn sé ómarktækur.

Athugasemd:

Fyrir seinna líkanið í sýnidæminu prentar statsmodels út að \(p=0.061\) fyrir \(\beta_1\). Þá er verið að bera saman núlltilgátuna að líkanið sé

\[Y = \beta_0 + \beta_2 X^2\]

(sem reyndar er ólíklegt að við höfum áhuga á) gegn gagntilgátunni

\[Y = \beta_0 + \beta_1 X + \beta_2 X^2.\]

2.2  Öryggisbil

Önnur aðferð með sama markmið er að reikna \(P\)% öryggisbil fyrir stika. Ef 0 er í í öryggisbilinu er tilgáta um að stuðullinn sé raunverulega 0 samþykkt, en annars er henni hafnað með \(P\)% öryggi. Við gætum t.d. reiknað 95% öryggisbil fyrir \(\beta_2\) í fyrrnefndu \(f_2\)-líkani. Ef reiknað bil er t.d. \([0.2, 1.3]\) þá er núll-tilgátunni hafnað, og tilgáta um kvaðratískt samband samþykkt.

Æfing: Öryggisbil stika

Notið statsmodels til að ákvarðið öryggisbil fyrir bæði líkönin sem skoðuð voru í sýnidæminu í grein 2.1.

2.3  Ofmátun

Eitt af þeim vantamálum sem þarf að varast í aðhvarfsgreiningu nefnist ofmátun (overfitting). Þá eru notaðir of margir stikar og líkanið sem fæst eltist við allskonar tilviljanakennt flökt í gögnunum og lýsir engum raunveruleika.

Sýnidæmi:

Búum til 30 punkta af gervigögnum með línulegu tveggja stika líkani \(Y = 1.5 + 1.0X + \varepsilon\) þar sem \(\varepsilon\) fylgir staðlaðri normaldreifingu. Mátum síðan margliður af ýmsum stigum. Við sjáum á myndinni að ekki sést áberandi ofmátun fyrir lægstu stigin en hún verður svo sífellt meira áberandi eftir því sem stigin hækka.

../_images/ofmátun.jpg

Mynd 2.1: Ofmátun

2.4  Skekkjur eða frávik

Algengt er að meta gæði líkana með meðalferviksskekkju (mean square error), MSE, eða kvaðratrót hennar, staðalfráviki leifa (root mean square error), RMSE. Almennt gildir að því lægri sem þessar tölur eru þeim mun betra er líkanið. Ef líkanfallið \(f(X, \beta)\) er raunverulega rétt og óvissurnar eru raunverulega normaldreifðar þá fæst sennilegasta líkanið skv. sennileikaaðferð (maximum likelihood estimation) með því að velja þá stika sem lágmarka MSE (eða RMSE, sem er jafngilt).

Stundum er orðið frávik (deviation) notað í stað skekkju, og þá skammstafanirnar MSD og RMSD.

2.5  Varnaglar

Hér þarf að reka a.m.k. þrjá varnagla. Í fyrsta lagi gæti þurft að fást við ofmátun. Aðferðir til þess eru kallaðar reglun (regularization). Það er oftast gert með því að bæta liðum við fallið sem lágmarkað er til að meta stikana, sem refsa fyrir það að nota of marga (eða stóra) stika. Sérstaklega má nefna L1- og L2-reglun sem nánar má lesa um á Wikipediu.

Í öðru lagi getur verið að líkanið sé ekki það rétta. Greinarnar um p-gildi og öryggisbil hér á undan taka að nokkru á þeim vanda en hann tengist líka vandanum við ofmátun þegar hann felst í að notaðir séu of margir stikar.

Í þriðja lagi geta verið útlagar (outliers) í gögnunum og til að fást við það má nota útlagagreiningu (outlier detection), sem finnur útlaga sem fjarlægja má áður en haldið er áfram. Annar möguleiki er að nota harðgera bestun (robust regression), t.d. með því að lágmarka meðaltölugildisskekkju (mean absolute error, MAE eða MAD) í stað meðalferviks-. Þá er að vísu ekki hægt að ákvarða lausn línulegra verkefna með því að leysa jöfnuhneppi en nútímaforritakerfi bjóða samt mörg upp á leiðir.

2.6  Ýmsir mælikvarðar á líkangæði

Fyrsti mælikvarðinn sem hér er lýst (óleiðrétt skýringarhlutfall) hefur enga innbyggða vörn gegn ofmátun, gagnstætt mælikvörðunum sem á eftir fylgja, sem allir eru hannaðir til að verjast ofmátun.

\(R^2\)

Skýringarhlutfall (coefficient of determination) líkans, táknað \(R^2\) er skilgreint sem það hlutfall af dreifni mæligagna sem líkanið skýrir.

Þetta má rita stærðfræðilega svo:

\[R^2 = 1 - \dfrac{\operatorname{Var}(e)}{\operatorname{Var}(y)} \tag{*}\]

Athugasemd:

Í \((\text{*})\) er \(y\) mælingavigur og \(e\) leifavigur sbr. grein 1.1. \(\operatorname{Var}(y)\) er dreifni \(y\), reiknuð með:

\[\operatorname{Var}(y) = \dfrac{1}{n}\sum_{i=1}^n (y_i - \bar{y})^2\]

þar sem \(\bar{y}\) er meðaltal \(y_i\)-anna (og eins fyrir \(\operatorname{Var}(e)\)). Skv. (1) í kafla 1.1 gildir að

\[\operatorname{Var}(Y) = \operatorname{Var}(f(X)) + \operatorname{Var}(\varepsilon)\]

og ef við höfum metið sæmilegt líkan ætti þar með að gilda

\[\operatorname{Var}(y) \approx \operatorname{Var}(\hat{f}(x)) + \operatorname{Var}(e) \tag {**}\]

Reyndar er hægt að sanna að \((\text{**})\) gildir nákvæmlega ef líkanið er línulegt með konstant-lið og \(\beta\) er metið með aðferð minnstu kvaðrata. Við sjáum að það er hægt að skipta dreifni \(y\) í tvennt, þann hluta sem líkanið spáir og dreifni óvissunnar, og auðvelt er svo að sjá að \(\text{(*)}\) fæst af \((\text{**})\) með \(=\)-merki.

\(R^2_\text{adj}\)

Maður kynni að halda að því hærra sem skýringarhlutfallið er því betra sé líkanið en málið er ekki svo einfalt, því ofmátuð líkön gefa hátt \(R^2\). Ein leið til að bregðast við er að nota leiðrétt skýringarhlutfall (adjusted coefficient of determination), táknað \(R^2_\text{adj}\), sem skilgreint er með:

\[R^2_\text{adj} = 1 - \dfrac{n-1}{n-k-1}\dfrac{\operatorname{Var}(e)}{\operatorname{Var}(y)}\]

þar sem \(k\) er fjöldi stika í líkaninu (t.d. er \(k=3\) fyrir parabólunálgun). Um þessar tvær gerðir skýringarhlutfalla má lesa nánar á Wikipediu.

AIC og AICc

Á fyrri hluta 8. áratugarins skrifaði Japaninn Hirotsugu Akaike nokkrar greinar og stakk upp á mælikvarða sem seinna var kenndur við hann og nefndur AIC (Akaike information criterion). Þessi mælikvarði hefur reynst afar mikilvægur og útbreiddur, og ein af greinunum (frá 1974) er meðal 10 mest ívitnuðu tölfræðigreina allra tíma. Nokkru síðar var stungið upp á leiðréttingu fyrir tiltölulega lítil gagnasöfn og nefnist sá mælikvarði AICc (c fyrir corrected). Skilgreining kvarðanna er:

\[\begin{split}\text{AIC} &= 2k - 2\ln(L(\hat{\beta}))\\ \text{AICc} &= \text{AIC} + \dfrac{2k^2 + 2k}{n - k - 1}\end{split}\]

þar sem \(k\) er fjöldi stika eins og að ofan og \(L\) er sennileikafall (likelihood function) líkansins. Notkun þessara mælikvarða felur í sér að velja það líkan sem hefur lægst AIC (eða AICc) gildi. Slíkt líkan skýrir gögnin vel án þess að ofmáta. Ein meðmæli sem finna má á netinu er að nota AICc frekar en AIC ef mælingar eru ekki a.m.k. 40 sinnum fleiri en stikar.

BIC

Árið 1978 skrifaði Gideon Schwarz grein um annan mælikvarða sem nefnist BIC (Bayesian information criterion) og er skilgreindur með

\[\text{BIC} = k\ln(n) - 2\ln(L(\hat{\beta})).\]

Hann notast eins og AIC, en skilar yfirleitt líkönum með heldur færri stika.

Samantekt

Einn kostur við upplýsingakvarðana (AIC, AICc og BIC) er að þá má nota til að bera saman hvaða líkön sem er, en skýringarhlutföllin eru ætluð fyrir samanburð líkana þar sem annað er hlutlíkan í hinu (t.d. bein lína og parabóla). Leit á netinu skilar fjölda niðurstaðna þar sem kostir og gallar upplýsingakvarðanna eru vegnir og metnir. Þar virðist heldur halla í átt að AIC og AICc.

Python:

Summary-aðferðin í OLS klasanum (sjá grein 1.3) prentar m.a. út gildi á \(R^2\), \(R^2_\text{adj}\), AIC og BIC.

3  Flokkun

Flokkun (classification) og klösun (clustering) eru náskyld hugtök. Meginmunurinn er sá að í flokkun eru þjálfunargögn merkt en í klösun eru þau ómerkt: Flokkun er vélanám með merktum gögnum (supervised learning) en klösun er vélanám með ómerktum gögnum (unsupervised learning) eins og nánar má lesa um t.d. í þessu stackoverflow-svari. Mörg orðasöfn eru sammála um íslensku þýðinguna flokkun og nokkur þeirra, m.a. orðasafn í máltækni, tölvuorðasafnið og LISA, eru sammála um klösun. Orðið flokkur (category) er oft(ast) notað um mengin sem flokkað í, en í klösun eru orðin klasi (cluster) eða hópur (group) notuð.

Í þessum kafla er það flokkun sem er á dagskrá.

3.1  Líkön af flokkum

Hægt er að líta á flokkun sem sérstaka tegund aðhvarfsgreiningar. Útkomurnar taka stakstæð gildi sem segja til um hvaða flokki þær tilheyra. Þessu fylgir að óvissuna er hægt að mæla sem líkurnar á því að rétt sé flokkað. Jafnvel er hægt að skipta rangflokkun upp með því að tilgreina hve miklar líkur eru á hverjum röngum flokki.

Sýnidæmi:

Sem dæmi um flokkun má taka hið vel þekkta MNIST gagnasafn. Það inniheldur 60000 gráskalamyndir af handskrifuðum tölustöfum, 6000 af hverjum, og er hver mynd 28 x 28 dílar. Líkan fyrir þetta gagnasafn er þá fall eða aðferð sem segir til um hvaða tölustaf tiltekin mynd sýnir. Það hefur mynd af tölustaf sem viðfang og varpmengið \(\{0, 1, 2, 3, 4, 5, 6, 7, 8, 9\}\).

../_images/mnist.jpg

Mynd 3.1: Hluti af MNIST gagnasafninu

3.2  Tvíkostaflokkun

Mikilvæg tegund flokkunar er tvíkostaflokkun (binary classification), þegar flokkarnir eru aðeins tveir. Sem dæmi um slíka flokkun má taka það verkefni að þekkja hvort díll á gervitunglamynd sé jökull eða ekki, en ætlunin er að fjalla nánar um það síðar í þessum fyrirlestrarnótum. Ein aðferð fyrir tvíkostaflokkun er að beita tvíkostaaðhvarfi (logistic regression).

Um tvíkostaaðhvarf er fjallað nánar hér.

3.3  Flokkunarlíkön og -gögn

Flokkunarlíkani ásamt fullkomnum upplýsingum um óvissu mætti lýsa stærðfræðilega með falli

\[\text{Flokkur} = f(X)\]

ásamt óvissufylki \(E\) með

\[e_{ij} = P(f(X) = i\, | \,\text{réttur flokkur } X \text{ er } j)`.\]

Fullkominn flokkari hefur óvissufylki jafnt einingafylki og góður flokkari hefði lítil stök utan hornalínu.

Athugasemd:

Rithátturinn \(P(A|B)\) er lesinn „P af A gefið B“ og táknar líkurnar á að A gerist gefið að B gildi.

../_images/flokkari.jpg

Mynd 3.2: Flokkunarlíkan fyrir flokka A, B,…, Z

Gögn til að meta slíkt líkan gætu haft \(n\) \(X\)-vigra, \(x_1, \ldots, x_n\), ásamt upplýsingum um réttan flokk fyrir hvern vigur, \(F_1, \ldots, F_n\).

4  Vélanám

4.1  Ný sýn á stærðfræðileg líkön

Aðhvarfsgreining hefur gengið í vissa endurnýjun með tilkomu gervigreindar og gagnavísinda. Innan þeirra vísinda er nefnilega fræðigrein sem nefnist vélanám (machine learning) sem á margt skylt með aðhvarfsgreiningu. Báðar snúast um að smíða stærðfræðileg líkön af mælingum eða gögnum og mikilvægur þáttur beggja er að nota líkönin til að spá útfrá nýmældum gögnum. Í gagnanámi koma sömu tvær gerðir af breytum við sögu (skýribreytur og fylgibreytur) en reyndar er orðfærið oft annað, a.m.k á ensku, því algengt er að kalla skýribreyturnar features og fylgibreyturnar labels.

4.2  Aðhvarfsgreining og vélanám

Á netinu má finna greinar sem bera saman aðhvarfsgreiningu og vélanám, m.a. þessa hér. Þar er m.a. sagt að í aðhvarfsgreiningu sé algengara að nota líkön sem tengjast sérstökum tölfræðidreifingum, oft normaldreifingu, en í vélanámi ekki: þar sé algengt að nota t.d. trjáflokkara eða tauganet. Annað sem skilur að eru aðferðir við að meta gæði líkana.

Um tengsl gagnvísinda, tölfræði, vélanáms og ýmissa undirgreina og skyldra greina er fjallað í 14. kafla í Fyrirlestarnótum um Python.

4.3  Framgangsmáti við mátun og gæðamat

Þegar aðhvarf er framkvæmt með vélanámsaðferðum er algengast að byrja á að skipta gögnunum upp í þjálfunarhluta (training set) og prófunarhluta (test set) af handahófi, gjarna með ca. 80% í þjálfunarhlutanum og 20% í hinum. Síðan er líkanið mátað með þjálfunargögnunum en gæðamælikvarðinn reiknaður á prófunargögnunum, oft annaðhvort sem staðalfrávik leifa (RMSE) eða meðaltölugildisskekkja MAE.

Python:

Pakkinn scikit-learn inniheldur ýmsar aðferðir til aðhvarfsgreiningar með vélanámi [Hér á eftir að bæta við texta].

4.4  Krossgilding

Ef gagnapunktar eru ekki mjög margir (t.d. færri en 1000) er hætt við að gæðamatið sem fæst á prófunarhlutanum verði ekki mjög nákvæmt, og önnur gæði mælist ef gögnunum er skipt öðruvísi milli þjálfunar og prófunar. Til að bregðast við því má beita svonefndri krossgildingu (cross validation), en þá er gögnunum skipt oft upp og mátað og prófað á mörgum mismunandi þjálfunar- og prófunarhlutum. Síðan er hægt að skoða bæði meðaltal og staðalfrávik gæðamælikvarðanna yfir allar þessar skiptingar.

Með k-faldri krossgildingu (k-fold cross validation) er gögnunum fyrst skipt upp í \(k\) hluta og síðan er mátað \(k\) sinnum; í hvert skipti er einn hlutinn notaður fyrir prófun og afgangurinn fyrir mátun. Dæmigert er að nota \(k=5\) eða \(k=10\).

Python:

Í scikit-learn eru aðferðir fyrir krossgildingu. [Hér á eftir að bæta við]

[Hér á eftir að bæta við texta, m.a. um LOESS]

5  Lesefni um líkansmíð, aðhvarfsgreiningu og vélanám

5.1  Fjórar góðar bækur

  1. Python Data Science Handbook (Jake VanderPlas). Fimmti kaflinn fjallar um vélanám.

  2. An Introduction to Statistical Learning – with Applications in Python (James, Witten, Hastie, Tibshirani – Springer 2021). Læsileg bók, vitnað í sem SL-bók hér.

  3. Introduction to Machine Learning with Python (Müller, Guido – O’Reilly 2019). Ítarleg umfjöllun m.a. um allskonar flokkunaraðferðir þ.á.m. tvíkostaaðhvarf (logistic regression). Samt vantar stærðfræðiformúlur.

  4. Hands-on Machine Learning with Scikit-Learn, Keras, and TensorFlow (Géron – O’Reilly 2019). Líka fín bók, fleiri stærðfræðiformúlur, en þó er ekki fjallað um TensorFlow og Keras hér.

5.2  Annað lesefni (á netinu)

  1. Kaflinn Aðhvarfsgreining (Anna Helga Jónsdóttir) í Edbook-fyrirlestrarnótum: Tölfræði frá grunni

  2. Kaflinn Tvíkostaaðhvarfsgreining (Sigrún Helga Lund) í sömu nótum

  3. Kaflinn Gervigögn og aðhvarf (KJ) í Fyrirlestarnótum um Python

  4. Glærur KJ. Innihalda m.a. valdar myndir úr SL-bókinni.

  5. Um tvíkostaaðhvarf. Þetta skjal verður fljótlega sameinað þessum fyrirlestrarnótum.