machine learning foundations (a case study approach) 강의 정리

35
Machine Learning Foundations: A Case Study Approach by University of Washington 1 2017.09 freepsw 사례 중심의 머신러닝 알고리즘 활용방안 강의정리

Upload: sang-won-park

Post on 22-Jan-2018

308 views

Category:

Software


18 download

TRANSCRIPT

Page 1: Machine Learning Foundations (a case study approach) 강의 정리

Machine Learning Foundations: A Case Study Approach

by University of Washington

1

2017.09

freepsw

사례 중심의 머신러닝 알고리즘 활용방안 강의정리

Page 2: Machine Learning Foundations (a case study approach) 강의 정리

2

Week 1. Overview

다른 ML과정과의 차별점으로 실제 문제를 해결하는 방식으로 접근함

과정의 수준 과정의 대상자

• 데이터를 이해하고자 하는 개발자

• 데이터 사이언티스트가 되고 싶어하는 엔지니어

• 수학을 조금 알면서 데이터를 분석하고 싶어하는 사람들

• 이해를 위해 미리 알아야 할 정보는 최소화 하고,

• 문제를 해결하는 방법에 대한 내용을 최대화

• 데이터를 이해하고자 하는 개발자

• 데이터 사이언티스트가 되고 싶어하는 엔지니어

• 수학을 조금 알면서 데이터를 분석하고 싶어하는 사람들

Page 3: Machine Learning Foundations (a case study approach) 강의 정리

3

Week 1. Development Environment

Python, IPython Notebook & GraphLab Create설치 가이드 설치 절차

• 데이터를 이해하고자 하는 개발자

• 데이터 사이언티스트가 되고 싶어하는 엔지니어

• 수학을 조금 알면서 데이터를 분석하고 싶어하는 사람들

• Anaconda 4.0.0 설치 및 가상환경을 이용한 환경 구성

• Python

• Jupyter

• Sframe

• GraphLab Create

• GraphLab Create(상용제품, trial)을 사용하는 이유

• 문제해결에 좀 더 많은 시간을 할당하기 위함.

• SW에서 제공하는 기능을 가능한 활용

https://turi.com/download/install-graphlab-create.html?email=freepsw%40gmail.com&key=2F8A-2D9E-43DE-3AC0-3312-B6EA-79CE-1BF5

• 데이터를 이해하고자 하는 개발자

• 데이터 사이언티스트가 되고 싶어하는 엔지니어

• 수학을 조금 알면서 데이터를 분석하고 싶어하는 사람들

https://www.coursera.org/learn/ml-foundations/supplement/5HQGl/reading-getting-started-with-python-ipython-notebook-graphlab-create

# 1. 필요 라이브러리 설치> sudo yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite3 sqlite-devel openssl-devel –y> sudo yum install freetype freetype-devel libpng-devel -y

# 2. Anaconda 설치> wget https://repo.continuum.io/archive/Anaconda2-4.0.0-Linux-x86_64.sh> bash Anaconda2-4.0.0-Linux-x86_64.sh

à $PATH에 anaconda에서 제공하는 python 경로가 포함되도록 설정à ~/.bash_profile에 ” export PATH=$HOME/anaconda2/bin:$PATH ”

# 3. Anaconda 가상환경 구성> conda create -n gl-env python=2.7 anaconda=4.0.0

# 4. Activate the conda environment> source activate gl-env

# 5. Install your licensed copy of GraphLab Create> pip install --upgrade --no-cache-dir https://get.graphlab.com/GraphLab-Create/2.1/[email protected]/2F8A-2D9E-43DE-3AC0-3312-B6EA-79CE-1BF5/GraphLab-Create-License.tar.gz

