데이터 분석 • 처리

차원 축소(Dimensionality Reduction) 개념과 Wrapper 기법

AIstarter 2024. 5. 17. 12:25

목차:

- 차원축소의 개념 및 활용 분야

- 차원축소 기법

- Mlxtend 파이썬 라이브러리

- Wrapper


*차원축소의 개념 및 활용분야

차원축소(Dimensionality Reduction)는 고차원 데이터의 차원을 줄이는 과정으로, 데이터의 주요 정보를 최대한 유지하면서 차원을 줄여 데이터 분석, 시각화, 기계 학습 모델의 효율성을 향상시키기 위한 기술입니다. 

 

차원축소는 주로 다음과 같은 이유로 사용됩니다:

1. 차원의 저주 극복: 고차원 데이터는 분석과 모델링 과정에서 계산 복잡성을 증가시키고, 과적합(overfitting) 문제를 초래할 수 있습니다. 차원축소는 이러한 문제를 줄여줍니다.
2. 시각화: 고차원 데이터를 2차원 또는 3차원으로 축소하여 데이터를 시각적으로 이해하기 쉽게 만듭니다.
3. 노이즈 제거: 데이터에서 노이즈를 줄여 더 나은 모델 성능을 기대할 수 있습니다.

 

요즘 차원축소가 활용되는 분야에는 이미지 처리, 지연어처리(NLP) 분야가 있습니다.
- 이미지 처리: 이미지 데이터를 압축하거나 노이즈를 제거하기 위해 사용됩니다.
- 자연어 처리(NLP): 텍스트 데이터를 벡터화한 후 차원축소를 통해 처리 효율을 높입니다.


 

*차원축소 기법


차원축소 기법은 데이터의 특성과 분석 목적에 따라 다양한 방법을 선택하여 적용할 수 있습니다. 각 기법은 고유의 장단점이 있으므로, 적절한 기법을 선택하는 것이 중요합니다.

차원축소 기법은 크게 두 가지로 나눌 수 있습니다: 특성 추출(Feature Extraction) 특성 선택(Feature Selection).

크게 아래 그림과 같이 구분할 수 있습니다.



- 특성 추출 (Feature Extraction)
Feature Extraction은 기존의 특성들을 결합하거나 변환하여 새로운 특성을 생성하는 과정입니다.

새로운 특성은 원본 데이터의 중요한 정보를 최대한 유지하면서 차원을 축소합니다. 아래와 특성 추출 방법을  흔히 접해봤을 것입니다.


1. 주성분 분석(PCA, Principal Component Analysis): 데이터의 분산을 최대화하는 방향으로 새로운 축(주성분)을 찾아 데이터 차원을 축소합니다. 주성분들은 서로 직교하며, 첫 번째 주성분이 가장 큰 분산을 설명하고, 두 번째 주성분이 그 다음 큰 분산을 설명하는 식입니다.
2. 선형판별분석(LDA, Linear Discriminant Analysis): PCA와 유사하지만, 클래스 간 분산과 클래스 내 분산의 비율을 최대화하여 분류 문제에 더 적합합니다.
3. t-SNE (t-Distributed Stochastic Neighbor Embedding): 고차원 데이터를 저차원으로 변환할 때 데이터의 국부적인 구조를 잘 유지하는 비선형 기법입니다. 데이터의 시각화에 자주 사용됩니다.
4. UMAP (Uniform Manifold Approximation and Projection): t-SNE와 비슷하지만 더 빠르고, 데이터의 전반적인 구조를 더 잘 유지하는 것으로 알려져 있습니다.


- 특성 선택 (Feature Selection)
Feature Selection 원본 데이터에서 중요한 특성(피처)을 선택하는 과정으로, 불필요한 특성을 제거하여 차원을 줄입니다. 주요 방법으로는 다음이 있습니다:

1. Filter 방법: 통계적 기법을 사용하여 각 특성의 중요도를 평가하고, 중요도가 낮은 특성을 제거합니다. 예를 들어, 상관계수, 분산분석(ANOVA) 등이 사용됩니다.
2. Wrapper 방법: 특성 조합을 평가하여 가장 성능이 좋은 특성 집합을 선택합니다. 예를 들어, 전진 선택법(Forward), 후진 제거법(Backward), Stepwise, 유전 알고리즘(Gentic Algorothm) 등이 있습니다.
3. Embedded 방법: 모델 학습 과정에서 특성 선택을 동시에 수행합니다. 예를 들어, L1 정규화를 사용하는 Lasso 회귀 등이 있습니다.

 


위에서 설명한 차원축소의 Feature Selection의 방법 중 Wrapper 방식의 특성 선택 기법인 '전진 선택법(Forward), 후진 제거법(Backward), Stepwise, 유전 알고리즘(Gentic Algorothm) '를 Mlxtend(Machine Learning Extensions)라는 파이썬 라이브러리와 함께  소개하고자 합니다.

* Mlxtend

mlxtend (rasbt.github.io)

해당 링크는 Mlxtend의 공식 문서입니다. 해당 문서는 MLXTEND를 다음과 같이 소개합니다.

Mlxtend (machine learning extensions) is a Python library of useful tools for the day-to-day data science tasks.

*Wrapper

Wrapper에 다시 소개하자면, 특성 선택(Feature selection)에 속하는 방법 중 하나로, 반복되는 알고리즘을 사용하는 지도 학습 기반의 차원 축소법입니다. Wrapper 방식에는 전진 선택(Forward selection), 후진 제거(Backward 
elimination), Stepwise selection 방식 뿐만아니라 유전 알고리즘(Genetic algorithm) 방식도 사용합니다. 

 

이중 전진 선택(Forward selection), 후진 제거(Backward elimination), Stepwise selection을 다루고자 합니다.

 

•  전진 선택 (Forward Selection): 특성이 없는 상태에서 시작하여 모델을 개선하는 특성을 탐욕적으로 추가 
합니다. 원하는 특성 수에 도달할 때까지 각 반복에서 모델을 가장 많이 개선하는 특성을 추가합니다.


•  후진 제거 (Backward elimination):  모든 특성을 포함한 상태에서 시작하여 각 반복에서 가장 중요도가 낮은 
특성을 탐욕적으로 제거합니다.

 

- 하지만, 전진 선택에서는 한 번 선택된 특성은 제거되지 않고, 후진 제거에서는 한 번 제거된 특성은 다시 선택되지 않습니다. 그렇기 때문에 두 방법 모두 더 많은 특성 조합에 대해 모델을 평가 할 수 없다는 단점을 가지고 있습니다. 

 

Stepwise Selection

Stepwise selection은 전진 선택과 후진 제거 방식을 매 단계마다 반복하여 적용하는 방식입니다. 이전 두 방법보다는 더 오래 걸리지만 최적의 변수 조합을 찾을 확률이 높습니다. 

 

Mlxtend 라이브러리에서 해당 방식들을 사용할 수 있습니다. 

 

Mlxtend의 SequentialFeatureSelector를 사용하여 

forward=True : 전진 선택

forward=False : 후진 제거

구현할 수 있습니다.

 

Mlxtend의 ExhaustiveFeatureSelector를 사용하여 
가능한 모든 특성 조합을 평가하여 지정된 성능 지표에 따라 최적의 세트를 결정하는 완전 탐색 특성 선택을 수행합니다.