Lineær regression med maskinlæring

Kunstig intelligens bygger på metoden maskinlæring, hvorfor pædagogiske introduktioner til maskinlæring søges. Det tager lidt, at lave ansigts-genkendelses med maskinlæring, men et første skridt kan være lineær regression.

Der er bedre måder, at lave lineær regression end maskinlæring, fx. mindste kvadraters metode (jeg tør ikke sige, at MK-metode løser problemet eksakt). Så dette er en introduktion til at gradvist tilpasse sine parametre ud fra kendte data.

Her har jeg fremstillede nogle data i Excel, som næsten ligger på en ret linje, og gemt dem som en .csv fil:

Jeg har brugt sproget Python i miljøet Jupyter, men en simplere editor kan let findes: Elevernes Excel eller CAS-værktøj kan også gøre det.

Koden behøver ikke være længere end som vist herunder. genfromtxt omdanner to søjler i Excel til en liste af lister (matrice). Hver liste indeholder et datapar (x,y). Variablen “points [j][1]” henviser derfor til en y-værdi i datapar nr. j.

Det mest interessante sker nok i opdateringen af a og b, hvor d(error)/d(a)=x og d(error)/d(b)=1 anvendes.

Min maskinlærings-algoritme giver:

y=2,08x+3,72

Excel giver:

y=2,05x+3,8

Det er da ret godt gået, de få punkter taget i betragtning.

Jeg ville også lave nogle grafiske repræsentationer af processen. Så blev koden noget længere.

Summen af (error)^2 for hver gang datasættet løbes igennem (1 epoch), falder i løbet af de første ca. 10 iterationer (figur t.h.). Error kvadreres for at tage højde for positive og negative error-værdier.

Summen af errors^2 dækker over nogle udsving mellem positive og negative error-værdier, som jeg kan se når jeg printer alle error-værdierne. Det er måske forklaringen på, at jeg ikke kommer nærmere Excel’s løsning.

For 50 iterationer og startværdier på a=1 og b=0 (blå linje), ses herunder hvordan linjen drejes opad og b løfter sig med hver gentagelse. Mest i starten, derefter finjustering:

Hvis learning rate hæves for meget, herunder 0,1, fås nonsens. Algoritmen springer mellem over- og undershoot?

Vi vil gerne undgå: ”De [eleverne] taster noget ind på lommeregneren eller computeren, men har ikke forståelsen af, hvad de gør.” Leslie Christensen, CBS, Gymnasieskolen 29.april 2016.

Hvordan skal eleverne arbejde med forstå algoritmen?  Manuelt gennemregne et par iterationer? En bedre grafisk animation af linjerne, ville også være rart.

Perspektivet i metoden er også et par tanker værd..

The following two tabs change content below.

Rasmus Kragh Wendelbo

LektorSvendborg Gymnasium

Nyeste indlæg af Rasmus Kragh Wendelbo (se alle)

Leave a Reply

Be the First to Comment!

Kommentarer

wpDiscuz