Fascination
article thumbnail

Ch7. Decision Analytic Thinking 1: What is a Good Model?

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


# How Would You Measure A Model?

- data를 mining함으로써 무엇을 성취하고자 하는지(=goal)를 고려하는 것은 매우 중요

- 의미있는 방식으로 성능을 측정해야 함

> problem에 대한 "올바른" 평가 metric은 무엇인가?

> (ex) cellular-churn problem → 무엇을 기준으로 성능을 측정할 것인지는 회사나 도메인에 따라 다름.

즉 얻고자하는 정보에 따라 달라질 수 있는 것 → 이탈하는 고객의 비율, 예측 정확도 등등..

 


# Evaluating Classifiers

- classification model: 새로운 정보가 class에 들어왔을 때 그것의 class를 예측하는 것

- binary classification을 고려해봄: positive, negative

- 우리는 이 모델의 일반적인 성능을 어떻게 측정할 수 있을까?

  Actual: Churn Actual: Not Churn
predicted: churn yes라고 예측했는데 실제로도 yes인 것 yes라고 예측했는데 실제로는 no인 것
predicted: not churn no라고 예측했는데 실제로는 yes인 것 no라고 예측했는데 실제로도 no인 것

> 우 하향하는 정보들이 중요함

 

 

# Plain Accuracy and Its Problems

- classifier의 성능을 측정하기 위해 간단한 metric을 가정 : accuracy (or error rate)

- 정의

> correct: 얼마만큼 제대로 맞췄는가(예측했는가)?

- 측정하고 이해하기에 쉬움

- 너무 단순하고 이미 잘 알려진 문제점을 가지고 있음 (문제점은 뒤에서 언급)

 


# The Confusion Matrix

- n-class에 대한 confusion matrix는 n*n matrix임

> columns(세로): actual(or true) classes

> rows(가로): predicted classes (예측)

> error의 종류를 각각 보여줌

- example: 2*2 confusion matrix

> True positive: 맞다고 예측했는데 실제로도 맞은 것 (예측이 맞음)

> False positive: 맞다고 예측했는데 실제로는 틀린 것 (예측이 틀린 것)

> False negatives: 틀리다고 예측했는데 실제로는 맞은 것 (예측이 틀린 것)

> True negatives: 틀리다고 예측했는데 실제로도 틀린 것 (예측이 맞은 것)

> The error rate = False positives + False negatives

 

 

# Problems with Unbalanced Classes

- 한 클래스가 드문 경우의 분류 문제를 고려해보자

> 사기당한 고객을 찾는 것, 불량 부품을 찾는 것, 제안에 응답할 고객을 targeting 하는 것

> 위의 예시는 모두 불균형하거나 치우쳐 있음

- 이런 경우는 accuracy를 기반으로 한 평가에서 잘 동작하지 못함

> 999:1 비율로 클래스가 나타나는 도메인이 있을 경우를 고려해보자

> 가장 만연한 class를 선택하면 99.9%의 정확도를 얻을 수있음

ex) 사기당할 확률이 0.01% 라면 사기당하지 않은 class로만 분류하면 99.9%의 정확도를 얻는 것

> 사소하지 않은 solution을 찾는다면 만족스럽지 못함

- 편중되는 것은 좋지 않으며, accuracy가 잘못된 해석을 이어나갈 수 있음

- Example: cellular-churn problem

> A와 B가 1000명의 고객에 대한 그들만의 churn 예측 모델을 만듦

 

> A: churn에 대한 정확도는 100%지만, not churn에 대한 정확도는 60% 임

(실제로 churn 한 사람은 모두 churn이라고 올바르게 분류했지만

not churn은 500명 중 300명만 not churn이라고 분류했기 때문)

> B: not churn에 대한 정확도는 100%지만, churn에 대한 정확도는 60% 임

(실제로 not churn 한 사람은 모두 not churn이라고 올바르게 분류했지만

churn은 500명 중 300명만 churn이라고 분류했기 때문)

> 그들의 정확도는 80%로 같지만 각각의 모델이 동작하는 것은 매우 다름. 즉, 성능이 다름

- 서로 다른 dataset을 가지고 위의 두 모델을 비교

> 새로운 dataset을 가지고 동작한 오른쪽의 예시를 통해 B 모델이 A모델 보다 좋다고 할 수 있는가?

