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에서 몇 점을 받을까?
> 게이인가?
> 술 그리고 담배를 하는가 안 하는가?
> 그들의 종교 & 정치적 견해
> 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 이상임
'Study > Data Science' 카테고리의 다른 글
[DataScience] Ch10. Representing and Mining Text (0) | 2021.08.24 |
---|---|
[DataScience] Ch8. Visualizing Model Performance (0) | 2021.08.24 |
[DataScience] Ch7. Decision Analytic Thinking 1: What is a Good Model? (0) | 2021.08.24 |
[DataScience] Ch6. Similarity, Neighbors, and Clusters (0) | 2021.08.24 |
[DataScience] Ch5. Overfitting and Its Avoidance (0) | 2021.08.24 |