ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Chapter 9 Unsupervised Learning Techniques
    ML/딥러닝 2020. 5. 7. 15:17
    반응형

    대부분의 머신 러닝 기술들이 supervised learning에 기반하여 발달하고 있지만, 사실 대부분의 데이터는 라벨링이 되어 있지 않다. Input feature X가 존재하지만 라벨 y는 존재하지 않는다. 세상 대부분의 문제들이 unsupervised인 경우가 많으므로 unsupervised learning은 큰 잠재력을 내포하고 있다.

    생산 라인에서 제품의 사진을 가져와서 제품의 결함을 발견하는 시스템을 만든다고 하자. 자동으로 사진을 찍는 시스템을 만들면 하루에 수천장의 사진을 얻을 수 있을 것이다. 몇 주 동안 사진을 계속 찍는다면 매우 큰 데이터셋을 만들 수 있을 것이다. 그러나 라벨이 없다. 만약 결함이 있는지 없는지 판단하는 binary classifier를 만든다면, 'defective' 나 'normal'로 매 사진마다 라벨이 필요하다. 이 일은 전문적인 지식을 갖춘 사람이 앉아서 일일이 사진을 보면서 라벨링을 해야한다. 매우 길고 지치는 싸움이 될 것이다. 그래서 보통 데이터 셋은 사용 가능한 사진의 일부가 될 것이다. 결과적으로 데이터 셋은 작아지고, 분류기의 성능도 낮아진다. 게다가 회사에서 상품이 약간이라도 변하면, 데이터 셋을 다시 처음부터 만들어야 한다. 라벨 없이는 분류가 불가능할까? Unsupervised learning에 대해 알아보자.

    Clustering

    • 비슷한 객체끼리 묶어 클러스터에 담는 것이 목표.
    • 데이터 분석, 고객 세분화, 추천 시스템, 검색 엔진, 이미지 세분화, semi-supervised learning, 차원 축소 등

    Anomaly detection

    • 정상적인 데이터가 어떠한 데이터인지를 학습.
    • 비정상 인스턴스를 발견함으로써 사용.
    • 생산라인에 불량품, 시계열 데이터에서 새로운 트렌드

    Density estimation

    • 데이터셋을 만드는 random process의 probability density function (PDF)를 추정.
    • Anomaly detection에 사용된다.
    • 매우 낮은 밀도인 지역에 위치하는 인스턴스를 anomaly로 지정.
    • 데이터 분석과 시각화에도 사용.

     

    Clustering

    산에서 나무들을 보고 분류를 할 때, 비슷하게 생긴 나무들은 같은 종일 확률이 높다는 것을 안다. 이때 식물학자, 전문가가 없더라도, 최대한 비슷하게 생긴 나무들을 그룹화해서 같은 종을 찾을 수 있다. 이를 clustering이라고 한다. 정확하게는 비슷한 인스턴스를 찾고 같은 클러스터로 분류하는 것을 clustering이라고 한다.

    • 같은 데이터지만 labeled data와 unlabeled data
    • 왼쪽은 Logistic Regression, SVMs, Random Forest classifier로 잘 분류된다.
    • 오른쪽은 라벨이 없기 때문에 classification algorithm을 사용할 수 없다.
    • 오른쪽 데이터에서 눈으로 봐도 왼쪽 아래의 cluster를 발견할 수 있다.
    • 하지만 위쪽 cluster는 두개의 cluster로 이루어져 있다는 것을 알 수 없다.
    • 데이터셋에 두개의 features가 더 있는데 다 이용하면 3개의 cluster로 잘 분류된다. (뒤에서 나올 Gaussian mixture model을 사용하면, 150개중에 5개만 오분류)

     

    고객 세분화 (customer segmentation)

    • 웹사이트에서 구입 목록과 활동 기록을 가지고 고객들을 clustering 할 수 있다.
    • 고객이 누군지, 무슨 상품을 원하는지를 이해해서 고객마다 상품과 마케팅을 적용한다.
    • 같은 클러스터에 다른 유저가 사용한 컨텐츠를 추천해주는 추천 시스템으로 사용 가능하다.

    데이터 분석 (data analysis)

    • 새로운 데이터셋을 분석할 때, 클러스터링을 통해 각 클러스터를 개별적으로 분석할 수 있다.

    차원 축소 (dimension reduction technique)

    • 데이터셋이 클러스터링될 때, 각 인스턴스마다 affinity (친밀감, 관련성)를 측정한다. Affinity는 얼마나 잘 인스턴스가 클러스터에 잘 맞는지.
    • 각 인스턴스의 feature vector X는 인스턴스의 클러스터 affinities로 대체될 수 있다.
    • k개의 cluster가 있다면, k-dim affinity vector가 만들어진다.
    • 이 vector는 original feature vector에 비해 매우 저차원이고, 충분한 정보를 가지고 있다.

    결함 탐지 (anomaly detection)

    • Affinity가 낮은 인스턴스는 결함처럼 보인다.
    • 행동을 기반으로 웹사이트 유저들을 클러스터링 하면 비정상적인 행동을 하는 유저들을 탐지할 수 있다.

    Semi-supervised learning

    • 만약 라벨이 몇개에만 있다면, 클러스터링해서 같은 클러스터의 인스턴스에는 라벨링을 해줄 수 있다.
    • Supervised learning을 위한 라벨있는 데이터를 늘려주기 때문에 성능 또한 높아진다.

    검색 엔진

    • Reference 이미지와 가장 유사한 이미지를 찾아준다.
    • DB에 있는 사진을 먼저 클러스터링 해놓은 후 유저가 입력으로 넣은 사진의 클러스터를 찾고 그 클러스터의 이미지를 보여준다.

    이미지를 세분화하기

    • 픽셀의 색으로 클러스터링을 함으로써 그 클러스터의 평균 색상으로 픽셀의 색을 대체가능하다.
    • 이미지의 다른 색종류를 감소시킬 수 있다.

     

    K-Means

    • 눈으로 봐도 5개의 그룹을 발견할 수 있다.
    • K-means 알고리즘에서 몇개의 클러스터로 클러스터링을 할지 정해줘야하는데 위 경우에서는 5개인걸 바로 알지만 실제 경우에서는 잘 모른다. 뒤에서 다시 언급.
    • 각 인스턴스는 5개중 하나의 클러스터로 결정된다.
    • 인스턴스의 라벨은 클러스터의 인덱스일뿐 분류에서 클래스 라벨과 헷갈리지 말자.

     

    • 클러스터의 인스턴스들을 기준으로 보로노이 다이아그램을 그린 그림
    • 핑크와 노란 구역의 경계를 보면 미스라벨되었다.
    • 사실 k-means 알고리즘은 그룹들의 지름이 매우 다를 때 잘 동작하지 않는다. 왜냐하면 centroid와의 거리를 기준으로 클러스터링하기 때문이다.
    • 각 인스턴스들을 같은 클러스터로 지정하는게 hard clustering
    • 클러스터마다 점수를 갖는게 soft clustering
    • 이 점수는 클러스터의 centroid까지의 거리일 수 있다.
    • 원래 고차원 데이터를 이러한 방법으로 변환하면 k차원 데이터로 줄일 수 있다.
    • 매우 효율적인 nonlinear 차원 축소 기법

     

    The K-Means algorithm

    어떻게 동작할까? 만약 centroid들이 주어진다면, 클러스터의 centroid와의 거리를 측정함으로써 쉽게 라벨을 정할 수 있을 것이다. 반대로 모든 인스턴스의 라벨이 주어진다면, 인스턴스 위치의 평균을 구함으로써 centroid를 쉽게 구할 수 있을 것이다. 그러나 둘다 주어지지 않는다. 

    먼저 centroid를 랜덤하게 위치시킨다. (예를 들어 k개의 인스턴스를 골라 그 위치를 centroid로 정한다.) 그다음 인스턴스를 라벨링하고, centroid를 업데이트하고, 다시 인스턴스를 라벨링하고 다시 centroid를 업데이트한다. 이 동작을 centroid가 더이상 움직이지 않을 때까지 한다. 

    • (top left) 맨 처음 랜덤하게 centroid를 정하고
    • (top right) 인스턴스를 라벨링한다.
    • (center left) centroid 업데이트
    • (center right) 인스턴스 다시 라벨링

     

    • K-means 알고리즘은 수렴을 보장하지만 solution1, 2처럼 잘못 수렴할 수도 있다. (local minima)
    • Centroid 초기화가 문제다.

     

    Centroid initialization methods

    • 사람이 데이터를 보고 매뉴얼하게 초기화해줄 수 있다.
    • 그냥 많이 돌려서 잘 나온 결과를 쓴다.
    • Scikit-Learn 패키지의 default는 10번이다.
    • 클러스터의 centroid와 인스턴스의 mean squared distance를 구해 가장 작은 결과가 best
    • K-means++이라는 알고리즘은 더 똑똑한 초기화를 사용한다.
      • 데이터셋에서 랜덤으로 centroid를 하나 지정한다.
      • 그 다음 모든 데이터들에 대해 거리를 구한 후 가장 멀리 있는 데이터를 다음 centroid로 정한다.
      • k개가 모일 때까지 반복.
    • 그냥 초기화 할때 보다 전략적으로 배치

     

    Accelerated K-Means and mini-batch K-means

    • 불필요한 거리 계산을 막는 새로운 방법 제안
      • Lemma 1: If d(b,c)>=2d(x,b), then d(x,c)>=d(x,b)
    • Mini-batch를 사용함으로써 속도 증가
      • mini-batch마다 조금씩 centroid를 움직이기
      • 3~4배 빨라지고 메모리를 아낄 수 있다.

     

    Finding the optimal number of clusters

     

    • 이 예제에서는 k가 5라는 것을 눈으로 알 수 있지만 실제로는 알기 힘들다. 위는 잘못된 k 예제

    • 하지만 k가 5보다 큰 경우에도 inertia가 더 낮다.
    • 이는 클러스터가 많을수록 centroid까지의 거리가 짧아지기 때문
    • 그래프를 팔 모양이라고 하면 k=4일 때를 elbow라고 한다.
    • 보통 elbow가 좋은 선택지가 된다.

     

    • 좀 더 정확한 방법으로는 silhouette score가 있다.
    • s[i] = (b[i] - a[i]) / max(a[i], b[i])
      • a[i]는 i 인스턴스와 같은 클러스터에서 다른 인스턴스간에 평균 거리
      • b[i]는 i 인스턴스와 다른 클러스터의 인스턴스들과의 평균 거리중 가장 작은 값 (가장 가까운 클러스터)
    • -1 ~ 1 사이 값인데 1에 가까울수록 내부 인스턴스끼리 거리가 가깝고 외부 인스턴스들과의 거리가 크다.
    • 0에 가까우면 인스턴스가 경계에 가깝고, -1에 가까우면 잘못된 인스턴스로 지정된 것이다.
    • 해당 인스턴스와 내부와의 거리가 짧을수록, 해당 인스턴스와 외부와의 거리가 길수록 s[i]는 커집니다.
    • k=4일때 좋은 결과로 보인다.

     

    • 모든 인스턴스의 silhouette 계수를 plot하면 위와 같은 그림이다. s를 sorting하여 plot
    • 세로는 클러스터에 속하는 인스턴스의 개수, 가로는 s
    • 점선이 s의 평균이다.
    • 클러스터에 대부분의 인스턴스가 s보다 낮으면 그 클러스터는 잘 클러스터링 되지 않은 클러스터이다. 다른 클러스터에 너무 가깝다는 뜻
    • 3과 6은 나빠보이고 4와 5는 괜찮게 보인다.
    • 4는 인덱스 1만 특히 크고 5는 값이 고르다. s는 4가 약간 높지만 5를 선택하는게 타당해보인다.

     

    Limits of K-Means

    • Local minima를 피하기 위해 여러번 돌려야한다.
    • 클러스터의 숫자를 정해야한다.
    • 클러스터가 다양한 사이즈, 다른 밀도들, 원형이 아닌 모양을 가지면 잘 동작하지 않는다.
    • 다른 차원, 밀도, 방향의 타원형 데이터셋은 잘 동작하지 않는다.
    • 왼쪽 결과가 더 좋아보이는데 inertia는 더 높다.
    • Gaussian mixture model이 더 잘 작동한다.

     

    Using Clustering for Image Segmentation

    • Image segmentation은 다양한 객체에서 하나의 객체만 인식하는 태스크.
    • 요새는 CNN으로 가능함
    • 이 단원에서는 color segmentation
    • 위성 이미지에서 숲을 찾을 때 효과적일 수 있다.

    • 8 colors 미만으로 color segmentation하면 무당벌레색마저도 사라진다.

     

    Using Clustering for Preprocessing

    그냥 LogisticRegression()을 사용하면 96.89%

    클러스터링한 후에 넣으면 성능이 97.78%

    클러스터의 수를 2~100까지 다 돌려봐서 찾아보면 99개일 때 성능이 제일 좋다. 98.22%

     

    Using Clustering for Semi-supervised learning

    50개의 데이터만 가지고 supervised learning하면 성능이 83.33% 나온다.

    50개의 클러스터로 클러스터링 한 후 클러스터에서 가장 거리가 짧은 값들만 다시 train으로 사용한다.

    50개들에 대해 라벨링을 해준다.

    50개로 클러스터링한 후 라벨링한 데이터로 학습하니 92.22%가 나온다.

    50개가 아니라 전부 propagate한 라벨로 학습시키면 93.33% 나온다.

    Centroid로부터 가까운 20%만 학습시키면 94%까지 성능이 오른다. 전체 데이터로 supervised learning하면 96.9% 나온다.

    Propagate된 y가 실제 y랑 98.97%나 같다. 클러스터링으로도 잘 propagate가 된다.

     

    Active learning

    1. 라벨이 있는 데이터로 supervised-learning을 먼저 한다. 그리고 라벨이 없는 데이터를 propagate한다.
    2. propagate 결과 확률이 너무 낮은 인스턴스는 전문가에게 라벨을 부탁한다. (AWS 라벨링)
    3. 성능이 오르는 것이 멈출때 까지 계속한다.

     

    DBSCAN

    • DBSCAN은 높은 밀도로 연속되는 지역을 cluster로 정의한다.
      • 모든 인스턴스에 대해 얼마나 많은 인스턴스가 epsilon보다 가까운지를 센다. epsilon보다 가까운 집단을 epsilon neighborhood라 한다. 
      • 만약 한 인스턴스가 epsilon neighborhood에 자신을 포함 최소 min_samples만큼 neighbor을 가진다면, 이를 core instance라한다. core instance는 다른 말로 밀집한 지역에 위치한다고 할 수 있다.
      • Core instance의 neighborhood에 속하는 인스턴스는 모두 같은 클러스터이다. Neighborhood에 다른 core instance가 있을 수 있고 이는 긴 sequence로 연결된다.
      • 어떤 인스턴스는 core instance의 neighborhood가 아닐 수 있고 이른 anomaly로 지정한다.

    라벨중에 가끔 -1이 있는데 이것이 바로 anomaly다.

     

    • eps=0.05일 때는 너무 많은 클러스터로 나누었고, anomaly가 많이 발생하였다.
    • eps=0.20일 때, 잘 클러스터링 되었다.

    • [1, 0, 1, 0]으로 클러스터링을 했지만 첫번째와 네번째는 클러스터와 거리가 멀어서 anomaly로 처리된다.
    • DBSCAN은 성능도 좋고 하이퍼파라미터도 2개뿐이다. 하지만 eps가 커지면 시간복잡도가 O(m^2)로 비효율적이다.

     

    Other Clustering Algorithms

    읽어만 보자..

     

    Gaussian Mixtures

    • Gaussian Mixture Model (GMM)은 파라미터를 모르는 gaussian distribution들의 결합으로 만들어진 인스턴스를 가정하는 확률 모델이다.
    • 하나의 가우시안 분포로 만들어진 모든 인스턴스들은 전형적으로 타원처럼 보이는 클러스터를 만든다.
    • 각 클러스터는 다른 타원형 모양, 사이즈, 밀도, 방향을 가진다.

    • 이처럼 가우시안 분포로 클러스터가 형성되었다는 것을 눈으로 관찰해서 알 수 있지만 정확한 파라미터는 알 수 없다.
    • 각 인스턴스를 위한 클러스터는 k개의 클러스터에서 랜덤하게 정해진다.
    • j번째 클러스터를 선택하는 것의 확률은 클러스터의 weight다.
    • i번째 인스턴스를 위해 선택된 클러스터의 인덱스는 z^(i)다.
    • 만약 z^(i)가 j면, i번째 인스턴스의 클러스터는 j다. 인스턴스의 위치 X^(i)는 특정 평균과 공분산을 가지는 가우시안 분포로부터 랜덤하게 샘플된다.

    • 원들은 random variables
    • 작은 네모는 고정된 값 (모델의 파라미터)
    • 큰 네모는 plates. plate의 내용을 몇번씩 반복하는. instance랑 label은 m개, gaussian distribution parameters는 k개
    • 클러스터의 Weight도 k개 (왜냐하면 가우시안 분포의 개수가 클러스터의 개수니깐)
    • 각 z^(i)는 weights와 함께 다항분포 (categorical distribution)로 얻어진다. 각 X^(i)는 i의 클러스터 z^(i)에 의해 정의된 mean과 covariance matrix와 함께 정규분포 (normal distribution)로 얻어진다.
    • 직선 화살표는 조건부 독립을 나타낸다. 예를 들어 각 랜덤변수 z^(i)를 위한 확률 분포가 weight vector에 의존한다. 화살표가 plate 경계를 가로지를때, 그것은 plate의 모든 반복에 적용된다는 것을 기억해라. 예를 들어 weight vector는 x^(1)부터 x^(m)까지 모든 랜덤변수의 확률 분포를 조건을 건다.
    • z^(i)에서 x^(i)로 가는 꼬불꼬불 화살표는 스위치를 나타낸다. z^(i)의 값에 의존하면서, 인스턴스 x^(i)는 다른 가우시안 분포로부터 샘플링될 것이다. 예를 들어 z^(i)가 j라면, x^(i) 는 N(u^(j), 공분산^(j))으로 만들어진 값.
    • 색칠된 노드는 그 값을 안다는 것을 의미한다. 이 경우에는 오직 랜덤변수 x^(i)만 아는 값이다. 이를 observed variables라고 한다. 모른 랜덤변수 z^(i)는 latent variables라고 한다.

     

    주어진 데이터셋 X가 있고, weights, means, covariances를 추정해보자. n_components=3이라는 것은 가우시안 분포를 3개 사용하고 이는 클러스터가 3개라는 것을 의미한다. n_init=10은 10번 초기화해서 best.

    • 데이터를 생성할 때 0.2, 0.4, 0.4의 weight를 이용해서 만들었다. 그러므로 잘 작동하였다. 기존에 설정한 평균과 공분산도 잘 발견하였다.
    • Expectation-Maximization algorithm이 사용되었고 이는 K-Means algorithm과 비슷하다.
      • 처음에 랜덤하게 클러스터의 파라미터를 설정한다.
      • 그 다음 수렴할 때까지 2 스텝을 반복한다.
        • 먼저 인스턴스들을 클러스터에 지정해준다. (expectation step)
        • 그 다음 클러스터를 업데이트해준다. (maximization step)
      • EM algorithm은 K-Means algorithm의 일반화
      • K-Means는 클러스터의 centroids (가우시안의 평균들)를 찾지만 EM에서는 사이즈, 모양, 방향 (가우시안의 공분산들)까지 찾는다. weight까지
      • EM은 soft cluster assignments를 사용한다.
      • Expectation step에서는 각 인스턴스가 클러스터에 속할 확률을 추정한다. (현재 클러스터 파라미터에 기반하여)
      • Maximization step에서는 각 클러스터는 모든 인스턴스를 사용하여 업데이트된다. 그 클러스터에 속할 추정된 확률에 의해 weighted된 인스턴스를 사용해서. 인스턴스를 사용해서 업데이트 되는데 그 인스턴스들은 그 클러스터에 속할 확률이 곱해진 상태로?
      • 이 확률을 인스턴스들을 위한 클러스터의 responsibilities라 한다.
      • Maximization step 동안, 각 클러스터의 업데이트는 대부분 가장 책임감있는 인스턴스에 영향을 받는다.
    • EM도 K-Means와 마찬가지로 좋지 않은 결과로 수렴할 수 있다. 그래서 여러번 돌린다.

    다행히 수렴했고 3번 돌았다.

    • 이제 위치, 크기, 모양, 방향, 각 클러스터의 상대적인 weight까지 모두 알고 있다.
    • 그러므로 모델은 인스턴스가 어떠한 클러스터에 속하는지 지정할 수 있다. (hard clustering)
    • 특정한 클러스터에 속할 확률을 추정할수도 있다. (soft clustering)

    • Gaussian Mixture model은 생성 모델 (generative model)이기 때문에, 쉽게 새로운 인스턴스를 만들 수 있다.

     

    • GMM은 주어진 위치에서 모델의 밀도를 추정할 수 있다.
    • 인스턴스들이 주어지면 위치에 맞는 probability density function (PDF)의 log를 추정한다.
    • score가 높으면 밀도도 높다.
    • 만약 이 score들에 exponential을 계산한다면, 주어진 인스턴스의 위치에 PDF 값을 얻을 수 있다.
    • 이것들은 확률이 아니라 확률 밀도다. 그래서 양수지만 0~1사이로 들어오진 않는다.
    • 특정한 지역안에 인스턴스가 떨어질 확률을 추정하기 위해, 지역에 걸쳐 PDF를 적분해야 한다. (만약 가능한 인스턴스의 위치 전부를 적분하면 1이 된다.)

    • 잘 찾았다. 하지만 이 예제는 쉽게 찾도록 2D 가우시안 분포로 만들어졌다. 아쉽게도 실제 데이터는 항상 가우시안이 아니며 저차원도 아니다.
    • 또한 딱 맞는 클러스터의 수를 설정해줬다.
    • 차원의 수가 많거나, 클러스터의 수가 많거나, 인스턴스가 적다면, EM은 최적의 솔루션으로 수렴하기 힘겹다.
    • 알고리즘이 학습할 파라미터의 수를 제한함으로써, 태스크의 난이도를 낮출 필요가 있다.
    • 클러스터의 모양과 방향의 범위를 제한하는 방법이 있다.
    • covariance matrices에 제한을 가하면 된다.

    • covariance_type을 조절할 수 있다.
      • "spherical" 모든 클러스터는 원형이다. 그러나 다른 지름을 가질 수 있다. (다른 분산)
      • "diag" 어떠한 타원형도 가능하다. 그러나 타원형의 축이 coordinate axes (직교 좌표)와 평행하다. (covariance matrices가 diagonal이다.)
      • "tied" 모든 클러스터가 같은 타원 모양, 사이즈, 방향을 가져야 한다. (covariance matrices가 모두 같음.)
      • "full" 모든 클러스터가 가능. 디폴트

     

    Anomaly Detection Using Gaussian Mixtures

    • Anomaly detection은 평균으로부터 강하게 벗어나는 인스턴스를 찾는 태스크
    • GMM에서는 낮은 밀도인 지역에 위치한 인스턴스를 anomaly로 판단한다. 유저가 원하는 밀도 threshold를 정하면 된다.

    • Clean dataset을 만들기 위해 outlier detection으로 잘 사용된다.

     

    Selecting the Number of Clusters

    • GMM은 원형이 아니기 때문에 기존 K-Means에서 사용하던 measure들을 사용할 수 없다.
    • 대신 Bayesian information criterion (BIC)나 Akaike information criterion (AIC)를 사용해야 한다. BIC나 AIC가 낮아져야한다.

    • m은 인스턴스 수
    • p는 학습할 파라미터 수
    • L^는 likelihood function의 최댓값
    • 두 수치 모두 모델에 학습할 파라미터가 많다면 panelty, 데이터에 적한한 모델이면 reward
    • 대부분 최종적으로 두 수치는 같은 모델을 고르는데 다른 모델을 골랐을 때, BIC에 의해 선택된 모델은 더 간단한 모델이다. AIC에 의해 선택된 모델보다.
    • 그러나 데이터에는 덜 적합하다.

     

    Likelihood Function

    • Probability (확률)과 likelihood (공산, 가능성)는 영어에서는 혼용해서 많이 쓰지만, 통계학에서는 매우 다른 의미다.
    • Parameter theta와 함께 통계 모델이 주어지면, probability은 얼마나 미래의 결과 x가 적합한지를 설명할 때 사용된다.
    • 반면 likelihood는 결과 x를 얻은 후, 얼마나 파라미터 값 theta의 특정한 집합이 적합한지를 설명할 때 사용된다.

     

    • 센터가 -4와 1인 두개의 가우시안 분포의 1D mixture model이 있다.
    • 이 toy model은 두 가우시안 분포의 표준편차를 조정하는 하나의 파라미터 theta가 있다.
    • 왼쪽 위 그림이 파라미터 x와 theta를 갖고 있는 Model f(x; theta)다.
    • 미래 결과 x의 확률 분포를 추정하기 위해 모델 파라미터 theta를 세팅해야한다.
    • 만약 theta를 1.3으로 세팅한다면 (가로줄), 확률 밀도 함수 f(x; theta=1.3)을 얻을 수 있다 (왼쪽 아래 그림).
    • x가 -2~2에 떨어질 확률을 구하려고 한다면, -2~2까지 PDF를 적분해야 한다 (왼쪽 아래 그림에서 색칠된 부분).
    • 그런데 만약 theta를 모르면 x=2.5일 때처럼 single instance를 관찰해야 한다 (왼쪽 위 그림 세로선).
    • 이 경우에서는 likelihood function L(theta|x=2.5) = f(x=2.5; theta)를 얻을 수 있다 (오른쪽 위 그림).

    • PDF는 theta가 고정된 x의 함수다. 반면에 likelihood function은 x가 고정된 theta의 함수다.
    • likelihood function은 확률 분포가 아니라는 것을 이해하는 것이 중요하다.
    • 만약 모든 가능한 x에 대해 확률 분포를 적분하면, 그 값은 항상 1이다. 그러나 만약 모든 가능한 theta에 대해 likelihood function을 적분하면 그 값은 어떠한 양수가 될 것이다.

     

    • 데이터셋 X가 주어지면, 흔한 태스크는 가장 좋은 모델 파라미터를 추정하는 것이다.
    • 이를 위해 주어진 X를 사용해서, likelihood function을 최대화 하는 모델 파라미터를 찾아야한다.
    • 이 예제에서 만약 single instance x=2.5를 관찰한다면, theta의 maximum likelihood estimate (MLE)는 theta-hat = 1.5다.
    • 만약 theta에 걸쳐 주된 확률 분포 g가 존재한다면, 단지 L(theta|x)를 최대화하는 것보단 L(theta|x)g(theta)를 최대화함으로써 값을 얻을 수 있다.
    • 이것을 maximum a-posteriori (MAP) estimation이라고 부른다.
    • MAP는 파라미터값에 제한을 받기 때문에, MLE의 정규화된 버전이라고 생각할 수 있다.

     

    • Likelihood function을 최대화하는 것은 그것의 logarithm을 최대화하는 것과 동등하다.
    • 사실 logarithm은 증가하는 함수다. 그래서 만약 theta가 log likelihood를 최대화한다면, log likelihood 또한 최대화된다.
    • 예를 들어, 만약 몇개의 독립적인 인스턴스 x^(1)~x^(m)을 관찰한다면, 각각의 likelihood function들의 곱을 최대화 하는 theta를 찾으면 된다.
    • 그러나 log likelihood function들의 합을 최대화 시키는 것이 더 간단하고, 같은 동작이다.
    • 왜냐하면 log(ab) = log(a) + log(b)이기 때문.

     

    • 일단 likelihood function을 최대화하는 theta-hat을 추정한 이후에, L-hat = L(theta-hat, X)를 계산해라.
    • 이 값은 AIC와 BIC를 계산하기 위해 사용된다.
    • 얼마나 모델이 데이터를 fit하는지의 measure인

     

    간단하게 bic(), aic()를 호출하면 된다.

    • BIC와 AIC는 모두 k=3일 때 제일 작다. 3이 best choice다.

     

    Bayesian Gaussian Mixture Models

    • 클러스터의 수를 매뉴얼하게 정하는 것 보다 불필요한 클러스터의 weight를 zero로 만드는 Bayesian gaussian mixture models를 써라.
    • 최소로 최적화 될 클러스터의 수보다 큰 수를 n_components로 지정해라. (알 수 있다면)
    • 그러면 알고리즘이 불필요한 클러스터를 자동으로 제거할 것이다.

    • 알고리즘이 오직 3개만 클러스터가 필요하다고 감지했다.
    • 이 모델에서는 더이상 weights, means, covariance도 고정된 모델 파라미터가 아니다.

    • Beta distribution은 고정된 범위를 가지는 랜덤변수를 모델링할 때 주로 사용
    • 이 경우에서는 범위가 0~1
    • Stick-Breaking Process(SBP)
    • Phi = [0.3, 0.6, 0.5, ...]면 인스턴스중 30%가 클러스터 0으로 지정될 것이고, 그다음 남아있는 인스턴스의 60%가 클러스터 1로 지정될 것이다. 그리고 남아있는 인스턴스의 50%가 클러스터 2로 지정될 것이다.
    • 이 과정은 새로운 인스턴스들이 작은 클러스터보다 큰 클러스터에 들어갈 확률이 높을때 좋은 모델이 된다.
    • 만약 concentration a가 높으면 phi 값들은 0에 가까워지고 SBP는 많은 클러스터를 가진다.
    • 반대로 낮으면 phi 값들은 1에 가까워지고 적은 클러스터를 가진다.
    • keisan.casio.com/exec/system/1180573226
     

    Beta distribution (chart) Calculator

    Calculates a table of the probability density function, or lower or upper cumulative distribution function of the beta distribution, and draws the chart.

    keisan.casio.com

    • Wishart distribution은 covariance matrices 만들때 쓰이고 파라리터는 d와 V가 있다.

     

    • Latent variables Z에 대한 사전 지식은 prior라고 불리는 확률 분포 p(z)로 인코딩될 수 있다.
    • 예를 들어 클러스터들이 적을 것이라는 믿음이 있으면 low concentration, 반대로 많을 것이라는 믿음이 있으면 high concentration

    • weight_concentration_prior 파라미터를 설정해 클러스터의 수를 조정했고 결과는 이러하다.
    • 그러나 데이터가 많으면 prior이 문제를 일으킬 가능성은 적다.

    • Bayes' theorem은 어떻게 data X를 관찰한 후 latent variable을 거쳐 확률 분포를 업데이트하는지 알려준다.
    • 이는 posterior distribution p(z|X)를 계산한다. X가 주어질 때 z의 조건부 확률인.
    • 불행하게도 GMM과 다른 문제들에서 분모 p(x)는 intractable(아주 다루기 힘든)하다. 그것은 z의 모든 가능한 값들을 적분해야한다. 클러스터의 파라미터와 클러스터 지정의 모든 가능한 조합을 고려하면서.

    • Intractability는 Bayesian statistics에서 중요한 문제고 이것을 해결하는 몇가지 접근들이 있다.
    • variational inference
      • variational parameters lambda를 가지고 분포 q(z; lambda)의 모임들을 뽑는다.
      • q(z)를 p(z|X)의 좋은 approximation으로 만드는 파라미터들을 optimize한다.
      • 이것은 q(z)로부터 p(z|X)까지 KL divergence (D_KL(q||p))를 최소화 시키는 lambda를 찾는다.

    • log evidence는 q와 독립이기때문에 상수다. 그래서 KL divergence를 최소화 하기 위해 ELBO (evidence lower bound)를 최대화하면 된다.

     

    • GMM은 타원형 클러스터에는 잘 동작한다. 그러나 다른 모양의 데이터셋에서는 잘 동작하지 않을 수 있다.
    • Bayesian Gaussian mixture model을 moons dataset에 fit한 결과
    반응형
Designed by Tistory.