NO! 바꾼 dataset에서 n이 아닌 p의 비율이 더 높았다면 A의 성능이 더 좋은 것으로 측정되기 때문

 

 

# Problems with Unequal Costs and Benefits

- 단순한 정확성의 문제점

> false positive와 false negative errors 사이를 구분하지 않음

> 그들을 같이 계산하면 두 가지 오류 모두 똑같이 중요해짐

- 실제 domain에서 위와 같은 경우는 매우 드물음

> errors의 결과가 다르면 그 cost도 다름

- Example (1): 암 진단

> False positive: 암에 걸렸다고 진단했는데 알고 보니 안 걸림

→ 삶에 큰 위협이 되지 않으므로 괜찮음

> False negative: 암에 안 걸렸다고 진단했는데 실제로는 암에 걸렸던 것

→ 심각한 상황

> accuracy, error rate으로만 모델의 성능을 측정하기에는 단점이 존재함

- Example (2): cellur-churn

> False positive: churn 할 것이라고 예상했는데 안 함

→ 스타벅스 기프티콘을 줘서 churn하지 않게 하는 것이 이득이라 기프티콘을 제공하긴 했지만

결론적으로 고객이 churn하지 않았으므로 기업 입장에서는 적은 cost를 지불한 것임

> False negative: churn하지 않을 것이라고 예상했는데 churn 함

 기프티콘에 대한 cost보다 고객이 핸드폰을 사지 않았을 때 발생하는 손실이 크므로 손해임

- 대부분의 모든 domain에서, False positive와 False negative의 error를 각각 다르게 다뤄야 함

> classifier가 만드는 결정의 cost 혹은 benefit을 평가해야 함

> 일단 집계되면, classifier에 대한 기대 이익(기대 이득 혹은 기대 비용) 추정을 만들어냄

 


# Generalizing Beyond Classification

- data science를 적용시킬 때 중요한 질문

> 목표는 무엇인가?

> 목표가 주어진 data mining의 결과를 적절히 평가하고 있는가?

- Example: regression

> 고객이 보지 않은 영화에 대해 별을 얼마나 줄 것인가를 예측하는 모델

> 우리는 이 모델을 어떻게 측정해야 할까? 에러의 평균/에러의 평균의 제곱?

> 우리는 더 나은 metric이 있는지 확인해보아야 함

 

 

# (Ex) Metrics for Regression Models

 

> Mean absolute error: Mean error에서 음수 값이 양수 값을 offset 시키는 문제를 보완함

 


# A Key Framework : Expected Value (EV)

- 데이터 분석적 사고를 돕는 유용한 개념적 도구로써 우리에게 필요한 지식을 얻는 데 사용함

- 데이터 분석 문제에 대한 생각을 정리하는 데 매우 유용한 핵심 framework를 제공

- 기댓값의 계산

> oi : 내가 원하는 결과

> p(oi) : oi의 확률

> v(oi) : oi의 값

 

 

 

# Using EV for Classifier Use

- Example: target marketing

> 어떤 사람에게 offer를 주었을 때 제안을 받아들일까 안 받아들일까?

> target marketing을 보고 제안을 받아들여야겠다고 생각하는 사람은 매우 적음

> 상식선을 50%라고 결정.

고객이 offer를 받아들이는 확률이 50% 는 되어야 target marketing을 하는 의미가 있음

- 확률의 관점으로만 접근하면 X.

> 기댓값이라는 개념을 써서 만들어보면 위의 생각 (50%는 넘어야 의미가 있다)이

무조건 맞지 않다는 것을 알게 됨

- feature vector가 x인 고객에 대해 pR(x)를 주는 model이 있다고 가정

> pR(x): 고객 x에 대한 응답 확률을 추정한 것

> ex) classification tree, logistic regression model, or some other model

- 그러면 우리는 targeting 하는 고객 x의 기대 이득 혹은 비용을 계산할 수 있음

> expected benefit: 고객이 response를 주었을 때 얼마만큼 돈을 벌 수 있는가?

> vR: 응답으로부터 얻는 값. 즉, response로 인해 얻는 이득

> vNR: 응답이 없을 때 얻는 값. 즉, no response일 때 드는 비용

- Example scenario

