2. 머신러닝 기본 개념 잡기
• 지도 학습 (Supervised Learning)
• 비지도 학습 (Un supervised learning)
3. 지도 학습의 문제 유형별 분류
• Regression problem vs Classification problem
Regression problem Classification probelm
• 값에 대한 예측이 목적 • 값을 기반으로 선택
4. 지도 학습과 비지도 학습의 차이
• 지도 학습 : 데이타가 라벨링 되어 있음.
• 비지도 학습 : 데이타가 라벨링 되어 있지 않음 (군집화등에 사용됨)
5. 머신 러닝 주요 알고리즘
• 지도 학습
– Classification
• kNN
• Naïve Bayes
• Support Vector machine
• Decision tree
– Regression
• Linear regression
• Locally weighted linear regression
• Ridge
• Lasso
• 비지도 학습
– Clustering
– K means
– Density estimation
– Expection maximization
– Pazen window
– DBSCAN
6. 머신 러닝 프레임웍에서 지원되는 알고리즘
• Mahout http://mahout.apache.org/users/basics/algorithms.html
– Classification
• Naïve Bayes, Hidden Markov Models, Logistic regression, Random Forest
– Clustering
• k-Means,Canpoy,Fuzzy k-Means,Streaming Kmeans,Spectral clustering
• Spark https://spark.apache.org/docs/1.1.0/mllib-guide.html
– Classification and regression
• Linear models (SVM, Logistic regression, linear regression), decision tree, Naïve Bayes
– Clustering
• k-means
– Collaborative filtering
• alternating least squares (ALS)
• Microsft Azure ML http://azure.microsoft.com/ko-kr/documentation/articles/machine-learning-
algorithm-choice/
– Clustering
• K means
– Classification
• Decision Tree,SVM (Support Vector Machines),Naïve Bayes
– Regression
• Bayesian linear regression, Boosted decision tree regression, decision forest regression,linear regression, neural
network regression, ordinal regression, poisson regression
7. 머신 러닝의 기본 단계
1. 데이타 수집
2. 입력 데이타 준비 (데이타 크린징)
3. 데이타 분석 (데이타 관찰. 인사이트 찾아내기)
4. 알고리즘 선택/훈련
5. 알고리즘 테스트 (검증)
6. 사용하기 (운영 배포)
8. kNN 알고리즘
• k Nearest neighbors 알고리즘
– 학습 데이타 중 가장 유사한 k개의 데이타를 이용해서 값을 예측 하는 방법
– 유클리드 거리 측정법을 사용함
초록색 : 유클리디안 거리 출처: http://www.nicklib.com/algorithm/1662
9. kNN 예제
• 발차기와, 키스라는 항목으로, ? 대상의 유형을 유추
발차기
키스
로맨스
액션
?
?(예측하고자 하는) 항목과 가장 거리가 가까운 항목의 “유형(라벨)”로 유출
영화,쇼핑몰등 추천 시스템에 사용
10. kNN 코드
def classify0(inX, dataSet, labels, k):
dataSetSize = dataSet.shape[0]
diffMat = tile(inX, (dataSetSize,1)) - dataSet
sqDiffMat = diffMat**2
sqDistances = sqDiffMat.sum(axis=1)
distances = sqDistances**0.5
sortedDistIndicies = distances.argsort()
classCount={}
for i in range(k):
voteIlabel = labels[sortedDistIndicies[i]]
classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)
return sortedClassCount[0][0]
• intX : 행렬, Label을 예측하고자 하는 값.
• dataSet : 행렬, 학습에 사용되는 데이타
• label : 행렬 (1열 행렬), 학습에 사용되는 데이타의 라벨
• k : 결과로 몇개의 이웃을 추출할지 정의 (3개면, 최근접 라벨 3개만 출력됨)
dataSet labels
inX
11. kNN 코드에 사용되는 수학 함수
• import numpy : 수학함수 라이브러리
• 설치 : 방화벽 제약을 피하기 위해 패키지로 설치
아나콘다 : http://continuum.io/downloads