à 코세라 강의를 위한 라이센스를 발급받고 이를 이용하여 설치 (https://turi.com/learn/coursera/)

# 6. Jupyter Notebook 실행 (.ipynb 파일이 있는 폴더에서 실행)> conda install ipython-notebook> Jupyter notebook# 7. Browser로 접속 (http://서버IP:8888)

• 본인 Notebook/PC로 실행하면 문제없음.• UI가 없는 Server를 활용할 경우, Juypter를 외부에서 접속할 수 있는 서버로 실행해야함.• http://jupyter-notebook.readthedocs.io/en/latest/public_server.html#notebook-server-security

Page 4: Machine Learning Foundations (a case study approach) 강의 정리

4

Week1. Canvas for data visualization

GraphLab Create를 이용하여 시각화한 웹서버 접근방법 (sf.show() 실행시)

로컬 환경인 경우 원격서버 환경

• 원격서버(AWS, GCE, 개발서버 등)에 실습환경 구축한 경우

• [문제] Link 클릭시 접속 오류 발생

• [해결] SSH Port Forwarding을 통하여 접속

• 실습환경을 local PC에 설치한 경우 매뉴얼 대로 동작

# local PC에서 실행 (port forwarding 연결)> ssh -L 37025:localhost:37025 [email protected] (원격서버 ip)

• 출력된 link를 통해 graphlab creat 화면 접속

참고 : http://blog.naver.com/freepsw/220892098919

# local PC Browserhttp://localhost:37025/index.html 접속

Page 5: Machine Learning Foundations (a case study approach) 강의 정리

Week 2

Regression: Predicting House Prices

5

Page 6: Machine Learning Foundations (a case study approach) 강의 정리

6

Week 2-1. Linear regression modeling

주변 주택시세(크기 기준)를 이용하여 선형모델을 생성해 보자

• 가상의 선(W0, W1)을 그리고 예측값과 실제값의 차이(Residual

sum of square)를 계산.

• 이 값이 최소가 되는 선형을 선택하여 가격을 예측

• 집의 크기와 가격을 기준으로 그래프를 그리고,

• 집의 평수에 해당하는 가격을 대략 산정 가능

직관적인 분석을 통한 시세 예측 모델 Linear regression을 활용한 예측 모델

Page 7: Machine Learning Foundations (a case study approach) 강의 정리

7

Week 2-2. Evaluating regression model

Feature를 추가하여 모델의 예측 정확도를 높인다

• 수강생의 역량

• Capstone 프로젝트 결과물 등

• 2차원에서는 단순한 선형을 가지지만,

• Feature가 추가되면서 고차원의 선형으로 데이터를 분류함.

Feature 추가에 따른 선형의 변화 (고차원) 수강생들이 회사에 취직할 확률

Page 8: Machine Learning Foundations (a case study approach) 강의 정리

8

Week 2. Assignment

Graphlab을 이용하여 탐색적 분석 및 regression model 평가

• Graphlaba에서 제공하는 api를 이용한 모델생성• Feature와 price간의 관계를 다양한 chart를 이용하여 시각화

Graphlab create를 이용한 시각화 Regression model 생성

• 생성된 모델에 대한 평가

Page 9: Machine Learning Foundations (a case study approach) 강의 정리

Week 3

Classification: Analyzing Sentiment

9

Page 10: Machine Learning Foundations (a case study approach) 강의 정리

10

Week 3-1. Classification modeling

음식(메뉴)에 대한 평가(긍정,부정)를 분류하는 서비스

• 1) 모든 평가 댓글을 취합

• 2) 특정 메뉴가 포함된 문장만 추출

• 3) 감성분석을 위한 분류기 적용

• 4) 메뉴별 평가정보 추출

• 고갱의 댓글 또는 평가에 대한 문장을 분석하여,

• 특정 메뉴에 대한 긍정/부정의 감성분석을 하고,

• 어떤 메뉴가 가장 큰 긍정적인 평가를 받는지 확인

개념적인 모델 상세 모델

Classifier의 성능(예측정확도) 중요

Page 11: Machine Learning Foundations (a case study approach) 강의 정리

11

Week 3-1. Simple Threshold Classifier

긍정/부정의 단어에 일정한 점수를 부여하여 분류하는 모델

• 긍정/부정의 단어를 직접 구성해야 함. (모두 파악할 수 있나?)

• 단어별로 긍정/부정의 강도가 다름 (Greate > good)

• 단어별로 가중치가 필요하지 않을까?

• 긍정/부정의 단어를 사전에 정의함.

• 입력된 문장에 포함된 단어를 집계하여 score의 합을 계산

모델의 구성 Threshold classifier의 문제점

• 하나의 단어로 긍정/부정을 평가하기 어려움

• Good à 긍정

• Not Good à 부정

Classifier를 학습(후반부에 자세히 설명)

