차원의 저주
- 데이터 분석을 하거나, 딥러닝을 사용하는데, 더 복잡한 feature들을 사용함으로써 오히려 비선형성이 증가하였다.
- 데이터를 많이 획득하거나, 차원을 줄여야지 차원의 저주를 해결할 수 있다.
PCA(Principal Component Analysis : 주성분 분석)
- 데이터 분포를 최대한 보존하면서, 차원을 축소해도 본질은 같지만 잘 설명할 수 있다.
- 변화량이 가장 많은 지점에서 축을 찍어주는게 원칙이다.
- 차원을 축소해서 계산이 빠르게 잘되게끔 한다.
PCA의 내부적 순서
- 1) 학습 데이터셋에서 분산이 최대인 축(axis)을 찾는다.
- 2) 이렇게 찾은 첫번째 축과 직교(orthogonal)하면서 분산이 최대인 두 번째 축을 찾는다.
- 3) 첫 번째 축과 두 번째 축에 직교하고 분산을 최대한 보존하는 세 번째 축을 찾는다.
- 4) 1~3과 같은 방법으로 데이터셋의 차원(특성 수)만큼의 축을 찾는다.
예시) 4개의 속성을 가진 붓꽃 데이터를 2차원으로 그래프를 통해 나타내 보자.
4개의 속성을 2개의 속성('꽃받침의 길이', '꽃받침의 너비')으로 표현한 그래프와, PCA로 차원축소 한 것과 비교해보자.
PCA 적용전 개별 속성 스케일링
- PCA는 여러 속성의 값을 연산해야 하므로 속성의 스케일에 영향을 받음
- 여러 속성을 PCA로 압축하기 전에 각 속성값을 동일한 스케일로 변환하는 것이 필요
- 평균이 0, 분산이 1인 표준 정규 분포로 모든 속성값 변환(분산 값을 동일하게 해야 한다.)
Iris data의 4개의 속성을 2개의 속성으로 차원 축소가 된 것을 확인할 수 있다.
pca.explained_variance_ratio_는 전체 데이터를 설명할 수 있는 축의 설명력을 의미한다.
모델 구현
pca vs raw data
PCA 데이터로 모델 학습
RAW 데이터로 모델 학습
PCA로 차원 축소한 데이터로 모델 구현시 더 높은 정확도를 가지는 것은 흔치 않은 경우이다. 하지만 PCA는 속도 측면에서의 장점과 적은 데이터로 많은 속성을 가질 때 차원 축소하는 경우 많이 쓰인다.
이미지 데이터 PCA
- 데이터 정규화 - Whitening 이라고도 하며, 데이터분포를 원점 기준으로 변경
- Covariance matrix 의 eigen value 와 eigen vector 를 계산하고 내림차순으로 정렬
- 주성분의 수에 따라 가장 큰 n개의 eigen value를 추출하고 대응하는 eigen vector의 기저공간으로 데이터를 사영함
매니폴드 학습(공간학적 방법)
- PCA에서 놓치는 데이터를 학습하는 개념.
- 시각화 알고리즘으로 훨씬 복잡한 매핑을 만들어 더 나은 시각화를 제공한다.
- 기법자체는 PCA에서 나왔으나 위상수학을 덧붙여 시각화에서 많이 쓰인다.
sklearn에서 제공하는 digits 데이터를 가지고 pca와 매니폴드를 사용하여 시각화해보자.
PCA를 사용하여 2차원으로 표현하였을 경우제대로 분류가 되지 않은 것을 확인할 수 있다.
이제 매니폴드 학습법을 사용한 TNSE를 적용해 본다.
매니폴드 학습법으로 데이터가 훨씬 더 잘 분류된걸 확인할 수 있다.
고유얼굴(eigenface) 특성 추출
- PCA를 이용하여 LFW(Labeled Faced in Wild) 데이터셋의 얼굴 이미지에서 특성을 추출
- 2000년 초반 이후의 정치인, 가수, 배우, 운동선수들의 얼굴을 포함
KNN Classifer로 분류하기
PCA 이후 학습
PCA 적용 후, 10% 정도 학습율이 오른 것을 확인할 수 있다.
파이프라인을 사용하여, 전처리를 포함하여, PCA까지 번거로운 과정을 생략할 수 있다.
'플레이데이터 빅데이터 부트캠프 12기 > 머신러닝 & 딥러닝' 카테고리의 다른 글
[플레이데이터 빅데이터 부트캠프]머신러닝 & 딥러닝 Deep Learning 개요 (0) | 2022.08.08 |
---|---|
[플레이데이터 빅데이터 부트캠프]머신러닝 & 딥러닝 Segmentation (0) | 2022.08.06 |
[플레이데이터 빅데이터 부트캠프]머신러닝 & 딥러닝 Ensemble (0) | 2022.08.05 |
[플레이데이터 빅데이터 부트캠프]머신러닝 & 딥러닝 회귀(Regression)(2) (0) | 2022.08.05 |
[플레이데이터 빅데이터 부트캠프]머신러닝 & 딥러닝 회귀(Regression)(1) (0) | 2022.08.04 |