Ontleding van die hoofkomponent: 4 stappe
Ontleding van die hoofkomponent: 4 stappe
Anonim
Ontleding van die hoofkomponent
Ontleding van die hoofkomponent

Hoofkomponentanalise is 'n statistiese metode wat 'n stel moontlik gekorreleerde veranderlikes omskakel in 'n stel lineêr ongekorreleerde waardes deur ortogonale transformasies te gebruik. In eenvoudige woorde, met 'n datastel met veelvuldige dimensies, help dit om die aantal dimensies te verminder, waardeur die data makliker leesbaar is.

Stap 1: Oorspronklike planne

Ek het in hierdie klas gekom met die idee dat ek dit wou verstaan en hopelik 'n algoritme skryf wat gesigsherkenning sou kon uitvoer as dit met beelde voorsien word. Ek het geen ervaring of kennis van enigiets met gesigsherkenning gehad nie en het geen idee gehad hoe moeilik dit is om so iets te bereik nie. Nadat ek met professor Malloch gepraat het, het ek besef dat ek baie dinge moet leer voordat ek die taak wat ek uiteindelik beplan het, ten volle kan begryp.

Na 'n bietjie navorsing, het ek uiteindelik besluit dat ek meer as enigiets meer nodig het om lineêre algebra en 'n paar basiese beginsels van masjienleer te leer, en ek het my PCA (hoofkomponentanalise) toegepas om my doelwit vir hierdie klas te wees.

Stap 2: Navorsing

Navorsing
Navorsing

Die eerste stap was om die biblioteek te besoek en enige boek te vind wat my kennis gemaak het met masjienleer en meer spesifiek beeldverwerking. Dit blyk baie moeiliker te wees as wat ek gedink het, en ek het niks daarvan gekry nie. Ek besluit toe om 'n vriend wat in die Vision Lab gewerk het, te vra wat my gevra het om na lineêre algebra en meer spesifiek eievektore en eiewaardes te kyk. Ek het ervaring gehad met lineêre algebra uit 'n klas wat ek in die tweede jaar geneem het, maar ek het nie verstaan hoe eievektore of eiewaardes nuttig kan wees in die hantering van beelde nie. Namate ek meer ondersoek het, het ek besef dat beelde niks anders as groot datastelle was nie en dus as matrikse behandel kon word, en dit het vir my 'n bietjie duideliker geword hoekom eievektore relevant was vir wat ek doen. Op hierdie stadium het ek besluit dat ek moet leer hoe om beelde te lees met behulp van python, aangesien ek python vir my projek gaan gebruik. Aanvanklik het ek begin met die gebruik van CV2.imread om die beelde te lees, maar dit was baie stadig en daarom het ek besluit om glob en PIL.image.open te gebruik, want dit is baie vinniger. Hierdie proses op papier lyk relatief nie tydrowend nie, maar het eintlik baie tyd geneem, aangesien ek moes leer hoe om verskillende biblioteke op PyCharm (IDE) te installeer en in te voer en dan die dokumentasie aanlyn vir elke biblioteek deur te lees. In die proses het ek ook geleer hoe om pip -installasieverklarings in die opdragprompt te gebruik.

Hierna was die volgende stap om uit te vind wat ek presies wil doen en leer in beeldverwerking, en aanvanklik was ek van plan om sjabloonpassing te doen, maar terwyl ek daarna ondersoek het, het ek geleer oor PCA en gevind dat dit interessanter was, en ek het besluit om gaan eerder met PCA. Die eerste term wat steeds opduik, was die K-NN (K- naaste buurman) -algoritme. Dit was my eerste blootstelling aan 'n algoritme vir masjienleer. Ek het geleer oor die opleidings- en toetsdata en wat die 'opleiding' van 'n algoritme beteken. Dit was ook 'n uitdaging om die K-NN-algoritme te verstaan, maar dit was baie bevredigend om uiteindelik te verstaan hoe dit werk. Ek werk tans daaraan om die kode vir K-NN te laat werk, en ek is baie naby aan voltooiing.

Stap 3: Moeilike probleme en lesse geleer

Die eerste groot probleem was die omvang van die projek self. Dit was meer navorsingsgerig as fisies. Met verloop van tyd het ek gekyk na die vordering wat my eweknieë gemaak het, en ek het gevoel dat ek nie genoeg doen nie, of dat ek nie vinnig genoeg vorder nie, en dit was soms baie demotiverend. Ek het met professor Malloch gepraat en myself gerusgestel dat ek werklik dinge leer wat vir my baie nuut was, het my gehelp. 'N Ander probleem was dat om teoretiese dinge te ken en dit toe te pas, twee verskillende dinge is. Alhoewel ek geweet het wat ek moes, was dit eintlik 'n ander storie om dit in python te kodeer. Dit is waar net die dokumentasie aanlyn gelees en vriende wat daarvan geweet het, meer gehelp het om uiteindelik 'n plan van aksie uit te vind.

Ek dink persoonlik dat 'n groter biblioteek met boeke en dokumente by M5 mense kan help wat aan projekte werk. Dit is ook 'n goeie idee om 'n intydse digitale rekord te hê van die projekte wat deur studente gedoen word, sodat ander studente en personeel daarna kan kyk en betrokke kan raak as dit hulle interesseer.

Namate die projek tot 'n einde kom, het ek soveel geleer in so 'n kort tydjie. Ek het baie kennis van masjienleer opgedoen en voel asof ek die eerste stappe gedoen het om meer daarby betrokke te raak. Ek het besef dat ek van rekenaarvisie hou en dat ek dit selfs in die toekoms wil volg. Die belangrikste is dat ek geleer het wat PCA is, waarom dit so belangrik is en hoe ek dit kan gebruik.

Stap 4: Volgende stappe

Vir my was dit net die oppervlak van iets veel groter en iets wat baie belangrik is in die huidige wêreld, naamlik masjienleer. Ek is van plan om in die nabye toekoms kursusse te volg wat verband hou met masjienleer. Ek is ook van plan om op te bou tot gesigsherkenning, want dit is waar hierdie hele projek begin het. Ek het ook idees vir 'n sekuriteitstelsel wat 'n kombinasie -funksie gebruik (waarvan een die gesig van die persoon is) om dit regtig veilig te maak, en dit is iets waaraan ek in die toekoms wil werk as ek 'n groter begrip van dinge het.

Vir almal soos ek wat belangstel in masjienleer en beeldverwerking, maar geen vorige ondervinding het nie, sou ek sterk aanbeveel om eers lineêre algebra saam met statistieke (veral verspreidings) te leer en te verstaan. Tweedens sou ek voorstel om Patroonherkenning en masjienleer deur Christopher M. Bishop te lees. Hierdie boek het my gehelp om die basiese beginsels van dit waarin ek besig was, te verstaan, en is baie goed gestruktureer.