Hovedkomponentanalyse: 4 trinn
Hovedkomponentanalyse: 4 trinn
Anonim
Hovedkomponentanalyse
Hovedkomponentanalyse

Principal Component Analysis er en statistisk metode som konverterer et sett med muligens korrelerte variabler til et sett med lineært ukorrelerte verdier ved å bruke ortogonale transformasjoner. I enkle ord gitt et datasett med flere dimensjoner, hjelper det med å redusere antall dimensjoner og gjør dataene lettere å lese.

Trinn 1: Originale planer

Jeg kom inn i denne klassen med ideen om at jeg ønsket å forstå og forhåpentligvis skrive en algoritme som kunne utføre ansiktsgjenkjenning når den ble levert med bilder. Jeg hadde ingen tidligere erfaring eller kunnskap om noe å gjøre med ansiktsgjenkjenning og ante ikke hvor vanskelig det er å oppnå noe slikt. Etter å ha snakket med professor Malloch skjønte jeg at jeg må lære mange ting før jeg fullt ut kan forstå oppgaven jeg til slutt planla å oppnå.

Etter litt research bestemte jeg meg endelig for at jeg mer enn noe annet trengte å lære lineær algebra og noen grunnleggende maskinlæringsmetoder, og bestemte meg for PCA (hovedkomponentanalyse) for å være målet mitt for denne klassen.

Trinn 2: Forskning

Forskning
Forskning

Det første trinnet var å besøke biblioteket og finne en bok som introduserte meg for maskinlæring og mer spesifikt bildebehandling. Dette viste seg å være mye vanskeligere enn jeg trodde, og jeg endte opp med ingenting mye av det. Jeg bestemte meg da for å spørre en venn som jobbet i Vision Lab som ba meg se nærmere på lineær algebra og mer spesifikt egenvektorer og egenverdier. Jeg hadde litt erfaring med lineær algebra fra en klasse som jeg hadde tatt i fjoråret, men forsto ikke hvordan egenvektorer eller egenverdier kan være nyttige når jeg arbeider med bilder. Etter hvert som jeg undersøkte mer forsto jeg at bilder ikke var annet enn enorme datasett og derfor kunne behandles som matriser, og det ble litt tydeligere for meg hvorfor egvektorer var relevante for det jeg gjorde. På dette tidspunktet bestemte jeg meg for at jeg skulle lære å lese bilder ved hjelp av python ettersom jeg skulle bruke python for prosjektet mitt. I utgangspunktet begynte jeg med å bruke CV2.imread for å lese bildene, men det viste seg å være veldig tregt, og derfor bestemte jeg meg for å bruke glob og PIL.image.open for å gjøre det, da dette er mye raskere. Denne prosessen på papir virker relativt tidkrevende, men tok faktisk god tid da jeg måtte lære å installere og importere forskjellige biblioteker til PyCharm (IDE) og deretter lese gjennom dokumentasjonen online for hvert bibliotek. I prosessen med å gjøre det lærte jeg også hvordan jeg bruker pip install -setninger i ledeteksten.

Etter dette var det neste trinnet å finne ut hva jeg egentlig ville gjøre og lære i bildebehandling, og først planla jeg å gjøre malmatching, men mens jeg undersøkte det, lærte jeg om PCA og syntes det var mer interessant, så jeg bestemte meg for å gå med PCA i stedet. Det første begrepet som stadig dukket opp var K-NN (K- nærmeste nabo) -algoritme. Dette var min første eksponering noensinne for en maskinlæringsalgoritme. Jeg lærte om opplærings- og testdata og hva 'opplæring' av en algoritme betyr. Å forstå K-NN-algoritmen var også utfordrende, men det var veldig tilfredsstillende å endelig forstå hvordan det fungerer. Jeg jobber for tiden med å få koden for K-NN til å fungere, og jeg er veldig nær ferdigstillelse.

Trinn 3: Vanskeligheter og lærdom

Den første store vanskeligheten var omfanget av selve prosjektet. Dette var mer forskningsorientert enn fysisk. Etter hvert som ukene gikk, så jeg på fremgangen mine jevnaldrende gjorde og følte at jeg ikke gjorde nok eller at jeg ikke gjorde rask nok fremgang, og det var noen ganger veldig demotiverende. Å snakke med professor Malloch og bare forsikre meg selv om at jeg virkelig lærte ting som var veldig nytt for meg, hjalp meg å fortsette. Et annet problem var at det å kjenne teoretiske ting og bruke det er to forskjellige ting. Selv om jeg visste hva jeg måtte, var det faktisk en annen historie å kode det i python. Det var her bare å lese dokumentasjoner på nettet og spørre venner som visste om det, hjalp mye på å endelig finne ut en handlingsplan.

Jeg tror personlig at det å ha et større bibliotek med bøker og dokumenter på M5 kan hjelpe folk som jobber med prosjekter. Å ha en digital registrering i sanntid av prosjektene som gjøres av studenter, slik at andre studenter og ansatte kan se på det og engasjere seg hvis det interesserer dem, er en god idé for M5.

Etter hvert som prosjektet er over, har jeg lært så mye på så kort tid. Jeg har fått veldig god kunnskap om maskinlæring og føler at jeg har tatt de første trinnene for å bli mer involvert i det. Jeg har innsett at jeg liker datasyn og at jeg kanskje vil forfølge dette selv i fremtiden. Viktigst av alt har jeg lært hva PCA er, hvorfor det er så viktig og hvordan man kan bruke det.

Trinn 4: Neste trinn

For meg var dette bare å skrape overflaten til noe mye større og noe som er veldig viktig i dagens verden, det vil si maskinlæring. Jeg planlegger å ta kurs knyttet til maskinlæring i nær fremtid. Jeg har også tenkt å bygge meg opp til ansiktsgjenkjenning, da det var her hele prosjektet startet. Jeg har også ideer til et sikkerhetssystem som bruker en kombinasjonsfunksjoner (en av dem er ansiktet til personen) for å gjøre det veldig sikkert, og dette er noe jeg vil jobbe med i fremtiden når jeg har en bredere forståelse av ting.

For alle som meg som er interessert i maskinlæring og bildebehandling, men som ikke har noen tidligere erfaring, vil jeg sterkt foreslå først å lære og forstå lineær algebra sammen med statistikk (spesielt distribusjoner). For det andre vil jeg foreslå å lese Pattern Recognition and Machine Learning av Christopher M. Bishop. Denne boken hjalp meg med å forstå det grunnleggende om det jeg gikk inn på og er veldig godt strukturert.