좀 더 복잡한 feature를 이용

Page 12: Machine Learning Foundations (a case study approach) 강의 정리

12

Week 3-1. Linear Classifier

단어별로 가중치를 부여하여, 긍정/부정의 score로 분류

• 아래 문장에서 긍정을 표현하는 단어의 가중치가 높아서

• 긍정으로 분류함

• 가중치가 부여된 단어의 score 합계를 이용하여

• 긍정/부정을 분류함

모델의 구성 문장의 Scoring

Page 13: Machine Learning Foundations (a case study approach) 강의 정리

Week 3-2

Evaluating classification models

13

Page 14: Machine Learning Foundations (a case study approach) 강의 정리

14

Week 3-2. Training and evaluating a classifier

Classifier를 학습한다는 것은, Error를 최소화 하는 최적의 weight를 찾는것이다

• Training set를 이용하여 최적의 weight를 학습하고,

• Test set를 이용하여 정확도를 검증한다.

• 아래와 같이 가중치가 부여된 경우

• linear regression의 함수를 생성할 수 있다.

Decision boundary 결정 최적의 weight 탐색 과정

• 위 함수를 이용하여 긍정/부정을 분류 가능

awesome 2회awful 1회

Page 15: Machine Learning Foundations (a case study approach) 강의 정리

15

Week 3-2. False positives, false negatives

학습된 모델이 예측을 실패하는 유형 이해

• [Spam Filtering]

• FP : 정상 메일을 spam으로 판단하면, 중요한 메일을 읽지

못함.

• [병/질환 진단]

• FN : 실제 병이 있는데, 없는 것으로 판단 à 치료시기 놓침

• FP : 병이 없는데 있다고 판단 à 불필요한 치료비용/독한 약

• False Negative : 부정(Negative)으로 예측한 것이 틀렸다(False)

• False Positive : 긍정(Positive)으로 예측한 것이 틀렸다(False)

모델의 예측 실패 유형 예측 실패의 영향

Page 16: Machine Learning Foundations (a case study approach) 강의 정리

16

Week 3-2. Learning curves

데이터가 많을 수록 예측 오류는 줄어들지만, 특정 bias(편향) 이하로는 줄지 않음

• 단순한 단어가 아닌 복합 단어를 포함한 파라미터를 추가• 데이터가 많을 수록, 모델의 정확도가 높아짐 (오류가 감소)

데이터와 예측오류의 관계 복잡한 모델은 bias 감소

데이터가 무한대로 증가해도, 오류가 감소하지 않음

• 기존 모델과 비교하여 오류가 현저하게 감소함

Page 17: Machine Learning Foundations (a case study approach) 강의 정리

17

Week 3-2. Class probabilities

모델의 예측 정확도를 신뢰할 수 있도록 확률로 표현한다

• 입련 문장에서 긍정/부정이 나타날 확률로 계산• 단어를 보고 긍정 or 부정 판단

• 하지만, 실제 문장에는 긍정과 부정이 함께 표현되는 경우가 많음

• Sushi는 맛있지만, 서비스는 별로?

기존 모델의 예측 방식 확률을 통한 예측

• 따라서,

• 이를 특정 문장이 주어졌을때,

• 긍정이 나타날 확률과

• 부정이 나타날 확률로 구분해야 한다

Page 18: Machine Learning Foundations (a case study approach) 강의 정리

Week 4

Clustering and Similarity : Retrieving Documents

18

Page 19: Machine Learning Foundations (a case study approach) 강의 정리

19

Week 4-1. Algorithms for retrieval and measuring similarity of documents

수많은 문서들간의 유사도를 비교하는 방법

• 입련 문장에서 긍정/부정이 나타날 확률로 계산• 단어의 순서는 무시하고,

• 단어가 얼마만큼 나타났는지의 빈도로 유사도를 계산

Bag of Words model (단어 주머니) Word Count 유사도 계산 방식

Page 20: Machine Learning Foundations (a case study approach) 강의 정리

20

Week 4-1. Prioritizing important words with tf-idf

희소단어들은 기사의 주제를 잘 표현하므로, 가중치를 높여야 한다

• 상용어인 “The”의 비중을 줄이고,

• “Messi”와 같은 의미있는 단어의 가중치를 높임.

