Chapter 11. Introduction to Machine Learning
▶지도 학습(Supervised Learning)
- 분류(Classification), 회귀(Regression)가 존재
- 분류 : 라벨을 예측하는 것(이중 분류 or 다중 분류) (e.g. K-NN)
- 회귀 : 연속적인 숫자 혹은 부동소수점을 예측하는 것 (e.g. Linear or Polynomial Regression)
※ 회귀는 분류와 다르게 출력 값에 연속성이 있다.
▶비지도 학습(Unsupervised Learning)
- 원래 데이터를 보다 쉽게 해석할 수 있도록 만드는 알고리즘
- 비지도 변환(Unsupervised Transformation), 군집(Clustering), 이상 탐지(Anomaly Detection) 등이 존재
- 비지도 변환 : 데이터를 쉽게 해석할 수 있도록 만드는 것 (e.g. 차원 축소(Dimensionlaity Reduction), t-SNE )
- 군집 : 데이터를 비슷한 것끼리 묶는 것. (e.g. K평균 군집(K-means Clustering), 기대값 최적화(Expectation Maximization) )
▶ 특성 공학(Feature Engineering)
- 어떤 특성을 선택할지, 어떤 특성에 더 가중치를 줄 것인지 결정
- 기존에 존재하는 특성들을 조합할 수도 있다
▶ 모델을 학습할 때 고려할 것
- 특성 벡터의 선택: 모델을 학습하기전 라벨과 직접적인 관련이 없은 특성을 제거
e.g. 우수한 인원을 선택할 때, 출생 월, 눈 색깔은 제외해야할 특성(해당 예시는 직관적으로 알수 있지만, 실제 문제에서는 관련성을 살펴봐야 하는 경우가 존재)
- 데이터간 거리 계측 방법
- 모델에 둬야한 제한 조건(Constraints)
e.g. 군집 갯수(K), 오버 피팅을 피하기 위한 방법
Chapter 12. Clustering
▶군집화(Clustering)
- 군집화는 최적화 문제
- 군집의 크기로 나누지 않는 이유 : 크기가 크면서 높은 분산을 가지는 군집에 (크기가 작으면서 높은 분산을 가지는 군집 보다) 더 큰 패널티를 주기 위한 것(정규화를 하지 않음)
▶위계적 군집화(Hierarchical Clustering)
- 1) 각 요소를 집단에 지정
- 2) 가장 가까운 한쌍을 집단을 찾아 합병
- 특정 단계에서 1~2 반복을 멈출 수 있다.
- 단점 : 최적의 결과가 아닐 수 있다. 매우 느림.
▶K평균 군집화(K-means Clustering)
- 1) 무작위로 K개 셈플을 중심으로 선택
- 2) 각 셈플을 가장 가까운 중심(Centroid)에 할당
- 3) 클러스터에 할당된 데이터 점의 평균으로 중심을 다시 지정
- 4) 클러스터에 할당되는 데이터 포인트에 변화가 없을 때 알고리즘 종료
- O(k*n*d)
- n번째 샘플 $x_n$이 k 번째 클러스터에 속하는 경우 $r_{nk} = 1$ 이고 아닌 경우 0 이다.
(n개의 점중 '너는 k번째 군집에 포함된다/ 포함되지 않는다' 를 판단)
$$ J = \sum^{N}_{n=1}\sum^{K}_{k=1}r_{nk}||x_n - \mu_k||^2 $$
EM 알고리즘)
- 임의의 $\mu_k$를 선정하고, 고정 상태에서 J를 최소화 하는 $r_{nk}$ 구하기 (Expectation)
- 얻은 $r_{nk}$ 를 고정하고, J를 최소화하는 $\mu_k$ 구하기(Maximization) (J를 $\mu_k$로 미분해서 구함)
- 두 값이 수렴하거나, 반복 횟수가 최대에 도달할 때 까지 반복한다.
- 단점 : K를 잘못 설정하면 잘못된 결과가 나온다.
- 다양한 K를 시도하고, 최적의 값을 도출하기도 한다.
def trykmeans(examples, numClusters, numTrials, verbose = False):
"""Calls kmeans numTrials times and returns the result with the
lowest dissimilarity"""
best = kmeans(examples, numClusters, verbose)
minDissimilarity = cluster.dissimilarity(best)
trial = 1
while trial < numTrials:
try:
clusters = kmeans(examples, numClusters, verbose)
except ValueError:
continue #If failed, try again
currDissimilarity = cluster.dissimilarity(clusters)
if currDissimilarity < minDissimilarity: # 현대 비유사성 < 최소 비유사성
best = clusters # 현재 군집을 저장
minDissimilarity = currDissimilarity # 최소 비유사성 업데이트
trial += 1
return best
'데이터 과학 > 데이터 과학' 카테고리의 다른 글
KL Divergence(Kullback Leibler Divergence) 설명 (0) | 2021.11.01 |
---|---|
Density Estimation (in Python) (0) | 2021.03.26 |
JSON (JavaScript Object Notation) in C (0) | 2020.11.09 |
[MIT] 데이터 사이언스 기초 강의 요약[6 ~ 10강] (0) | 2020.11.08 |
[MIT] 데이터 사이언스 기초 강의 요약[1 ~ 5강] (0) | 2020.08.28 |