본문 바로가기

학교공부

machine learning >> clustering(1)

Unsupervised Learning

: unsupervise learning이라는 말은 supervisor가 없다는 뜻이다. 즉 input X를 위한 'label'이 존재하지 않는다.

  • 종류

    • Density Estimation(KDE): y label은 필요없고, x data만 필요하다.
    • Clustering : kMeans, MoG
    • Dimension Reduction : x data가 주어졌을 때, 높은 차원의 데이터를 낮은 차원의 데이터에 projection 해주는 것이다. 이건 'compression'이랑 비슷하다.
    • Factor analysis: 주어진 signal을 발생시키는 데에 주요인이 무엇인가?
    • Representation Learning
  • Clustering

    1. dataset 이해하기📈
      : 먼저 데이터들의 distribution을 알아야 한다. 근데 모두 파악하기는 어려우니까 처음에 가장 쉽게 접근할 수 있는 것들이 평균, 분산, 최대/최소 값 등이 있다. 하지만 distribution이 multimodal이면 어떡하지?? 즉 볼록한 게 여러게 있는 경우 말이다. 그럴 땐, 평균이 그렇게 중요한 정보를 제공해주지는 않는다. 이런 경우에 clustering이 매우 도움이 된다.

    2. clustering
      : 'Grouping the samples', 샘플들을 그룹화 해줘야 하는데 이 때 몇개의 그룹으로 해주는게 의미 있을까? 일단 우리가 supervisor가 되어서 모델한테 무언가를 제공해줘야 한다.

    3. 접근법

      • connectivity based
      • centroid based
      • distribution based
      • hierarchical clustering
        • 100개의 샘플로 100개의 클러스터로 하는겨, 그 다음에 가까운 애들을 결합시키고 점점 클러스터를 줄여가는 거지. 그럼 몇개의 클러스터가 필요한가? 그거는 모른다. (bottom up)
        • 100개의 샘플을 처음에 1개의 클러스터에 모두 집어넣고 시작하는 거다. 그런 다음 이걸 split해나간다.
      • Graph theoretic : spectral clusterint
  • kMeans 💥

    • 특징?!?!🧐
      • 처음에 몇개의 클러스터를 제공해줄지 'k'를 정해준다. 이 모델은 'global convergence' 를 가지기 때문에 어디서 시작하던 간에 어딘가에 수렴한댱. 참고로 'global optimization'이랑 다른 단어이다. 그렇기 때문에 처음에 initialization을 어떻게 해주느냐가 중요하다. it is sensitive to initialization and outliers.
      • 1 sample이 2개의 cluster에 속할 수는 없다.
      • dataset에 대해서 아무것도 모를 경우엔 유클리디언 거리가 제일 좋은 옵션이다.거의 모든 경우 그렇다고 한댱.
      • M(i) = mean vector 유클리디언 거리와 하나의 클러스터 안의 모든 샘플들과 거리를 구해준다.
        %E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-10-19%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%204.35.36.png
      • 밖의 summation에서는 5개의 클러스터가 있다고 가정하면 각 cluster마다 데이터와 mean사이의 거리를 더해준다. 그리고 모든 cluster의 거리의 합을 더해서 최소화가 되도록 해준다.
    • 과정?!?🧐
      %E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-10-19%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%204.38.32.png
      1. 처음 centroid를 랜덤하게 초기화 해준다.
      2. 하나의 sample에 대해 모든 centroid와의 거리를 계산하고 해당 cluster를 지정해준다.
      3. 각각의 클러스터내의 mean vector를 계산해준다. 즉 새로운 centroid를 계산해주고 업데이트 해준당.
      4. 2번과 3번을 계속 반복해준다.언제까지?? 에러가 증가하지 않거나! 감소하지 않는 경우! 또는 파라미터를 업데이트할 때 파라미터가 업데이트를 통해 바뀌지 않는다면 학습을 멈춰야 한당.

PCA?

데이터의 차원이 높아질수록 우리가 좋아하는 Euclidean distance에 예상치 못한 방식으로 동작할 수가 있다. 보통 차원의 크기를 'feature의 개수'라고 한다.


Demensionality reduction

https://brunch.co.kr/@rlawlgy43/33

  • PCA(Principal Component Analysis):

    • 투영된 데이터의 분산이 최대화되는 projection matrix를 찾는 문제.why? 데이터들의 분산이 제일 커야 데이터 유실을 막을 수 있기 때문(https://nittaku.tistory.com/291), 분산이 크다는 말은 eigen value가 높은 값을 똑같이 의미함!. 그래서 cov matrix 중 Eigen value가 높은 값을 찾아 Eigen Vector를 찾고 그것을 기준으로 데이터들을 옮겨 차원을 축소해줘야 한다. 그래서 구한 eigen vector를 내림차순해서 거기서 원하는 차원만큼 개수를 고르고 거기에다가 projection을 해주는거지!(fit_transform)
    • 고유공간으로 oroginal data를 projection한다는 것은 그 새로운 벡터의 차원에 데이터를 위치시켜준다는 뜻!
  • fit_transform : fit the model with X and X에다가 차원 축소도 같이 해주는 거임

    • Returns: X_new:array-like, shape(n_samples, n_components)

kMeans 구현하기

1. 랜덤으로 centroids를 선정해준다.
2. centroid에 근거하여 assign each observation to a clsuter.
3. 각 클러스터의 평균 좌표를 계산하기, 그것이 새로운 centroid가 된다. 
4. 새로운 centroid에 기반하여 클러스터 재 할당
5. 3번과 4번을 수렴할때까지 반복

* 여기서 평가기준으로 삼을만한 acc를 계산하자.