Fascination
article thumbnail

Ch9. Evidence and Probabilites

- 숙명여자대학교 소프트웨어학부 데이터사이언스개론 - 박동철 교수님


# Evidence-Based Classification

- evidence: 각 feature에 대해 각 instance들이 가지는 값

- instance를 분류하는데 연관성이 많을수록 강력한 evidence가 됨

 

 

# Online Targeted Advertising

- 온라인 광고를 target하는 것을 고려해 봄

> 그 중에서도 노출 광고를 생각해 볼 것임

- display advertising 노출 광고의 특징

> search advertising과는 다름

ex) 자동차를 검색한 사람에게는 검색 결과에 자동차 광고를 함께 띄우는 것이 검색 광고

> 고객 어느 단어도 검색한 적이 없음

> 고객의 feature 값을 기반으로 특정 광고에 관심이 있을지 없을지 추론

- 대용량의 content를 제공하는 회사

> 광범위하고 다양한 content를 가지고 있음

> 많은 온라인 고객을 보유

> 고객들에게 노출 광고를 보여야 함

> ex) Yahoo!, Facebook

- 현재 목표는 사람들이 Luxhote를 예약하도록 하는 것

- 과거에는 training data를 얻기 위해 랜덤 광고를 했을 것임 → 현재는 targeting 하여 광고를 하고 싶음

- targeting 광고에서 생각해 볼 것

> 어떤 data. 즉, 어떤 instance를 가지고 할 것인가? consumer (고객)

> target 변수는 무엇인가? 고객이 광고를 접한 후 일주일 이내에 Luxhote를 예약했는가?

> feature는 무엇이 될 수 있는가? → 뒤에서 더 자세히 다룰 것

> training data는 어떻게 얻을 수 있는가? target value 값을 알고 있는 training data

> 어떤 분류 모델을 사용할 것인가? Naive Bayes classifier

- feature: a key question

> feature는 해당 고객이 Luxhote를 예약할지 안 할지를 결정할 수 있는 중요한 것

> 예를 들어 고객이 최근 방문했던 홈페이지 기록을 쿠키를 통해 얻을 수 있음

> 각 evidence의 방향과 연관성(strength)을 평가하기 위해 과거의 data를 사용

- 예시를 model에 적용시키는데 문제점이 있음

> instance는 evidence의 집합으로 묘사됨 → feature가 많음

> target value와 연관성이 높은 (strength) evidence를 사용

- Example: spam detection

> 단어를 보고 email이 spam인지 아닌지 구별

> instance: 이메일

> target classes: spam인가? spam이 아닌가?

> feature: email안의 단어(symbol, 상징)들

 


# Combining Evidence Probabilistically

- evidence를 확률적으로 어떻게 합쳐야 하나?

- 우리는 현재 노출 광고를 본 후 고객이 예약을 할 가능성을 알고 싶어 함

- event를 C라 할 때 그 확률을 p(C)라고 나타냄

- 어떤 evidence가 주어졌을 때, event C가 나타낼 확률을 조건부 확률로 p(C|E)라고 나타냄

> E는 evidence들의 집합이며 E에 따라 p(C|E)는 결과 값이 달라짐

> 조건부 확률을 추론하기 위해 training data를 사용

- 문제점

> training data에서의 evidence가 일치하는 경우가 거의 없음

> 즉, book 하는 고객들의 이전 방문 웹페이지가 겹칠 확률이 극히 희박함

- 다른 evidence의 조각들을 따로따로 본 후 나중에 evidence를 합쳐야 함

 

 

# Joint Probability

- 결합 확률: A와 B가 동시에 일어날 확률

- A와 B가 독립적: A가 일어날 확률이 B가 일어날 확률에 영향이 없음

- A와 B가 독립적이라면, p(AB) = p(A)*p(B)

- example: rolling a fair die

> 사건 A: 주사위를 굴려 첫 번째에 6이 나올 사건

> 사건 B: 주사위를 굴려 두 번 째에 6이 나올 사건

> 하나의 주사위를 두번 굴려 첫 번째 굴릴 때 6이 나오고 두 번째 굴렸을 때도 6이 나올 확률은 1/36 임

> 이때 사건 A와 사건 B를 독립 사건이라고 함

- A와 B가 독립적이지 않다면, p(AB) = p(A)*p(B|A)

> B의 확률을 그대로 곱하는 것이 아닌 A가 일어났을 때 B가 일어날 확률을 고려

- example: rolling a trick die