> 물건 값 200$

> 원가 100$

> target marketing에 드는 비용 1$ (우표값임)

- Example scenario 기댓값 계산

> vR: $99 (target marketing에 성공했을 때 얻는 이득)/ 원가 - 우표값

> vNR: -$1 (target marketing에 실패했을 때의 비용) / 우표값이 cost로 발생

- 기댓값이 0보다만 크면 남는 장사임

> customer 중 1%만 응답해도 우리는 이득이다. 즉, 100중 1명만 응답해도 이득

* 50% 이상이 중요한 게 아님

 

 

# Using EV for Classifier Evaluation

- 그 모델이 decision making을 하는 set 전체를 평가해보자

> 이 평가는 다른 모델과의 비교에 있어 필수적임

> 그 모델의 성능 예측 가능

- expected value calculation

> 각 oi는 (Y, p), (Y, n), (N, p), (N, n)에 대응함 즉, 표에서 셀 한 칸에 대응되는 것

- Example

> 확률 값이기 때문에 다 더하면 1이 나옴

 

 

# Overview of the Expected Value Calculation

> 파란색 영역: 우리가 할 수 있는 영역

> Cost/Benefit information: 분석을 통해 외부의 정보 필요

> dataset이 있으면 training data, test data가 따로 있고

이것으로 모델을 만들면 confusion matrix를 만들 수 있음

> confusion matrix에서의 expected rates와

외부에서 얻은 정보를 통해 만든 cost/benefit information의 정보 값을 가지고

expected value를 만들 수 있음

 

 

# (Ex) Using EV for Classifier Evaluation

step1) Estimate the rate of each case

- 각 count를 전체 instance 개수로 나눈 것

- p(h, a): count(h, a)/T

> h: 예측 클래스 (Y or N)

> a: actual class (p or n)

> T: instance의 전체 개수

> count(h, a): 해당 case에 상응되는 instances의 개수

> p(h, a): 그 case의 비율(추정 확률)

step 2) specify the value (cost or benefit) of each case

> b(h, a): benefit

> c(h, a): cost

- b(h, a)와 c(h, a)는 data로부터 추측할 수 없음

> 분석을 통해 제공되는 외부 정보에 의해 알 수 있는 것이 일반적

ex) 우표값이 $1라는 것은 data가 아닌 외부 정보로부터 결정되는 것

> 많은 시간과 생각이 필요한 부분임 / 그 고객을 붙잡는 것이 얼마나 가치 있는가?

Example) our targeted marketing example

 

- v(Y, n): -1

> 살 사람이라고 예측해서 $1을 사용해 서비스를 제공했지만 사실 그 사람은 안 살 사람이었던 것

- v(N, p): 0

> 우리가 서비스를 제공했으면 살 사람이었는데 no라고 예측했기 때문에 서비스를 제공하지 않았음

> 이것을 살 사람이 안 사서 손해 봤다고 생각할 수 있지만, 여기 예시에서는 우표값 안 들고

그냥 소득이 없었던 것이라고만 생각해서 0이라고 쓴 것

다른 측면에서는 손해로 -100이라고 생각할 수도 있음 이건 회사나 도메인에 따라 다르게 생각할 수 있는

부분임

- v(Y, p): 99

> 200 - 100(상품 생산하는데 드는 비용) - 1 (우표 값) = 99

- v(N, n): 0

> 안 살 사람을 안 산다고 예측해서 아무 손실이 없음

step3) compute the total expected value (or profit)

- model의 기대 이익을 계산하기 위해 위의 방정식을 사용

- total 기대 수익을 나타냄

 

 

# Alternative Calculation of EV

- EV 방식은 실제로는 잘 쓰이지 않음

- 조건부 확률의 개념을 도입하여 공식을 바꾸는데 이것이 데이터 사이언스에서 많이 사용됨

- 조건부 확률: A가 일어났을 때 발생하는 확률

- 조건부 확률 사용

> 사전 클래스 (Class priors): p(p), p(n) → 모델을 돌리기 전에 알고 있는 정보

> 조건부 확률: p( x, y) = p( y )* p( x | y ) → y가 주어졌다는 가정 하에 x가 일어날 확률

> p(x | y)는 x와 y가 동시에 일어날 확률을 y가 일어날 확률로 나눈 것임

