Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

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

68.093 Aufrufe

Veröffentlicht am

Machine Learning Introduction
kNN 알고리즘 소개

Veröffentlicht in: Technologie
  • Login to see the comments

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

  1. 1. 머신러닝#1 조대협
  2. 2. 머신러닝 기본 개념 잡기 • 지도 학습 (Supervised Learning) • 비지도 학습 (Un supervised learning)
  3. 3. 지도 학습의 문제 유형별 분류 • Regression problem vs Classification problem Regression problem Classification probelm • 값에 대한 예측이 목적 • 값을 기반으로 선택
  4. 4. 지도 학습과 비지도 학습의 차이 • 지도 학습 : 데이타가 라벨링 되어 있음. • 비지도 학습 : 데이타가 라벨링 되어 있지 않음 (군집화등에 사용됨)
  5. 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. 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. 7. 머신 러닝의 기본 단계 1. 데이타 수집 2. 입력 데이타 준비 (데이타 크린징) 3. 데이타 분석 (데이타 관찰. 인사이트 찾아내기) 4. 알고리즘 선택/훈련 5. 알고리즘 테스트 (검증) 6. 사용하기 (운영 배포)
  8. 8. kNN 알고리즘 • k Nearest neighbors 알고리즘 – 학습 데이타 중 가장 유사한 k개의 데이타를 이용해서 값을 예측 하는 방법 – 유클리드 거리 측정법을 사용함 초록색 : 유클리디안 거리 출처: http://www.nicklib.com/algorithm/1662
  9. 9. kNN 예제 • 발차기와, 키스라는 항목으로, ? 대상의 유형을 유추 발차기 키스 로맨스 액션 ? ?(예측하고자 하는) 항목과 가장 거리가 가까운 항목의 “유형(라벨)”로 유출  영화,쇼핑몰등 추천 시스템에 사용
  10. 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. 11. kNN 코드에 사용되는 수학 함수 • import numpy : 수학함수 라이브러리 • 설치 : 방화벽 제약을 피하기 위해 패키지로 설치 아나콘다 : http://continuum.io/downloads
  12. 12. kNN 코드 해석 inX = {1,1} tile(intX, (4,1)) = 1,1 1,1 1,1 1,1 1,1.1 1,1 0,0 0,0.1 dataSet = tile(intX, (4,1))-dataSet = 0.-0.1 0,0 1,1 1,0.9 (tile(intX, (4,1))-dataSet)**2 = 0.0.01 0,0 1,1 1,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}
  13. 13. 정규화 • 정규화란 Attribute 값을 을 0<x<N로 정규화 (사상) 하는 것 • 각 Attribute의 단위가 다르기 때문에, 유크리드 거리를 계산할때, 단위가 큰 값만 반영이 되는 문 제를 해결하기 위함
  14. 14. 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
  15. 15. 검사 (검증) • 90%의 데이타로 학습, 10% 데이타로 검증 • 10% 데이타는 무작위로 선택 (앞의 10% 또는 뒤의 10%) • 오류율 – 0 : 오류 없음 – 1 : 100% 다 오류
  16. 16. 토론 • 왜 행렬을 사용하는 것인가? • 실제 운영 환경에서 데이타가 100만개라면, 일일이 값을 예측할때 마다 100만개와 비교 하는 계 산을 해야 하는가?

×