머신 러닝 입문 #1-머신러닝 소개와 knn 소개

16
머신러닝#1 조대협

Upload: terry-cho

Post on 15-Jul-2015

15.345 views

Category:

Technology


14 download

TRANSCRIPT

Page 1: 머신 러닝 입문 #1-머신러닝 소개와 kNN 소개

머신러닝#1

조대협

Page 2: 머신 러닝 입문 #1-머신러닝 소개와 kNN 소개

머신러닝 기본 개념 잡기

• 지도 학습 (Supervised Learning)

• 비지도 학습 (Un supervised learning)

Page 3: 머신 러닝 입문 #1-머신러닝 소개와 kNN 소개

지도 학습의 문제 유형별 분류

• Regression problem vs Classification problem

Regression problem Classification probelm

• 값에 대한 예측이 목적 • 값을 기반으로 선택

Page 4: 머신 러닝 입문 #1-머신러닝 소개와 kNN 소개

지도 학습과 비지도 학습의 차이

• 지도 학습 : 데이타가 라벨링 되어 있음.

• 비지도 학습 : 데이타가 라벨링 되어 있지 않음 (군집화등에 사용됨)

Page 5: 머신 러닝 입문 #1-머신러닝 소개와 kNN 소개

머신 러닝 주요 알고리즘

• 지도 학습– 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

Page 6: 머신 러닝 입문 #1-머신러닝 소개와 kNN 소개

머신 러닝 프레임웍에서 지원되는 알고리즘

• 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

Page 7: 머신 러닝 입문 #1-머신러닝 소개와 kNN 소개

머신 러닝의 기본 단계

1. 데이타 수집

2. 입력 데이타 준비 (데이타 크린징)

3. 데이타 분석 (데이타 관찰. 인사이트 찾아내기)

4. 알고리즘 선택/훈련

5. 알고리즘 테스트 (검증)

6. 사용하기 (운영 배포)

Page 8: 머신 러닝 입문 #1-머신러닝 소개와 kNN 소개

kNN 알고리즘

• k Nearest neighbors 알고리즘

– 학습 데이타 중 가장 유사한 k개의 데이타를 이용해서 값을 예측 하는 방법

– 유클리드 거리 측정법을 사용함

초록색 : 유클리디안 거리 출처: http://www.nicklib.com/algorithm/1662

Page 9: 머신 러닝 입문 #1-머신러닝 소개와 kNN 소개

kNN 예제

• 발차기와, 키스라는 항목으로, ? 대상의 유형을 유추

발차기

키스

로맨스

액션

?

?(예측하고자 하는) 항목과 가장 거리가 가까운 항목의 “유형(라벨)”로 유출 영화,쇼핑몰등 추천 시스템에 사용

Page 10: 머신 러닝 입문 #1-머신러닝 소개와 kNN 소개

kNN 코드

def classify0(inX, dataSet, labels, k):dataSetSize = dataSet.shape[0]diffMat = tile(inX, (dataSetSize,1)) - dataSetsqDiffMat = diffMat**2sqDistances = sqDiffMat.sum(axis=1)distances = sqDistances**0.5sortedDistIndicies = 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

Page 11: 머신 러닝 입문 #1-머신러닝 소개와 kNN 소개

kNN 코드에 사용되는 수학 함수

• import numpy : 수학함수 라이브러리

• 설치 : 방화벽 제약을 피하기 위해 패키지로 설치아나콘다 : http://continuum.io/downloads

Page 12: 머신 러닝 입문 #1-머신러닝 소개와 kNN 소개

kNN 코드 해석

inX = {1,1}

tile(intX, (4,1)) =

1,11,11,11,1

1,1.11,10,00,0.1

dataSet =

tile(intX, (4,1))-dataSet =

0.-0.10,01,11,0.9

(tile(intX, (4,1))-dataSet)**2 =

0.0.010,01,11,0.81각 항목을 제곱함

sum(tile(intX, (4,1))-dataSet)**2,axis=1) =

가로로 더함. (axis=0이면 세로로 더함)

{0.01, 0. , 2. , 1.81}

sum(tile(intX, (4,1))-dataSet)**2,axis=1) **0.5 =

값에 루트

{0.1 , 0. , 1.41421356, 1.3453624}

Page 13: 머신 러닝 입문 #1-머신러닝 소개와 kNN 소개

정규화

• 정규화란 Attribute 값을 을 0<x<N로 정규화 (사상) 하는 것

• 각 Attribute의 단위가 다르기 때문에, 유크리드 거리를 계산할때, 단위가 큰 값만 반영이 되는 문제를 해결하기 위함

Page 14: 머신 러닝 입문 #1-머신러닝 소개와 kNN 소개

Plot

• 그래프 라이브러리

• matplotlib

import matplotlib

import matplotlib.pyplot as plt

fig = plt.figure()

ax = fig.add_subplot(111)

ax.scatter(datingDataMat[:,1],datingDataMat[:,2])

plt.show()

http://matplotlib.org/1.4.1/users/pyplot_tutorial.html

Page 15: 머신 러닝 입문 #1-머신러닝 소개와 kNN 소개

검사 (검증)

• 90%의 데이타로 학습, 10% 데이타로 검증

• 10% 데이타는 무작위로 선택 (앞의 10% 또는 뒤의 10%)

• 오류율

– 0 : 오류 없음

– 1 : 100% 다 오류

Page 16: 머신 러닝 입문 #1-머신러닝 소개와 kNN 소개

토론

• 왜 행렬을 사용하는 것인가?

• 실제 운영 환경에서 데이타가 100만개라면, 일일이 값을 예측할때 마다 100만개와 비교 하는 계산을 해야 하는가?