• 일부 문서에서만 나타나는 희소단어의 가중치를 높이기 위해서,

• 많이 발생하는 단어의 가중치를 감소시킨다.

• IDF

• Log(전체 문서 수 / 단어가 포함된 문서)

• Log 함수로 아주 큰 수가 나오지 않도록 조정

• 발생빈도 높은 단어 à 0에 가까움.

• 발생빈도 낮은 단어 à 0보다 크지만, 아주 크지는 않음

TF-IDF (Term Frequency – Inverse Document Frequency) TF-IDF 예시

+1을 하는 이유?문서의 단어 중 말뭉치에 없는 단어가 있을 수 있으므로,

0이 되지 않도록 1을 추가

log0 16 = 4(여기서는 log0로가정)

• 최종적으로, Messi라는 단어의 가중치가 20으로 증가되고

• The라는 단어는 0으로 감소

Page 21: Machine Learning Foundations (a case study approach) 강의 정리

21

Week 4-1. Retrieving similar documents using nearest neighbor 검색

문서간의 유사도를 비교하는 가장 보편적인 기법

• Input : Query article

• Output : 가장 유사한 기사 (1개만 출력)

• Algorithm :

1. Corpus의 모든 article을 검색하면서

2. 유사도(Query article vs article) 비교

3. 전체 중에 가장 유사도가 높은 것만 출력

• 일부 문서에서만 나타나는 희소단어의 가중치를 높이기 위해서,

• Query article : 검색기사 (현재 보고 있는 기사)

• Corpus(말뭉치) : 모든 문서의 총합, 여기서 추천할 기사를 선택

nearest neighbor search 개념 1 - Nearest neighbor

• 거리 기준 : 유사도를 측정할 기준 (distance metric)

• Input : Query article

• Output : 유사한 기사의 목록 (List of K)

K – Nearest neighbor

Page 22: Machine Learning Foundations (a case study approach) 강의 정리

Week 4-2

Clustering models and algorithms

22

Page 23: Machine Learning Foundations (a case study approach) 강의 정리

23

Week 4-2. Clustering documents task overview

라벨이 없는 article들에서 관련된 기사 및 그룹을 발견하는 방식

• 3개의 클러스터로 지정 후

• 랜덤 중심점 3개로 시작하여, 반복하여 중심점을 조정하면서

• 클러스터를 최적화 하는 기법

• 단어의 빈도를 이용하여 기사(문서)를 자동으로 분류하는 방식

• Input : 문서 (vector형식)

• Output : Cluster Label (문서별로 label을 부여, 스포츠/정치 등)

Clustering 개념 거리 중심의 클러스터링 (K-Means)

• 문서에 포함된 단어가 2개(word1, word2)만 존재하는 경우,

• 위와 같이 2차원 평면으로 표현가능 (실제는 더 많은 고차원)

• 가장 가까운 거리의 문서 집합을 클러스터로 분류하여 라벨링

Page 24: Machine Learning Foundations (a case study approach) 강의 정리

24

Week 4. Assignment

Wiki의 인물사전의 설명을 기준으로 각 인물간의 유사도를 분류

• TF-IDF 필드를 이용한 유사도 모델 생성 및 평가• Word_Count : ”Text” 필드의 단어 발생 빈도

• TF-IDF : 각 단어가 문서들(Corpus)에 발생한 빈도

Word를 이용한 단어 빈도 계산 거리기반 유사도 모델

• Elton John과 가장 유사한 사람은 “Phill Collins”

Page 25: Machine Learning Foundations (a case study approach) 강의 정리

Week 5

Recommending Products

25

Page 26: Machine Learning Foundations (a case study approach) 강의 정리

26

Week 5-1. Recommender systems

라벨이 없는 article들에서 관련된 기사 및 그룹을 발견하는 방식

1. 인기도 기반 (Popularity)

• 가장 단순 (뉴스에서 활용, 가장 인기 있는 기사 추천)

• 독자에게 공유된 횟수

• 문제

• 개인화(개인별 선호도)에 대한 고려 없음

2. Classification Model

• 개인별 feature로 모델 학습

• 장점

• 개인의 선호도 반영

• 문맥(시간, 활동내용 등)을 반영한 추천

