일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- Stream
- Algorithm
- BOF
- Computer Architecture
- Got
- BAEKJOON
- FastAPI
- bloc
- Flutter
- DART
- MDP
- Widget
- Dreamhack
- fastapi를 사용한 파이썬 웹 개발
- MATLAB
- 파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터비전 심층학습
- C++
- pytorch
- PCA
- Image Processing
- BFS
- llm을 활용 단어장 앱 개발일지
- study book
- system hacking
- 백준
- 영상처리
- Kaggle
- rao
- ARM
- ML
- Today
- Total
Bull
[ML] PCA (Principal Component Analysis) 원리 본문
[ML] PCA (Principal Component Analysis) 원리
Bull_ 2024. 7. 29. 15:27PCA (Principal Component Analysis)
PCA(Principal Component Analysis, 주성분 분석)는 고차원 데이터를 저차원으로 변환하면서 데이터의 주요 변동성을 최대한 보존하는 선형 변환 기법입니다. PCA는 데이터의 분산을 가장 잘 설명하는 새로운 축(주성분)을 찾아내어 데이터를 이 새로운 축으로 투영함으로써 차원을 축소하거나 데이터의 구조를 이해하는 데 사용됩니다. 고차원 데이터를 저차원으로 압축하여 저장 공간을 절약하기 위해 데이터 압축을 하거나 데이터의 주요 변동성을 유지하면서 노이즈를 줄이고 시각화, 주요 특성 추출을 위해 사용합니다.
PCA 수행 예제
원본 데이터
학생 | 수학 | 과학 | 영어 |
---|---|---|---|
A | 80 | 90 | 85 |
B | 85 | 85 | 80 |
C | 78 | 88 | 82 |
D | 92 | 87 | 90 |
1. 평균 중심화
각 과목의 평균을 계산합니다.
- 수학: (80 + 85 + 78 + 92) / 4 = 83.75
- 과학: (90 + 85 + 88 + 87) / 4 = 87.5
- 영어: (85 + 80 + 82 + 90) / 4 = 84.25
각 점수에서 평균을 뺍니다.
$$
X_{\text{centered}} = X - \mu
$$
$$
X_{\text{centered}} =
\begin{bmatrix}
80 - 83.75 & 90 - 87.5 & 85 - 84.25\\
85 - 83.75 & 85 - 87.5 & 80 - 84.25\\
78 - 83.75 & 88 - 87.5 & 82 - 84.25\\
92 - 83.75 & 87 - 87.5 & 90 - 84.25
\end{bmatrix}
$$
$$
X_{\text{centered}} = \begin{bmatrix}
-3.75 & 2.5 & 0.75 \\
1.25 & -2.5 & -4.25 \\
-5.75 & 0.5 & -2.25 \\
8.25 & -0.5 & 5.75
\end{bmatrix}
$$
- 중심화된 데이터에서 계산된 주성분은 데이터의 실제 변동성을 반영합니다.
- 중심화되지 않은 데이터에서 계산된 주성분은 데이터의 중심 위치에 따라 왜곡될 수 있습니다.
- 공분산 행렬은 각 변수의 분산과 변수 간의 상관관계를 나타내므로, 중심화된 데이터에서 계산해야 정확한 값을 얻을 수 있습니다. 중심화되지 않은 데이터로 계산된 공분산 행렬은 올바른 고유값과 고유벡터를 반영하지 않습니다.
- 데이터가 중심화되지 않으면, 각 변수(특성)의 평균값이 0이 아니기 때문에 공분산 행렬이 제대로 계산되지 않습니다.
2. 공분산 행렬 계산
$$
C = \frac{1}{n-1} X_{\text{centered}}^T X_{\text{centered}}
$$
계산 결과는 다음과 같습니다.
$$
C \approx \begin{bmatrix}
37.5833 & -2.5833 & 15.0833 \\
-2.5833 & 4.3333 & -0.5833 \\
15.0833 & -0.5833 & 19.5833
\end{bmatrix}
$$
3. 고유값 분해 및 고유벡터 선택
공분산 행렬 ( C )에 대해 고유값 분해를 수행하여 고유값과 고유벡터를 구합니다.
고유값
$$
\lambda = [45.0, 15.0, 1.5]
$$
고유벡터
$$
V = \begin{bmatrix}
0.6 & 0.7 & 0.4 \\
0.3 & -0.1 & -0.9 \\
0.7 & -0.7 & 0.2
\end{bmatrix}
$$
상위 2개의 고유벡터를 선택합니다.
$$
W = \begin{bmatrix}
0.6 & 0.7 \\
0.3 & -0.1 \\
0.7 & -0.7
\end{bmatrix}
$$
4. 차원 축소
고유벡터 (W)를 사용하여 차원 축소된 데이터를 얻습니다.
$$
Z = X_{\text{centered}} W
$$
5. 데이터 재구성
차원 축소된 데이터를 원래 차원으로 재구성합니다.
$$
X_{\text{reconstructed, centered}} = Z W^T
$$
중심화 해제
$$
X_{\text{reconstructed}} = X_{\text{reconstructed, centered}} + \mu
$$
참고 자료
https://ddongwon.tistory.com/114
PCA (Principal Component Analysis) : 주성분 분석 이란?
1. PCA (주성분 분석) PCA는 대표적인 dimensionality reduction (차원 축소)에 쓰이는 기법으로, 머신러닝, 데이터마이닝, 통계 분석, 노이즈 제거 등 다양한 분야에서 널리 쓰이는 녀석이다. 쉽게 말해 PC
ddongwon.tistory.com
https://www.kaggle.com/code/xvivancos/image-compression-using-pca/report
Image compression using PCA
Explore and run machine learning code with Kaggle Notebooks | Using data from [Private Datasource]
www.kaggle.com
'Artificial Intelligence > Machine Learning' 카테고리의 다른 글
[ML] 최적화 (Optimization) | study book (0) | 2024.08.12 |
---|---|
[ML] 손실 함수 | study book (0) | 2024.08.10 |
[ML] Support Vector Machine(SVM) (7) | 2024.07.22 |
[ML] Hyper Parameters (하이퍼 파라미터) (0) | 2024.03.14 |
[ML] Ensemble (앙상블) (3) | 2024.03.14 |