> 사건 A: 각각의 면에 하나의 숫자만 적힌 주사위 6개 중 하나를 뽑아 굴릴 때

그 주사위에 써져있는 숫자가 6일 사건

> 사건 B: 첫 번째 뽑은 주사위를 한 번 더 굴려 6이 나올 사건

> 사건 B는 사건 A의 영향을 무조건 받기 때문에 독립 사건 X

 


# Bayes' Rule

- Bayes rule에 조건을 추가하면 Naive Bayes가 됨

- A와 B가 독립적이지 않을 때 아래의 두 공식은 같음

- A와 B를 E(evidence)와 H(hypothesis)로 바꾸면 Bayes' Rule이 됨

> 조건부 확률을 뒤집어서 나타냄

> Meaning: E가 주어질 때 H를 계산하는 것 대신 H가 주어졌을 때 E를 계산

 

 

# Importance of Bayes' Rule

> p(H|E): Evidence가 주어졌을 때 가설을 구하는 것은 쉽지 않음

> p(E|H), p(H), p(E): p(H|E)에 비하면 비교적 구하기 쉬움

- example: medical diagnosis

> evidence: red spot

> hypothesis: measles

> 붉은 반점이 있을 때 홍역에 걸릴 확률 p(H|E)을 결정하고 싶지만 이를 바로 구하는 것이 어려움

> 하지만 홍역이 걸린 사람이 붉은 반점을 가지고 있는 확률을 구하는 것은 쉬움

→ 이미 병원에 홍역인 사람 중 붉은 반점을 가진 사람들에 대한 data가 많음

> 홍역에 걸린 사람의 비율과 붉은 반점을 가진 사람의 비율을 구하는 것도 어렵지 않음

> 따라서 p(H|E)를 구하는 것이 더 쉬움

 

 

# Applying Bayes' Rule to Classification

- Bayes' Rule for classification: 구할 수 없는 것을 구할 수 있는 값들을 조합하여 구하는 것

> C: event ex) 고객이 예약을 했는가?

> c: target value ex) C='yes', C='no'

> E: evidence

> p(C=c|E): posterior probability 사후 확률

> p(C=c): class c의 사전 확률

> p(E|C=c): class c일 때 E가 일어날 확률

> p(E): E의 확률

- 사후 확률 p(C=c|E)

> ex) 계산한 결과가 p(C='yes'|E)=0.7, p(C='no'|E)라면, 우리는 class를 yes로 분류할 것

- classification example: spam detection

> p(E): 스팸 메일에 포함되는 단어들

 

 

# Major Difficulty in Computing p(C=c|E)

 

- 사후 확률을 구하는 것도 어렵지만 사실 p(E|C=c)에서 E를 구성하는 feature vector의 수가 많아질수록 완벽하게 case가 일치하는 경우도 드물어짐 → 사후 확률을 정확하게 맞출 수 있는 경우가 드물어지므로 navie bayes를 사용하는 것

 

 

# Conditional Independence

- C가 발생할 때 A와 B가 같이 일어날 조건부 확률

> C가 발생할 때 A와 B가 독립적이지 않음

- C가 발생할 때 A와 B가 조건 독립적으로 일어날 확률

> C가 발생할 때 A와 B가 독립적임

> data로부터 확률을 계산하기에 더 쉬움

- evidence가 모두 동시에 일어나는 것이 어렵다는 문제점 때문에..

> 조건 독립적으로 나눠서 생각하는 하나의 가정을 추가함

> e1, e2,... ek까지 모두 만족하는 것을 찾는 것보다 하나 조건을 만족하는지 찾는 게 더 쉬움

> 따라서 c가 일어난다는 가정하에 e1, e2,... ek가 independent 하다는 가정을 추가함

 

 


# Navie Bayes Classifier

- Naive Bayes equation

> 각각의 evidence들은 conditional independent 

- The Naive Bayes classifier

> 더 큰 확률을 return 하는 class로 분류

> 상대적으로 어떤 class로 분류될 확률이 더 큰 지가 중요

> ex) evidence를 보고 yes로 분류될 확률이 30%라고 해서 no로 분류될 확률이 70%인 것은 X

각각의 경우를 따로 계산해보아야 하며, no가 45%라고 가정했을 때 30보다 크므로

class=no라고 분류할 것임

- 공식에서 p(E)는 상수 값처럼 여겨지므로 계산량을 줄이기 위해서 버림

> 어떤 class의 분자 값이 더 큰지가 중요

 

 

# Advantage of Navie Bayes

- simple함

> evidence를 모두 고려하면서 심플함

