일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- boj 5567
- 백준 5567
- 잔디 기부
- constant buffre
- 오블완
- boj 1991
- tessellation
- boj 22942
- PCCE
- c++ 5567
- pcce 기출문제 10번 지폐 접기 풀이
- 프로그래밍공부
- 렌더링 파이프
- orthographic projection
- pccp 기출문제 풀이
- c++ 1991
- directx 그래픽스
- pcce 기출문제 풀이
- pcce 기출문제 9번 지폐 접기
- pcce 기출문제 10번 공원
- DirectX
- root signature
- pcce 기출문제 10번 공원 풀이
- gemmasprint
- DirectX12
- texture mapping
- depth-stencil
- 데이터 체커
- render target
- 잔디 기부 캠페인
- Today
- Total
오구의코딩모험
[선형대수학] 주성분 분석(PCA)이란? 본문
PCA(Principal Component Analysis), 주성분 분석은
데이터들을 정사영 시켜 차원을 낮추는 차원 축소 역할을 한다고만 알고 있었다.
정의는 아는데..
정확하게 이해를 하지 못하여 누구에게 설명할 수가 없다!
그러므로
오늘은 주성분 분석에 대해서
자세히 알아보자!
주성분 분석은 그림과 같이
데이터(파란점)의 분포를 잘 설명해주는 방향(노란색 직선)을 나타내는 방법이다.
그림에서 2차원 좌표에 있던 데이터들을 1차원인 직선으로 표현했다.
즉, 차원이 2 → 1 로 줄었다. (차원축소)
그럼 여기서
- 분포를 잘 설명해준다는 건 뭐고,
- 방향은 무엇을 기준으로 설정하는 걸까?
분포를 잘 설명해준다.
→ 데이터의 구조를 잘 설명해준다. 특히 특징 쌍(feature pairs)들의 변동이 얼마나 닮았는가?
이를 행렬로 나타낸 것이 공분산 행렬이다!
아래 그림을 보면,
왼쪽 데이터들이 Matrix1 이라는 공분산 행렬을 적용하여
오른쪽 그림과 같이 선형 변환 되었다.
Matrix1이 어떤 값인진 모르겠지만
그림만 보았을 땐,
좌표들이 1,3사분면을 기준 대각선 모양으로 퍼진 것처럼 보인다.
여기서 진짜
Matrix1 공분산 행렬 값은
위의 그림과 같다!
공분산 행렬 각 원소들의 의미를 해석해본다면
x,y축 방향으로 함께 퍼진 정도가 양수이기에
1,3사분면을 기준으로 지나게 되며,
x,y축 방향으로 퍼진 정도는 기존의 데이터와 큰 차이가 없기에
그래프의 x축, y축 퍼짐은 유사하게 보인다!
이처럼 공분산 행렬은 데이터의 구조를 나타내는 행렬이란걸 볼 수 있다!
고유 벡터(eigenvector)의 의미를 잘 생각해보면,
고유 벡터는 그 행렬이 벡터에 작용하는 주축(principal axis)의 방향을 나타낸다.
결국 공분산 행렬의 고유 벡터는
데이터가 어떤 방향으로 분산되어 있는지를 나타내준다고 할 수 있다.
여기서 고유벡터의 방향은
분산이 가장 큰 방향인 고유벡터1, 고유벡터1과 수직인 고유벡터2로 나타난다.
왜 저 두 방향일까?
공분산 행렬의 고유벡터와 최대 variance
저 의문점을 해결해주는 긴 수식이 있다.
요약하자면..
오차가 가장 작게 하도록 수식을 구성하여 계산하니
곧, 최대 분산일 때랑 같다는 내용이고,
그 다음은 최대 분산과 직교하는 방향이다..
수식만 보고 이해하기 힘들어...
특히
영상에서 AE(Autoencode)의 mainfold 학습과 연관지어 설명해주는 부분이 인상깊었다..!
참고자료