Innehållsförteckning:

Huvudkomponentanalys: 4 steg
Huvudkomponentanalys: 4 steg

Video: Huvudkomponentanalys: 4 steg

Video: Huvudkomponentanalys: 4 steg
Video: МНОЖЕСТВЕННОЕ ОБУЧЕНИЕ | t-SNE | PCA | УЗНАТЬ ПРАКТИКУ SCIKIT | МАШИННОЕ ОБУЧЕНИЕ С PYTHON 2024, November
Anonim
Huvudkomponentanalys
Huvudkomponentanalys

Huvudkomponentanalys är en statistisk metod som konverterar en uppsättning möjligen korrelerade variabler till en uppsättning linjärt okorrelerade värden med hjälp av ortogonala transformationer. I enkla ord med en datamängd med flera dimensioner, hjälper det till att minska antalet dimensioner och gör det därför lättare att läsa data.

Steg 1: Originalplaner

Jag kom in i den här klassen med tanken att jag ville förstå och förhoppningsvis skriva en algoritm som skulle kunna utföra ansiktsigenkänning när den levererades med bilder. Jag hade ingen tidigare erfarenhet eller kunskap om något att göra med ansiktsigenkänning och hade ingen aning om hur svårt det är att uppnå något sådant här. Efter att ha pratat med professor Malloch insåg jag att jag måste lära mig många saker innan jag fullt ut kan förstå den uppgift jag så småningom planerade att uppnå.

Efter lite undersökning bestämde jag mig till slut för att mer än någonting behövde jag lära mig linjär algebra och några grunder i maskininlärning och bestämde mig för PCA (huvudkomponentanalys) för att vara mitt mål för den här klassen.

Steg 2: Forskning

Forskning
Forskning

Det första steget var att besöka biblioteket och hitta någon bok som introducerade mig till maskininlärning och mer specifikt bildbehandling. Detta visade sig vara mycket svårare än jag trodde och jag slutade inte med mycket av det. Jag bestämde mig sedan för att fråga en vän som arbetade i Vision Lab som bad mig undersöka linjär algebra och mer specifikt egenvektorer och egenvärden. Jag hade viss erfarenhet av linjär algebra från en klass som jag hade tagit under andra året men förstod inte hur egenvektorer eller egenvärden kan vara användbara när jag hanterar bilder. När jag forskade mer förstod jag att bilder inte var annat än enorma datamängder och därför kunde behandlas som matriser och det blev lite tydligare för mig varför egenvektorer var relevanta för det jag gjorde. Vid denna tidpunkt bestämde jag mig för att jag skulle lära mig att läsa bilder med python eftersom jag skulle använda python för mitt projekt. Inledningsvis började jag med att använda CV2.imread för att läsa bilderna men det visade sig vara väldigt långsamt och därför bestämde jag mig för att använda glob och PIL.image.open för att göra det eftersom det är mycket snabbare. Denna process på papper verkar relativt tidskrävande men tog faktiskt en bra tid eftersom jag var tvungen att lära mig att installera och importera olika bibliotek till PyCharm (IDE) och sedan läsa igenom dokumentationen online för varje bibliotek. När jag gjorde det lärde jag mig också hur jag använder pipinstallationsuttalanden i kommandotolken.

Efter detta var nästa steg att ta reda på vad jag egentligen ville göra och lära mig i bildbehandling och först planerade jag att göra mallmatchning, men medan jag undersökte det lärde jag mig om PCA och tyckte att det var mer intressant så jag bestämde mig för att gå med PCA istället. Den första termen som fortsatte att dyka upp var algoritmen K-NN (K-närmaste granne). Detta var min första exponering någonsin för en maskininlärningsalgoritm. Jag lärde mig om utbildnings- och testdata och vad 'träning' av en algoritm betyder. Att förstå K-NN-algoritmen var också utmanande men det var mycket tillfredsställande att äntligen förstå hur det fungerar. Jag arbetar för närvarande med att få koden för K-NN att fungera och jag är väldigt nära att bli färdig.

Steg 3: Svårigheter och lärdomar

Den första stora svårigheten var själva projektets omfattning. Detta var mer forskningsinriktat än fysiskt. När veckorna gick ibland tittade jag på de framsteg mina kamrater gjorde och kände att jag inte gjorde tillräckligt eller att jag inte gjorde tillräckligt snabba framsteg och det var ibland väldigt demotiverande. Att prata med professor Malloch och bara försäkra mig själv om att jag verkligen lärde mig saker som var mycket nya för mig hjälpte mig att fortsätta. Ett annat problem var att kunna teoretiska saker och tillämpa det är två olika saker. Även om jag visste vad jag måste, var det faktiskt en annan historia att koda det i python. Det var här att bara läsa dokumentationer online och fråga vänner som visste om det mer hjälpte mycket att äntligen komma fram till en handlingsplan.

Jag tror personligen att att ha ett större bibliotek med böcker och dokument på M5 kan hjälpa människor som arbetar med projekt. Att också ha en digital registrering i realtid av de projekt som görs av studenter så att andra studenter och personal kan titta på det och engagera sig om det intresserar dem är en bra idé för M5.

När projektet tar slut har jag lärt mig så mycket på så kort tid. Jag har fått en mycket fungerande kunskap om maskininlärning och känner att jag har tagit de första stegen för att engagera mig mer i det. Jag har insett att jag gillar datorsyn och att jag kanske vill fortsätta med det även i framtiden. Viktigast av allt har jag lärt mig vad PCA är, varför det är så viktigt och hur man använder det.

Steg 4: Nästa steg

För mig var det bara att skrapa ytan på något mycket större och något som är mycket viktigt i dagens värld, det vill säga maskininlärning. Jag planerar att ta kurser relaterade till maskininlärning inom en snar framtid. Jag planerar också att bygga mig upp till ansiktsigenkänning eftersom det var där hela detta projekt började. Jag har också idéer för ett säkerhetssystem som använder en kombination av funktioner (en av dem är personens ansikte) för att göra det riktigt säkert och det här är något som jag vill arbeta med i framtiden när jag har en större förståelse för saker.

För alla som jag som är intresserade av maskininlärning och bildbehandling men inte har någon tidigare erfarenhet, skulle jag starkt föreslå att man först lär sig och förstår linjär algebra tillsammans med statistik (särskilt distributioner). För det andra föreslår jag att man läser Pattern Recognition and Machine Learning av Christopher M. Bishop. Den här boken hjälpte mig att förstå grunderna i vad jag gick in på och är strukturerad mycket bra.

Rekommenderad: