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:
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.