본문 바로가기
Data Analytics with python/[Theory]

[Machine Learning] 차원 축소

by 보끔밥0130 2023. 2. 13.
728x90

차원 축소 (Dimension Reduction)


매우 많은 피처로 구성된 다차원 데이터 세트의 차원을 축소해 새로운 차원의 데이터 세트를 생성하는 기법입니다.

*차원 증가의 한계
1) 수백 개 이상의 피처로 구성된 데이터 세트일수록 예측 신뢰도가 떨어집니다.
상대적으로 적은 차원에서 학습된 모델의 예측 신뢰도가 더 높습니다.

2) 피처가 많아질수록 개별 피처간에 상관관계가 높을 가능성이 커집니다.
특히, 선형 모델에서는 입력 변수 간의 상관관계가 높을 경우로 인한 다중 공선성 문제로 모델의 예측 성능이 저하됩니다.

3차원 이하의 차원 축소를 통해서 시각적으로 데이터를 압축해서 표현하면 직관적을 데이터를 해석할 수 있습니다.

함축적인 특성 추출은 기존 피처가 전혀 인지하기 어려웠던 잠재적인 요소를 추출하는 것을 의미합니다.

대표적인 차원 축소 알고리즘 : PCA, LDA, SVD, NMF

차원축소는 단순히 피처의 개수를 줄이는 개념이 아닌 데이터를 잘 설명할 수 있는 잠재적인 요소를 추출하는 데 큰 의미가 있습니다.

● PCA
우선 입력 데이터의 변동성이 가장 큰 축을 구합니다.
 
이 축을 기준하여 다시 변동성이 큰 직각인 축을 반복적으로 구합니다.

축소하려는 차원 개수만큼 구한 후 입력 데이터를 이 축들에 투영해 차원을 축소하는 방식입니다.

 

https://knote.tistory.com/45

 

PCA (Principal Component Analysis) : 주성분 분석 개요

PCA는 여러 변수 간에 존재하는 상관관계를 이용하여 가장 대표하는 주성분(PC)을 추출해 차원을 축소하는 기법입니다. PCA로 차원을 축소할 경우 기존 데이터의 정보 유실을 최소화 해야합니다.

knote.tistory.com

 

https://knote.tistory.com/225

 

PCA components 기반 변환

PCA 개요¶ Data source: https://archive.ics.uci.edu/ml/datasets/default+of+credit+card+clients In [1]: import pandas as pd import seaborn as sns import matplotlib.pyplot as plt %matplotlib inline # PCA from sklearn.decomposition import PCA from sklearn.p

knote.tistory.com

 

● LDA
입력 데이터의 결정 값 클래스를 최대한으로 분리할 수 있는 축을 찾는 방식입니다.

 

https://knote.tistory.com/223

 

[Machine Learning] LDA

Linear Discriminant Analysis ● 선형 판별 분석법으로 불립니다. ● PCA와 유사하게 입력 데이터 세트를 저차원 공간에 투영해 차원을 축소하는 기법입니다. ● 개별 클래스를 분별할 수 있는 기준을 최

knote.tistory.com

 

https://knote.tistory.com/226

 

LDA 변환

LDA¶ In [1]: from sklearn.discriminant_analysis import LinearDiscriminantAnalysis from sklearn.preprocessing import StandardScaler from sklearn.datasets import load_iris import pandas as pd import matplotlib.pyplot as plt %matplotlib inline In [2]: iris =

knote.tistory.com


▶ 행렬 분해 기법 : SVD, NMF
매우 많은 피처 데이터를 가진 고차원 행렬을 두 개의 저차원 행렬로 분리하는 행렬 분해 기법입니다.

● SVD
PCA와 유사한 행렬 분해 기법을 이용하나 행과 열의 크기가 다른 행렬에도 적용합니다.

 

https://knote.tistory.com/227

 

SVD 변환

SVD¶ 사이킷런 TruncatedSVD 클래스를 이용한 변환¶ In [1]: from sklearn.decomposition import TruncatedSVD, PCA from sklearn.datasets import load_iris import matplotlib.pyplot as plt %matplotlib inline from sklearn.preprocessing import Standard

knote.tistory.com


● NMF
원본 행렬 내의 모든 원소 값이 모두 양수(0 이상)라는 게 보장되어 간단하게 두 개의 기반 양수 행렬로 분해될 수 있는 기법입니다.
분해된 행렬은 잠재 요소를 특성으로 가지게 됩니다.

https://knote.tistory.com/228

 

NMF 변환

NMF¶ In [1]: from sklearn.decomposition import NMF from sklearn.datasets import load_iris import matplotlib.pyplot as plt %matplotlib inline iris In [2]: iris = load_iris() iris_ftrs = iris.data NMF 변환 In [12]: nmf = NMF(n_components=2, max_iter=1000)

knote.tistory.com

 

728x90

댓글