Hauptkomponentenanalyse: 4 Schritte
Hauptkomponentenanalyse: 4 Schritte
Anonim
Hauptkomponentenanalyse
Hauptkomponentenanalyse

Die Hauptkomponentenanalyse ist eine statistische Methode, die einen Satz möglicherweise korrelierter Variablen in einen Satz linear unkorrelierter Werte unter Verwendung orthogonaler Transformationen umwandelt. In einfachen Worten, wenn ein Datensatz mit mehreren Dimensionen vorliegt, hilft dies, die Anzahl der Dimensionen zu reduzieren, wodurch die Daten leichter zu lesen sind.

Schritt 1: Ursprüngliche Pläne

Ich kam mit der Idee in diese Klasse, dass ich einen Algorithmus verstehen und hoffentlich schreiben wollte, der in der Lage wäre, Gesichtserkennung durchzuführen, wenn er mit Bildern versorgt wird. Ich hatte keine Vorkenntnisse oder Erfahrung mit Gesichtserkennung und hatte keine Ahnung, wie schwer es ist, so etwas zu erreichen. Nach einem Gespräch mit Professor Malloch wurde mir klar, dass ich eine Menge Dinge lernen muss, bevor ich die von mir geplante Aufgabe vollständig verstehen kann.

Nach ein wenig Recherche beschloss ich schließlich, dass ich vor allem Lineare Algebra und einige Grundlagen des maschinellen Lernens lernen musste und entschied mich für PCA (Hauptkomponentenanalyse) als mein Ziel für diesen Kurs.

Schritt 2: Recherche

Forschung
Forschung

Der erste Schritt bestand darin, die Bibliothek zu besuchen und jedes Buch zu finden, das mich in das maschinelle Lernen und insbesondere in die Bildverarbeitung eingeführt hat. Dies stellte sich als viel schwieriger heraus als ich dachte und am Ende hatte ich nicht viel davon. Ich beschloss dann, einen Freund, der im Vision Lab arbeitete, zu fragen, der mich bat, mich mit der linearen Algebra und genauer mit Eigenvektoren und Eigenwerten zu befassen. Ich hatte einige Erfahrungen mit Linearer Algebra aus einem Kurs, den ich in meinem zweiten Studienjahr belegt hatte, verstand jedoch nicht, wie Eigenvektoren oder Eigenwerte beim Umgang mit Bildern nützlich sein könnten. Als ich mehr recherchierte, verstand ich, dass Bilder nichts anderes als riesige Datensätze waren und daher als Matrizen behandelt werden konnten, und mir wurde ein wenig klarer, warum Eigenvektoren für meine Arbeit relevant waren. An diesem Punkt beschloss ich, dass ich lernen sollte, Bilder mit Python zu lesen, da ich Python für mein Projekt verwenden wollte. Anfangs habe ich mit CV2.imread angefangen, um die Bilder zu lesen, aber das stellte sich als wirklich langsam heraus und daher entschied ich mich, glob und PIL.image.open zu verwenden, da dies viel schneller ist. Dieser Prozess auf Papier scheint relativ zeitaufwändig zu sein, nahm aber tatsächlich viel Zeit in Anspruch, da ich lernen musste, verschiedene Bibliotheken in PyCharm (IDE) zu installieren und zu importieren und dann die Dokumentation für jede Bibliothek online durchzulesen. Dabei habe ich auch gelernt, wie man pip install-Anweisungen in der Eingabeaufforderung verwendet.

Danach war der nächste Schritt herauszufinden, was genau ich in der Bildverarbeitung tun und lernen wollte und ursprünglich hatte ich vor, einen Vorlagenvergleich durchzuführen, aber während meiner Recherchen lernte ich PCA und fand es interessanter, also entschied ich mich dafür gehen Sie stattdessen mit PCA. Der erste Begriff, der immer wieder auftauchte, war der K-NN-Algorithmus (K-Nearest Neighbour). Dies war meine erste Begegnung mit einem maschinellen Lernalgorithmus. Ich habe etwas über die Trainings- und Testdaten erfahren und was das "Training" eines Algorithmus bedeutet. Das Verständnis des K-NN-Algorithmus war ebenfalls eine Herausforderung, aber es war sehr befriedigend, endlich zu verstehen, wie er funktioniert. Ich arbeite derzeit daran, dass der Code für K-NN funktioniert, und ich bin sehr kurz vor der Fertigstellung.

Schritt 3: Schwierigkeiten und gelernte Lektionen

Die erste große Schwierigkeit war der Umfang des Projekts selbst. Dies war eher forschungsorientiert als physikalisch. Im Laufe der Wochen schaute ich mir manchmal die Fortschritte meiner Kollegen an und hatte das Gefühl, dass ich nicht genug tat oder nicht schnell genug Fortschritte machte, was manchmal sehr demotivierend war. Mit Professor Malloch zu sprechen und mir einfach zu versichern, dass ich tatsächlich Dinge lernte, die für mich sehr neu waren, half mir, weiterzumachen. Ein weiteres Problem war, dass theoretisches Wissen und seine Anwendung zwei verschiedene Dinge sind. Obwohl ich wusste, was ich tun musste, war die eigentliche Codierung in Python eine andere Geschichte. Hier hat es sehr geholfen, Dokumentationen online zu lesen und Freunde zu fragen, die mehr darüber wussten, um endlich einen Aktionsplan zu finden.

Ich persönlich denke, dass eine größere Bibliothek mit Büchern und Dokumenten bei M5 Leuten helfen könnte, die an Projekten arbeiten. Außerdem ist es eine gute Idee für M5, eine digitale Aufzeichnung der Projekte in Echtzeit zu haben, die von Studenten durchgeführt werden, damit andere Studenten und Mitarbeiter sie einsehen und sich bei Interesse einbringen können.

Da das Projekt zu Ende geht, habe ich in so kurzer Zeit so viel gelernt. Ich habe sehr gute Kenntnisse über maschinelles Lernen erworben und habe das Gefühl, die ersten Schritte unternommen zu haben, um mich mehr damit zu beschäftigen. Ich habe erkannt, dass ich Computer Vision mag und dass ich dies vielleicht auch in Zukunft verfolgen möchte. Am wichtigsten ist, dass ich gelernt habe, was PCA ist, warum es so wichtig ist und wie man es nutzt.

Schritt 4: Nächste Schritte

Für mich kratzte das nur an der Oberfläche von etwas viel Größerem und etwas, das in der heutigen Welt sehr wichtig ist, nämlich maschinelles Lernen. Ich plane, in naher Zukunft Kurse zum Thema Machine Learning zu belegen. Ich habe auch vor, mich bis zur Gesichtserkennung hochzuarbeiten, da das ganze Projekt dort begann. Ich habe auch Ideen für ein Sicherheitssystem, das eine Kombination aus Funktionen (eines davon ist das Gesicht der Person) verwendet, um es wirklich sicher zu machen, und daran möchte ich in Zukunft arbeiten, wenn ich ein breiteres Verständnis der Dinge habe.

Für jeden wie mich, der sich für maschinelles Lernen und Bildverarbeitung interessiert, aber keine Vorkenntnisse hat, würde ich dringend empfehlen, zuerst die lineare Algebra zusammen mit Statistik (insbesondere Verteilungen) zu lernen und zu verstehen. Zweitens würde ich vorschlagen, Pattern Recognition and Machine Learning von Christopher M. Bishop zu lesen. Dieses Buch hat mir geholfen, die Grundlagen meines Einstiegs zu verstehen und ist sehr gut strukturiert.