PCA

Analiza głównych składowych (ang. principal component analysis, PCA) to metoda statystyczna służąca do przekształcania danych z wielu zmiennych objaśniających na mniejszą liczbę zmiennych, które nazywane są głównymi składowymi. Główne składowe są kombinacjami linowymi zmiennych objaśniających i są wybierane tak, aby jak najlepiej opisać wariancję danych. Każda kolejna główna składowa jest wybierana tak, aby jak najlepiej opisać pozostałą wariancję w danych, która nie została już opisana przez poprzednie główne składowe.

Główne składowe są kolejnymi kierunkami w przestrzeni danych, w których wariancja jest jak największa. Każda główna składowa jest ortogonalna (prostopadła) do pozostałych głównych składowych.

Analiza głównych składowych ma szereg zastosowań, takich jak:

  • Redukcja wymiarów danych: PCA pozwala na zmniejszenie liczby zmiennych objaśniających w danych poprzez wybieranie najważniejszych głównych składowych i odrzucenie mniej ważnych. Jest to szczególnie przydatne, gdy dane zawierają dużą liczbę zmiennych objaśniających, co może być trudne do interpretacji i przetworzenia przez modele statystyczne.
  • Wizualizacja danych: PCA pozwala na wizualizację danych w niższej wymiarowości, co może być przydatne w celu zrozumienia struktury danych i zidentyfikowania ewentualnych outlierów.
  • Separacja składników zmiennych objaśniających: PCA pozwala na oddzielenie różnych składników zmiennych objaśniających i zrozumienie, jakie zmienne są najważniejsze dla op
  • opisania wariancji w danych. Może to być przydatne w przypadku, gdy chcemy zrozumieć, jakie zmienne są najważniejsze dla danego procesu lub zjawiska.

Przeprowadzenie analizy głównych składowych wymaga następujących kroków:

  1. Przygotowanie danych: należy znormalizować dane, tj. zmniejszyć wpływ różnych skal zmiennych objaśniających na wyniki analizy. Można to zrobić, przeskalowując dane do zakresu od 0 do 1 lub dokonując standaryzacji danych, tj. odjęcia od każdej zmiennej objaśniającej jej średniej i podzielenia przez odchylenie standardowe.
  2. Obliczenie macierzy kowariancji: macierz kowariancji jest obliczana dla znormalizowanych danych i określa, jak bardzo zmienne objaśniające są ze sobą skorelowane. Macierz kowariancji jest niezbędna do obliczenia głównych składowych.
  3. Obliczenie wektorów własnych i wartości własnych: wektory własne są kierunkami w przestrzeni danych, w których wariancja jest maksymalna, a wartości własne określają, jak duża jest ta wariancja. Wektory własne i wartości własne są obliczane dla macierzy kowariancji.
  4. Sortowanie wektorów własnych i wartości własnych według wartości własnych: najważniejsze główne składowe to te z największymi wartościami własnymi. Wartości własne są sortowane malejąco, a wektory własne są sortowane według kolejności wartości własnych.
  5. Wybór głównych składowych: główne składowe są wybierane na podstawie wartości własnych lub na podstawie odsetka wariancji opisywanej przez dane składowe. Można wybrać tylko te główne składowe, które opisują znaczącą część wariancji w danych lub te, które mają największe wartości własne.
  1. Transformacja danych: po wybraniu odpowiednich głównych składowych, dane są przekształcane z wielu zmiennych objaśniających na mniejszą liczbę głównych składowych. Można to zrobić, mnożąc znormalizowane dane przez macierz złożoną z wektorów własnych wybranych jako główne składowe.

Po przeprowadzeniu analizy głównych składowych można wizualizować dane w niższej wymiarowości, np. na dwuwymiarowym wykresie, gdzie główne składowe są osią x i y. Można też wykorzystać główne składowe jako zmienne objaśniające w dalszych analizach statystycznych lub użyć ich do redukcji wymiarów danych w modelach uczenia maszynowego.

Przykład implementacji analizy głównych składowych w Pythonie z wykorzystaniem biblioteki scikit-learn:

from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA

# przygotowanie danych: znormalizowanie danych
scaler = StandardScaler()
scaled_data = scaler.fit_transform(data)

# obliczenie głównych składowych
pca = PCA(n_components=2)
pca.fit(scaled_data)

# transformacja danych
transformed_data = pca.transform(scaled_data)

# wizualizacja danych w niższej wymiarowości
import matplotlib.pyplot as plt
plt.scatter(transformed_data[:,0], transformed_data[:,1])
plt.show()

W powyższym przykładzie najpierw przygotowujemy dane, dokonując ich standaryzacji za pomocą StandardScaler(). Następnie tworzymy obiekt PCA i uczymy go na znormalizowanych danych za pomocą metody fit(). W tym przypadku wybieramy 2 główne składowe. Następnie przekształcamy dane za pomocą metody transform() i wizualizujemy je na wykresie za pomocą biblioteki matplotlib.