– Cześć Otylka! Co dzisiaj robiłaś? – zapytałem młodszą córeczkę po powrocie do domu.
– Bla bla bla – odpowiedziała jak zawsze z uśmiechem, gdy wracam z pracy.
– A ja dzisiaj rozpoznawałem temat redukowania wymiarów.
– A co to ta refuksja? – zapytała Jagoda, wybiegając ze swojego pokoju
– Hmm… to tak jakbyś miała taki ogromny tort. Nie ma możliwości, abyś zjadła go naraz w całości. Mogłabyś użyć wówczas redukcji wymiarów. Są to takie urządzenia, dzięki którym można zmniejszyć ten tort do takiego malutkiego rozmiaru. Będziesz mogła wtedy spróbować go całego i mieć pewność, że posmakujesz większości ukrytych w nim smaków. Jednak robiąc to niektóre smaki lub jego części nadal możesz niestety pominąć. Jednak sama decydujesz o tym, jak mocno chcesz zmniejszyć jego rozmiar.
– Najważniejsze, aby czekolada się na nim nie zmniejszyła – zakończyła naszą rozmowę Jagódka.
Przekleństwo wielowymiarowości
Określenia „przekleństwo wymiarowości” po raz pierwszy użyto w opracowaniu
Określenia „przekleństwo wymiarowości” po raz pierwszy użyto w opracowaniu „Adaptive control processes” wydanym w 1961 roku przez Richarda Ernesta Bellmana (wiki).
Przekleństwo wymiarowości dotyczy problemu wykładniczego wzrostu danych w problemach związanych z uczeniem maszynowym. Oznacza to, że im większy wymiar, tym znacznie więcej danych potrzebujemy. Dodatkowo oprócz potrzeby coraz większych ilości danych, to wykładniczo rośnie liczba możliwych wariantów, co znacznie zwiększa złożoność obliczeniową naszych algorytmów.
Co to jest redukcja wymiarów?
Redukcja wymiaru jest to proces przekształcający pierwotny zbiór danych w zbiór o mniejszej liczbie wymiarów, zachowując przy tym informacje, które te dane ze sobą niosą.
Techniki te są często wykorzystywane podczas rozwiązywania problemów z dziedziny data science w celu uzyskania ważnych zmiennych.
Możemy sobie z tym poradzić dzięki redukcji wymiarów albo redukcji cech. W tym wpisie wyjaśnimy ten pierwszy element.
Czym jest wielowymiarowość?
Spróbujmy sobie wyobrazić czym jest wielowymiarowość. Pomyślmy sobie, że mamy przed sobą zbiór danych. Niech to będą wszystkie pokemony! Aby było prościej przyjrzyjmy się tylko dwóm rodzajom pokemonów: ognistym (fire) i ziemnym (ground).
Jednym z wymiarów niech będzie moc. Wówczas możemy narysować nasz zbiór.
Możemy dodać następnie kolejny wymiar. Niech to będzie obrona.
Dodajmy teraz kolejną cechę – szybkość.
Z matematycznego punktu widzenia możemy robić to dalej, czyli dołożyć jeszcze kilka kolejnych cech. Gdybyśmy mieli więcej charakterystyk wówczas można byłoby dodać 20 czy nawet 100 z nich opisujących nasz zbiór.
Natomiast bardzo ciężko będzie to nam narysować. Gdybyśmy chcieli zwizualizować jak daleko od siebie są pokemony ogniste od pokemonów ziemnych należałoby wykorzystać metody redukcji wymiaru.
Teraz odwróćmy powyższy proces. Zamiast dokładać kolejny wymiar, zmniejszmy liczbę wymiarów (redukcja) z trzech do dwóch.
Jedną z podstawowych metod jest rzutowanie punktów na płaszczyznę. Poniżej przykład jak wygląda zrzutowanie na płaszczyznę OX, OY oraz OZ.
Jak widać rzutowanie na konkretne płaszczyzny powoduje, że tracimy trochę cennej informacji.
Jednak płaszczyzna, na którą rzutujemy, nie musi być żadną z osi, tylko można ją osadzić dowolnie w naszej przestrzeni.
Różne metody korzystają z innych sposobów zmniejszania wymiarowości, natomiast główna idea jest taka sama – jak najlepsze odzwierciedlenie położenia punktów i zależności między nimi.
Warto pamiętać o najważniejszym – redukując wymiary musimy się zgodzić na utratę jakiejś części informacji.
Jakie są główne zastosowania redukcji wymiarów?
1) wizualizacja i zrozumienie danych
Żyjemy w trójwymiarowej rzeczywistości. Nasz mózg bardzo dobrze się w niej odnajduje. Natomiast wszystko, co wykracza ponad trzy wymiary często bardzo ciężko nam sobie wyobrazić. Korzystając z metod redukcji wymiarów możemy „spłaszczyć” liczbę wymiarów naszego zbioru i narysować go w przestrzeni 2D lub 3D, które potrafimy przedstawić na wykresie. Warto jednak podkreślić, że nie zawsze będziemy w stanie zinterpretować to, co opisują zredukowane wymiary.
Np. możemy zwizualizować embedingi (jest to reprezentacja słów w przestrzeni) poprzez redukcję wymiarów i zobaczyć czy dobrze zostały przygotowane.
2) kompresja danych i przyśpieszenie obliczeń
W dzisiejszych czasach mamy tak wiele danych, że ciężko byłoby wszystkie je zebrać naraz. Można wykorzystać redukcję wymiarów do kompresji danych, co pozwoli oszczędzić miejsce, ale też przyśpieszy algorytmy uczenia.
3) wykrywanie anomalii
Dużym zagadnieniem jest wykrywanie anomalii. Natomiast ciekawym zastosowaniem jest zredukowanie wymiarów, aby w prosty sposób wychwytywać różnego rodzaju anomalie występujące w naszym zbiorze danych.
4) pomaga uniknąć „przekleństwa wielowymiarowości”
Sytuacja gdy mamy mało obserwacji a dużo wymiarów może powodować, że nasz model będzie za mocno dopasowywał się do danych, np. może się okazać, że mamy 1.000 obserwacji oraz 2.000 wymiarów. Możemy wówczas zredukować wymiary i spróbować podejść do problemu ponownie.
Najczęściej stosowane metody
a) metody w oparciu o szukanie czynników pomiędzy wymiarami (components / factor base):
- Principal Component Analysis (PCA)
- Independent Component Analysis (ICA)
- Factor Analysis
b) metody w oparciu o rzutowanie jednego wymiaru na inny (Projection base):
- t-SNE
- ISOMAP
- UMAP
- Autoenkodery
Podsumowanie
Mam nadzieję, że redukcja wymiarów jest już dla Was jaśniejsza. W kolejnych wpisach postaram się zaprezentować najlepiej jak rozumiem niektóre z opisanych metod.
Pozdrawiam,
Pingback: Czym jest uczenie maszynowe? I jakie są rodzaje? - Mirosław Mamczur
Dzięki Mirek! Twój artykuł pomógł mi lepiej zrozumieć sens i istotę redukcji wymiarów której się obecnie uczę. Szczególnie spodobało mi się porównanie danych do pokemonów. 😉
Hej Alex!
Dzięki za miłe słowa.
Cieszę się, że mogłem pomóc.
Pozdrawiam serdecznie,
Mirek