FYRIRLESTRARNÓTUR UM AÐHVARF OG VÉLANÁM
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ð:
þ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:
og þessar mælingar má svo nota til að finna gott líkanfall. Vigur með öllum fylgibreytumælingunum er
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ð:
Á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 þá
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:
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.4.
1.3 Sennileikaaðferð
Önnur mikið notuð aðferð til að meta stika aðhvarfslíkana nefnist sennileikaaðferð (maximum likelihood method). Fyrir líkanið (2) og gefin gögn má skilgreina sennileikafall svo:
Sennileikamat á stikunum \(\beta\) fæst með því að leysa verkefnið:
Hágildispunktur þessa falls gefur í vissum skilningi líklegustu gildi stikanna. Jafngilt verkefni er að hámarka logra sennileikafallsins (því \(log\) er vaxandi fall), sem sé fallið:
Þetta fall hegðar sér betur tölulega en sjálft sennileikafallið og þessvegna er það venjulega notað. Almennt þarf að nota aðferðir ólínulegrar bestunar til að hámarka það, og nútímahugbúnaður gerir það sjálfkrafa á bak við tjöldin.
Ef líkanið er línulegt (eins og í næstu grein) og skekkjurnar normaldreifðar eru aðferð minnstu kvaðrata og sennileikaaðferð jafngildar, og þá er reyndar hægt að sleppa við ólínulegu bestunina og leysa normaljöfnur í staðinn eins og vikið verður að.
1.4 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

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
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:
þ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.

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:
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.
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.5 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ð:
þ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
Stærðfræðileg líkön eru misgóð. Það er t.d. oftast nálgun við raunveruleikan að lýsa sambandi með beinni línu eða plani, stundum er besta líkanið parabóla og stundum lografall. Fyrir utan að gera upp á milli mismunandi líkana er líka mikilvægt að meta rétt skekkju sem fylgir notkun tiltekins líkans til að spá. Þessi tvö sjónarmið fara oft saman, þ.e.a.s. það líkan sem gefur lægsta spáskekkju er valið.
2.1 Skekkjur (frávik)
Við byrjum á að skoða mælikvarða á spáskekkju. Algengt er að reikna fyrst meðalferviksskekkju (mean square error), MSE, eða kvaðratrót hennar, staðalfráviki leifa (root mean square error), RMSE.
Með aðferð minnstu kvaðrata er valið það líkan sem hefur lægst MSE (eða RMSE, sem er jafngilt). Eins og útskýrt er í kaflanum um útlaga hér neðar kemur líka til greina að nota meðaltölugildisskekkju (mean absolute error), MAE, og stundum er rétt að mæla skekkju hlutfalslega; þá mætti líka tala um prósentuskekkju.
Orðið frávik (deviation) er stundum notað í stað skekkju, og þá skammstafanirnar MSD, RMSD og MAD.
Þessar tölur mæla skekkju í tiltækum gögnum, en ef meta skal skekkju þegar líkani er beitt á ný gögn þarf að taka tillit til viðbótarskekkju vegna skekkju í metnum stikum og vegna þess að ekki hefur tekist að velja rétt líkan.
Mest notuðu gæðamælikvarðarnir sem fjallað er um hér á eftir, \(R^2_{\text{adj}}\), AIC, AICc og BIC taka allir a.m.k. hluta þessarar viðbótarskekkju með í reikninginn.
Viðbótarskekkjuna er oft best að meta með því að nota ekki öll tiltæk gögn til að meta stikana, heldur geyma hluta þeirra til að meta hana eftirá. Sá hluti sem mátað er nefndur þjálfunarmengi (training set) og afgangurinn prófunarmengi (test set). Í krossgildingu (cross validation) eru framkvæmdar nokkrar slíkar skiptingar á gögnunum. Við munum fjalla um gagnaskiptingu af þessu tagi í tengslum við vélanám í næsta kafla.
2.2 P-gildi
Skoðum nú mælikvarða sem nota má til að velja milli líkana, og lítum fyrst á p-gildi (p-values). 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é:
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

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é
(sem reyndar er ólíklegt að við höfum áhuga á) gegn gagntilgátunni
2.3 Öryggisbil
Önnur aðferð með sama markmið og útreikningur p-gildis 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.2.
2.4 Skýringarhlutfall
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:
Athugasemd:
Í \(\pstar\) er \(y\) mælingavigur og \(e\) leifavigur sbr. grein 1.1. \(\operatorname{Var}(y)\) er dreifni \(y\), reiknuð með:
þar sem \(\bar{y}\) er meðaltal \(y_i\)-anna (og eins fyrir \(\operatorname{Var}(e)\)). Skv. (1) í kafla 1.1 gildir að
og ef við höfum metið sæmilegt líkan ætti þar með að gilda
Reyndar er hægt að sanna að \(\pstar\) 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ð \(\pstar\) fæst af \(\pstarr\) með \(=\)-merki.
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 (sjá grein 3.1) 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ð:
þ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.
2.5 AIC, AICc og BIC
Á 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:
þ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.
Árið 1978 skrifaði Gideon Schwarz grein um annan mælikvarða sem nefnist BIC (Bayesian information criterion) og er skilgreindur með
Hann notast eins og AIC, en skilar yfirleitt líkönum með heldur færri stika.
Æfing: Mat á reglunarstika
Lesið um L1- og L2-reglun á Wikipediu (undir Lasso og ridge-regression). Báðar þessar aðferðir eru með stika fyrir styrk reglunarinnar. Finnið út hvernig hægt er að ákvarða þennan styrk, annarsvegar með því að nota gæðamælikvarða (t.d. AICc) og hinsvegar með krossgildingu. Skoðið meðal annars „One Standard Error Rule“. Hér gæti borgað sig að spyrja spjallmenni.
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.4) prentar m.a. út gildi á \(R^2\), \(R^2_\text{adj}\), AIC og BIC.
3 Ýmis aðhvarfsvandamál
3.1 Ofmátun og reglun
Eitt af þeim vandamá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. Þetta veldur svo því að viðbótarspáskekkjan sem nefnd var hér að framan verður mikil.
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.