- 저장 공간과 실행 시간에 있어 효율적임

> 저장 공간: 저장해야 할 데이터가 많지 않음 → 각 c와 ei에 대해 p(c)와 p(ei|c)만 계산하면 됨

> 실행 시간: 빨리 쉽게 계산할 수 있음

- independent하지 않은 evidence에 대해서도 잘 작동함 → 하지만 double counting 문제가 있음

> double counting: 실질적으로 A와 B의 교집합을 곱하기 때문에

A부분에서 중복으로 고려되는 부분이 존재함

> 하지만 실질적으로 확률 값의 상대 값이 더 중요하기 때문에 문제 되지 않음

- independence 하다는 가정 때문에 정확하게 고려되지 않음

> ranking의 개념을 사용

→ Yes/No가 아닌 high/mid/low처럼 class가 다양할 때는 상대적인 순위를 고려

- incremental learner

> training dataset에서 새로운 data가 들어오면 전체 training dataset을 다시 돌려야 했던

기존 모델과는 다름

> 새로운 게 들어오면 실시간으로 그 부분만 다시 계산하면 됨

> 실시간 업데이트가 중요한 분야에서 사용됨

 

 


# Example(1) : Weather Forecast

- 아래와 같은 날씨 dataset이 있다고 하자

- 아래의 새로운 data가 입력된다고 할 때 우리는 어떻게 target value를 예측할 수 있을까?

① class들의 사전 확률 계산

> p(Yes) = 9/14

> p(No) = 5/14

② "Outlook" feature에 대한 조건부 확률을 모두 계산

> p(Suuny|Yes) = 3/9

> p(Suuny|No) = 2/5

> p(Overcast|Yes) = 4/9

> p(Overcast|No) = 0/5

> p(Rainy|Yes) = 2/9

> p(Rainy|No) = 3/5

③ "Temp" feature에 대한 조건부 확률을 모두 계산

> p(Hot|Yes) = 2/9

> p(Hot|No) = 2/5

> p(Mild|Yes) = 4/9

> p(Mild|No) = 2/5

> p(Cool|Yes) = 3/9

> p(Cool|No) = 1/5

④ "Humidity"에 대한 조건부 확률을 모두 계산

> p(High|Yes) = 3/9

> p(High|No) = 4/5

> p(Normal|Yes) = 6/9

> p(Normal|No) = 1/5

⑤"Windy" feature에 대한 조건부 확률을 모두 계산

> p(True|Yes) = 3/9

> p(True|No) = 2/5

> p(False|Yes) = 6/9

> p(False|No) = 3/5

⑥ 각 class Yes, No에 대하여 조건부 확률(p(c|E))을 다시 계산 가능

> Evidence가 Rainy, Cool, High, True일 때 어떤 class로 분류해야 할까?

p(Yes|Rainy, Cool, High, True) < p(No|Rainy, Cool, High, True) 이므로 No라고 결정

 

 

# Example(2) : Patient Diagnosis

- 아래와 같은 진단 dataset이 있다고 하자

- 아래의 새로운 data가 입력된다고 할 때 우리는 어떻게 target value를 예측할 수 있을까?

① 각 class에 대하여 사전 확률 계산

> p(Flu=Y) = 5/8

> p(Flu=N) = 3/8

② "Chills" feature에 대한 조건부 확률을 모두 계산

> p(Chills=Y|Flu=Y) = 3/5

> p(Chills=Y|Flu=N) = 1/3

> p(Chills=N|Flu=Y) = 2/5

> p(Chills=N|Flu=N) = 2/3

③ "Runny nose" feature에 대한 조건부 확률을 모두 계산

> p(Runny nose=Y|Flu=Y) = 4/5

> p(Runny nose=Y|Flu=N) = 1/3

> p(Runny nose=N|Flu=Y) = 1/5

> p(Runny nose=N|Flu=N) = 2/3

④ "Headache" feature에 대한 조건부 확률을 모두 계산

> p(Headache=No|Flu=Y) = 1/5

> p(Headache=Mild|Flu=Y) = 2/5

> p(Headache=Strong|Flu=Y) = 2/5

> p(Headache=No|Flu=N) = 1/3

> p(Headache=Mild|Flu=N) = 1/3

> p(Headache=Strong|Flu=N) = 1/3

⑤ "Fever" feature에 대한 조건부 확률을 모두 계산

> p(Fever=Y|Flu=Y) = 4/5

> p(Fever=Y|Flu=N) = 1/3

> p(Fever=N|Flu=Y) = 1/5