• 개인의 이력을 반영한 추천

• 단점

• Feature가 부족할 수 있음 (나이, 성별 등..)

• à collaborative filtering으로 한계 극복

• 개인화 (Personalization)

• 사용자와 Item을 연결 (User vs Product/Movie …)

• 추천 시스템의 핵심 개념

• 시간에 따른 변화

• 작년에 구매한 유아 운동화를 몇년 후에는 구매하지 않음

• 시간에 따라 다른 추천

• Item의 유사성

• 음악 청취시 비슷한 음악을 연속적으로 듣는 경향

Recommender system의 특징 추천 모델의 유형

Page 27: Machine Learning Foundations (a case study approach) 강의 정리

Week 5-2

Co-occurrence matrices for

collaborative filtering

27

Page 28: Machine Learning Foundations (a case study approach) 강의 정리

28

Week 5-2. Collaborative Filtering

구매이력을 기반으로 특정 상품을 산 사람들은 다른 특정 상품을 살거라는 가정

• 특정 상품이 압도적으로 많이 구매되는 경우, (예를 들어 기저귀)

• 어떤 상품을 구매하더라도, 무조건 그 상품(기저귀)를 추천함

• Matrix C

• 사용자가 구매한 상품간의 대칭 Matrix

• 특정 상품을 구매한 사람이 어떤 상품을 동시에 구매했는지

쉽게 확인 가능

Co-Occurrence Matrix (상품 구매 매트릭스) Co-occurrence matrix의 문제점 (populiarity)

• 기저귀와 아기 물티슈를동시에 구매한 사람 수

• 이 Matrix를 이용하면,

• 특정 상품을 구매한 사람이 구매한 다른 상품의 갯수(많이 구매)

순서로 추천할 수 있다.

• 기저귀를 먼저 추천 à

Page 29: Machine Learning Foundations (a case study approach) 강의 정리

29

Week 5-2. Normalizing co-occurrence matrix

Popularity를 기준으로 유사도를 가지도록 데이터를 정규화

• 구매 이력에 있는 각 상품에 대하여,

• 추천할 상품과의 점수를 구하고, (Co-occurrecne matrix 사용)

• 이를 평균으로 나누어서 가중 점수를 계산

• 내가 구매한 이력이 (diaper, milk)만 있고,

• 나머지 상품에 대한 추천점수를 계산해야 한다면,

• Diaper와 milk와 다른 상품간의 점수를 각각 계산하고,

• 이를 평균으로 계산

• 상품 i와 j를 동시에 구매한 사람의 수를

• 상품 I 또는 j를 구매한 전체 사용자 수로 나누어 유사도를 구한다.

• 이 공식을 이용해 전체 Matrix를 정규화

Jaccard similarity Weighted Average of purchased items

[ Co-occurrence Matrix의 문제점]

• 현재 상태(특정 상품]만 추천이 가능

• 즉, 과거의 구매이력을 이용하여 추천하지 못함.

• 왜냐하면, matrix에서 전체 이력을 계산한 값이 없기 때문…

• 이 점수가 가장 높은 순으로 추천한다

• Baby wipes 추천 점수• (가중 평균점수)

[ 한계점]

• 문맥(시간 등), 사용자 개인정보, 제품정보를 반영하지 못함.

• Cold Start Problem (신규 사용자 또는 신규제품은?)

Page 30: Machine Learning Foundations (a case study approach) 강의 정리

30

Week 5-3. Matrix Factorization

데이터를 통하여 사용자 또는 상품의 특징을 학습하는 방법 (행렬 분해)(예를 들어, 영화 평점데이터를 통해 사용자 및 영화의 특징 추출)

• Feature : X1, X2 (영화의 특징)

• 가중치 : 𝜽(𝒖𝒔𝒆𝒓)

• 예측평점 : 𝒚 = 𝜽 𝒋 𝑻(𝒙 𝒊 )

• 즉, 사용자가 영화를 평가했던 이력이 있고,

• 사용자 및 영화의 feature을 가지고 있다면,

• 여기서는 romance, action 등의 선호도

• 실제는 사용자(나이, 성별, 거주지역 등), 영화(감독, 배우, 장르 등)

• 이를 통해서 가중치를 학습하여 최적의 값을 찾는다. (cost 최적화)

