블로그 이미지
Peter Note
Web & LLM FullStacker, Application Architecter, KnowHow Dispenser and Bike Rider

Publication

Category

Recent Post

2015. 2. 21. 13:23 Deep Learning

가격 결정을 위한 모델링은 이질적인 속성을 기반을 둔 숫자 데이터를 예측하는데 최적의 알고리즘이다.




kNN


  - K-nearnest neighbors : k는 마지막 결과를 얻기 위해 평균을 낼 물품의 개수를 말한다. 데이터가 완벽하다면 k=1을 사용한다. 

  - 인접개수의 평균을 낼 때 너무 작거나 크면 안되고 적정개수를 찾아야 한다. 




물품 가중치


  - 거리에 따라 가중치를 둔다. 물품들이 비슷할 수록 그들 간의 거리가 더 가까워진다. 

  - 물품들을 군집화하기 위한 방법 - 적정한 인접 개수를 구하는 것이 필요하다. 

  - 역함수(inverse function), 빼기 함수(substraction function), 가우스 함수(gaussian function)

  - 가중 kNN (Weighted kNN) : 가우시안을 구하고 평균을 구한다 




교차검증


  - 데이터를 학습 세트와 테스트 세트로 나누는 기법들을 총칭한다. (cross validation set) : 표본값을 잘 뽑는 방법

  - training set -> test set 




이질 변수


  - 가격 결정에 너무 큰 영향을 미치는 이질적 요소

  - 변수의 단위가 틀릴때 스케일(Scale)을 조정하여 대입한다. 




실습 


  - $ pip install virtualenvwrapper

 - $ source /usr/local/bin/virtualenvwrapper.sh

 - mkvirtualenv env1

 - vi requirements.txt

// requirements.txt 내역 

beautifulsoup4==4.3.2

html5lib==0.999

lxml==3.4.2

numpy==1.9.1

pandas==0.15.2

python-dateutil==2.4.0

pytz==2014.10

six==1.9.0

wsgiref==0.1.2


  - pip install ipython  (module 없을 경우 계속 pip install <moduleName>)

  - ipython notebook 을 통해서 실습 시작

  - chapter7의 treepredict 데이터 생성 : data.txt

Referrer,Location,Read FAQ,Pages viewed,Service chosen

Slashdot,USA,Yes,18,None

Google,France,Yes,23,Premium

Digg,USA,Yes,24,Basic

Kiwitobes,France,Yes,23,Basic

Google,UK,No,21,Premium

(direct),New Zealand,No,12,None

(direct),UK,No,21,Basic

Google,USA,No,24,Premium

Slashdot,France,Yes,19,None

Digg,USA,No,18,None

Google,UK,No,18,None

Kiwitobes,UK,No,19,None

Digg,New Zealand,Yes,12,Basic

Google,UK,Yes,18,Basic

Kiwitobes,France,Yes,19,Basic


  - treepredict.py 작성 : pandas 통해서 데이터 만듦

import pandas as pd 


def main():

  data = pd.read_csv("./data.txt", sep=",")

  print data

  values = data.values

  print values


if __name__ == '__main__':

  main()


  - pandas로 하면 데이터 유형이 틀려지므로 그냥 책에 있는 내용 copy&paste

  - 실행 내역을 html로 출력

$ ipython nbconvert treepredict.ipynb

[NbConvertApp] Using existing profile dir: u'/Users/nulpulum/.ipython/profile_default'

[NbConvertApp] Converting notebook treepredict.ipynb to html

[NbConvertApp] Support files will be in treepredict_files/

[NbConvertApp] Loaded template full.tpl

[NbConvertApp] Writing 202262 bytes to treepredict.html

(env1)




<참조> 


  - https://virtualenvwrapper.readthedocs.org/en/latest/ : python 가상 환경 

  - https://pypi.python.org/pypi/virtualenv

  - iPython notebook 사용하기 

'Deep Learning' 카테고리의 다른 글

[ML] 11주차 - 독립 특성 발견  (0) 2015.03.07
[ML] 10주차 - 고급 분류 기법  (0) 2015.02.28
[ML] 8주차 - 7장 의사결정트리  (0) 2015.02.14
[ML] 7주차 - 6장 문서 필터링  (0) 2015.02.07
[ML] 6주차 - 5장 최적화  (0) 2015.01.31
posted by Peter Note
2015. 2. 14. 11:29 Deep Learning

의사결정 과정 모델링에 대해 알아본다. 의사결정트리는 고객 프로파일링, 재무 위험 분석, 보조 진단, 트래픽 예측과 같은 넓은 응용분야에서 사용한다. 예로 사용자가 유료 고객이 될 가망성을 예측하여 사용자가 고객이 될 것임을 시사하는 요소를 알았다면 이 정보를 이용해서 광고 전략을 짜거나 사이트의 특정 측면에 쉽게 접근할 수 있게 만들거나 유료 고객의 숫자를 늘리는 데 도움이 되는 다른 전략들을 사용할 수 있다.




가입 유형 추정 


  - 유료 고객이 될 가망성을 예측하기 : 베이지안 분류기, 신경망을 이용

  - 관찰 결과를 분류하는 방법 : 의사 결정 트리를 if~then으로 만들고 경로를 따라 내려가면 해답에 이르게 됨 




트리 학습 


  - CART(Classification and Regression Tree) : 데이터를 분리하는 최적의 변수 찾기 true or false로 분기해야 하기 때문 

  - 최적 단편 선정

    + 최상위 부모로 있을 노드를 선정하고 그 하위로 나뉘어 내려감  

    + 지니 불순도(Gini imprity) : 집합 내의 항목 중 하나에 무작위로 적용될 기대 오류율 - 확률이 0이면 모든 것이 올바른 집합안에 있음

    + 엔트로피 : 데이터를 두개의 그룹으로 나누어 엔트로피를 줄여야 한다.

       p(i) = frequency(outcome) = count(outcome) / count(total rows) Entropy = sum of p(i) x log(p(i))  

       p(i) = 빈도(출력) = 횟수(출력)/횟수(가로줄 개수)

       엔트로피 = 모든 출력에 대해 p(i) * log(p(i))의 합 




재귀적으로 트리 만들기


  - 전체 그룹에 먼저 엔트로피를 구함 

  - 어떤 속성이 가장 잘 나누는지 결정하기 위해 정보이득(information gain)을 계산 -> 모든 속성마다 정보이득을 계산해 가장 높은 정보이득을 가진 것을 선택한다. 

  - 관측 값에서 더 분할 할지를 결정 : 새로운 노드마다 최적을 속성을 계산하면서 트리를 생성한다. 




트리 가지치기 


  - 트리를 학습시키면 학습 데이터를 과대하게 반영하는 과잉적합(overfitted) 문제에 직면한다. 

  - 노드 쌍을 병합해서 경계값 이하로 엔트로피를 늘 수 있는지 본다. 그렇다면 한개 노드로 병합한다. -> 과잉적합을 회피 

  - 최소 이득이 높아지면 상위 부모 노드로 병합.

 



손상된 데이터 다루기


  - 데이터 조각이 없을(손상된) 경우 : 각 가지의 결과를 계산하고 개별 가중치로 결합한다.




<참조> 


  - 의사결정트리

  - slideshare 의사결정트리

'Deep Learning' 카테고리의 다른 글

[ML] 10주차 - 고급 분류 기법  (0) 2015.02.28
[ML] 9주차 - 가격 모델링  (0) 2015.02.21
[ML] 7주차 - 6장 문서 필터링  (0) 2015.02.07
[ML] 6주차 - 5장 최적화  (0) 2015.01.31
[ML] 4주차 - 군집하기  (0) 2015.01.03
posted by Peter Note
2015. 2. 7. 11:59 Deep Learning

문서 필터링의 예를 알아본다. 이메일을 문서로 보고 학습된 정보를 통해 좋고 나쁨을 확률적인 값을 구한다. supervised learning의 예이다  




스팸 필터링 

  

  - 분류된 문서를 통해 판단

  - 문서를 bad, good으로 분류 : word === feature 

  - 분류된 것(특성==단어)의 출현횟수를 0과 1사이 값 확률로 변환한다.

  - 스팸필터를 계속 학습 시킨다.




기본 분류기 


  - 나이브 베이지안 분류기 (Naive Bayesian classifier) : A확률과 B확률은 독립적이다. 

    + Pr(A | B)

    + A == feature, B == Category이다. 

    + Category는 문장이 good(0), bad(1) 인지 정의한 정보 

    + 즉, 카테고리별로 피쳐를 분류해서 독립적으로 본다. 

  - 스팸필터의 경우 bad로 필터링되는 경계값을 보통 3으로 설정해서 bad가 될 확률이 good으로 분류될 확률에 비해 3배 높게 설정한다.

  - 피셔 방식(Fisher method) : 특성별 분류 확률 (개별특성) -> 개별특성들에 대한 확률 결합

    + 여기서는 카테고리별로 보지 않고 먼저 피쳐를 보고 카테고리전체를 본다. 

    + Pr(B | A) x Pr(A)/Pr(B)


    Pr(A | B) = Pr(B | A) x Pr(A)/Pr(B)



<참조>


  - 나이브 베이지안 수행하기

'Deep Learning' 카테고리의 다른 글

[ML] 9주차 - 가격 모델링  (0) 2015.02.21
[ML] 8주차 - 7장 의사결정트리  (0) 2015.02.14
[ML] 6주차 - 5장 최적화  (0) 2015.01.31
[ML] 4주차 - 군집하기  (0) 2015.01.03
[ML] 3주차 - 추천하기  (0) 2014.12.13
posted by Peter Note
2015. 1. 31. 12:01 Deep Learning

최적의 방법을 찾는 행위 



최적화

  

  - Optimization은 무엇일까요?

    + 최고가 아닌 최적을 찾는 것.

  - Optimization 을 왜 하는가?

    + 기회 비용을 최소화해 최적화 값을 얻기 위해 통계적 최적화를 사용할 수 있다. 

  - Optimization 을 하면 최고인가?

    + 최적을 하는 것이다. 




해답 표현하기


  - 예) 비행편 출발 시간, 도착 시간을 하루 중 가장 먼저 출발하는 것을 0부터 시작해서 1씩 증가, 각 인원에 대한 수치를 1차원 배열로 나열하는 행위를 모델링이라 한다. 

    예) [1,4,5,2,3,7,4,2]

  - 첫값 : 0, 그리고 1식 증가 

  - 비행편 API 제공 : 카약 http://www.kayak.com/labs/api/search (개발자 키를 발급 받아야 함)

  - 랜덤 값을 사용한다. 얼마나 제대로 된 랜덤 값을 만들어 내느냐가 중요하다. 만약 랜덤 값을 사용하면 stochastic optimization 즉, 통계적인 최적화이다. 

  - 랜덤 값에 대한 부분은 도메인 지식을 필요로 한다?




비용 함수 (Cost Function)


  - 비용이 될 만한 것을 도출

  - 비용 함수에 적용하여 비용이 많이 들수록 큰값을 반환 




언덕등반 (hill climbing)


  - 무작위 해답으로 시작해서 더 좋은 해답을 찾아 이웃 해답들ㅇ르 살펴보는 기법

  - 내리막에서 오르막이 시작될 즈음에서 찾음. 좌우 비교를 통함. 

  - 결점 : 오르락 내리락할 때 작은 내리막이 최적이라고 판단할 수 있은 오류




시뮬레이티드 어닐링 (Simulated Annealing)


  - 물리학에서 영감을 받음

  - 언덕 등반의 결점을 보안

  - 나쁜 선택이 현재 선택이 될 수 있지만 계속 진행할 수록 낳아진다. 

  - 시장에서 많이 사용. 




유전자 알고리즘 (Genetic Algorithm)


  - 개체군(population)이란 무작위 해답들을 생성하면서 시작

  - elitism, 돌연변이(mutation), 교배(crossover), 번식(breeding)

  - 존 홀랜드 1975년 발생 "Adaptation in Natural and Artificial Systems"




선호도 최적화  


  - 최적화 기법의 필요 조건 : 문제가 정의된 비용 함수 + 유사한 해답이 유사한 결과를 낼 것




네트워크 시각화 

  

  - SNS에서 사용 



<참조> 


  - 시뮬레이티드 어닐링

  - 두번째

'Deep Learning' 카테고리의 다른 글

[ML] 8주차 - 7장 의사결정트리  (0) 2015.02.14
[ML] 7주차 - 6장 문서 필터링  (0) 2015.02.07
[ML] 4주차 - 군집하기  (0) 2015.01.03
[ML] 3주차 - 추천하기  (0) 2014.12.13
[ML] 2주차 - 추천하기  (0) 2014.12.06
posted by Peter Note
2015. 1. 3. 11:04 Deep Learning

그룹(그룹핑)에서 데이터 클러스터링(군집화)에 대해 알아본다. 



01. 군집발견 (Discover Clustering)


  - supervised learning : 신경망, 결정트리, svm, 베이지안 필터링

  - unsupervised learning : 군집은 올바른 답을 찾는 것이 아니라 데이터 집합 내에서 구조를 발견하는 것이다. 

    + NMF : non-nagative matrix factorization (ch10.)

    + SOM : self-organization maps

  - Clustering & Classification 차이? 

  


02. 단어 벡터 


  - 군집용 데이터를 준비하는 일반적인 방법은 항목 비교에 사용될 숫자 특성들의 공통집합을 결정하는 것이다. 

  - 블로거 군집화 : 피드안에 출현한 특정 단어들의 횟수 (피드 다운로드 -> 글에서 텍스트 추출 -> 빈도수를 표로 만든다)

    + universal feed parser를 통해 제목, 링크, 게시글을 추출가능 -> 빈도수 최대~최소 사이 단어추출 -> 데이터 세트 파일로 저장

  


03. 계층적 군집화 


  - 유사한 두 그룹을 계속 병합한다 (병합의 조건은?)

    + 노드들을 계층별로 배치한 계통도(dendrogram:덴드로그램)를 얻는다.

    + 덴드그램을 통해 어떤 항목들이 군집의 끝단에 있는지 확인가능 및 항목간의 떨어진 거리도 알수 있음 

 - 거리는 피어슨 계수를 통해 1.0이면 두항목은 완전 일치이고 0.0에 가까우면 전혀 관계가 없음

 - 새로운 군집용 데이터는 앞의 두 군집들에 대한 데이터의 평균값이다. 단 한개의 군집만 남을 때까지 반복 수행함



04. 계통도 출력 


  - 군집들을 계통도 형태로 그려보면 해석이 훨씬 편리하다. 

 



<참조>


  - unsupervised learning  위키 

  - Clustering in R

  - Decision Tree (결정 트리)

  - K means : 러닝커브를 통해 k 개까지의 군집화를 수행하는 방법. 이전은 1또는0, yes또는no로만 해서 K 개까지 돌림

'Deep Learning' 카테고리의 다른 글

[ML] 7주차 - 6장 문서 필터링  (0) 2015.02.07
[ML] 6주차 - 5장 최적화  (0) 2015.01.31
[ML] 3주차 - 추천하기  (0) 2014.12.13
[ML] 2주차 - 추천하기  (0) 2014.12.06
[ML] 1주차 - 시작하기  (0) 2014.11.22
posted by Peter Note
2014. 12. 13. 11:59 Deep Learning

Recommanding Items 에서 원본 데이터에서 필터링을 통해 데이터 셋 만들기



아이템 추천 


  - people, item, score 를 설정한다 

    + 스코어 : 스코어가 여러개에 대한 데이터셋 벡터 수치화 하기 

  - dictionary -> transform matrix (dataset) -> find top match

    + 딕셔너리 ?

    + 데이터셋으로 만들고 최상위 매칭을 찾음 

  - build dataset -> recommending neighbor and link 




아이템 기반 필터링 


  - 사용자 기반 필터링과 대비 

  - 평가 점수를 통해 근접한 추천 아이템을 골라내기 

    + 질문과 답이 있는 것 (Supervised ML) -> 알고리즘으로 돌려 -> 추천 아이템을 찾아냄 

    + 질문 : 나에게 추천할 만한 영화는?

    + 답 : 내가 본 영화 평점, 사람들이 평가한 평점을 통해 추천

    + MovieLens 알고리즘 : http://grouplens.org/datasets/




ML 프로세스


  - 원본 데이터를 필터링을 통해서 데이터 셋을 만든다. 

  - 데이터 셋의 값에서 유사도(similarity)를 구한다. ex) 피어슨 (Pearson)

  - 값 X 유사도  = 정확도 (precision)

  - 필터링으로 통해 나온 데이터셋에서 ML 알고리즘을 돌려 추천 값을 얻는다.  





'Deep Learning' 카테고리의 다른 글

[ML] 7주차 - 6장 문서 필터링  (0) 2015.02.07
[ML] 6주차 - 5장 최적화  (0) 2015.01.31
[ML] 4주차 - 군집하기  (0) 2015.01.03
[ML] 2주차 - 추천하기  (0) 2014.12.06
[ML] 1주차 - 시작하기  (0) 2014.11.22
posted by Peter Note
2014. 12. 6. 12:30 Deep Learning

Chapter8 - Making Recommendations. Recommandation Engine


예로 영화 추천 시스템일 경우 사람들끼리 상관관계 거리를 계산해서 가까운 사람들의 소그룹을 만들고 소그룹에서 A 사용자가 안보았으나 B 사용자가 본 영화를 추천해 준다. 즉, 선호도가 비슷한 사람들의 소그룹을 만들고 여기서 안본 영화들을 추천해 주는 것이다. 선호도 그룹을 찾는 방법에는 유클리디안 거리와 피어슨 상관관계 기법이 사용된다. 여기에는 거리(Distance)와 계수(Coeffiecient)이야기가 나온다. 


Collaborative Filtering 

  - 큰 그룹을 찾아서 나와 유사한 경험의 작은 그룹을 찾는 것.


Collecting Preferences

  - 선호도 조사 



Finding Similar Users

  - 유사함을 찾는 방법

    + Euclidean distance

       > 유클리드 거리(Euclidean distance)는 두 점 사이의 거리를 계산할 때 흔히 쓰는 방법이다. (참조1)

          2차원적인 거리이다. 그 사이의 변수는 고려되지 않았다. 

          방향성이 무시된다. 

          전체의 평균

          * 두 점 사이의 거리가 가까우면 유사하다?

          * 1:n 관계일 때 거리도 적용가능?


       > 차트로 선호도 영역(Preference Space)에 표현 


    + Pearson correlation

       > 피어슨 상관계수(Pearson correlation coefficient) 는 두 변수간의 관련성을 구하기 위해 보편적으로 이용된다. 

         두 변수간 관련성이 높으면 이 두변수를 사용할 수 있다는 것을 의미? -> 다음 단계의 분석?

       > 여러 그룹의 상호 관계가 있는 일직선을 그린다. 완벽한 상호관계값은 1이다. 


   + Jaccard & Manhatton Distance

       >  자카드는 0~1 


    + best-fit, over-fit, under-fit

       > over-fit : 모든 데이터를 연결해서 적정 추정치를 알 수 없다. 

       > under-fit : 판단 기준이 애매한 것

       > best-fit : 데이터 사이의 측정 구간이 존재하고 그안에 선이 그려짐 



Similarity Metric

  - similarity parameter 가 필요 

  - Jaccard coefficient or  Manhattan distance 을 사용 

  - 거리공간 측정공식




'Deep Learning' 카테고리의 다른 글

[ML] 7주차 - 6장 문서 필터링  (0) 2015.02.07
[ML] 6주차 - 5장 최적화  (0) 2015.01.31
[ML] 4주차 - 군집하기  (0) 2015.01.03
[ML] 3주차 - 추천하기  (0) 2014.12.13
[ML] 1주차 - 시작하기  (0) 2014.11.22
posted by Peter Note
2014. 11. 22. 11:36 Deep Learning

  비오는 토요일 오전 강남 토즈타워에서 다섯분과 함께 머신 러닝 스터디를 시작한다. 

  모임 : https://www.facebook.com/groups/1511952519075217/  

  참여자 : 봉성주님, 서병선님, 김민기님, 이웅재님과 함께 한다. 

  기타 : 총 12주동안 http://www.it-ebooks.info/book/330/ 책을 1 챕터식 읽고 질문하고 답하기. 


  책의 서문에 나온 내용이다. 인터넷을 기반으로 하는 집단 지성 데이터를 수집하여 다양한 분야를 들여다 보는데 책의 목적이 있는 것 같다. 

 It covers ways to get hold of interesting datasets from many web sites you’ve probably heard of, ideas on how to collect data from users of your own applications, and many different ways to analyze and understand the data once you’ve found it.




1장 


  실제 생활에서 집단 지성은 어디에서 쓰는 것일까 예를 들어준다. 

  - 시장 예측

  - 금융 사기 탐지

  - 머신 비젼

  - 공급망 최적화

  - 주식 마켓 분석

  - 국가 안보 


  머신러닝

  - 클렌징이 중요하다. 

    + 클렌징은 누가 하는가? 데이터 마이닝

  - 이미 되어 있다고 가정하고 머신러닝을 수행한다. 

  

  


회고 


  하고 싶었던 것을 함께 할 수 있어서 좋다. 책이 나의 목적과 너무 잘 맞는다. 피부에 와 닿는 것을 경험할 수 있을 것 같다. 나에겐 신선한다. 




커뮤니케이션 방식 


  - slack 

  - github 저장소 : https://github.com/ML-Lounge/Collective-Intelligence

'Deep Learning' 카테고리의 다른 글

[ML] 7주차 - 6장 문서 필터링  (0) 2015.02.07
[ML] 6주차 - 5장 최적화  (0) 2015.01.31
[ML] 4주차 - 군집하기  (0) 2015.01.03
[ML] 3주차 - 추천하기  (0) 2014.12.13
[ML] 2주차 - 추천하기  (0) 2014.12.06
posted by Peter Note
prev 1 2 3 next