본문 바로가기

Machine Learning

Unsupervised Learning사례, data preprocessing

반응형
Unsupervised Learning 이란 알고 있는 출력값이나 정보 없이 학습 알고리즘을 가르쳐야 하는 모든 종류의 머신러닝을 의미한다. 학습 알고리즘은 input만을 통해서 데이터에서 지식을 추출할 수 있어야 한다. 근래의 대표적인 unsupervised learning 분야에 하나로는 GAN있다.


Unsupervised Learning의 종류와 도전 과제

앞으로 살펴볼 것은 크게 두 종류의 학습이다.

    1. 비지도 변환 Unsupervised Transformation
  • 데이터를 새롭게 표현하여 사람이나 다른 머신러닝 알고리즘이 원래 데이터보다 쉽게 해석할 수 있도록 만드는 알고리즘
    • 특히 널리 쓰이는 분야로 Dimensionality Reduction이 있는데,  특성 수를 줄이면서 꼭 필요한 특징을 포함한 데이터로 표현하는 방법
    • ex) 텍스트 문서에서 주제를 추출
    2. 군집 Clustering
  • 데이터를 비슷한 것끼리 그룹으로 묶는 것
    • ex) 사진에 나타난 모든 얼굴을 추출하여 비슷한 얼굴로 그룹 짓는 것



도전과제 및 단점

가장 큰 문제가 되는 부분은 알고리즘이 뭔가 유용한 것을 학습했는지 평가할 방법이 모호하다.
보토 레이블이 없는 데이터에 적용하기 때문에 무엇이 올바른 출력인지 모른다.
가령 얼굴 분류를 위해 데이터를 던져주면, 옆모습이 찍힌 사진과 앞모습이 찍힌 사진으로 분류해 줄 수도 있는데 분류가 제대로 이루어진 것이지만 우리의 목표와는 거리가 멀다. 아쉽게도 우리가 원하는 것을 알려줄 방법이 없다.
그래서, 평가의 유일한 방법이 직접 확인하는 것일 때가 많다.

이런 이유로 data science에서 데이터를 더 잘 이해하려고 할 때 탐색적 분석 단계에서 많이 이용된다.
또한, pre-processing에서도 좋다. 학습의 결과로 새롭게 표현된 데이터를 사용해 학습하면, supervised learning의 정확도와 메모리, 시간을 절약할 수 있다.
pre-processing, features scaling은 supervised learnning에서 자주 사용되지만, 스케일 조정 메서드는 supervised information이 이용되지 않으므로 unsupervised method이다.




Pre-processing과 Features Scaling

기존에 본 NN과 SVM 알고리즘은 Data scale에 매우 민감하다. 간단한 scaling 방식을 살펴보자.

pre-processing Method

  1. StandardScaler
  2. RobustScaler
  3. MinMaxScaler
  4. Normalizer


SS : 평균을 0, 분산을 1로 변경하여 모든 feature가 같은 크기를 가지게 함. (z정규화)
RS : 중간 값 median, 사분위값 quartile을 사용하여 정규화함. (x-x_q2(median)) / (x_q3-x_q1)
      이로 인해 이상치Outlier에 영향을 받지 않는다.(ex)측정 에러)
MMS : 모든 특성이 0과 1사이에 위치하도록 데이터를 변경. ( x-x_min)/(x_max-x_min) (range로 정규화)

N : 위의 3종의 전처리와는 매우 다른 방식이다. 특성벡터의 L1거리(유클리디안 거리)가 1이되도록 데이터 포인트를 조정. 
    직관적으로, 길이가 1인 구 S^n에 투영하는 방식이다. (2차원에선 원에 투영) 데이터 포인터가 길이에 반비례하여 조정된다.
    주로 특성벡터의 길이는 상관없고, 데이터 방향(각도)만이 중요할 때 주로 사용함.





적용


MMS를 이용해보면, train set을 잘 정규화 시킨다. 이를 이용해 SVM을 적용하려면, test set도 변환해야한다.

위의 결과처럼, 0보다 작은 최솟값과 0보다큰 최댓값이 생성된다. 이유는 MMS( 모든 scale모델 포함)를 적용할때, 항상 train set과 test set에 같은 변환을 해야하기 때문이다. 따라서, transform 메서드는 test set의 MM을 사용하지 않고, 항상 training set의 MM을 이용한다. 

실제로 test-set에 MM을 이용했을 때와 비교해 보자.
1,2번 그래프는 feature 축의 단위만 바뀌고 그래프내에 data의 구성은 동일하다. 하지만, 3번째 그래프는 test point가 스케일이 다르게 조정되었기 때문에 훈련 세트와 다른 비율로 이동이 되어있고 그결과 데이터 배열이 뒤죽박죽이다.

또 다른 측면으로 생각해보면, test set을 한 개의 데이터로만 구성하여 단일 데이터를 예측하고자할때, test set기반의 MM이 정의 되지 않게 되는데, test set의 크기로 인해 작업 과정이 바뀌게 되는 것은 앞뒤가 맞지 않는 것이다.

*참고로 fit_transform이라는 fit과 transform이 동시에 수행되는 메서드도 있다. 
모든 모델에서 이 메서드를 쓰는 것이 좋은 방법은 아니지만(ex) 전처리가 필요없는 tree 기반모델) train set에 이러한 변환을 사용하는 것이 좋은 습관이다.






반응형

'Machine Learning' 카테고리의 다른 글

soft-max함수, numerical instability  (0) 2019.02.11
Categorical 변수  (0) 2019.02.04
Supervised Learning Models  (0) 2019.02.03
Classification에서의 불확실성 추정  (0) 2019.02.02
Kernel Support Vector Machines  (0) 2019.01.27