본문 바로가기

머신러닝

차원축소, 특성 추출, 매니폴드 학습

비지도 학습 일반적 동기 : 시각화, 데이터 압축, 지도학습에 사용

pca, nmf, t=SNE

1. PCA

데이터셋을 회전시키는 기술 -> 새로운 특성 중 일부만 선택

simpleimputer 찾아보기

분산이 가장 큰 방향 찾음 즉 특성 들의 상관관계가 가장 큰 방향

pca가 가장 널리 사용되는 분야 : 고차원 데이터셋의 시각화 && 주요 상호작용을 찾아낼수 있음

 

1. pca 객체생성, 표준값으로 바꾸기

2. fit호출해서 주성분 찾고

3. transform으로 데이터 회전, 차원 축소

특성의 스케일이 서로 다르면 올바른 주성분 방향을 찾을 수 없으니 표준값으로 바꾸기

cancer = load_breast_cancer()

scaler = StandardScaler()
scaler.fit(cancer.data)
X_scaled = scaler.transform(cancer.data)

from sklearn.decomposition import PCA

pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)

print(X_scaled.shape)
print(X_pca.shape)

pca 단점 : 그래프의 두 축을 해석하기가 어려움

주성분은 여러 특성이 조합된 형태

print(pca.components_.shape)
print()
print(pca.components_)
(2, 30)

[[ 0.21890244  0.10372458  0.22753729  0.22099499  0.14258969  0.23928535
   0.25840048  0.26085376  0.13816696  0.06436335  0.20597878  0.01742803
   0.21132592  0.20286964  0.01453145  0.17039345  0.15358979  0.1834174
   0.04249842  0.10256832  0.22799663  0.10446933  0.23663968  0.22487053
   0.12795256  0.21009588  0.22876753  0.25088597  0.12290456  0.13178394]
 [-0.23385713 -0.05970609 -0.21518136 -0.23107671  0.18611302  0.15189161
   0.06016536 -0.0347675   0.19034877  0.36657547 -0.10555215  0.08997968
  -0.08945723 -0.15229263  0.20443045  0.2327159   0.19720728  0.13032156
   0.183848    0.28009203 -0.21986638 -0.0454673  -0.19987843 -0.21935186
   0.17230435  0.14359317  0.09796411 -0.00825724  0.14188335  0.27533947]]

--- np.where함수는 input차원마다 np.ndarray를 만들어 tuple형태로 return합니다. 따라서 2차원 input을 넣으면 아래와 같은 결과가 나옵니다

 

PCA의 whiten매개변수 -> 변환한 후에 standard scaler를 적용한 것과 같음

pca = PCA(n_components=100, whiten=True, random_state=0).fit(X_train)
X_train_pca = pca.transform(X_train)
X_test_pca = pca.transform(X_test)

inverse_transform으로 원래 특성 공간으로 되돌림

 

 

2. t-SNE 매니폴드 학습

매니폴드 학습 : 목적이 시각화라 3개 이상의 특성을 뽑는 경우가 거의 없음

새로운 데이터에는 적용 못해서 테스트 set에는 적용 불가  -> 지도학습으로는 사용안함

이웃 데이터 포인트에 대한 정보를 보존하려 노력함

t-SNE은 transform 없음

 

'머신러닝' 카테고리의 다른 글

데이터 표현과 feature engineering  (0) 2021.07.31
clustering  (0) 2021.07.25
비지도 학습(데이터 전처리와 스케일 조정)  (0) 2021.07.22
지도학습 총정리  (0) 2021.07.21
분류 예측의 불확실성 추정  (0) 2021.07.21