• Feature(특징)이 정의되지 않은 경우, 이를 데이터를 통해 학습

• 먼저, 사용자(U)와 영화(V)의 feature matrix를 이용하여 점수

(rating)을 예측해 보자.

데이터를 통해 특징을 찾아서 분해(Matrix Factorization) Feature를 통해 학습하여 가중치 추출

• Andrew NG 강의• Week 9 참고 (더 자세함)

• 학습을 통해 𝜽를 최소화

가중치를 통해서 Feature(유형)를 추출

• 가중치를 알면, 평가점수를 기반으로 feature를 추출 가능

• 즉, 사용자 및 영화의 feature를 추출

• 이를 통해 사용자의 유형을 분류할 수 있음

• 사용자 1(Allice)의 3번째 영화(Cute pupple of love)의 평점을 예측해 보자

• 이때 𝜽(𝟏)은 사전에 학습되었다고 가정한다. [0, 5, 0]

Page 31: Machine Learning Foundations (a case study approach) 강의 정리

Week 5-4

Performance metrics for recommender systems

31

Page 32: Machine Learning Foundations (a case study approach) 강의 정리

32

Week 5-4. performance metric for recommender systems

사용자가 관심있는 상품만 추천할 수 있도록 recall-precision curve 활용

• Precision-recall curve

• Recall을 최대치(1)로 높여가는 과정에서의 관계 그래프

• Recall (재현율)

• 사용자가 관심있는 상품을 몇개나 추천했는지?

• 전체 100개 중, 관심있는 상품은 10개 (1~10)

• 추천을 5개 했다면 (7 ~ 11)

• 4/10 = (7, 8, 9, 10) / (1 ~ 10) = 40%

• Precision (정확도)

• 추천한 상품에 사용자가 관심있는 상품이 얼마나 있는가?

• 4/5 = (7, 8, 9, 10) / (7 ~ 11) = 80%

• 추천모델에서 관심있는 상품을 추천하는 것이 중요!!

• 따라서 recall을 향상하도록 추천 알고리즘을 평가해야 함.

Recall vs Precision 추천 알고리즘 평가 방법

• 1/1 = 100%• 1개 추천했는데,• 1개가 관심상품

• 10/10 = 100%• 10개 추천했는데,• 10개가 관심상품• (전체 관심상품 10개)

• 2/5 = 100%• 5개 추천했는데,• 2개가 관심상품• Precision : 2/5 : 0.4• Recall : 2/10 : 0.2

• 2/10 = 100%• 10개 추천했는데,• 2개가 관심상품• Precision : 2/0 : 0.2• Recall : 2/10 : 0.2• 정확도는 떨어져도, 재현율

은 변화 없음

• AUC(Area under the curve) 평가

• 커브 아래의 면적이 큰 알고리즘

을 우선 선택

Page 33: Machine Learning Foundations (a case study approach) 강의 정리

Week 6

Deep Learning : Searching for images

(Andrew NG 강의 및 모두를 위한 딥러닝 참고)

33

Page 34: Machine Learning Foundations (a case study approach) 강의 정리

34

Week 6. Quiz

(x1 AND x2) OR (NOT x1 AND NOT x2) 문제를 NN으로 표현하는 방법

• 수식을 2개로 분리하고, 각 결과를 다시 계산

• 총 3단계의 가중치가 필요함

• Z1(w0, w1, w2), Z2(w0, w1, w2), Z3(w0, w1, w2)

• Z1 à -1.5, 1, 1

• Z2 à 0.5, -1, -1

• Z3 à -0.5, 1, 1

• (x1 AND x2) OR (NOT x1 AND NOT x2) 정의

• X1과 X2의 논리 연산 결과 확인

• 아래와 같이 (1 0 0 1)이 도출되어야 정답

문제 문제 풀이 방법

https://www.coursera.org/learn/ml-foundations/discussions/weeks/6/threads/AAIUurrtEeWGphLhfbPAyQ

• 정답을 찾기 위해서는 어떤 가중치(weight)가 주어져야 할까?

• Deep Learning에서는 Cost 최적화를 통하여

• 위의 가중치(w0, w1, w2)를 자동으로 찾아 줌

Page 35: Machine Learning Foundations (a case study approach) 강의 정리

END