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
dataset 이해하기📈
: 먼저 데이터들의 distribution을 알아야 한다. 근데 모두 파악하기는 어려우니까 처음에 가장 쉽게 접근할 수 있는 것들이 평균, 분산, 최대/최소 값 등이 있다. 하지만 distribution이 multimodal이면 어떡하지?? 즉 볼록한 게 여러게 있는 경우 말이다. 그럴 땐, 평균이 그렇게 중요한 정보를 제공해주지는 않는다. 이런 경우에 clustering이 매우 도움이 된다.clustering
: 'Grouping the samples', 샘플들을 그룹화 해줘야 하는데 이 때 몇개의 그룹으로 해주는게 의미 있을까? 일단 우리가 supervisor가 되어서 모델한테 무언가를 제공해줘야 한다.접근법
- 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 유클리디언 거리와 하나의 클러스터 안의 모든 샘플들과 거리를 구해준다.
- 밖의 summation에서는 5개의 클러스터가 있다고 가정하면 각 cluster마다 데이터와 mean사이의 거리를 더해준다. 그리고 모든 cluster의 거리의 합을 더해서 최소화가 되도록 해준다.
- 과정?!?🧐
- 처음 centroid를 랜덤하게 초기화 해준다.
- 하나의 sample에 대해 모든 centroid와의 거리를 계산하고 해당 cluster를 지정해준다.
- 각각의 클러스터내의 mean vector를 계산해준다. 즉 새로운 centroid를 계산해주고 업데이트 해준당.
- 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를 계산하자.
'학교공부' 카테고리의 다른 글
Training할 때 오류와 해결법(Dataloader killed, Connection reset by peer, Exception 0 SISKILL) (0) | 2020.09.30 |
---|---|
실전프로젝트2 >> 소프트웨어 개선 과제(1) (0) | 2020.05.23 |
실전프로젝트2 >> 소프트웨어 개선 과제(2) (0) | 2020.05.23 |
실전프로젝트2 >> 소프트웨어 개선 과제(3) (0) | 2020.05.23 |
실전프로젝트2 >> 소프트웨어 분석 (0) | 2020.04.24 |