Mynd 3.1: Ofmátun
Aðferðir til þess að fást við ofmátun eru kallaðar reglun (regularization). Oftast er bætt við fallið sem lágmarkað er til að meta stikana liðum sem refsa fyrir of marga (eða stóra) stika. Sérstaklega má nefna L1- og L2-reglun sem nánar má lesa um á Wikipediu. L1-reglun er líka kölluð LASSO-reglun og L2-reglun nefnist líka ridge regression.
Við þjálfun tauganeta er líka hægt að nota svonefnda brottfellingu (dropout) til að forðast ofmátun.
3.2 Útlagar
Rangir gagnapunktar eru nefndir útlagar (outliers). Þeir geta stafað af ýmsum ástæðum, t.d. innsláttarvillum eða bilunar í mælitækjum, og ef hægt er að teikna gagnasafnið sjást þeir sem stakir punktar langt frá megingögnunum. Til að fást við vandann 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.
3.3 Rangt líkan valið
Stærfræðileg líkön verða seint nákvæm lýsing á raunveruleikanum svo nánast útilokað er að velja alveg rétt líkan. En stundum eru nokkur líkön nokkurn vegin jafngóð samkvæmt gæðamælikvörðum, og þá getur verið erfitt að velja á milli. AICc gæti t.d. lækkað jafn mikið ef stika A er bætt við líkan og ef stika B er bætt við það. Þessum vanda má bregðast með því að taka meðaltal mismunandi líkana (model averaging). Hér förum við ekki nánar út í þá sálma, en þetta er samt mikilvæg aðferðafræði.
4 Flokkun
Flokkun (classification) og klösun (clustering) eru náskyld hugtök. Meginmunurinn er sá að í flokkun eru notuð merkt gögn 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á, en um klösun má lesa í Fyrirlestrarnótum um stærðfræði og reiknifræði.
4.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\}\).

