Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

3,209 views

Published on

실제 비즈니스에서 많이 활용되는 사례를 중심으로 어떻게 기존 데이터를 이용하여 알고리즘을 선택하고, 학습하여, 예측모델을 구축 하는지 jupyter notebook을 이용하여 실제 코드를 이용하여 실습할 수 있다.

강의 초반에 강조하는 것 처럼, 머신러닝 알고리즘은 나중에 자세히 설명하는 과정이 따로 있고, 이번 강의는 실제 어떻게 활용하는지에 완전히 초점이 맞추어져 있어서, 알고리즘은 아주 간략한 수준으로 설명해 준다. (좀 더 구체적인 내용은 심화과정이 따로 있음)

http://blog.naver.com/freepsw/221113685916 참고
https://github.com/freepsw/coursera/tree/master/ML_Foundations/A_Case_Study 코드 샘플

Published in: Software
  • Be the first to comment

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

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

×