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 성공 사례


Chris Volinsky

Netflix Awards 1 Million Netflix Prize & Announce 2nd 1 Million Challenge

비디오 대여 회사 넷플릭스에 주최한 대회에서 우승 




Identify patients who will be admitted to a hospital within the next year using historical claims data. (Enter by 06:59:59 UTC Oct 4 2012)

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가 된다.

매우 간단하게 했는데도 생각보다 정확도가 높은 것을 알 수 있다.








+ Recent posts