Mynd 4.1: Hluti af MNIST gagnasafninu
4.2 Flokkunarlíkön og -gögn
Flokkunarlíkani ásamt fullkomnum upplýsingum um óvissu mætti lýsa stærðfræðilega með falli
ásamt óvissufylki \(E\) með
Fullkominn flokkari hefur óvissufylki jafnt einingafylki og góður flokkari hefði lítil stök utan hornalínu. Heildarvillutíðni flokkarans er summa staka utan hornalínunnar.
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.

Mynd 4.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\).
Í Wikipedíugrein um MNIST-gagnasafnið eru taldir upp ýmsir flokkarar með heildarvillutíðni frá 7.6% og alveg niður í 0.09%.
4.3 Gagnlíkindi
Gagnlíkindi (odds) eru hlutfallið á milli líkinda þess að atburður gerist og að hann gerist ekki. Hugtakið er talsvert notað í veðmálum og segir þá til um vinningsupphæð. Ef t.d. teningi er kastað mætti tala um gagnlíkindin 1 á móti 5 eða 1:5, 1 er það sem lagt er undir og 5 gróðinn ef rétta talan kemur upp. Gagnlíkindi eru m.a. útskýrð í 4. kafla í fyrirlestrarnótunum Tölfræði frá grunni.Fyrir lág gildi á \(p\) (t.d. \(p < 0.1\) eða jafnvel \(p < 0.2\)) er ekki umtalsverður munur á gagnlíkindunum og líkunum \(p\) og túlkun beggja er svipuð.
Gagnlíkindi reynast líka nytsamleg við tvíkostaflokkun eins og við komumst að í næstu grein. Til glöggvunar er hér mynd af sambandi gagnlíkinda og líkinda.

4.4 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.
Byrjum með einfalt dæmi: Gerum ráð fyrir að það eigi að búa til líkan af hjartasjúkdómum með hliðsjón af mataræði. Þar sem ein mikilvægasta breytan sem skýrir hjartaáföll er aldur skulum við leyfa honum að vera með, og við leyfum líka kyni að fljóta með. Langalgengast er að gera ráð fyrir margfeldisáhrifum, og þá mætti byrja á að skrifa líkurnar á að fá hjartaáfall (t.d. á næstu 10 árum) sem margfeldi grunnáhættu og áhættuþátta sem tengjast aldri, mataræði og kyni, \(M\), \(A\) og \(K\), sem sé:
Ef málið er skoðað nánar kemur í ljós að slíkt líkan virkar ekki vel í reynd. Ef við viljum að hver áhættuþáttur hafi bein margfeldisháhrif gæti einstaklingur me marga jákvæða áhættuþætti hæglega haft meira en 100% áhættu, og ef neikvæðu þættirnir eru margir gæti heildaráhættan orðið minni en 0. Í staðinn er notað margfeldislíkan á gagnlíkindi, nánar tiltekið
Við gerum ráð fyrir að grunnáhættan \(a_0\) eigi við 50 ára karl sem borðar allt, \(a_1\) gefi viðbótaráhættu fyrir hvert ár umfram 50, \(a_{20} = 1\), \(a_{2m}\) gefi margföldunaráhrif fyrir grænmetisætu (\(m=1\)), vegan (\(m=2\)) og fiskætu (\(m=3\)) og loks gefi \(a_3\) stuðul fyrir konur. Ef t.d. \(a_1 = 1.02\) þá eykst hættan um 2% fyrir hvert ár sem maður eldist, ef \(a_{2m} = 0.92\) þá minnkar það að vera vegan hættuna á hjartaáfalli um 8% og ef \(a_3 = 0.88\) er áhætta kvenna 12% minni en karla.
Athugasemd:
Í þessu líkani koma við sögu breytur af þremur gerðum: aldur er samfelld breyta (continuous), \(m\) er flokkabreyta (categorical) og kyn er tvíundabreyta (eða 0-1-breyta) (binary).
4.5 Tvíkostaaðhvarf
Ef tekinn er logri af líkanjöfnunni (\(\text{*}\)) í síðustu grein fæst líkan:
þar sem:
og þar með:
Ef gefin eru gögn um \(n\) einstaklinga af báðum kynjum, á ýmsum aldri, með ýmsar matarvenjur og upplýsingar um hvort þeir hafi fengið hjartaáfall má meta stika slíks líkan með því að hámarka svonefnt sennileikafall af stikunum \(b_0\), \(b_1\), \(b_{1m}\), \(b_{2m}\) og \(b_{3m}\).
Python:
Python pakkinn statsmodels er með innbyggðan klasa, Logit
fyrir
tvíkostaaðhvarf. Pakkinn scikit-learn (sem fjallað er um hér aftar) býður
líka upp á tvíkostaaðhvarf með klasanum LogisticRegression
.
Athugasemd: Um logit
Náttúrulegur logri af gagnlíkindum hefur fengið sérstakt nafn í tölfræði/stærðfræði, nefnilega \(\operatorname{logit}\) eins og sést að ofan. Hér er graf logit-fallsins:

