01 차원 축소 개요
차원 축소란? 매우 많은 피처로 구성된 다차원 데이터 세트의 차원을 축소해 새로운 차원의 데이터 세트를 생성하는 것
차원이 증가할수록
- 데이터 포인트 간의 거리가 멀어진다
- 희소한 구조를 가지게 된다
- (수백 개 이상의 피처로 구성된 데이터 세트의 경우) 예측 신뢰도가 떨어진다
- 피처가 많을 경우 개별 피처간에 상관관계가 높을 가능성이 크다 > 다중 공선성 문제 > 예측 저하
차원 축소의 장점
- 더 직관적으로 데이터를 해석할 수 있다
- 3차원 이하의 차원 축소를 통해 시각적으로 데이터를 압축해서 표현
- 학습에 필요한 처리 능력을 줄일 수 있다
피처 선택 (feature selection) : 특정 피처에 종속성이 강한 불필요한 피처는 아예 제거하고, 주요 피처만 선택하는 것
피처 추출(feature extraction) : 기존 피처를 저차원의 중요 피처로 압축해서 추출하는 것. 함축적으로 더 잘 설명할 수 있는 또 다른 공간으로 매핑해 추출하는 것.
차원 축소의 의미는 데이터를 잘 설명할 수 있는 잠재적인 요소를 추출하는 데에 있다.
대표적인 차원 축소 알고리즘 : PCA, SVD, NMF
| 이미지 데이터에서의 차원 축소 | 텍스트 문서의 차원 축소 |
| 매우 많은 픽셀로 이뤄진 데이터에서 잠재된 특성을 피처로 도출 함축적 형태의 이미지 변환과 압축 수행 분류 수행 시 과적합 영향력이 작아짐 예측 성능 상승 |
문서 내 단어들의 구성에서 숨겨져 있는 Semantic 의미나 topic을 잠재 요소로 간주 숨겨진 의미, 의도를 추출 |
02 PCA (Principal Component Analysis)
PCA
- 가장 대표적인 차원 축소 기법
- 여러 변수 간에 존재하는 상관관계를 이용해 이를 대표하는 주성분을 추출해 차원을 축소
- 가장 높은 분산을 가지는 데이터의 축을 찾아 이 축으로 차원을 축소
- 가장 큰 데이터 변동성을 기반으로 첫 번째 벡터 축 생성
- 이 벡터 축에 직각이 되는 벡터를 축으로 두 번째 축 생성
- 두 번째 축과 직각이 되는 벡터를 설정하는 방식으로 세 번째 축 생성
=> 벡터 축의 개수만큼의 차원으로 원본 데이터가 차원 축소됨
입력 데이터의 공분산 행렬이 고유벡터와 고유값으로 분해될 수 있으며, 이렇게 분해된 고유벡터를 이용해 입력 데이터를 선형 변환하는 방식
- 입력 데이터 세터의 공분산 행렬을 생성함
- 공분산 행렬의 고유벡터와 고유값을 계산함
- 고유값이 가장 큰 순으로 K개만큼 고유벡터를 추출함
- 고유값이 가장 큰 순으로 추출된 고유벡터를 이용해 새롭게 입력 데이터를 변환함.
03 LDA (Linear Discriminant Analysis)
LDA
- 선형 판별 분석법
- PCA와 매우 유사
- 입력 데이터 세트를 저차원 공간에 투영해 차원을 축소하는 기법
- 지도학습의 분류에서 사용하기 쉽도록 개별 클래스를 분별할 수 있는 기준을 최대한 유지하면서 차원 축소
- 입력 데이터의 결정 값 클래스를 최대한으로 분리할 수 있는 축을 찾음
- 특정 공간상에서 클래스 분리를 최대화하는 축을 찾기 위해 클래스 간 분산과 클래스 내부 분산의 비율을 최대화함
- 클래스 간의 분산은 최대한 크게, 클래스 내부의 분산은 최대한 작게
- 클래스 내부와 클래스 간 분산 행렬을 구한다. 이 두 개의 행렬은 입력 데이터의 결정 값 클래스별로 개별 피처의 평균 벡터를 기반으로 구한다.
- 클래스 내부 분산 행렬을 S_w, 클래스 간 분산 행렬을 S_b라고 하여 두 행렬을 고유벡터로 분해한다
- 고유값이 가장 큰 순으로 K개 추출한다
- 고유값이 가장 큰 순으로 추출된 고유벡터를 이용해 새롭게 입력 데이터를 변환한다
04 SVD (singular value decomposition)
SVD
- 정방행렬 뿐 아니라 행과 열의 크기가 다른 행렬에도 적용할 수 있음
- 특이값 분해
- Truncated SVD는 Σ의 대각원소 중에 상위 몇 개만 추출해서 여기에 대응하는 U와 V의 원소도 함께 제거해 더욱 차원을 줄인 형태로 분해하는 것

05 NMF (Non-NEgative Matrix Factorization)
NMF
- 낮은 랭크를 통한 행렬 근사 방식의 변형
- 원본 행렬 내의 모든 원소 값이 모두 양수라는 게 보장되면 두 개의 기반 양수 행렬로 분해될 수 있는 기법
- 행렬 분해를 하게 되면 잠재 요소를 특성으로 가지게 됨
- 차원 축소를 통한 잠재 요소 도출로 이미지 변환 및 압축, 텍스트의 토픽 도출 등의 영역에서 사용됨.

06 정리
차원 축소를 통해 데이터 세트를 직관적으로 이해하기 위함. 단순히 피처의 개수를 줄이는 개념보다는 데이터를 더 잘 설명할 수 있는 잠재적인 요소를 추출하는 데 의미가 있음.
PCA : 입력 데이터의 변동성이 가장 큰 축을 구하고 다시 이 축에 직각인 축을 구하고 투영해 차원을 축소하는 방식. 공분산 행렬을 기반으로 고유 벡터를 생성하고 이렇게 구한 고유 벡터에 입력 데이터를 선형 변환.
LDA: PCA와 매우 유사하며, 입력 데이터의 결정 값 클래스를 최대한으로 분리할 수 있는 축을 찾는 방식이라는 차이점이 있음
SVD와 NMF : 고차원 행렬을 두 개의 저차원 행렬로 분리하는 행렬 분해 기법. 원본 행렬에서 잠재된 요소를 추출함.
'AIchemist' 카테고리의 다른 글
| [8주차] 군집화 (0) | 2024.11.11 |
|---|---|
| [7주차] Discuss Question (0) | 2024.11.04 |
| [6주차] Discuss Question (0) | 2024.10.28 |
| [5주차] 회귀 (선형 회귀/과적합/과소적합/릿지/라쏘/엘라스틱넷/로지스틱/회귀트리) (0) | 2024.10.07 |
| [4주차]분류(2) (XGBoost/LightGBM/베이지안 최적화/스태킹 앙상블) (0) | 2024.09.30 |