[데이터분석]/Python | AI | 머신러닝

eXplainableMethod

dowon 2024. 9. 16. 21:18

Black Box

내부 구조나 작동 원리를 모르더라도 입력과 출력을 할 수 있는 장치나 회로, 또는 과정

여객기, 수송기와 같은 항공기 안에 비치하는 데이터 자동 기록 장치

비행 기록 장치와 조종실 음성기록 장치가 들어 있음

사고가 났을 때 그 원인을 밝히는 데 중요한 구실을 함


Explainability vs Performance

Model Complexity가 높은 (해석력이 낮은) Model에 대해 해석을 얻으려는 연구가 많이 이루어짐


Interpretable Machine Learning

Importance of Interpretability

: If a machine learning model performs well, why do we not just trust the model and ignore why it made a certain decision?

: 'The problem is that a single metric, such as classification accuracy, is an incomplete description of most real-world tasks'

 

Interpretable Models

- Linear Regerssion, Logistic Regression, Generalized Linear Models, Generalized Additive Models

- Decision Tree, Naive Bayes Classifier, K-Nearest NEighbors

- Local Model-Agnostic Methods: LIME, SHAP


Linear Regression

Logistic Regression

Generalized Linear Models

Generalized Additive Models

Decision Tree

Naive Bayes Classifier

K-Nearest Neighbors

Local Model-Agnostic Methods: LIME, SHAP


Global vs Local Feature Importance Score - Locality

Feature Importance Scores

- Step 1: Compute the OOB error for the original dataset (Boostrap 시 뽑히지 못한 36.8% Data 활용)

- Step 2: Compute the OOB error for the dataset in which the variable xi is permuted pi

- Step 3: Compute the variable importance based on the mean and standard deviation of over all trees in the population

Global vs Local

종속변수 Y 전체 특정 종속변수 Y (Locality)
종속변수 Y 영향을 미치는 중요도 특정 종속변수 Y에 영향을 미치는 중요도
- 효율에 영향을 미치는 중요도 - 저효율에 영향을 미치는 중요도
- 공부에 영향을 미치는 중요도 - 고득점에 영향을 미치는 중요도
- 운전에 영향을 미치는 중요도 - 고속도로 운전에 영향을 미치는 중요도

 

: 기존 분석의 중요인자 추출 기법은 전체 데이터를 대변하는 중요 인자를 추출함

: 데이터 분석의 목적에서 특정 Y(Local, 고효율) 군을 결정 짓는 중요 인자를 추출할 수 있음

→ 더 나아가 0.01% (불량 등) 데이터를 결정 짓는 중요 인자를 추출

: 전체 Y를 대변하는 중요 인자 (Global Interpretability)와 특정 데이터에 대한 중요 인자 (Local Interpretability)는 다른 결과를 불러올 수 있음

: 특정 Y(내가 원하는 데이터)에 대한 해석력을 어기 위해서는 Black Box Model을 열어 봐야함

: Interpretable Machine Learing (IML)을 통해 Black Box Model을 열어 봄

 

How???

→ LIME, SHAP


LIME

Local Interpretable Model - agnostic Explanation

Local: 특정 Y

Model-agnostic: Model Free (어떠한 Model이라도 적용 가능)

Explanation: 설명할 수 있음

etc: 숫자, 텍스트, 이미지 등 모든 데이터에 적용 가능

 

Step 1: Modeling

평상시 우리가 돌리는 Model을 사용하여 학습을 진행함

Weight based Model (Regression, Logistic Regression...), Tree based Model (Random Forest, Gradient Boosting Tree, Xgboost...), Deep Learning (CNNs, RNNs...) 모든 모델을 사용해도 됨

LIME은 Model에 대한 Scalability를 보장함

 

Step 2: Dataset and Predictions

학습이 완료된 모델을 사용하여 학습데이터 또는 검증데이터에 대하여 예측을 진행함

 

Stpe 3: Picking step

우리가 Targeting한 데이터를 추출함

예를 들어, 초 고휼율군을 학습데이터와 검증데이터에서 추출함

더 나아가 확실한 Pattern이 있는 데이터를 추출하기 위하여 (학습이 잘된 데이터) MSE가 낮은 데이터를 추출함

 

Step 4: Explanations

Pick step에서 추출한 데이터에 대해 중요인자를 도출함

도출할 때는 LIME 사용하여 도출함

 

Step 5: Human makes decision

Explanations stpe에서 도출한 중요인자를 바탕으로 실제로 중요한지에 대한 여부를 판단한

판단하기 위해서 중요인자와 Y와의 상관관계, plotting을 통하여 Insight를 도출함


SHAP

Shapley Additive exPlanations

LIME개념 + 경제학 개념

(노벨 경제학상을 받은 Shapley Values 게임이론을 접목시킴)

 

Core는 효율성이라는 바람직한 특성을 가지고 있지만, 바람직하지 못한 특성도 보유함

즉, Core가 존재하지 않을 수도 있고, 아주 커다란 core를 가지고 있을 수도 있음

따라서 '유일한' 해를 제공하지 못하는 단점이 있음 (분배에 대한)

이러한 단점이 없는 다른 해들이 많이 개발되었으며, 그 중 가장 잘 알려진 것이 SV (Shapley Value)임

 

게임이론

: 여러 주제가 서로 영향을 미치는 사오항에서 서로 어떤 의사결정이나 행동을 하는지에 대해 이론화한 것

 

→ Y에 영향을 미친 X's을 Shapley Value를 활용하여 중요도 계산을 해보자

 

eg)

집 값: 300,000유로 

공원 有 50평 2층 고양이 출입금지

주변 평균 아파트 시세: 310,000유로

과연 어떤 인자가 주변 시세보다 10,000 유로를 낮게 했을까?

 

LIME의 경우 가중치 (선형회귀의 경우 Coefficient를 말함)을 곱한 값

선형모델은 인과성을 가지고 있기 때문에 이렇게 단순히 가중치를 통해서 영향력을 바로 확인할 수 있음

 

1. 공원 有와 50평을 추가 했을 때 고양이 출입금지의 기여도를 평가한다고 가정

 → 공원 有와 50평 그리고 고양이 출입금지를 사용하여 무작위로 여러 아파트들에 대한 예측을 해보고 층 수 특성에 대한 가치를 확인함

2. 2층에서 1층으로 변경 되었음에도 가격은 변하지 않았음

3. 고양이 출입허용으로 변경 하였을 때 가격이 10,000유로 상승함

따라서, 고양이 출입금지의 기여도는 -10,000 유로 라는 것을 확인할 수 있음

 

위와 같은 계산 과정을 모든 가능한 조합에 대해 반복함.

SV는 모든 가능한 조합에 대한 모든 한계 기여도의 평균임

'[데이터분석] > Python | AI | 머신러닝' 카테고리의 다른 글

Dimensionality Reduction  (1) 2024.09.17
Clustering  (2) 2024.09.16
Classification Problem  (0) 2024.09.10
Regression Problem  (0) 2024.09.09
Python을 활용한 프로그래밍 확률통계_Part 4  (0) 2024.08.01