> contribution: weight와 비슷

> p(p), p(n): positive/negative일 각각의 확률

- Example

- calculate the total expected profit

> average: expected value

- 정확도를 계산하기보다 기댓값을 계산해야 함

- 다양한 분포도에 대해 두 모델을 쉽게 비교할 수 있음

.

> 빨간 부분의 계산 결과는 달라지지 않음 → p(p)와 p(n)만 계산하면 되기 때문에 계산이 쉬워짐

* example

  p n
Y 56 7
N 5 42

> 110개의 데이터를 기반으로 그린 matrix가 위와 같다고 하자

> p:n의 분포도가 바뀌어도 같은 row끼리의 합은 변하지 않음 Y: 63/ N: 47

> column의 비율은 변할 수 있음

> data가 달라지거나 수가 더 많거나 적어진다 해도 같은 모델이기 때문에

Yes/No로 분류되는 비율이 달라지지는 않음

 

 

# Other Evaluation Metrics

- data science에서 사용되는 평가 metric은 많음

> 모든 평가 metric은 confusion matrix를 근본적인 요약한 것임

- Accuracy : 내가 맞춘 것을 전체로 나눈 것

= (TP + TN)/(TP + FN + FP + TN)

- Sensitivity (True positive rate): 실제 positive 중 잘 맞춘(Yes라고 예측) 것의 비율

= TP / (TP + FN) = 1 - False negative rate

ex) 암 진단에서 의사가 100명의 암 환자 중 이들이 암 환자라고 제대로 진단할 비율

- False negative rate: 실제 positive 중 맞추지 못한 것(No라고 예측)의 비율

= FN / (TP + FN)

- Specificity (True negative rate): 실제 negative에서 잘 맞춘(No라고 예측) 것의 비율

= TN / (FP + TN) = 1 - False positive rate

- False positive rate: 실제 negative 중 맞추지 못한(Yes라고 예측) 것의 비율

= FP / (FP + TN)

- 주로 정보 검색이나 패턴 인식 (text classification)에서 사용되는 용어

> Precision: Yes라고 예측한 것 중에 실제 Positive인 것의 비율

= TP / (TP + FP)

> Recall: 민감도와 같지만 해당 분야에서는 이 이름으로 불림

= TP / (TP + FN)

> F-measure: 조화 평균

* 조화 평균: 어떤 값들이 있을 때, 그 값들에 역수의 평균의 역수

 


# Baseline Performance

- 모델의 성능을 비교할 baseline을 우리의 model이 가지고 있음을 보여야 함

- 적절한 baseline

> 실제 적용에 따라 달라짐

> 매우 도움이 되는 일반적인 규칙들이 있음

 

 

# Baselines for Classification Models

① Random model

- 큰 의미가 있거나 값 어치가 있지 않음

- 모델에 대한 지식이 아무것도 없는 inital 상태에서 모델을 만들었을 때 또는 매우 어려운 문제에서 사용

- 적어도 만든 모델이 랜덤 모델보다는 성능이 좋아야 함

② simple (but not simplistic) model

- 너무 간단하지 않은(?) 간단한 모델임

- ex) 날씨 예보

> 내일 날씨는 오늘과 같을 것임

> 10년, 20년 전의 오늘 날짜의 평균 날씨

> 랜덤 모델보다는 나음

③ The majority classifier

- 다수결에 따름

 

 

# Baselines for Regression Model

- 평균값을 많이 사용 + 중간값

- 추천 시스템을 고려해보기

> 특정 영화에 대해 고객이 별점을 얼마나 줄 것인가

> simple model

→ model1: 고객이 영화에 주는 별점의 평균

→ model2: 영화가 고객에게 받는 별점의 평균

 

 

# Baselines for Other Tasks

- domain knowledge (received wisdom): 학습을 통해 알 수 있는 + domain을 통해 아는 지식

> domain knowledge를 기반으로 한 모델을 baseline model로 사용

- ex) Fraud detection

> 내 계정이 탈취당한 것을 감지하는 모델

> 랜덤보다 알 수 있는 domain을 이용해 baseline 설정 가능

> 안 쓰던 패턴(하루에 100-200만 원 소비)이 생기면 의심

 

 

profile

Fascination

@euna-319

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