Analiza głównych składowych: 4 kroki
Analiza głównych składowych: 4 kroki
Anonim
Analiza głównych składowych
Analiza głównych składowych

Analiza głównych składowych to metoda statystyczna, która konwertuje zbiór potencjalnie skorelowanych zmiennych na zbiór liniowo nieskorelowanych wartości za pomocą przekształceń ortogonalnych. Mówiąc prościej, biorąc pod uwagę zestaw danych z wieloma wymiarami, pomaga to zmniejszyć liczbę wymiarów, dzięki czemu dane są łatwiejsze do odczytania.

Krok 1: Oryginalne plany

Przyszedłem do tej klasy z myślą, że chcę zrozumieć i mam nadzieję napisać algorytm, który będzie w stanie wykonać rozpoznawanie twarzy, gdy zostanie dostarczony z obrazami. Nie miałem wcześniejszego doświadczenia ani wiedzy na temat rozpoznawania twarzy i nie miałem pojęcia, jak trudno jest osiągnąć coś takiego. Po rozmowie z profesorem Mallochem zdałem sobie sprawę, że muszę się wielu rzeczy nauczyć, zanim będę w stanie w pełni zrozumieć zadanie, które ostatecznie planowałem zrealizować.

Po krótkich badaniach w końcu zdecydowałem, że bardziej niż czegokolwiek potrzebuję nauczyć się algebry liniowej i podstaw uczenia maszynowego i zdecydowałem się na PCA (analizę głównych komponentów) jako mój cel na tej klasie.

Krok 2: Badania

Badania
Badania

Pierwszym krokiem było odwiedzenie Biblioteki i znalezienie jakiejkolwiek książki, która wprowadziła mnie w uczenie maszynowe, a dokładniej przetwarzanie obrazu. Okazało się to o wiele trudniejsze niż myślałem i skończyło się na tym, że nic z tego nie było. Następnie postanowiłem zapytać znajomego, który pracował w Vision Lab, który poprosił mnie o przyjrzenie się algebrze liniowej, a dokładniej wektorom własnym i wartościom własnym. Miałem pewne doświadczenie z algebrą liniową z zajęć, które miałem na drugim roku, ale nie rozumiałem, w jaki sposób wektory własne lub wartości własne mogą być przydatne podczas pracy z obrazami. Gdy szukałem więcej, zrozumiałem, że obrazy są niczym innym jak ogromnymi zbiorami danych i dlatego mogą być traktowane jako macierze i stało się dla mnie nieco jaśniejsze, dlaczego wektory własne są istotne dla tego, co robię. W tym momencie zdecydowałem, że powinienem nauczyć się czytać obrazy za pomocą Pythona, ponieważ zamierzam używać Pythona w moim projekcie. Początkowo zacząłem od użycia CV2.imread do odczytywania obrazów, ale okazało się to bardzo powolne, dlatego zdecydowałem się użyć glob i PIL.image.open, aby to zrobić, ponieważ jest to znacznie szybsze. Ten proces na papierze wydaje się stosunkowo mało czasochłonny, ale w rzeczywistości zajął sporo czasu, ponieważ musiałem nauczyć się instalować i importować różne biblioteki do PyCharm (IDE), a następnie przeczytać dokumentację online dla każdej biblioteki. W trakcie tego nauczyłem się również, jak używać instrukcji pip install w wierszu poleceń.

Następnym krokiem było zastanowienie się, co dokładnie chciałem zrobić i nauczyć się w przetwarzaniu obrazów i początkowo planowałem dopasowywanie szablonów, ale podczas poszukiwań dowiedziałem się o PCA i stwierdziłem, że jest to bardziej interesujące, więc postanowiłem zamiast tego idź z PCA. Pierwszym terminem, który ciągle się pojawiał, był algorytm K-NN (K-najbliższy sąsiad). To był mój pierwszy kontakt z algorytmem uczenia maszynowego. Dowiedziałem się o danych uczących i testujących oraz o tym, co oznacza „uczenie” algorytmu. Zrozumienie algorytmu K-NN również było wyzwaniem, ale bardzo satysfakcjonujące było wreszcie zrozumienie, jak on działa. Obecnie pracuję nad uruchomieniem kodu dla K-NN i jestem bardzo bliski ukończenia.

Krok 3: napotkane trudności i wyciągnięte wnioski

Pierwszą dużą trudnością był sam zakres projektu. To było bardziej zorientowane na badania niż fizyczne. W miarę upływu tygodni spoglądałem na postępy moich rówieśników i czułem, że nie robię wystarczająco dużo lub że nie robię wystarczająco szybkich postępów, co czasami było bardzo demotywujące. Rozmowa z profesorem Mallochem i upewnianie się, że rzeczywiście uczę się rzeczy, które były dla mnie bardzo nowe, pomogły mi iść dalej. Innym problemem było to, że wiedza teoretyczna i jej zastosowanie to dwie różne rzeczy. Chociaż wiedziałem, co muszę, tak naprawdę kodowanie w pytonie to zupełnie inna historia. W tym miejscu samo czytanie dokumentacji online i pytanie znajomych, którzy wiedzieli o tym więcej, bardzo pomogło w ostatecznym ustaleniu planu działania.

Osobiście uważam, że posiadanie większej biblioteki książek i dokumentów w M5 mogłoby pomóc osobom pracującym nad projektami. Dobrym pomysłem dla M5 jest również posiadanie cyfrowego zapisu projektów realizowanych przez uczniów w czasie rzeczywistym, aby inni studenci i pracownicy mogli na nie spojrzeć i zaangażować się, jeśli ich to interesuje.

Gdy projekt dobiega końca, nauczyłem się tak wiele w tak krótkim czasie. Zdobyłem bardzo praktyczną wiedzę na temat uczenia maszynowego i czuję, że zrobiłem pierwsze kroki, aby bardziej się w to zaangażować. Zdałem sobie sprawę, że lubię wizję komputerową i że być może będę chciał to robić nawet w przyszłości. Przede wszystkim dowiedziałem się, czym jest PCA, dlaczego jest tak ważny i jak z niego korzystać.

Krok 4: Kolejne kroki

Dla mnie było to tylko zarysowanie powierzchni czegoś znacznie bardziej rozległego i bardzo ważnego w dzisiejszym świecie, czyli uczenia maszynowego. W niedalekiej przyszłości planuję brać udział w kursach związanych z uczeniem maszynowym. Planuję również budowanie swojej drogi do rozpoznawania twarzy, ponieważ tam właśnie zaczął się cały projekt. Mam też pomysły na system bezpieczeństwa, który wykorzystuje kombinację cech (jedną z nich jest twarz osoby), aby był naprawdę bezpieczny i jest to coś, nad czym chcę pracować w przyszłości, gdy będę miał szersze zrozumienie rzeczy.

Dla każdego takiego jak ja, który interesuje się uczeniem maszynowym i przetwarzaniem obrazów, ale nie ma wcześniejszego doświadczenia, gorąco sugerowałbym najpierw naukę i zrozumienie algebry liniowej wraz ze statystykami (zwłaszcza rozkładów). Po drugie, sugerowałbym przeczytanie Rozpoznawania wzorców i uczenia maszynowego Christophera M. Bishopa. Ta książka pomogła mi zrozumieć podstawy tego, w co się pakuję i jest bardzo dobrze skonstruowana.