소품집

[ML] Semi-Supervised Learning, K-means clustering 본문

AI

[ML] Semi-Supervised Learning, K-means clustering

sodayeong 2020. 6. 13. 15:56

Small Dataset, Unbalanced Dataset


 

Semi Supervised는 기계학습과 비지도학습의 중간 학습으로, 학습하기 전 사전에 모델에 분류를 위한 약간의 사전지식을 부여하게 됩니다.

 

  • Transfer learning: 학습데이터가 부족한 분야의 모델 구축을 위해 데이터가 풍부한 분야에서 훈련된 모델을 재사용하게 됨 (ex: Pre-trained model의 파라메터로 초기화)
  • Distant Supervision: a weakly labeled training set (training data is labeled automatically based on heuristics / rules)
    • 약하게 라벨링 된 트레이닝 셋을 사용하게 됩니다. (훈련 데이터는 휴리스틱이나 규칙에 기반하여 자동적으로 라벨링 되어 있음)
  • Up/down sampling

  • GAN(최근 많이 화두되는 기법)을 사용하여 fake data를 생성하여 robustness를 높이기도 함
  • Loss weight control
    • Cost-sensitive learning: 학습 데이터의 label 비율에 반비례하게 loss 함수에 weigh를 조절함으로써, 비교적 적은 비율의 label에 해당하는 데이터에 더욱 민감하게 학습
    • Focal loss: 학습 데이터 Label 비율이 높아서 상대적으로 쉽게 분류가 가능한 Label에 대한 weight를 작게 조절함으로써, Label 비율이 작은 데이터들에 집중하도록 조절 (쉽게 분류되지 않은 label에 weight를 조절!!)

Small well-known semi-supervised learning

  • Active-learning
  • Self-learning
  • Co-learning

 

Active Learning


 

 

How to wisely select the data to query?


Uncertainty sampling

  • 하나의 모델을 학습한 다음에 label 뿐만 아니라 confidence(확실성)가 몇 점인지 파악하고, 가장 작은 confidence를 갖는 데이터의 레이블을 물어보게 됨. 즉, 가장 애매한 것 (0.5)좀 물어볼게~

Committee-based sampling

  • 학습 모델을 생성하고 학습된 모델들끼리 unlabeled data를 결정하게 되는데, 동점이 나올 때만 사람에게 물어보게 됩니다. (가장 애매한 것을 물어본다는 관점에서 Uncertainty sampling과 비슷하지만 다수결에 의해 스스로 결정한다는 점이 특별하네요.)

Self-training(self-leaning)

  • 학습 데이터(Gold dataset)로 Supervised 학습함으로써 생성한 모델 M을 사용하여 unlabeled instans {x1, x2, x3}에 대하여 예측결과를 {y1, y2, y3,..}을 얻음
  • Confidence가 높은 일부(Silver dataset)를 학습용으로 사용하여 모델 M'(=G+S)을 얻음
  • 위 과정을 일정조건을 만족할 때까지 반복하게 됨
  • 단점: 자칫 잘 못하면 모델이 엉뚱한 방향으로 학습될 수 있음

Co-learning

  • 독힙적인 모델들이 각각 self-learning을 하되, 서로 간에 confidence가 높은 데이터를 물물교환 하게 된다.

 

 

Cluster


  • Model is trained without labels (라벨 없이 학습)
    • 하지만, 가장 확실한 clustering을 하기 위해서는 label이 있어야한다.
  • Some well-known clustering models
    • K-means clustering
    • Hierarchical clustering
    • k-NN

 

K-means


K-means

  • K개의 '군집 중심' (Cluster centrioid)
  • 개념으 1957년, '후고 스테인하우스'가 소개
  • 용어는 1976년 '제임스 매퀸'이 사용

K-means 알고리즘

  • K 개의 군집으로 나눠주는 알고리즘
  • 1957년 ' 스튜어트 로이드'가 최초 고안함
  • 1982년에 컴퓨터 과학에서 적용

 

 

관측자의 관점에 따라 1,2,4개 등 다양한 의견이 나올 수 있는데요. 그래서 최적의 K를 찾기위한 알고리즘을 보겠습니다.

 

 

 

K-means 알고리즘의 formal 버전


 

 

K-means 알고리즘 쉬운 버전


  1. 임의의 k개의 cluster centriod G1-center ~ Gk-center 선택
  2. 각 데이터 di와 G1-center ~ Gk-center에 대한 '거리'를 계산하여, 가장 가까운 Gi로 할당 (ex:Euclidean Distance)
  3. cluster centriod G1-center ~ Gk-center 재계산
  4. 데이터가 할당된 cluster가 변경되는 경우가 없을 때 까지 2.~4. 과정을 반복

 

 

동작예시 (K=2)


 

다른 예시 (K=3)


  • 여기서 의문이 드는 점은, 적절한 K의 기준이 애매모호하다는 것 입니다.
  • 이 최적의 K값을 자동으로 알아낼 수는 없는 걸까요?

 

정리: K-means 알고리즘


  • 알고리즘 자체는 그다지 복잡하지 않음
  • 그런데, 고민해애 할 것들이 좀 남아 있음
  • [심화] 최적의 K값을 자동으로 알아낼 수는 없을까?

 

  • [심화] 알고리즘 자체가 가진 약점은 없을까?

 

최적의 Cluster 개수

  • 관점에 따라 '최적'이라는 개념은 달라질 수 있으며 이를 결정하기 위한 연구들이 있음
  • Hierarchical clustering 결과를 활용하여 최적의 개수를 짐작하기
  • Rule of thumb
  • Elbow method
    • 여러 후보 K 값들에 대하여, Cluster들의 적절함 평가 (ex: Cluster 중심으로부터의 거리 등)
    • 즉, Grid search
      • 여러 후보값들에 대하여 일일이 시행해보고 관찰하는 것
  • Information Criterion Approch
    • 클러스터링 모델에 대해 Likelihood를 계산하여 활용
      • ex) K-means의 경우에는 Gaussian Mixture Model을 활용하여 Likelihood를 계산

약점

  • Cluster 중심 위치 '초기값'에 으해 엉터리 결과가 나올 수 있음
    • ex) 구형(Normal 분포 = 2차원 이상!)이 아닌 클러스터를 찾을 때에는 부적절한 결과를 보여줌
    • Cluster 초기값을 어떻게 결정할지에 대한 연구도 있음
  • Outlier(이상치)에 취약
    • 해결법: Outlier 제거를 위한 전처리
    • 해결법: K-medoids 알고리즘
      • mean을 계산하지 않고, 데이터 중에서 하나를 중심으로 사용

 

kNN algorithm


Instance-Based Learning (Memory-based learning = 모델은 고려하지 않고 데이터만 바라봄)

  • 학습 데이터로부터 임의의 모델 파라메터를 학습하는 것이 아닌, 학습 데이터와 테스트 데이터를 직접 '비교' → Non-parametric (모델을 고려하지 않음!!)
  • 학습 데이터의 label을 사용하므로 Supervised
  • kNN 알고리즘도 이에 속함

K-Nearst Neighbor 알고리즘

  • "내가 본 것 중에.. '그거'랑 제일 '비슷'하네!"
  • "내가 봤던 사람들 유형 중.. 이런 유형이랑 제일 '비슷' 하네!"
  • K: 몇 번쨰로 가까운 데이이터 까지 살펴볼지 생각해보자

 

예시

728x90
Comments