Indholdsfortegnelse:

Hovedkomponentanalyse: 4 trin
Hovedkomponentanalyse: 4 trin

Video: Hovedkomponentanalyse: 4 trin

Video: Hovedkomponentanalyse: 4 trin
Video: PCA Eigenvalues 2024, November
Anonim
Hovedkomponentanalyse
Hovedkomponentanalyse

Principal Component Analysis er en statistisk metode, der konverterer et sæt af muligvis korrelerede variabler til et sæt lineært ukorrelerede værdier ved hjælp af ortogonale transformationer. I enkle ord givet et datasæt med flere dimensioner hjælper det med at reducere antallet af dimensioner, hvilket gør dataene lettere at læse.

Trin 1: Originale planer

Jeg kom ind i denne klasse med den idé, at jeg ville forstå og forhåbentlig skrive en algoritme, der ville være i stand til at udføre ansigtsgenkendelse, når den blev leveret med billeder. Jeg havde ingen tidligere erfaring eller viden om noget at gøre med ansigtsgenkendelse og anede ikke, hvor svært det er at opnå sådan noget. Efter at have talt med professor Malloch indså jeg, at jeg er nødt til at lære mange ting, før jeg fuldt ud kan forstå den opgave, jeg til sidst planlagde at udføre.

Efter lidt research besluttede jeg endelig, at jeg mere end noget andet havde brug for at lære lineær algebra og nogle grundlæggende principper for maskinlæring og besluttede mig for PCA (hovedkomponentanalyse) for at være mit mål for denne klasse.

Trin 2: Forskning

Forskning
Forskning

Det første trin var at besøge biblioteket og finde enhver bog, der introducerede mig til maskinlæring og mere specifikt billedbehandling. Dette viste sig at være meget sværere end jeg troede, og jeg endte ikke med meget fra det. Jeg besluttede derefter at spørge en ven, der arbejdede i Vision Lab, som bad mig undersøge lineær algebra og mere specifikt egenvektorer og egenværdier. Jeg havde en vis erfaring med lineær algebra fra en klasse, som jeg havde taget i mit andet år, men forstod ikke, hvordan egenvektorer eller egenværdier kunne være nyttige, når jeg håndterede billeder. Da jeg undersøgte mere, forstod jeg, at billeder ikke var andet end enorme datasæt og derfor kunne behandles som matricer, og det blev lidt klarere for mig, hvorfor egenvektorer var relevante for det, jeg lavede. På dette tidspunkt besluttede jeg, at jeg skulle lære at læse billeder ved hjælp af python, da jeg skulle bruge python til mit projekt. Oprindeligt startede jeg med at bruge CV2.imread til at læse billederne, men det viste sig at være virkelig langsomt, og derfor besluttede jeg at bruge glob og PIL.image.open til at gøre det, da dette er meget hurtigere. Denne proces på papir virker relativt tidskrævende, men tog faktisk lang tid, da jeg skulle lære at installere og importere forskellige biblioteker til PyCharm (IDE) og derefter læse dokumentationen online for hvert bibliotek. I processen med at gøre det lærte jeg også, hvordan man bruger pip install -sætninger i kommandoprompten.

Efter dette var det næste trin at finde ud af, hvad jeg helt præcist ville gøre og lære i billedbehandling, og i første omgang planlagde jeg at lave skabelonmatch, men mens jeg undersøgte det, lærte jeg om PCA og fandt det mere interessant, så jeg besluttede mig for at gå med PCA i stedet. Det første udtryk, der blev ved med at dukke op, var K-NN (K- nærmeste nabo) algoritme. Dette var min første eksponering nogensinde for en algoritme til maskinlæring. Jeg lærte om trænings- og testdata og hvad 'træning' af en algoritme betyder. At forstå K-NN-algoritmen var også udfordrende, men det var meget tilfredsstillende at endelig forstå, hvordan det fungerer. Jeg arbejder i øjeblikket på at få koden til K-NN til at fungere, og jeg er meget tæt på at blive færdig.

Trin 3: Står over for vanskeligheder og lært lektioner

Den første store vanskelighed var selve projektets omfang. Dette var mere forskningsorienteret end fysisk. Efterhånden som ugerne gik nogle gange, så jeg på de fremskridt, mine kammerater gjorde og følte, at jeg ikke gjorde nok, eller at jeg ikke gjorde hurtige nok fremskridt, og det var nogle gange meget demotiverende. At tale med professor Malloch og bare forsikre mig selv om, at jeg virkelig lærte ting, der var meget nye for mig, hjalp mig med at blive ved. Et andet problem var, at det at kende teoretiske ting og anvende det er to forskellige ting. Selvom jeg vidste, hvad jeg skulle, var det faktisk en anden historie at kode det i python. Det var her, bare at læse dokumentationer online og spørge venner, der kendte til det mere, hjalp meget til endelig at finde ud af en handlingsplan.

Jeg tror personligt, at det at have et større bibliotek med bøger og dokumenter på M5 kunne hjælpe folk, der arbejder på projekter. Også at have en digital registrering i realtid af de projekter, der udføres af studerende, så andre studerende og ansatte kan se på det og blive involveret, hvis det interesserer dem, er en god idé for M5.

Da projektet er slut, har jeg lært så meget på så kort tid. Jeg har fået et meget kendskab til maskinlæring og føler, at jeg har taget de første skridt for at blive mere involveret i det. Jeg har indset, at jeg kan lide computersyn, og at jeg måske vil forfølge dette selv i fremtiden. Vigtigst af alt har jeg lært, hvad PCA er, hvorfor det er så vigtigt, og hvordan man kan bruge det.

Trin 4: Næste trin

For mig var dette bare at ridse overfladen af noget meget større og noget, der er meget vigtigt i nutidens verden, det vil sige maskinlæring. Jeg planlægger at tage kurser relateret til maskinlæring i den nærmeste fremtid. Jeg planlægger også at bygge min vej op til ansigtsgenkendelse, da det var her hele dette projekt startede. Jeg har også ideer til et sikkerhedssystem, der anvender en kombination af funktioner (en af dem er personens ansigt) for at gøre det virkelig sikkert, og det er noget, jeg vil arbejde med i fremtiden, når jeg har en bredere forståelse af tingene.

For alle som mig, der er interesseret i maskinlæring og billedbehandling, men ikke har nogen tidligere erfaring, vil jeg stærkt foreslå først at lære og forstå lineær algebra sammen med statistik (især distributioner). For det andet vil jeg foreslå at læse Pattern Recognition and Machine Learning af Christopher M. Bishop. Denne bog hjalp mig med at forstå det grundlæggende i, hvad jeg gik ind til og er meget struktureret.

Anbefalede: