Week 01: Prediction motivation, What is prediction?
첫 번째 week의 수업 이슈들은 아래와 같다.
- Prediction motivation
- What is prediction?
- Relative importance of steps
- In and out of sample errors
- Prediction study design
- Types of errors
- Receiver Operating Characteristic
- Cross validation
- What data should you use ?
Prediction motivation
Who predicts?
- Local governments -> pension payments
- Google -> whether you will click on an ad
- Amazon -> what movies you will watch
- Insurance companies -> what your risk of death is
- Johns Hopkins -> who will succeed in their programs
Machine Learning 성공 사례
Netflix Awards 1 Million Netflix Prize & Announce 2nd 1 Million Challenge
비디오 대여 회사 넷플릭스에 주최한 대회에서 우승
Healthcare를 예측하는 completion에서 우승 함으로써 돈을 벌 수도 있다.
Data science는 어떤 하나의 sport로 활용 될 수 있다. 재미를 위해서
Kaggle에서 주최한 대회이다.
더 나은 medical decision을 위해서도 활용 될 수 있다.
oncotype DX 같은 prognostic gene을 구분하는 signature를 발견하는 것에 사용 한다.
즉, 여성이 breast cancer에 얼마나 취약한지, 발병 했다면 얼마동안 살 수 있는지를 예측 할 수 있다.
Bioinformatic 분야를 말한다.
Advanced Study를 위한 자료들
The elements of statistical learning (Standford, California), It can be accessed as free PDF.
caret package: 다양한 prediction model을 제공하며 여러 문제들을 해결 할 수 있게 해준다.
Machine Learning Course in coursera
이곳에서 더 자세한 수학적 수식의 의미를 다루며 또한 더 cutting edge algorithm을 기술 한다.
What is prediction ?
아래는 Machine learning을 도식화한 그림이다.
우리는 항상 prediction을 위해서 Function F에 대해서만 항상 학습한다.
하지만 모든 Machine Learning 에서 쓰이는 중요한 부분은 바로 Probability와 Sampling 부분이다.
데이터를 모으고 어떻게 가공하고 어떤 Feature들을 모델로 넣을지 결정하는 문제는 반드시 거쳐야하는 중요한 초기 단계이며
이것은 모델을 성능을 결정짓는 매우 중요한 작업이다.
이러한 좋은 예가 Google Flu 프로젝트이다.
사람들이 사용하는 검색키워드를 통해서 감기가 어느지역에서 퍼질것인지를 예측 하는 것이다.
샌디에고에서 만약 cough라는 단어가 급증됬다면 조만간 그쪽지역에 flu가 창궐할 수도 있다.
하지만 문제는 해당 알고리즘이 막 개발 되었을 때는 잘 동작했지만, 사람들의 검색 패턴은 실시간으로 변화하기 때문에
만년만 지나도 해당 알고리즘의 정확도는 매우 떨어진 다는 것이다.
Dataset을 선정하고 그것을 가공하는것이 알고리즘에 비견할 만큼 중요하는 것을 알 수 있는 사례이다.
■ Components of a predictor
question -> input data -> features -> algorithm -> parameters -> evaluation
question
무엇을 기계학습 하던간에 잘 정의된 질문으로 부터 시작 된다.
어떤것을 예측하려 하는지 그래서 어떤 데이터를 이요할 건지에 대한 문제이다.
input data
그런 prediction을 위해서 가장 최선의 데이터 셋을 확보 해야한다.
이러한 데이터 확보는 그냥 알 수 있는게 아니다.
여러번 시도해봐야 어떤 데이터가 최선이었는지 알 수 있다.
features
유용한 feature들을 정의 할 수 있어야 한다.
input data들 중에서 실제로 의미 있는 데이터의 집합을 의미한다.
algorithm
machine learning algorithm을 적용한다.
Random Forest
Decision Trees
parameters
최종적으로 모델을 얻게된다.
이러한 모델의 파라메터값을 이용해서 데이터가 들어 왔을 때 어떠한 결과를 예측 할 수 있게 된다.
evaluation
예측한 결과를 평가하는 단계이다.
스팸 예제를 통해서 위 과정을 이해해 보겠다.
스팸 예제에 대해서 좀 더 Advanced된 내용을 보고싶으면, Naive Bayes로 구현했던 이전 POST를 참조하자.
이곳에서는 매우 간단하게 다룬다.
1) Question
start with a general question
Can I automatically detect emails that are SPAM that are not ?
Make it concrete
Can I use quantitative characteristics of the emails to classify them as SPAM/HAM ?
2) Input data
kernlab package에 보면 데이터가 있다.
3) features
일단 이러한 이메일 input data가 있다고 생각해보자. 그리고 이것은 a whole bunch of email 이다.
Dear Jeff,
Can you send me your address so I can send you the invitation?
Thanks,
Ben
Frequency of you = 2/17 = 0.118
위와 같이 모든 단어들의 빈도를 구해서 이것을 feature들의 characteristic으로 사용 할 수 있다.
> library(kernlab)
> data(spam)
> head(spam)
make address all num3d our over remove internet order mail receive will people report addresses free business
1 0.00 0.64 0.64 0 0.32 0.00 0.00 0.00 0.00 0.00 0.00 0.64 0.00 0.00 0.00 0.32 0.00
2 0.21 0.28 0.50 0 0.14 0.28 0.21 0.07 0.00 0.94 0.21 0.79 0.65 0.21 0.14 0.14 0.07
3 0.06 0.00 0.71 0 1.23 0.19 0.19 0.12 0.64 0.25 0.38 0.45 0.12 0.00 1.75 0.06 0.06
4 0.00 0.00 0.00 0 0.63 0.00 0.31 0.63 0.31 0.63 0.31 0.31 0.31 0.00 0.00 0.31 0.00
5 0.00 0.00 0.00 0 0.63 0.00 0.31 0.63 0.31 0.63 0.31 0.31 0.31 0.00 0.00 0.31 0.00
6 0.00 0.00 0.00 0 1.85 0.00 0.00 1.85 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
email you credit your font num000 money hp hpl george num650 lab labs telnet num857 data num415 num85 technology
1 1.29 1.93 0.00 0.96 0 0.00 0.00 0 0 0 0 0 0 0 0 0 0 0 0
2 0.28 3.47 0.00 1.59 0 0.43 0.43 0 0 0 0 0 0 0 0 0 0 0 0
3 1.03 1.36 0.32 0.51 0 1.16 0.06 0 0 0 0 0 0 0 0 0 0 0 0
4 0.00 3.18 0.00 0.31 0 0.00 0.00 0 0 0 0 0 0 0 0 0 0 0 0
5 0.00 3.18 0.00 0.31 0 0.00 0.00 0 0 0 0 0 0 0 0 0 0 0 0
6 0.00 0.00 0.00 0.00 0 0.00 0.00 0 0 0 0 0 0 0 0 0 0 0 0
1-6개의 메시지에 대한 각각의 단어에 대한 빈도를 보여준다.
money의 경우 빈도가 높다면 해당 message는 spam일 확률이 크다.
좀더 분석해보면
아래의 그래프와 같이 SAPM의 경우 your에 대해서 빈도가 고루고루 넓게 사용 되는 것을 알 수 있다.
반면에 HAM은 your를 사용하지 않거나 1~2개 정도 사용한다.
plot(density(spam$your[spam$type=="nonspam"]),col="blue",main="",xlab="Frequency of 'your'")
lines(density(spam$your[spam$type=="spam"]),col="red")
4) our algorithm
Find a value C.
Frequency of "your" > C predict "spam"
abline(v=0.5,col="black")
5) Parameter
0.5 를 기준으로 잡았고 그것 보다 크면 SAPM이 되고 그것 보다 작으면 HAM 이 된다.
이렇게 0.5로 정한 이유는 the large spike of blue HAM Message가 우리가 설정한 0.5 보다 밑에 있기 때문이다.
6) Evaluation
prediction을 수행해서 정확도를 검정 한다.
> prediction <- ifelse(spam$your > 0.5, "spam","nonspam")
> table(prediction,spam$type)/length(spam$type)
prediction nonspam spam
nonspam 0.4590306 0.1017170
spam 0.1469246 0.2923278
정확도는 TP + TN 이므로
0.459 + 0.292 = 0.751이 Accuracy가 된다.
매우 간단하게 했는데도 생각보다 정확도가 높은 것을 알 수 있다.
'MOOC > Practical Machine Learning (r programing)' 카테고리의 다른 글
Week 02: Training options, Plotting predictions (0) | 2015.11.13 |
---|---|
Week 02: Caret Package, dataSlicing (1) | 2015.11.13 |
Week 01: Receiver Operating Characteristic, Cross validation (0) | 2015.11.09 |
Week 01: Prediction study design, Types of errors (0) | 2015.11.08 |
Week 01: Relative importance of steps, In sample and out of sample errors (0) | 2015.11.07 |