Hvad kan man egentlig bruge universitets kurser til?

Jeg har brugte nogle hektiske måneder på at prøve at balancere et arbejde og familie samtidig med at jeg har taget et kursus på KU ved navnet ”Statistical Method in Machine learning”.

Kurset var fedt og jeg kan varmt anbefale det, specielt hvis du kan gå ned i arbejdstid mens det står på, for ellers er det noget af en mundfuld der kan blive lidt for meget både for dig selv og dine omgivelser.

”Men hvad kan man egentlig bruge sådan et universitets kursus til?”, blev jeg ofte spurgt om, når jeg har fortalt at jeg var i gang med et kursus på uni. Så med kurset veloverstået og eksamensopgaven uploaded, tænkte jeg, at jeg skulle se hvad jeg egentlig kunne bruge de algoritmer til, som jeg havde implementeret i opgaven. Så jeg prøvede at logge ind på Kaggle.com(*).

Digit recognizer, er en konkurrence der handler om at genkende håndskrevne cifre. Jeg valgte problemet fordi det minder om et problem som også blev stillet til eksamen, og faktisk er et meget ret almindeligt klassificerings problem. Jeg brugte en klassificerings algoritme med det sexede navn k-nearest neighbors, der kan findes i maven på mange forskellige systemer, dels fordi den er forholdsvis nem at implementere og rimelig nem at optimere til at give gode resultater.

For at forstå hvad k-nearest neighbors algoritmen gør, kan man forstille sig et koordinatsystem som indeholder en mængde punkter (eller bare kigge på koordinatsystemet nedenfor), til hvert punkt er der en klassifikation (som er repræsenteret som en farve). Mængden som indeholder disse punkter, med klassifikationer, kaldes for et træningssæt.

For at klassificere et nyt punkt kigger man blot på de k nærmeste naboer og beregner hvilken klassificering er bedst repræsenteret. Så f.eks. hvis du skal klassificere punktet (1,-1) er det nemt at se at det skal være blåt.

Normalt prøver man nogle forskellige værdier Koordinat system.for k og laver noget som hedder krydsvalidering, men i mit hovmod tænkte jeg at vi jo lige kunne prøve at køre den med k=9, som var det optimale i eksamen.

Hvilket k der er optimalt, afhænger meget af den type data man bruger den på, så normalt går der en del arbejde forud for at vælge det rette k. At vælge det rette k har stor betydning og kan betyde meget store udsving i kvaliteten af de svar som den giver. F.eks. i eksemplet ovenfor kan det have stor betydning hvis man forstiller sig at man skal klassificere punktet (1,-0.5) hvis k = 3 er det klart at det nye punkt skal være grønt også, mens hvis k = 9 bliver det rødt.

Eksamensprojektet have 6 dimensioner og et trænings sæt på 300, mens træningssættet for digit recognizer har 726 dimensioner og 42 000 observationer (billeder med en klassifikation). Så det tog noget længere at udregne svaret som bestod i at klassificer 28 000 billeder af håndskrevne cifre, faktisk en hel det. Det tog lidt over 21 timer.

Uden at have analyseret data, kunne min simple implementation klassificere 91.957 % rigtigt, hvilket gav mig den ringe position af 285 på listen. Hvilket jo ikke er i toppen, men jeg var ret overrasket over at koden kunne bruges til noget som ikke var akademisk, så nemt.

Der er en del tricks som man kan gøre for at forbedre denne algoritme, men mere om det i en anden blog.

(*) Kaggle.com er et konkurrence site, hvor man får et dataset med observationer og klassifikationer som kaldes et træningsset, man skal så baseret på sit træningsset, klassificere et sæt med nye observationer. I ovenstående digit recognizer konkurrence får man givet et datasæt hvor observationerne er en liste af intensitet for hver pixel i et billede af et håndskrevet ciffer samt en klassificering, altså hvad for et tal det er.

 

5 comments for “Hvad kan man egentlig bruge universitets kurser til?

  1. Hvis man ikke har tid til at tage et kursus hvor man skal møde op på bestemte tidspunkter, kan jeg anbefale coursera.org som også udbyder et Machine Learning kursus. Kurset gennemgår udover K-nearest heighbour lineær -og logistisk regression samt neurale netværk.

  2. Cousera er rigtigt godt, der er mange kurser omkring machine learning og Big Data. Jeg har taget flere af dem og nyder den frihed der. Specielt vil jeg anbefale Ng’s Machine learning course(https://www.coursera.org/course/ml), som iøvrigt lige netop er opstartet igen, så hvis man er hurtig kan man lære machine learning hen over sommeren.

    Men når det er sagt så må jeg også hellere pointer at der er meget stor forskel på hvad du kan og har lært efter et coursera kursus og efter et KU kursus,

  3. […] For at teste hvor nemt det er, besluttede jeg at prøve at udnytte samme algoritme som beskrevet i en tidligere indlæg ved navnet K-means og se om jeg kan slå min nuværende position på den Kaggle-konkurrence som jeg skrev om i samme indlæg. […]

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *