본문 바로가기

머신러닝

[머신러닝] 차원 축소(Dimension Reduction) 알고리즘

차원 축소(Dimension Reduction)는 많은 피처로 구성된 다차원 데이터 세트를 차원을 축소해 새로운 차원의 데이터 세트를 생성하는 것이다. 다차원에서의 데이터 세트의 경우 적은 차원보다 예측 신뢰도가 떨어지기 때문에 차원을 축소해 직관적으로 데이터를 해석할 수 있다. 차원 축소는 단순히 데이터의 압축만을 의미하는 것이 아닌 데이터를 잘 설명할 수 있는 잠재적인 요소를 추출하는 것이다.

 

차원 축소를 하는 과정은 피처 선택(feature selection)과 피처 추출(feature extraction)이 있다. 피처 선택은 많은 데이터 중에서 불필요한 피처는 제거하고 의미 있는 피처만 선택하는 방법이다. 피처 추출은 기존의 피처들 중에서 의미 있는 피처들을 압축하여 새로운 피처를 만들어 내는 방법이다. 기존 피처들이 나타내지 못한 잠재적인 요소(Latent Factor)를 추출하는 것을 의미한다.

 

 

PCA(Principal Component Analysis)

PCA(Principal Component Analysis)는 대표적인 차원 축소 알고리즘이다. 고차원의 원본 데이터를 저차원의 부분 공간으로 투영하여 데이터를 축소하는 기법으로 원본 데이터가 가지는 데이터 변동성을 가장 중요한 정보로 간주한다. 변수 간 존재하는 상관관계를 이용해 주성분(Principal Componet)를 추출해 차원을 축소하기 때문에 주성분분석이라고 부른다.

 

PCA는 변동성을 기반으로 벡터 축 하나(PCA1)를 생성해내고 이 축의 직각이 되는 벡터 축(PCA2)를 생성한다. 이렇게 생성 한 축에 데이터를 투영하면 축의 개수만큼의 차원으로 데이터가 차원 축소된다.

 

PCA를 수행하는 과정은 다음과 같다.

 

1. 입력 데이터 세트의 공분산 행렬 생성

2. 공분산 행렬의 고유벡터와 고유값을 계산

3. 고유값이 가장 큰 순으로 K개(PCA 변환 차수)만큼 고유벡터를 추출

4. 고유값이 가장 큰 순으로 추출된 고유벡터를 이용해 새롭게 입력 데이터를 변환

 

LDA(Linear Discriminant Analysis)

LDA(Linear Discriminant Analysis)는 PCA와 유사하게 데이터 세트를 저차원 공간에 투영해 차원을 축소하는 기법이다. 데이터 분류(Classification)을 할 때 활용할 수 있도록 클래스를 분류할 수 있는 기준을 유지한 채 차원을 축소한다. 각각의 클래스를 명확하게 하기 위해 클래스 간 분산(between class scatter)는 최대화하고 클래스 내 분산(within class scatter)은 최소화하는 방식으로 구현한다.

 

 

LDA를 수행하는 과정은 다음과 같다.

 

1. 클래스 내부와 클래스 간 분산 행렬 계산

2. 두 행렬을 고유벡터로 분해

3. 고유값이 가장 큰 순으로 K개(LDA 변환 차수) 추출

4. 고유값이 가장 큰 순으로 추출된 고유벡터를 이용해 새롭게 입력 데이터를 변환

 

SVD(Singular Value Decomposition)

SVD(Singular Value Decomposition)는 특이값 분해라고 하며 정방행렬만을 분해할 수 있던 PCA와 다르게 행과 열의 크기가 다른 행렬도 분해할 수 있다. SVD는 m x n 크기의 행렬을 분해하는데 분해 방법과 크기에 따라 Full SVD, Compact SVD, Truncated SVD 등이 있다.

 

- Full SVD :  A의 행렬이 m x n 크기일 때 U 행렬의 크기는 m x m , 대각행렬 시그마의 크기는 m x n, V 행렬의 크기는 n x n 이다. 기존의 행렬보다 크기가 더 커지기 때문에 일반적으로 사용하지 않는다.

- Compact SVD : A의 행렬이 m x n 크기일 때 대각 행렬 시그마의 크기는 비대각 부분과 대각 원소가 0인 부분을 제거하여 p x p 값을 가지고 그에 따라 U 행렬은 m x p 크기로 V 행렬의 크기는 p x n 으로 축소된다.

- Truncated SVD : 일반적으로 SVD를 이야기하면 Truncated SVD이다. A 행렬이 m x n 크기일 때 대각행렬 시그마는 대각 원소 가운데 상위 r개만 추출하여 차원 축소를 하며 r x r 크기를 가진다. 그에 따라 U 행렬은 m x r , V 행렬은 n x r의 크기를 가진다.

 

Truncated SVD

 

NMF(Non-Negative Matrix Factorization)

NMF(Non-Negative Matrix Factorization)는 SVD와 같이 낮은 랭크를 통한 행렬 근사 방식의 변형이다. 원본 행렬 내의 모든 원소 값이 모두 양수라는 게 보장되면 간단하게 두 개의 양수 행렬로 분해할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

출처 : 파이썬 머신러닝 완벽 가이드 - 권철민