Það hefur aðfellur í \(p=0\) og í \(p=1\).
Athugasemd: Meira um tvíkostaaðhvarf
Í 11. kafla í Tölfræði frá grunni er stuttlega rætt um tvíkostaaðhvarf.
Athugasemd: Lograreglur
Hér að framan hafa eftirfarandi reglur verið notaðar:
(ath. að \(\log\) táknar hér náttúrulega logra, \(\ln\)):
Sýnidæmi:
Í vísindagrein um ofnæmi barna eftir KJ og marga fleiri er beitt tvíkostaaðhvarfi. Meðal áhættuþáttanna sem notaðir eru í greininni eru:
áhrifaþáttur |
breyta |
tegund |
gildi |
Borg |
B |
flokka |
1 = Reykjavík, 2 = Southampton … 10 = Aþena |
Fjölskyldusaga um ofnaæmi |
fjsaga |
samfelld |
0 = engin upp í 5 = mikil |
Ofnæmi í frumbernsku |
ungofn |
samfelld |
0 = ekkert upp í 3 = mikið |
Kyn |
kyn |
0-1 |
0 = strákur, 1 = stelpa |
Systkini |
syst |
0-1 |
0 = engin eldri, 1 = eldri systkyni |
Leikskóli |
leiksk |
0-1 |
0 = nei eða sjaldan, 1 = a.m.k. 10 klst. á viku í eitt ár |
Reykt á meðgöngu |
reykt |
0-1 |
0 = nei, 1=já |
Keisaraskurður |
keisari |
0-1 |
0 = nei, 1=já |
Þetta gefur líkanið:
og með því að taka logra báðum megin fæst:
þar sem \(b_{0B} = \log{a_{0B}}\) og \(b_k = \log{a_k}\). Við tökum eftir að það þarf engan stika fyrir grunnáhættu, borgarstikarnir koma í stað hans.
4.6 Iverson-ritháttur
Tvíkostalíkön með flokkabreytum eru stundum rituð með svonefndum Iverson-rithætti, t.d.:
þar sem hægt er að hugsa sér að allar stærðir séu vigrar og \([P]\) táknar vigur sem er 1 þar sem \(P\) er sönn fullyrðing en 0 annarsstaðar.
[Fyrri útgáfu af framangreindri umfjöllun um tvíkostaaðhvarf má finna hér].
5 Vélanám
5.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. Í vélaná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. Oftast er líka talað um þjálfun (training) í stað mátunar.
Með þessari endurnýjun varð líka til nýtt nafn á gömlum fræðum, tölfræðilegt nám (statistical learning) sem auk aðhvarfsgreiningar nær yfir ýmsar vélanámsaðferðir sem byggja á tölfræði. Í þessum fyrirlestrarnótum höldum við okkur við orðið aðhvarfsgreiningu.
5.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: auk aðhvarfs sé þar algengt að nota t.d. tauganet (neural networks), trjáflokkara (decision trees) og stoðvigravélar (support vector machines). Tvær síðastnefndu aðferðategundirnar voru upphaflega þróaðar fyrir flokkun. Meðal aðferðafræða vélanáms má líka nefna samsett nám (ensemble learning) og styrkt nám (reinforcement learning).
Annað sem skilur að aðhvarfsgreiningu og vélanám eru aðferðir við að meta gæði líkana. Í þessum fyrirlestrarnótum er áherslan á að kynna aðferðir vélanáms til gæðamats: Við notum klassískar aðhvarfsaðferðir til að meta stika án þess að nota klassísku gæðamælikvarðana. Um tauganet, trjáflokkara og stoðvigravélar er m.a. fjallað í námskeiðinu Gervigreind.
Frekari umfjöllun um tengsl gagnvísinda, tölfræði, vélanáms og ýmissa undirgreina og skyldra greina má finna í 14. kafla í Fyrirlestarnótum um Python.
5.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ði reiknaður á prófunargögnunum, oft annaðhvort sem staðalfrávik leifa (RMSE) eða meðaltölugildisskekkja MAE.
5.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 má reikna meðaltal stikamats yfir alla prófunarhlutana.
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. Val á \(k\) stjórnast oft af því hve þjálfunin tekur langan keyrslutíma. Dæmigert er að nota \(k=5\) en ef þjálfunuin er hraðvirk mætti nota \(k=10\) og ef hún er tímafrek \(k=3\).
Með því að reikna staðalfrávik mats á hverjum líkanstika yfir allar skiptingar fæst mat á nákvæmni stikamatsins, og með því að reikna meðaltal og staðalfrávik gæðamælikvarða fæst gott mat á hve mikil gæðin eru og örryggi þess mats.
5.5 Kostir við notkun prófunarmengja
Gæðamælikvarðarnir sem voru á dagskrá í 2. kafla byggja allir á því að þekkt sé hvaða líkindadreifingu skekkjurnar fylgja, oft að hún sé normaldreifð, og ennfremur að hún hafi jafna dreifni (sé homoscedastic). Eins og sagt var í grein 2.1 taka þessir mælikvarðar ekki ýmsar viðbótarskekkjur inn í myndina, a.m.k. ekki að fullu.
Með því að nota prófunarmengi (og e.t.v. krossgildingu) má forðast alla þessa ókosti.
Python:
Pakkinn scikit-learn inniheldur ýmsar aðferðir til líkansmíða með vélanámi. Pakkinn skiptist upp í hlutpakka og innan hvers hlutpakka eru klasar, t.d. einn fyrir hverja tegund líkans.
Hlutpakkinn linear_model inniheldur m.a. klasana LinearRegression, LogisticRegression, Ridge og Lasso, hlutpakkinn tree hefur klasa DecisionTreeClassifier og DecisionTreeRegrossor, cluster hefur klasa KMeans og DBSCAN o.s.frv.
Svo eru líka hlutpakkar fyrir undirbúning þjálfunar eða umsjón með henni, t.d. model_selection með train_test_split og KFold (fyrir krossgildingu).
6 Lesefni um líkansmíð, aðhvarfsgreiningu og vélanám
6.1 Fjórar góðar bækur
Python Data Science Handbook (Jake VanderPlas). Fimmti kaflinn fjallar um vélanám.
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.
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.
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.
6.2 Annað lesefni (á netinu)
Kaflinn Aðhvarfsgreining (Anna Helga Jónsdóttir) í Edbook-fyrirlestrarnótum: Tölfræði frá grunni
Kaflinn Tvíkostaaðhvarfsgreining (Sigrún Helga Lund) í sömu nótum
Kaflinn Gervigögn og aðhvarf (KJ) í Fyrirlestarnótum um Python
Glærur KJ. Innihalda m.a. valdar myndir úr SL-bókinni.
Um tvíkostaaðhvarf. Þetta skjal verður fljótlega sameinað þessum fyrirlestrarnótum.