> p(Fever=N|Flu=N) = 2/3

⑥ 각 class(Flu) Yes, No에 대하여 조건부 확률(p(c|E))을 다시 계산 가능

 

> Evidence가 Flu=Y, Runny nose=N, Headache= Mild, Fever=N일 때 어떤 class로 분류해야 할까?

p(Flu=Yes|E) < p(Flu=N|E)이므로 Flu=N라고 결정

 

 

# Example (3) : Spam Detection

- 아래와 같은 스팸 dataset이 있다고 하자

- 아래의 새로운 data가 입력된다고 할 때 우리는 어떻게 target value를 예측할 수 있을까?

① class spam, ham에 대한 사전 확률 계산

> p(spam) = 4/6

> p(ham) = 2/6

② "password" 단어의 포함 여부에 대한 조건부 확률 계산

> p(password|spam) = 2/4

> p(password|ham) = 1/2

> p(¬password|spam) = 2/4

> p(¬password|ham) = 1/2

③ "review" 단어의 포함 여부에 대한 조건부 확률 계산

> p(review|spam) = 1/4

> p(review|ham) = 2/2

> p(¬review|spam) = 3/4

> p(¬review|ham) = 0/2

④ "send" 단어의 포함 여부에 대한 조건부 확률 계산

> p(send|spam) = 3/4

> p(send|ham) = 1/2

> p(¬send|spam) = 1/4

> p(¬send|ham) = 1/2

⑤ "us" 단어의 포함 여부에 대한 조건부 확률

> p(us|spam) = 3/4

> p(us|ham) = 1/2

> p(¬us|spam) = 1/4

> p(¬us|ham) = 1/2

⑥ "your" 단어의 포함 여부에 대한 조건부 확률

> p(your|spam) = 3/4

> p(your|ham) = 2/2

> p(¬your|spam) = 1/4

> p(¬your|ham) = 0/2

⑦ "account" 단어의 포함 여부에 대한 조건부 확률

> p(account|spam) = 1/4

> p(account|ham) = 0/2

> p(¬account|spam) = 3/4

> p(¬account|ham) = 2/2

⑧ 각 class(Flu) Yes, No에 대하여 조건부 확률(p(c|E))을 다시 계산 가능

> Evidence가 review, your, account를 포함하면 어떤 class로 분류해야 할까?

p(spam|E) > p(ham|E) 이므로 spam이라고 결정

 


# A Model of Evidence "Lift"

- Navie bayes의 공식을 변형해 evidence lifts의 관점에서 볼 것

> evidence lifts (증거 향상도): 이 증거가 얼마만큼 내가 찾고자 하는 class로 분류하는데

도움이 되는가 혹은 도움이 안 되는가?

> p(E)는 independent 하기 때문에 분모를 위와 같이 변경할 수 있음

 

 

# Probability as a Product of Evidence Lifts

- evidence lift의 곱의 형태로 공식을 변형

> liftc(ei): class c의 evidence(i)의 lift

* lift의 정의

- liftc(ei)

> p(c): 사전 확률, base 확률로 앞으로 빼서 계산

> 각각의 evidence들은 어떤 class로 분류되는 확률을 높이기도 하고 낮추기도 함

> lift가 1보다 크면 분류되는 확률을 높이는 것

> lift가 1보다 낮으면 분류되는 확률을 낮추는 것

 


# (Ex) Evidence Lifts from Facebook "Likes"

- 연구 결과: 인간 행동의 디지털 기록으로부터 사적인 특성 그리고 속성을 알 수 있음

→ Digital record: "Like" on Facebook

> IQ test에서 몇 점을 받을까?

> 심리학 test에서 몇 점을 받을까?

> 게이인가?

> 술 그리고 담배를 하는가 안 하는가?

> 그들의 종교 & 정치적 견해

높은 IQ를 가진다로 분류하는데 관련성이 많은 evidence들

> Sheldon Cooper: Sheldon Cooper에 좋아요를 누른 사람은 일반적인 사람보다

IQ가 높은 확률이 1.3 높음

> target variable(IQ>130)의 Yes일 확률이 14%라고 가정

→ "Sheldon Cooper"에만 좋아요를 누른 사람: 0.14*1.3 = 18

즉, 18% 확률로 IQ가 130 이상임

→ "Sheldon Cooper", "Star Trek", "Lord of the Rings"에 좋아요를 누른 사람:

0.14*1.3*1.39*1.69 = 43% 즉, 43%의 확률로 IQ가 130 이상임

 

profile

Fascination

@euna-319

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!