KEMBAR78
Machine Learning Foundations (a case study approach) 강의 정리 | PDF
Machine Learning Foundations:
A Case Study Approach
by University of Washington
1
2017.09
freepsw
사례 중심의 머신러닝 알고리즘 활용방안 강의정리
2
Week 1. Overview
다른 ML과정과의 차별점으로 실제 문제를 해결하는 방식으로 접근함
과정의 수준 과정의 대상자
• 데이터를 이해하고자 하는 개발자
• 데이터 사이언티스트가 되고 싶어하는 엔지니어
• 수학을 조금 알면서 데이터를 분석하고 싶어하는 사람들
• 이해를 위해 미리 알아야 할 정보는 최소화 하고,
• 문제를 해결하는 방법에 대한 내용을 최대화
• 데이터를 이해하고자 하는 개발자
• 데이터 사이언티스트가 되고 싶어하는 엔지니어
• 수학을 조금 알면서 데이터를 분석하고 싶어하는 사람들
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/freepsw@gmail.com/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
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 rts@192.168.X.X (원격서버 ip)
• 출력된 link를 통해 graphlab creat 화면 접속
참고 : http://blog.naver.com/freepsw/220892098919
# local PC Browser
http://localhost:37025/index.html 접속
Week 2
Regression: Predicting House Prices
5
6
Week 2-1. Linear regression modeling
주변 주택시세(크기 기준)를 이용하여 선형모델을 생성해 보자
• 가상의 선(W0, W1)을 그리고 예측값과 실제값의 차이(Residual
sum of square)를 계산.
• 이 값이 최소가 되는 선형을 선택하여 가격을 예측
• 집의 크기와 가격을 기준으로 그래프를 그리고,
• 집의 평수에 해당하는 가격을 대략 산정 가능
직관적인 분석을 통한 시세 예측 모델 Linear regression을 활용한 예측 모델
7
Week 2-2. Evaluating regression model
Feature를 추가하여 모델의 예측 정확도를 높인다
• 수강생의 역량
• Capstone 프로젝트 결과물 등
• 2차원에서는 단순한 선형을 가지지만,
• Feature가 추가되면서 고차원의 선형으로 데이터를 분류함.
Feature 추가에 따른 선형의 변화 (고차원) 수강생들이 회사에 취직할 확률
8
Week 2. Assignment
Graphlab을 이용하여 탐색적 분석 및 regression model 평가
• Graphlaba에서 제공하는 api를 이용한 모델생성• Feature와 price간의 관계를 다양한 chart를 이용하여 시각화
Graphlab create를 이용한 시각화 Regression model 생성
• 생성된 모델에 대한 평가
Week 3
Classification: Analyzing Sentiment
9
10
Week 3-1. Classification modeling
음식(메뉴)에 대한 평가(긍정,부정)를 분류하는 서비스
• 1) 모든 평가 댓글을 취합
• 2) 특정 메뉴가 포함된 문장만 추출
• 3) 감성분석을 위한 분류기 적용
• 4) 메뉴별 평가정보 추출
• 고갱의 댓글 또는 평가에 대한 문장을 분석하여,
• 특정 메뉴에 대한 긍정/부정의 감성분석을 하고,
• 어떤 메뉴가 가장 큰 긍정적인 평가를 받는지 확인
개념적인 모델 상세 모델
Classifier의 성능(예측정확도) 중요
11
Week 3-1. Simple Threshold Classifier
긍정/부정의 단어에 일정한 점수를 부여하여 분류하는 모델
• 긍정/부정의 단어를 직접 구성해야 함. (모두 파악할 수 있나?)
• 단어별로 긍정/부정의 강도가 다름 (Greate > good)
• 단어별로 가중치가 필요하지 않을까?
• 긍정/부정의 단어를 사전에 정의함.
• 입력된 문장에 포함된 단어를 집계하여 score의 합을 계산
모델의 구성 Threshold classifier의 문제점
• 하나의 단어로 긍정/부정을 평가하기 어려움
• Good à 긍정
• Not Good à 부정
Classifier를 학습
(후반부에 자세히 설명)
좀 더 복잡한 feature를 이용
12
Week 3-1. Linear Classifier
단어별로 가중치를 부여하여, 긍정/부정의 score로 분류
• 아래 문장에서 긍정을 표현하는 단어의 가중치가 높아서
• 긍정으로 분류함
• 가중치가 부여된 단어의 score 합계를 이용하여
• 긍정/부정을 분류함
모델의 구성 문장의 Scoring
Week 3-2
Evaluating classification models
13
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회
15
Week 3-2. False positives, false negatives
학습된 모델이 예측을 실패하는 유형 이해
• [Spam Filtering]
• FP : 정상 메일을 spam으로 판단하면, 중요한 메일을 읽지
못함.
• [병/질환 진단]
• FN : 실제 병이 있는데, 없는 것으로 판단 à 치료시기 놓침
• FP : 병이 없는데 있다고 판단 à 불필요한 치료비용/독한 약
• False Negative : 부정(Negative)으로 예측한 것이 틀렸다(False)
• False Positive : 긍정(Positive)으로 예측한 것이 틀렸다(False)
모델의 예측 실패 유형 예측 실패의 영향
16
Week 3-2. Learning curves
데이터가 많을 수록 예측 오류는 줄어들지만, 특정 bias(편향) 이하로는 줄지 않음
• 단순한 단어가 아닌 복합 단어를 포함한 파라미터를 추가• 데이터가 많을 수록, 모델의 정확도가 높아짐 (오류가 감소)
데이터와 예측오류의 관계 복잡한 모델은 bias 감소
데이터가 무한대로 증가해도, 오류가 감소하지 않음
• 기존 모델과 비교하여 오류가 현저하게 감소함
17
Week 3-2. Class probabilities
모델의 예측 정확도를 신뢰할 수 있도록 확률로 표현한다
• 입련 문장에서 긍정/부정이 나타날 확률로 계산• 단어를 보고 긍정 or 부정 판단
• 하지만, 실제 문장에는 긍정과 부정이 함께 표현되는 경우가 많음
• Sushi는 맛있지만, 서비스는 별로?
기존 모델의 예측 방식 확률을 통한 예측
• 따라서,
• 이를 특정 문장이 주어졌을때,
• 긍정이 나타날 확률과
• 부정이 나타날 확률로 구분해야 한다
Week 4
Clustering and Similarity :
Retrieving Documents
18
19
Week 4-1. Algorithms for retrieval and measuring similarity of documents
수많은 문서들간의 유사도를 비교하는 방법
• 입련 문장에서 긍정/부정이 나타날 확률로 계산• 단어의 순서는 무시하고,
• 단어가 얼마만큼 나타났는지의 빈도로 유사도를 계산
Bag of Words model (단어 주머니) Word Count 유사도 계산 방식
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으로 감소
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
Week 4-2
Clustering models and algorithms
22
23
Week 4-2. Clustering documents task overview
라벨이 없는 article들에서 관련된 기사 및 그룹을 발견하는 방식
• 3개의 클러스터로 지정 후
• 랜덤 중심점 3개로 시작하여, 반복하여 중심점을 조정하면서
• 클러스터를 최적화 하는 기법
• 단어의 빈도를 이용하여 기사(문서)를 자동으로 분류하는 방식
• Input : 문서 (vector형식)
• Output : Cluster Label (문서별로 label을 부여, 스포츠/정치 등)
Clustering 개념 거리 중심의 클러스터링 (K-Means)
• 문서에 포함된 단어가 2개(word1, word2)만 존재하는 경우,
• 위와 같이 2차원 평면으로 표현가능 (실제는 더 많은 고차원)
• 가장 가까운 거리의 문서 집합을 클러스터로 분류하여 라벨링
24
Week 4. Assignment
Wiki의 인물사전의 설명을 기준으로 각 인물간의 유사도를 분류
• TF-IDF 필드를 이용한 유사도 모델 생성 및 평가• Word_Count : ”Text” 필드의 단어 발생 빈도
• TF-IDF : 각 단어가 문서들(Corpus)에 발생한 빈도
Word를 이용한 단어 빈도 계산 거리기반 유사도 모델
• Elton John과 가장 유사
한 사람은 “Phill Collins”
Week 5
Recommending Products
25
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의 특징 추천 모델의 유형
Week 5-2
Co-occurrence matrices
for
collaborative filtering
27
28
Week 5-2. Collaborative Filtering
구매이력을 기반으로 특정 상품을 산 사람들은 다른 특정 상품을 살거라는 가정
• 특정 상품이 압도적으로 많이 구매되는 경우, (예를 들어 기저귀)
• 어떤 상품을 구매하더라도, 무조건 그 상품(기저귀)를 추천함
• Matrix C
• 사용자가 구매한 상품간의 대칭 Matrix
• 특정 상품을 구매한 사람이 어떤 상품을 동시에 구매했는지
쉽게 확인 가능
Co-Occurrence Matrix (상품 구매 매트릭스) Co-occurrence matrix의 문제점 (populiarity)
• 기저귀와 아기 물티슈를
동시에 구매한 사람 수
• 이 Matrix를 이용하면,
• 특정 상품을 구매한 사람이 구매한 다른 상품의 갯수(많이 구매)
순서로 추천할 수 있다.
• 기저귀를 먼저 추천 à
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 (신규 사용자 또는 신규제품은?)
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]
Week 5-4
Performance metrics for recommender systems
31
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) 평가
• 커브 아래의 면적이 큰 알고리즘
을 우선 선택
Week 6
Deep Learning : Searching for images
(Andrew NG 강의 및 모두를 위한 딥러닝 참고)
33
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)를 자동으로 찾아 줌
END

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

  • 1.
    Machine Learning Foundations: ACase Study Approach by University of Washington 1 2017.09 freepsw 사례 중심의 머신러닝 알고리즘 활용방안 강의정리
  • 2.
    2 Week 1. Overview 다른ML과정과의 차별점으로 실제 문제를 해결하는 방식으로 접근함 과정의 수준 과정의 대상자 • 데이터를 이해하고자 하는 개발자 • 데이터 사이언티스트가 되고 싶어하는 엔지니어 • 수학을 조금 알면서 데이터를 분석하고 싶어하는 사람들 • 이해를 위해 미리 알아야 할 정보는 최소화 하고, • 문제를 해결하는 방법에 대한 내용을 최대화 • 데이터를 이해하고자 하는 개발자 • 데이터 사이언티스트가 되고 싶어하는 엔지니어 • 수학을 조금 알면서 데이터를 분석하고 싶어하는 사람들
  • 3.
    3 Week 1. DevelopmentEnvironment 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/freepsw@gmail.com/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
  • 4.
    4 Week1. Canvas fordata visualization GraphLab Create를 이용하여 시각화한 웹서버 접근방법 (sf.show() 실행시) 로컬 환경인 경우 원격서버 환경 • 원격서버(AWS, GCE, 개발서버 등)에 실습환경 구축한 경우 • [문제] Link 클릭시 접속 오류 발생 • [해결] SSH Port Forwarding을 통하여 접속 • 실습환경을 local PC에 설치한 경우 매뉴얼 대로 동작 # local PC에서 실행 (port forwarding 연결) > ssh -L 37025:localhost:37025 rts@192.168.X.X (원격서버 ip) • 출력된 link를 통해 graphlab creat 화면 접속 참고 : http://blog.naver.com/freepsw/220892098919 # local PC Browser http://localhost:37025/index.html 접속
  • 5.
  • 6.
    6 Week 2-1. Linearregression modeling 주변 주택시세(크기 기준)를 이용하여 선형모델을 생성해 보자 • 가상의 선(W0, W1)을 그리고 예측값과 실제값의 차이(Residual sum of square)를 계산. • 이 값이 최소가 되는 선형을 선택하여 가격을 예측 • 집의 크기와 가격을 기준으로 그래프를 그리고, • 집의 평수에 해당하는 가격을 대략 산정 가능 직관적인 분석을 통한 시세 예측 모델 Linear regression을 활용한 예측 모델
  • 7.
    7 Week 2-2. Evaluatingregression model Feature를 추가하여 모델의 예측 정확도를 높인다 • 수강생의 역량 • Capstone 프로젝트 결과물 등 • 2차원에서는 단순한 선형을 가지지만, • Feature가 추가되면서 고차원의 선형으로 데이터를 분류함. Feature 추가에 따른 선형의 변화 (고차원) 수강생들이 회사에 취직할 확률
  • 8.
    8 Week 2. Assignment Graphlab을이용하여 탐색적 분석 및 regression model 평가 • Graphlaba에서 제공하는 api를 이용한 모델생성• Feature와 price간의 관계를 다양한 chart를 이용하여 시각화 Graphlab create를 이용한 시각화 Regression model 생성 • 생성된 모델에 대한 평가
  • 9.
  • 10.
    10 Week 3-1. Classificationmodeling 음식(메뉴)에 대한 평가(긍정,부정)를 분류하는 서비스 • 1) 모든 평가 댓글을 취합 • 2) 특정 메뉴가 포함된 문장만 추출 • 3) 감성분석을 위한 분류기 적용 • 4) 메뉴별 평가정보 추출 • 고갱의 댓글 또는 평가에 대한 문장을 분석하여, • 특정 메뉴에 대한 긍정/부정의 감성분석을 하고, • 어떤 메뉴가 가장 큰 긍정적인 평가를 받는지 확인 개념적인 모델 상세 모델 Classifier의 성능(예측정확도) 중요
  • 11.
    11 Week 3-1. SimpleThreshold Classifier 긍정/부정의 단어에 일정한 점수를 부여하여 분류하는 모델 • 긍정/부정의 단어를 직접 구성해야 함. (모두 파악할 수 있나?) • 단어별로 긍정/부정의 강도가 다름 (Greate > good) • 단어별로 가중치가 필요하지 않을까? • 긍정/부정의 단어를 사전에 정의함. • 입력된 문장에 포함된 단어를 집계하여 score의 합을 계산 모델의 구성 Threshold classifier의 문제점 • 하나의 단어로 긍정/부정을 평가하기 어려움 • Good à 긍정 • Not Good à 부정 Classifier를 학습 (후반부에 자세히 설명) 좀 더 복잡한 feature를 이용
  • 12.
    12 Week 3-1. LinearClassifier 단어별로 가중치를 부여하여, 긍정/부정의 score로 분류 • 아래 문장에서 긍정을 표현하는 단어의 가중치가 높아서 • 긍정으로 분류함 • 가중치가 부여된 단어의 score 합계를 이용하여 • 긍정/부정을 분류함 모델의 구성 문장의 Scoring
  • 13.
  • 14.
    14 Week 3-2. Trainingand evaluating a classifier Classifier를 학습한다는 것은, Error를 최소화 하는 최적의 weight를 찾는것이다 • Training set를 이용하여 최적의 weight를 학습하고, • Test set를 이용하여 정확도를 검증한다. • 아래와 같이 가중치가 부여된 경우 • linear regression의 함수를 생성할 수 있다. Decision boundary 결정 최적의 weight 탐색 과정 • 위 함수를 이용하여 긍정/부정을 분류 가능 awesome 2회 awful 1회
  • 15.
    15 Week 3-2. Falsepositives, false negatives 학습된 모델이 예측을 실패하는 유형 이해 • [Spam Filtering] • FP : 정상 메일을 spam으로 판단하면, 중요한 메일을 읽지 못함. • [병/질환 진단] • FN : 실제 병이 있는데, 없는 것으로 판단 à 치료시기 놓침 • FP : 병이 없는데 있다고 판단 à 불필요한 치료비용/독한 약 • False Negative : 부정(Negative)으로 예측한 것이 틀렸다(False) • False Positive : 긍정(Positive)으로 예측한 것이 틀렸다(False) 모델의 예측 실패 유형 예측 실패의 영향
  • 16.
    16 Week 3-2. Learningcurves 데이터가 많을 수록 예측 오류는 줄어들지만, 특정 bias(편향) 이하로는 줄지 않음 • 단순한 단어가 아닌 복합 단어를 포함한 파라미터를 추가• 데이터가 많을 수록, 모델의 정확도가 높아짐 (오류가 감소) 데이터와 예측오류의 관계 복잡한 모델은 bias 감소 데이터가 무한대로 증가해도, 오류가 감소하지 않음 • 기존 모델과 비교하여 오류가 현저하게 감소함
  • 17.
    17 Week 3-2. Classprobabilities 모델의 예측 정확도를 신뢰할 수 있도록 확률로 표현한다 • 입련 문장에서 긍정/부정이 나타날 확률로 계산• 단어를 보고 긍정 or 부정 판단 • 하지만, 실제 문장에는 긍정과 부정이 함께 표현되는 경우가 많음 • Sushi는 맛있지만, 서비스는 별로? 기존 모델의 예측 방식 확률을 통한 예측 • 따라서, • 이를 특정 문장이 주어졌을때, • 긍정이 나타날 확률과 • 부정이 나타날 확률로 구분해야 한다
  • 18.
    Week 4 Clustering andSimilarity : Retrieving Documents 18
  • 19.
    19 Week 4-1. Algorithmsfor retrieval and measuring similarity of documents 수많은 문서들간의 유사도를 비교하는 방법 • 입련 문장에서 긍정/부정이 나타날 확률로 계산• 단어의 순서는 무시하고, • 단어가 얼마만큼 나타났는지의 빈도로 유사도를 계산 Bag of Words model (단어 주머니) Word Count 유사도 계산 방식
  • 20.
    20 Week 4-1. Prioritizingimportant 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으로 감소
  • 21.
    21 Week 4-1. Retrievingsimilar 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
  • 22.
    Week 4-2 Clustering modelsand algorithms 22
  • 23.
    23 Week 4-2. Clusteringdocuments task overview 라벨이 없는 article들에서 관련된 기사 및 그룹을 발견하는 방식 • 3개의 클러스터로 지정 후 • 랜덤 중심점 3개로 시작하여, 반복하여 중심점을 조정하면서 • 클러스터를 최적화 하는 기법 • 단어의 빈도를 이용하여 기사(문서)를 자동으로 분류하는 방식 • Input : 문서 (vector형식) • Output : Cluster Label (문서별로 label을 부여, 스포츠/정치 등) Clustering 개념 거리 중심의 클러스터링 (K-Means) • 문서에 포함된 단어가 2개(word1, word2)만 존재하는 경우, • 위와 같이 2차원 평면으로 표현가능 (실제는 더 많은 고차원) • 가장 가까운 거리의 문서 집합을 클러스터로 분류하여 라벨링
  • 24.
    24 Week 4. Assignment Wiki의인물사전의 설명을 기준으로 각 인물간의 유사도를 분류 • TF-IDF 필드를 이용한 유사도 모델 생성 및 평가• Word_Count : ”Text” 필드의 단어 발생 빈도 • TF-IDF : 각 단어가 문서들(Corpus)에 발생한 빈도 Word를 이용한 단어 빈도 계산 거리기반 유사도 모델 • Elton John과 가장 유사 한 사람은 “Phill Collins”
  • 25.
  • 26.
    26 Week 5-1. Recommendersystems 라벨이 없는 article들에서 관련된 기사 및 그룹을 발견하는 방식 1. 인기도 기반 (Popularity) • 가장 단순 (뉴스에서 활용, 가장 인기 있는 기사 추천) • 독자에게 공유된 횟수 • 문제 • 개인화(개인별 선호도)에 대한 고려 없음 2. Classification Model • 개인별 feature로 모델 학습 • 장점 • 개인의 선호도 반영 • 문맥(시간, 활동내용 등)을 반영한 추천 • 개인의 이력을 반영한 추천 • 단점 • Feature가 부족할 수 있음 (나이, 성별 등..) • à collaborative filtering으로 한계 극복 • 개인화 (Personalization) • 사용자와 Item을 연결 (User vs Product/Movie …) • 추천 시스템의 핵심 개념 • 시간에 따른 변화 • 작년에 구매한 유아 운동화를 몇년 후에는 구매하지 않음 • 시간에 따라 다른 추천 • Item의 유사성 • 음악 청취시 비슷한 음악을 연속적으로 듣는 경향 Recommender system의 특징 추천 모델의 유형
  • 27.
  • 28.
    28 Week 5-2. CollaborativeFiltering 구매이력을 기반으로 특정 상품을 산 사람들은 다른 특정 상품을 살거라는 가정 • 특정 상품이 압도적으로 많이 구매되는 경우, (예를 들어 기저귀) • 어떤 상품을 구매하더라도, 무조건 그 상품(기저귀)를 추천함 • Matrix C • 사용자가 구매한 상품간의 대칭 Matrix • 특정 상품을 구매한 사람이 어떤 상품을 동시에 구매했는지 쉽게 확인 가능 Co-Occurrence Matrix (상품 구매 매트릭스) Co-occurrence matrix의 문제점 (populiarity) • 기저귀와 아기 물티슈를 동시에 구매한 사람 수 • 이 Matrix를 이용하면, • 특정 상품을 구매한 사람이 구매한 다른 상품의 갯수(많이 구매) 순서로 추천할 수 있다. • 기저귀를 먼저 추천 à
  • 29.
    29 Week 5-2. Normalizingco-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 (신규 사용자 또는 신규제품은?)
  • 30.
    30 Week 5-3. MatrixFactorization 데이터를 통하여 사용자 또는 상품의 특징을 학습하는 방법 (행렬 분해) (예를 들어, 영화 평점데이터를 통해 사용자 및 영화의 특징 추출) • 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]
  • 31.
    Week 5-4 Performance metricsfor recommender systems 31
  • 32.
    32 Week 5-4. performancemetric 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) 평가 • 커브 아래의 면적이 큰 알고리즘 을 우선 선택
  • 33.
    Week 6 Deep Learning: Searching for images (Andrew NG 강의 및 모두를 위한 딥러닝 참고) 33
  • 34.
    34 Week 6. Quiz (x1AND 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)를 자동으로 찾아 줌
  • 35.