차원 축소 : 매우 많은 피처로 구성된 데이터 세트의 차원을 축소해 새로운 차원의 데이터 세트를 생성하는 것
-> 잠재적 특성을 피처로 도출해 함축적 형태의 이미지 변환과 암축 수행 가능
-> 과적합 영향력이 작아져서 오히려 원본 데이터로 예측하는 것보다 예측 성능 좋아짐
차원 축소 알고리즘
1. PCA(Principal Component Analysis, 주성분분석)
-분산이 데이터의 특성을 가장 잘 나타내는 것으로 간주하여, 데이터 변동성이 가장 큰 방향으로 축을 생성하고, 새롭게 생성된 축으로 데이터를 투영하는 방식.
-첫 번째 벡터 축 : 가장 큰 데이터 변동성을 기반으로 생성
두 번째 벡터 축 : 첫 번째 벡터 축에 직각이 되는 벡터(직교벡터)
세 번째 벡터 축 : 두 번째 벡터 축과 직각이 되는 벡터를 설정하는 방식으로 축 생성
-(선형대수관점)
입력 데이터의 공분산 행렬을 고유값(eigenvalue)으로 분해하고, 이렇게 구한 고유벡터에 입력 데이터를 선형 변환하는 것.
공분산 = 고유벡터 직교 행렬 * 고유값 정방 행렬 * 고유벡터 직교 행렬의 전치 행렬
입력 데이터의 공분산 행렬이 고유벡터와 고유값으로 분해될 수 있으며, 이렇게 분해된 고유벡터를 이용해 입력 데이터를 선형 변환하는 방식이 PCA이다.
[PCA step]
1.입력 데이터 세트의 공분산 행렬을 생성합니다.
2.공분산 행렬의 고유벡터와 고유값을 계산합니다.
3.고유값이 가장 큰 순으로 k개(PCA 변환 차수)만큼 고유벡터를 추출합니다,
4.고유값이 가장 큰 순으로 추출된 고유벡터를 이용해 새롭게 입력 데이터를 반환합니다.
- 예제
->4개의 속성이 2개의 변환 속성이 돼도 예측 성능에 전혀 영향을 받지 않을 정도로 PCA 변환이 잘 적용됐음을 의미
->대부분은 PCA 변환 차원 개수에 따라 예측 성능이 떨어질 수 밖에 없다.
2. LDA(Linear Discriminant Analysis)
-선형 판별 분석법. PCA와 매우 유사한 방식.
PCA | LDA |
입력 데이터 세트를 저차원 공간에 투영해 차원을 축소하는 기법 | |
비지도학습 | 지도학습의 분류에서 사용하기 쉽도록 개별 클래스를 분별할 수 있는 기준을 최대한 유지하면서 차원 축소 |
입력 데이터의 변동성이 가장 큰 축 |
입력 데이터의 결정 값 클래스를 최대한으로 분리할 수 있는 축 ->클래스 간 분산(between-class scatter)과 클래스 내부 분산(within-class scatter)의 비율을 최대화하는 방식으로 차원을 축소 |
[LDA step]
1.클래스 내부와 클래스 간 분산 행렬을 구한다. 이 두 개의 행렬은 입력 데이터의 결정 값 클래스별로 개별 피처의 평균 벡터(mean vector)를 기반으로 구한다.
2.클래스 내부 분산 행렬을 Sw, 클래스 간 분산 행렬을 Sb라고 하면 두 행렬을 고유벡터로 분해할 수 있다.
3.고유값이 가장 큰 순으로 k개(LDA변환 차수만큼) 추출한다.
4.고유값이 가장 큰 순으로 추출된 고유벡터를 이용해 새롭게 입력 데이터를 반환한다.
3. SVD(Singular Value Decomposition, 특이값 분해)
-정방행렬만을 고유벡터로 분해할 수 있는 PCA와 달리, SVD는 행과 열의 크기가 다른 행렬에도 적용할 수 있다.
-사이파이의 SVD는 scipy.linalg.svd 이용
- 예제
-Truncated SVD
: ∑의 대각원소 중에 상위 몇 개만 추출해서 여기에 대응하는 U와 V의 원소도 함께 제거해 더욱 차원을 줄인 형태로 분해하는 것
: 넘파이가 아닌 사이파이에서만 지원. 사이파이의 truncated svd는 희소행렬로만 지원돼서 scipy.sparse.linalg.svds를 이용
-데이터 세트가 스케일링으로 데이터 중심이 동일해지면 사이킷런의 SVD와 PCA는 동일한 변환을 수행
SVD와 PCA는 동일한 변환을 수행
PCA는 밀집행렬(Dense Matrix)에 대한 변환만 가능하며 SVD는 희소 행렬(Sparse Matrix)에 대한 변환도 가능
4. NMF(Non-Negative Matrix Factorization)
-Truncated SVD와 같이 낮은 랭크를 통한 행렬 근사(Low-Rank Approximation)방식의 변형
-원본 행렬 내의 모든 원소 값이 모두 양수(0이상)라는 게 보장되면, 좀 더 간단하게 두 개의 기반 양수 행렬로 분해될 수 있는 기법을 지칭한다.
-분해 행렬 W는 원본 행에 대해서 이 잠재 요소의 값이 얼마나 되는지에 대응하며, 분해 행렬 H는 이 잠재 요소가 원본 열(즉, 원본 속성)로 어떻게 구성됐는지를 나타내는 행렬
-사이킷런에서 NMF는 NMF 클래스를 이용해 지원된다.
'Stay Hungry Stay Foolish > ML & DL' 카테고리의 다른 글
[밑바닥부터 시작하는 딥러닝] 4장 신경망 학습 (2) | 2021.02.01 |
---|---|
[Coursera Deep Learning] Neural Networks and Deep Learning 강의 추천 (0) | 2021.01.26 |
[밑바닥부터 시작하는 딥러닝] 정리 링크 공유 (2) | 2021.01.24 |
넥슨, 강화학습&AI을 이용하여 게임적용 (0) | 2020.10.22 |
[CS231n] standford university 강의링크 정리 (2) | 2020.03.31 |
댓글