brunch

You can make anything
by writing

C.S.Lewis

by 이종우 Peter Lee Dec 27. 2018

[번역] 컴퓨터 학습 모델 해석 실습

기계 학습 모델 해석을위한 포괄적인 안내서

원본 URL: https://towardsdatascience.com/explainable-artificial-intelligence-part-3-hands-on-machine-learning-model-interpretation-e8ebe5afc608



소개


통역 기계 학습 모델은 더 이상 고급스럽지 않지만 업계에서 AI를 신속하게 채택 해야 할 필요성이 있습니다. 이 기사는 'Explainable 인공 지능 (XAI)'을 목표로 작성한 기사 시리즈에서 계속됩니다 . 여기서 아이디어는 과대 광고를 자르고 블랙 박스 기계 학습 모델을 해석하기 시작하는 데 필요한 도구와 기술로 당신을 가능하게하는 것입니다. 다음은이 시리즈의 이전 기사에 대한 간략한 설명입니다 (이 기사에서는 필수 사항이 아님).


1 부 - 인간이 해석 할 수있는 기계 학습의 중요성 ' : 해석 가능한 기계 학습의 목적 과 이유, 모델 해석의 필요성과 중요성, 범위 및 기준


Part 2 - Model Interpretation Strategies ' 

는 모델 해석을위한 주요 전략과 관련된 본질적 개념을 볼 때 인간이 해석 할 수있는 기계 학습 방법을 다룹니다.



이 기사에서는 모델에 구애받지 않는 방식으로 잠재적 인 블랙 박스 머신 학습 모델을 설명 할 수있는 다양한 방법을 보여주는 실습 가이드를 제공합니다. UCI ML Repository 에서 성인 데이터 세트 라고도하는 센서스 소득에 대한 실제 데이터 세트를 작성 하여 잠재적 인 수입이 $ 50K / yr 이상인지 여부를 예측합니다.


이 기사의 목적은 다양합니다. 첫 번째 주요 목표는 주요 최첨단 모델 해석 프레임 워크를 숙지하는 것입니다.이 중 많은 부분이 LIME의 확장입니다. 모델 해석을 위해 제안 된 원래의 프레임 워크와 접근법은 Part 에서 자세히 다루었습니다 이 시리즈의 2 ).


우리는 튜토리얼에서 다음 모델 해석 프레임 워크의 사용법을 다룹니다.


ELI5


스케이터


셰이프


이 튜토리얼에서 다루는 주요 모델 해석 기술은 다음과 같다.


기능 중요성  더 이상 고뇌하지 않고 시작하자!


필요한 종속성로드


모델 해석에 대한 실용적인 지침이므로이 기사에서 많은 프레임 워크와 도구를 사용할 것입니다. 이 가이드를 최대한 활용하려면 다음 의존 관계를로드하는 것이 좋습니다.


Rememeber shap.initjs() 는 많은 플롯에서 shap 자바 스크립트가 필요하기 때문에 함수를 호출합니다


센서스 소득 데이터 세트로드 및보기


실제로 UCI ML 저장소 에서 센서스 수입 데이터 세트 (일반적으로 성인 데이터 세트 라고 함)를 얻을 수 있습니다 . 다행스럽게도이 기사의 의도는 모델 해석이므로 여기에서 사용할 데이터 세트의 이미 정리 된 버전을 제공합니다.


데이터 속성보기

데이터 세트의 주요 특징이나 속성을 살펴 보겠습니다.


((32561, 12), (32561,))


센서스 데이터 세트 기능


우리는 곧이 특징들을 설명 할 것입니다.


클래스 레이블보기

우리가 예측하고자하는 클래스 레이블 인 <= $ 50K ( False) 및$ 50K(True) 소득을 가진 사람들의 분포를 봅시다.


[6]에서 : 카운터 (라벨)

Out[6]: Counter({0: 24720, 1: 7841})

Definitely some class imbalance which is expected given that we should have less people having a higher income.


Understanding the Census Income Dataset

Let’s now take a look at our dataset attributes and understand their meaning and significance.

We have a total of 12 features and our objective is to predict if the income of a person will be more than $50K (

True

) or


less than $50K


(

False

). Hence we will be building and interpreting a classification model.


Basic Feature Engineering


Here we convert the categorical columns with string values to numeric representations. Typically the XGBoost model can handle categorical data natively being a tree-based model so we don’t one-hot encode the features here.





분류 모델을 만들기 전에 열차 및 테스트 데이터 세트를 작성할 시간입니다.


건물 열차 및 테스트 데이터 세트


모든 기계 학습 모델에서 우리는 항상 훈련 및 테스트 데이터 세트 가 필요합니다 . 우리는 기차 데이터 세트 에 모델을 구축 하고 테스트 데이터 세트 의 성능을 테스트 할 것 입니다. 인코딩 된 데이터 집합을 사용하여 교육 할 수 있지만 나중에 모델 해석을 위해 필요에 따라 원래 데이터 집합을 사용하기 위해 두 개의 데이터 집합 (인코딩 된 범주 값과 원본 값이있는 데이터 집합)을 유지 관리합니다.



((22792, 12), (9769, 12))



인코딩 된 데이터 세트


또한 별도의 데이터 프레임에도 실제 (인코딩되지 않은) 값으로 기본 데이터 세트를 유지합니다 (모델 해석에 유용함).



((22792, 12), (9769, 12))



우리의 실제 데이터 세트


분류 모델 교육


우리는 이제 매우 효율적이고 유연하며 휴대가 가능하도록 설계된 최적화 된 분산 그라디언트 부스팅 라이브러리 인 XGBoost 프레임 워크를 사용하여 교육 데이터에 대한 기본 부스트 분류 모델을 교육하고 구축합니다 .



벽걸이 시간 : 8.16 초


테스트 데이터에 대한 예측


여기서는 평소와 같이 훈련 된 모델을 사용하여 테스트 데이터 세트에 대한 예측을합니다.



배열 ([0, 0, 1, 0, 0, 1, 1, 0, 0, 1])


모델 성능 평가


테스트에 모델을 넣을 시간! 우리 모델이 테스트 데이터에 대한 예측과 함께 어떻게 수행되었는지 평가 해 봅시다. 우리는 내부적으로 표준 분류 모델 평가 척도를 제공하기 

model_evaluation_utils

위해


내 멋진


모듈을


사용


scikit-learn

합니다.







기본 모델 해석 방법


By default it is difficult to gauge on specific model interpretation methods for machine learning models out of the box. Parametric models like logistic regression are easier to interpret given that the total number of parameters of the model are fixed regardless of the volume of data and one can make some interpretation of the model’s prediction decisions leveraging the parameter coefficients.


Non-parametric models are harder to interpret given that the total number of parameters remain unbounded and increase with the increase in the data volume. Some non-parametric models like tree-based models do have some out of the box model interpretation methods like feature importance which helps us in understanding which features might be influential in the model making its prediction decisions.


Classic feature importances from XGBoost


Here we try out the global feature importance calcuations that come with XGBoost. The model enables us to view feature importances based on the following.


Feature Weights: This is based on the number of times a feature appears in a tree across the ensemble of trees


Note that they all contradict each other, which motivates the use of model interpretation frameworks like SHAP which uses something known as SHAP values, which claim to come with consistency guarantees (meaning they will typically order the features correctly).





Feature Importance Plots from XGBoost



Model Interpretation with ELI5


ELI5 is a Python package which helps to debug machine learning classifiers and explain their predictions in an easy to understand an intuitive way. It is perhaps the easiest of the three machine learning frameworks to get started with since it involves minimal reading of documentation! However it doesn’t support true model-agnostic interpretations and support for models are mostly limited to tree-based and other parametric\linear models. Let’s look at some intuitive ways of model interpretation with ELI5 on our classification model.


Installation Instructions


We recommend installing this framework using 

pip install eli5


since the


conda


version appears to be a bit out-dated. Also feel free to check out


the documentation


as needed.


Feature Importances with ELI5


Typically for tree-based models ELI5 does nothing special but uses the out-of-the-box feature importance computation methods which we discussed in the previous section. By default, ‘gain’ is used, that is the average gain of the feature when it is used in trees.


eli5.show_weights(xgc.get_booster())




Explaining Model Prediction Decisions with ELI5


One of the best way to explain model prediction decisions to either a technical or a more business-oriented individual, is to examine individual data-point predictions. Typically, ELI5 does this by showing weights for each feature depicting how influential it might have been in contributing to the final prediction decision across all trees. The idea for weight calculation is described here; ELI5 provides an independent implementation of this algorithm for XGBoost and most scikit-learn tree ensembles which is definitely on the path towards model-agnostic interpretation but not purely model-agnostic like LIME.


Typically, the prediction can be defined as the sum of the feature contributions + the “bias” (i.e. the mean given by the topmost region that covers the entire training set)


Predicting when a person’s income <= $50K


Here we can see the most influential features being the 

Age

Hours per week

,

Marital Status

Occupation

 & 

Relationship





Predicting when a person’s income > $50K


Here we can see the most influential features being the 

Education

,

Relationship

Occupation

Hours per week

 & 

Marital Status





It is definitely interesting to see how similar features play an influential role in explaining model prediction decisions for both classes!


Model Interpretation with Skater


Skater is a unified framework to enable Model Interpretation for all forms of models to help one build an Interpretable machine learning system often needed for real world use-cases using a model-agnostic approach. It is an open source python library designed to demystify the learned structures of a black box model both globally(inference on the basis of a complete data set) and locally(inference about an individual prediction).




Skater는 원래 LIME 포크로 출발했지만 블랙 박스 모델에 대한 모델에 의존하지 않는 해석을위한 다양한 기능과 기능을 갖춘 자체 독립 프레임 워크로 발전했습니다. 이 프로젝트는 연구자와 실무자 모두 에게 예측 가능한 "블랙 박스"에 대한 더 나은 해석 가능성 (바람직하게는 인간의 해석 가능성)을 가능하게하는 방법을 찾기위한 연구 아이디어로 시작되었습니다 .


스케이터 설치


당신은 일반적으로 간단한를 사용하여 스케이터를 설치할 수 있습니다 

pip install skater

.


의존성 및 설치 명령에 대한 자세한 내용은


스케이팅 설치를

확인하십시오


.


� 문서


Skater에 대한 자세한 문서를 확인하시기 바랍니다.



알고리즘


Skater는 모델 해석 기술 모음을 가지고 있는데 그 중 일부는 아래에 언급되어 있습니다.







사용법 및 예


프로젝트가 적극적으로 개발되고 있기 때문에 사용법을 이해하는 가장 좋은 방법 은 대화 형 노트 갤러리에 언급 된 예제를 따르는 것 입니다. 그러나 우리는 센서스 데이터 세트에서 교육 된 모델을 사용하여 주요 기능을 선보일 예정입니다.


스케이터와의 글로벌 해석


예측 모델은 입력 공간에서 출력 공간으로의 맵핑입니다. 해석 알고리즘은 기능 영역의 한계 분포 또는 전체 교육 세트의 공동 분포와 같이 도메인 영역에서 통계 및 메트릭을 제공하는 알고리즘으로 나뉩니다. 이상적인 세계에는 인간이 여러 차원의 의사 결정 기능을 해석 할 수있는 표현이 존재할 것이다. 우리는 일반적으로 시간에 따라 몇 차원 만 시각화 할 수 있다고 가정 할 때 전역 해석 알고리즘은 기능 공간을 집계하거나 부분 집합으로 만듭니다.


현재, 스케이터가 지원하는 모델에 의존하지 않는 글로벌 해석 알고리즘에는 트리 서 게이트의 새 릴리스와 함께 부분 의존성 및 기능 중요성이 포함됩니다. 기능 중요성과 부분 의존도를 여기에서 다룰 것입니다.


Creating an interpretation object


The general workflow within the skater package is to create an interpretation, create a model, and run interpretation algorithms. Typically, an 

Interpretation


consumes a dataset, and optionally some metadata like feature names and row ids. Internally, the


Interpretation


will generate a


DataManager


to handle data requests and sampling.


Local Models(InMemoryModel): To create a skater model based on a local function or method, pass in the predict function to an InMemoryModel. A user can optionally pass data samples to the examples keyword argument. This is only used to infer output types and formats. Out of the box, skater allows models return numpy arrays and pandas dataframes.


We will use the following workflow:


Build an interpretation object



Feature Importances with Skater


Feature importance is generic term for the degree to which a predictive model relies on a particular feature. The skater feature importance implementation is based on an information theoretic criteria, measuring the entropy in the change of predictions, given a perturbation of a given feature. The intuition is that the more a model’s decision criteria depend on a feature, the more we’ll see predictions change as a function of perturbing a feature. The default method used is 

prediction-variance


which is the mean absolute value of changes in predictions, given perturbations in the data.




Feature Importances from Skater


Partial Dependence


Partial Dependence describes the marginal impact of a feature on model prediction, holding other features in the model constant. The derivative of partial dependence describes the impact of a feature (analogous to a feature coefficient in a regression model). This has been adapted from T. Hastie, R. Tibshirani and J. Friedman, Elements of Statistical Learning Ed. 2, Springer. 2009.


The partial dependence plot (PDP or PD plot) shows the marginal effect of a feature on the predicted outcome of a previously fit model. PDPs can show if the relationship between the target and a feature is linear, monotonic or more complex. Skater can show 1-D as well as 2-D PDPs


PDP of ‘Age’ affecting model prediction


Let’s take a look at how the 

Age


feature affects model predictions.




PDP for the Age feature


Looks like the middle-aged people have a slightly higher chance of making more money as compared to younger or older people.


PDP of ‘Education Num’ affecting model prediction


Let’s take a look at how the 

Education-Num


feature affects model predictions.




PDP for the Education-Num feature


Looks like higher the education level, the better the chance of making more money. Not surprising!


PDP of ‘Capital Gain’ affecting model prediction


Let’s take a look at how the 

Capital Gain


feature affects model predictions.




PDP for the Capital Gain feature


Unsurprisingly higher the capital gain, the more chance of making money, there is a steep rise in around $5K — $8K.


PDP of ‘Relationship’ affecting model prediction


Remember that relationship is coded as a categorical variable with numeric representations. Let’s first look at how it is represented.




Label Encoding for Relationship


Let’s now take a look at how the 

Relationship


feature affects model predictions.




PDP for the Relationship feature


Interesting definitely that married folks (husband-wife) have a higher chance of making more money than others!


Two-way PDP showing interactions between features ‘Age’ and ‘Education-Num’ and their effect on making more than $50K


We run a deeper model interpretation here over all the data samples, trying to see interactions between 

Age


and


Education-Num

and also their effect on the probability of the model predicting if the person will make more money, with the help of a two-way partial dependence plot.




Two-way PDP showing effects of the Age and Education-Num features


Interesting to see higher the education level and the middle-aged folks (30–50) having the highest chance of making more money!


'교육 Num'과 'Capital Gain'의 기능 간 상호 작용을 보여주는 양방향 PDP와 50,000 달러 이상의 효과


우리는 사이의 상호 작용을 볼려고, 여기에 모든 데이터 샘플을 통해 더 깊은 모델 해석을 실행 

Education-Num

하고


Capital Gain

또한 사람이 양방향 부분 의존 플롯의 도움으로 더 많은 돈을 벌 것인지 예측 모델의 확률에 미치는 영향.




Education-Num 및 Capital Gain 기능의 효과를 보여주는 양방향 PDP


기본적으로 더 나은 교육과 자본 이득을 얻으면 더 많은 돈을 벌 수 있습니다!


스케이터와 지역 해석


지역 통역은 두 가지 방법으로 가능할 수 있습니다. 첫째, 간단한 해석 가능한 보조 또는 대리 모델 (예 : 선형 회귀 분석기)을 사용하여 단일 입력 부근에서 복잡한 예측 모델의 동작을 대략적으로 추정 할 수 있습니다. 두 번째로 기본 추정기를 사용하여 입력 및 출력을 기반으로 한 직관적 인 근사 함수를 사용하여 단일 예측의 동작을 이해할 수 있습니다.


지역 해석 가능 모델 - 불가 지론 설명 (LIME)


LIME은 Riberio Marco, Singh Sameer, Guestrin Carlos에 의해 설계된 새로운 알고리즘으로 해석 가능한 대리 모델 (예 : 선형 분류기 / 회귀 분석기)을 사용하여 모든 기본 추정자 (모델)의 동작에 액세스합니다. 이러한 포괄적 인 평가의 형식은 지역적으로 충실하지만 지구 적 행동과 일치하지 않는 설명을 생성하는 데 도움이됩니다. 기본적으로 LIME 설명은 지역 대리 모델을 기반으로합니다. 이러한 대리 모델은 원래 블랙 박스 모델의 예측에 대해 학습 된 해석 가능한 모델 (선형 모델 또는 의사 결정 트리와 같은)입니다. 그러나 글로벌 대리 모델을 적용하는 대신 LIME은 왜 단일 예측이 수행되었는지 설명하기 위해 로컬 대리 모델을 맞추는 데 중점을 둡니다.


The idea is very intuitive. To start with, just try and unlearn what you have done so far! Forget about the training data, forget about how your model works! Think that your model is a black box model with some magic happening inside, where you can input data points and get the models predicted outcomes. You can probe this magic black box as often as you want with inputs and get output predictions.


Now, you main objective is to understand why the machine learning model which you are treating as a magic black box, gave the outcome it produced. LIME tries to do this for you! It tests out what happens to you black box model’s predictions when you feed variations or perturbations of your dataset into the black box model. Typically, LIME generates a new dataset consisting of perturbed samples and the associated black box model’s predictions. On this dataset LIME then trains an interpretable model weighted by the proximity of the sampled instances to the instance of interest. Following is a standard high-level workflow for this.


Choose your instance of interest for which you want to have an explanation of the predictions of your black box model.


We recommend you to read the LIME chapter in Christoph Molnar’s excellent book on Model Interpretation which talks about this in detail.


Explaining Model Predictions with Skater using LIME


Skater can leverage LIME to explain model predictions. Typically, its 

LimeTabularExplainer


class helps in explaining predictions on tabular (i.e. matrix) data. For numerical features, it perturbs them by sampling from a Normal(0,1) and doing the inverse operation of mean-centering and scaling, according to the means and stds in the training data. For categorical features, it perturbs by sampling according to the training distribution, and making a binary feature that is 1 when the value is the same as the instance being explained. The


explain_instance()


function generates explanations for a prediction. First, we generate neighborhood data by randomly perturbing features from the instance. We then learn locally weighted linear (surrogate) models on this neighborhood data to explain each of the classes in an interpretable way.


Since XGBoost has some issues with feature name ordering when building models with dataframes, we will build our same model with 

numpy


arrays to make LIME work without additional hassles of feature re-ordering. Remember the model being built is the same ensemble model which we treat as our black box machine learning model.



XGBClassifier (base_score = 0.5, 부스터 = 'gbtree'colsample_bylevel = 1 
              colsample_bytree = 1, 감마 = 0 learning_rate = 0.1,           
              max_delta_step = 0 MAX_DEPTH = 5 min_child_weight = 1,   
              누락 = 없음, n_estimators = 500 n_jobs = 1,   
              nthread = 없음, 목표 = '2 진수 : logistic', 
              random_state = 42, reg_alpha = 0, reg_lambda = 1,     
              scale_pos_weight = 1, seed = 없음, silent = True,   
              subsample = 1)



소득이 $ 50K 미만인 시점 예측


Skater는 사람의 소득을 $ 50K 미만 으로 예측하는 올바른 결정을 내린 모델에서 어떤 기능이 가장 영향력이 있는지 보여주는 아래의 좋은 추리를 제공합니다 .





Skater의 LIME을 사용한 지역 해석



한 사람의 소득> $ 50K 예측


Skater는 모델에 가장 영향력있는 기능이 50,000 달러 이상인 사람의 소득을 예측하는 올바른 결정을 내리는 모습을 보여주는 좋은 추리를 제공합니다 .





Skater의 LIME을 사용한 지역 해석



Skater를 사용하는 Tree Surrogate를 사용하여 해석 가능한 모델에 대한 경로


우리는 피쳐, 의존도 및 LIME을 포함한 기계 학습 모델을 해석하는 다양한 방법을 보았습니다. 하지만 수백 개의 의사 결정 트리가있는 XGBoost 모델과 같이 실제로 복잡한 블랙 박스 모델에서 해석 할 수있는 근사 또는 대리 모델을 만들 수 있습니까?


여기에서는 

TreeSurrogates

TREPAN 알고리즘으로 묘사 된 Mark W. Craven의 연구에서 영감을 얻은 모델의 학습 된 의사 결정 정책 (유도 학습 작업)을 설명하기위한 수단


으로 사용하는 새로운 아이디어를 소개합니다


.


TREPAN 알고리즘에 대한 다음 우수 논문을 검토하여 서로 게이트 트리를 만드는 것이 좋습니다.



Mark W. Craven (1996) 훈련 된 신경망에서 포괄적 모델 추출하기


Mark W. Craven과 Jude W. Shavlik (NIPS, 96). Thained Networks의 구조화 된 표현 추출하기



간단히 말하면 Trepan은 최선의 방법으로 의사 결정 트리를 만듭니다. 큐에서 제거 될 때 하위 트리로 확장되는 리프의 큐를 유지합니다. 대기열의 각 노드에서 Trepan은


트레이닝 예제의 서브 세트,


학습 예제의 저장된 하위 집합은 노드에 도달하는 예제로 구성됩니다. 트레이닝 예제와 함께 쿼리 인스턴스가 사용되어 노드가 내부 노드 인 경우 분할 테스트를 선택하거나 리프 인 경우 클래스 레이블을 결정합니다. 제한 조건 세트는 인스턴스가 노드에 도달하기 위해 만족시켜야하는 조건을 설명합니다. 이 정보는 새로 작성된 노드에 대한 조회 인스턴스 세트를 그릴 때 사용됩니다. Trepan에서 노드를 확장하는 프로세스는 기존의 의사 결정 트리 알고리즘과 매우 유사합니다. 노드에 대해 분할 테스트가 선택되고 테스트의 각 결과에 대해 하위가 만들어집니다. 각 어린이는 나무의 잎을 만들거나 미래의 확장을 위해 대기열에 넣습니다.


Skater의 구현을 위해, 설명 가능한 대리 모델을 구축하기 위해 기본 추정기 (Oracle)는 감독 학습 학습 예측 모델 인 블랙 박스 모델의 모든 형태가 될 수 있습니다. 설명은 오라클에 의해 학습 된 것과 유사한 의사 결정 경계 (기본 모델의 예측은 의사 결정 트리 표현을 학습하는 데 사용됨)를 학습하여 의사 결정 트리 (분류 / 회귀 모두)를 사용하여 근사화됩니다. 구현은 또한 오라클에 대한 트리 기반 대리 모델의 근사를 정량화하기위한 충실도 스코어를 생성합니다. 이상적으로, 점수는 전 세계적으로나 지역적으로 진실 된 설명을 위해서는 0이어야합니다. 실제로 이것을 확인해 봅시다!


참고 : 구현은 현재 실험적이며 향후 변경 될 수 있습니다.


인터프리터 인스턴스를 사용하여 TreeSurrogate에 대한 호출을 호출합니다.


이전에 인스턴스화 한 Interpretation 객체를 사용하여 TreeSurrogate 기능 호출을 호출 할 수 있습니다.



대용 모델을 사용하여 기본 추정기에서 학습 한 결정 경계를 학습합니다.


이제이 대리 모델을 데이터 집합에 적용하여 기본 추정량의 결정 경계를 학습 할 수 있습니다.


기본 추정기와 비교할 때 충실도 값을보고합니다 (0에 가까울수록 좋습니다).



0.009


각 지형지 물의 위치를 살펴 봅니다.


대리 트리의 기능 이름은 표시되지 않지만 모델에 표시되므로이 작업을 수행합니다.





대리 트리 시각화


이제 다음 코드를 사용하여 대리 트리 모델을 시각화 할 수 있습니다.





우리의 서로 게이트 트리 모델



대리 트리의 재미있는 규칙


위의 트리에서 관찰 할 수있는 몇 가지 흥미로운 규칙이 있습니다.


만일 Relationship<0.5 (0 수단) 및 Education-num<= 9.5 Capital Gain<= 4225 → 만드는 사람의 70 %의 확률 <= $ 50K


이 모델과 자신의 모델에서 더 재미있는 규칙을 자유롭게 이끌어 내십시오! 이제 대리 모델이 테스트 데이터 세트에서 어떻게 수행되는지 살펴 보겠습니다.


대리 모델 성능 평가


이제 테스트 데이터에서 대리 모델의 성능을 확인해 봅시다.







예상했던대로 모델 성능이 상당히 떨어지지 만 부스트 모델의 87 %에 비해 전체 F1- 점수 가 83 %가 됩니다 .


SHAP을 이용한 모델 해석


SHAP (Shapley Additive exPlanations) 는 모든 기계 학습 모델의 출력을 설명하는 통일 된 접근 방식입니다. SHAP은 게임 이론과 지역 설명을 연결하고, 이전의 여러 가지 방법을 결합하고, 그들이 주장하는 것을 기반으로 유일하고 가능한 일관되고 지역적으로 정확한 부가 기능 특성 유도 방법을 제시합니다. ( 자세한 내용 은 SHAP NIPS 논문 을 확인하십시오). 또한 이 시리즈의 Part 2에서 자세히 다뤘습니다 .


설치


SHAP는 PyPI 에서 설치할 수 있습니다.


pip install shap


또는 conda-forge


conda install -c conda-forge shap


이 프레임 워크에 대한 정말 멋진 점은 SHAP 값이 모든 기계 학습 모델의 출력을 설명 할 수있는 반면 실제로 복잡한 앙상블 모델의 경우 느려질 수 있다는 것입니다. 그러나 트리 앙상블 방법 ( Tree Shap arXiv paper )을 위한 고속의 정확한 알고리즘을 개발했습니다 . Fast C ++ 구현은 XGBoost , LightGBM , CatBoost 및 scikit-learn 트리 모델에서 지원됩니다!


SHAP (Shapley Additive exPlanations)는 각 기능에 특정 예측에 대한 중요도 값을 할당합니다. 이 새로운 구성 요소에는 다음과 같은 것이 포함됩니다. 새로운 유형의 첨가제 기능 중요도 측정 식별 및 바람직한 결과 집합과 함께이 클래스의 고유 한 솔루션이 있음을 보여주는 이론적 결과. 일반적으로 SHAP 값은 모델 (함수)의 출력을 조건부 기대에 도입되는 각 형상의 효과의 합으로 설명하려고합니다. 중요하게도 비선형 함수의 경우 기능이 도입되는 순서가 중요합니다. SHAP 값은 가능한 모든 순서에 대해 평균 한 결과입니다. 게임 이론의 증거는 이것이 유일한 가능한 일관된 접근법임을 보여줍니다.


Shapley 값을 이해하는 직관적 인 방법은 다음과 같습니다. 특성 값이 임의 순서로 입력됩니다. 방의 모든 기능 값이 게임에 참여합니다 (= 예측에 기여). Shapley 값 φᵢⱼ 는 이전에 방에 들어온 지형 을 결합하여 지형 값 x of의 평균 한계 기여도입니다 . 즉,




KDD 18 논문의 다음 그림은 Tree Ensembles에 대한 일관된 개별화 된 속성 기여도를 좋은 방법으로 요약 한 것입니다.




이제 SHAP에 뛰어 들어 모델을 해석하는 데 활용하십시오!


SHAP으로 예측 설명하기


여기서 우리는 XGBoost에 통합 된 SHAP 구현을 사용하여 테스트 데이터 세트를 설명합니다! 건물 모델의 유형에 따라 다양한 설명자 방법이 있다는 것을 기억하십시오. 우리는 샘플 세트 (테스트 데이터)에 대한 SHAP 값을 추정하고,



예상 값 : -1.3625857




SHAP 값 ( 

# samples

,


# features

)


의 행렬을 반환합니다


.


각 행은 해당 샘플에 대한 모델 출력과 모델 출력의 예상 값 (


expected_value

설명자의 특성으로


저장 됨) 간의 차이를 합한 것


입니다.


일반적으로이 차이는 특정 클래스 결과를 예측하는 데 모델이 기울이는 이유를 설명하는 데 도움이됩니다.


소득이 $ 50K 미만인 시점 예측


SHAP는 아래에 50K 달러 이하로 소득을 예측하는 올바른 결정을 내린 모델에서 가장 영향력있는 기능을 보여주는 좋은 추론을 제공합니다 . 아래의 설명은 기본 값 (우리가 통과 한 교육 데이터 세트를 통한 평균 모델 출력)에서 실제 모델 출력으로 모델 출력을 푸는 데 기여하는 기능을 각각 보여줍니다. 예측치를 높게 설정하는 기능은 빨간색으로 표시되고, 예측치를 낮게 설정하는 기능은 파란색으로 표시됩니다.







한 사람의 소득> $ 50K 예측


유사하게, SHAP는 사람의 소득을 $ 50K 이상 으로 예측하는 올바른 결정을 내린 모델에서 가장 영향력있는 기능을 보여주는 아래의 좋은 추론을 제공합니다 .







시각화 및 여러 예측 설명


SHAP의 핵심 장점 중 하나는 한 번에 여러 예측을 시각화하고 설명 할 수있는 아름다운 대화 형 플롯을 작성할 수 있다는 것입니다. 여기서는 처음 1000 개의 테스트 데이터 샘플에 대한 모델 예측 결정을 시각화합니다.







위의 시각화는 다양한 방식으로 상호 작용할 수 있습니다. 기본 시각화는 흥미로운 모델 예측 패턴 결정을 보여줍니다.


첫 번째 100 개 테스트 샘플은 모든 아마 이상의 $ 50K를 적립 그들은 결혼 또는 \하고있는 좋은 자본 이득 또는 \을하고있는 높은 교육 수준을 !


모델에 대한 구체적인 결정을 내리고 패턴을 설명 할 수있는 패턴을 찾을 수있는 방법은 분명 흥미 롭습니다.


SHAP를 통한 주요 기능


이것은 기본적으로 데이터 집합 전체의 SHAP 값 크기의 평균을 취해 간단한 막대 차트로 그립니다.




SHAP 기능 중요도 플롯


SHAP 요약 플롯


일반적인 특징 중요도 막대 차트 외에도 SHAP을 사용하면 각 기능에 대한 SHAP 값의 밀도 분산 형 플롯을 사용하여 각 기능이 유효성 데이터 집합의 개인에 대한 모델 출력에 미치는 영향을 식별 할 수 있습니다. 피처는 모든 샘플에서 SHAP 값 크기의 합계로 정렬됩니다. 분산 점이 한 줄에 맞지 않으면 밀도를 보여주기 위해 겹치고 각 점의 색은 그 개체의 특징 값을 나타냅니다.




SHAP 요약 플롯


흥미로운 점은 나이 와 결혼 상태의 특징은 자본 이득 특징 보다 전체 모델에 미치는 영향이 크지 만 자본 이득 문제가 있는 샘플의 경우 연령 이나 결혼 상태 보다 더 큰 영향을 미친다는 점 입니다. 즉, 자본 이득 은 많은 양의 예측에 영향을 미치지 만, 나이 또는 결혼 상태 는 모든 예측에 더 적은 금액만큼 영향을줍니다.


SHAP 의존도


SHAP 의존도 그래프는 전체 데이터 세트에서 단일 (또는 2) 기능의 효과를 보여줍니다. 그들은 많은 샘플에 걸쳐 피처의 값 대 해당 피처의 SHAP 값을 그립니다. SHAP 의존성 플롯은 부분 의존성 플롯과 유사하지만 형상에 나타나는 상호 작용 효과를 설명하며 데이터로 지원되는 입력 공간의 영역에서만 정의됩니다. 하나의 특징 값에서의 SHAP 값의 수직적 분산은 상호 작용 효과에 의해 유도되고 가능한 다른 상호 작용을 강조하기 위해 다른 특성을 색칠에 대해 선택할 수 있습니다.


Skater 's Partial Dependence Plots와의 유사성을 알 수 있습니다!


모델 예측에 영향을 미치는 'Age'의 PDP


이 

Age

기능이 모델 예측에 미치는 영향을


살펴 보겠습니다


.




연령 기능을위한 PDP


우리가 이전에 관찰했던 것처럼. 중년 사람들은 약간 더 높은 셰이프 값을 가지며 모델의 예측 결정을 밀어서 이러한 개인이 젊은 사람들과 비교하여 더 많은 돈을 버는다고 말합니다


모델 예측에 영향을 미치는 'Education-Num'의 PDP


이 

Education-Num

기능이 모델 예측에 미치는 영향을


살펴 보겠습니다


.




Education-Num 기능을위한 PDP


고등 교육 수준은 더 높은 체장 값을 가지며, 교육 수준이 낮은 사람들에 비해이 개인이 더 많은 돈을 버는다고 모델의 예측 결정을 밀어 붙입니다.


모델 예측에 영향을 미치는 'Relationship'의 PDP


이 

Relationship

기능이 모델 예측에 미치는 영향을


살펴 보겠습니다


.




관계 특징을위한 PDP


기혼자 (남편 또는 아내)는 모델 예측 설명에서 관찰 한 것처럼 약간 더 높은 성형 가치를 지니 며 모델의 예측 결정을 내리면서 다른 사람들과 비교했을 때이 사람들이 더 많은 돈을 버는다고 말했습니다!


모델 예측에 영향을 미치는 '자본 이득'의 PDP


이 

Capital Gain

기능이 모델 예측에 미치는 영향을


살펴 보겠습니다


.




캐피탈 게인 기능을위한 PDP


'Age'와 'Capital Gain'의 기능 간 상호 작용을 보여주는 양방향 PDP와 50,000 달러 이상의 효과


하나의 특징 값에서의 SHAP 값의 수직적 분산은 상호 작용 효과에 의해 유도되고, 다른 상호 작용은 가능한 상호 작용을 강조하기 위해 색칠을 위해 선택됩니다. 여기에서 우리는 사이에 상호 작용을 참조하려고 

Age

하고


Capital Gain

사람이 양방향 부분 의존 플롯의 도움으로 더 많은 돈을하거나하지 않을 경우 예측 모델에 이어질 SHAP 값에 미치는 영향도.




나이 및 자본 이득 기능의 효과를 보여주는 양방향 PDP


더 높은 자본 이득과 더 많은 돈을 벌 수있는 가장 큰 기회를 가진 중년층 (30-50)을 높이 평가하는 것이 흥미 롭습니다!


'교육 Num'과 'Relationship'기능 간의 상호 작용을 보여주는 양방향 PDP와 50,000 달러 이상의 효과


여기에서 우리는 사이에 상호 작용을 참조하려고 

Education-Num

하고


Relationship

사람이 양방향 부분 의존 플롯의 도움으로 더 많은 돈을하거나하지 않을 경우 예측 모델에 이어질 SHAP 값에 미치는 영향도.




Education-Num 및 Relationship 기능의 효과를 보여주는 양방향 PDP


이것은 두 가지 특징이 어떤 맥락에서 유사하기 때문에 흥미 롭습니다. 우리는 남편 또는 아내의 관계 상태가 일반적으로 결혼 한 사람들이 더 많은 돈을 벌 수있는 가장 높은 기회를 가질 수 있음을 알 수 있습니다!


'결혼 상태'와 '관계'의 상호 작용 및 50,000 달러 이상에 미치는 영향을 보여주는 양방향 PDP


여기에서 우리는 사이에 상호 작용을 참조하려고 

Marital Status

하고


Relationship

사람이 양방향 부분 의존 플롯의 도움으로 더 많은 돈을하거나하지 않을 경우 예측 모델에 이어질 SHAP 값에 미치는 영향도.




혼인 상태 및 관계 특징의 효과를 보여주는 양방향 PDP


고등 교육 수준과 남편 또는 아내 (결혼 한) 사람들이 더 많은 돈을 벌 수있는 가장 높은 기회를 갖는 것을 흥미롭게 보는 것!


'연령대'와 '주당 시간대'의 기능 간 상호 작용을 보여주는 양방향 PDP와 50,000 달러 이상의 효과


여기에서 우리는 사이에 상호 작용을 참조하려고 

Age

하고


Hours per week

사람이 양방향 부분 의존 플롯의 도움으로 더 많은 돈을하거나하지 않을 경우 예측 모델에 이어질 SHAP 값에 미치는 영향도.




주당 연령 및 시간 기능을 보여주는 양방향 PDP


여기에 특별히 평범한 것은 없지만 가장 많이 일하는 중년층이 가장 많은 돈을 벌어들입니다.


결론


이 글을 읽는다면, 기계 학습 모델 해석에 대한이 거대하고 포괄적 인 튜토리얼을 진행하는 데 정말로 노력을 표합니다. 이 기사는 Explainable AI (XAI) 방향으로 나아가는 과정에서 도움이 될 수있는 최첨단 도구와 기술을 활용하는 데 도움이됩니다. Part 2 에서 배운 개념과 기술을 바탕 으로이 기사에서는 실제로 실제 데이터 세트에서 교육 된 복잡한 기계 학습 앙상블 모델에서이 모든 것을 구현했습니다. 자신 만의 모델과 데이터 세트로 이러한 프레임 워크를 시험해보고 모델 해석의 세계를 탐험 해 보시기 바랍니다!




무엇 향후 계획?


이 시리즈의 제 4 부에서는 텍스트와 같은 구조화되지 않은 데이터와 깊이있는 학습 모델에 대한 해석 모델을 작성하는 포괄적 인 가이드를 살펴볼 것입니다.


비정형 데이터 세트에 대한 실습 모델 해석


재미있는 콘텐츠를 기대해주십시오!



참고 : 이 영역에는 많은 새로운 도구와 프레임 워크가 출시되는 등 급속한 개발이 이루어졌습니다. 다른 인기있는 프레임 워크를 다룰 수있게하려는 경우 자유롭게 나에게 다가 갈 수 있습니다. 나는 확실히 관심이 있으며, 미래에 H2O의 모델 해석 능력에 대해 살펴볼 것입니다.


이 기사에서 사용 된 코드는 내 GitHub 및 대화 형 Jupyter Notebook 에서 사용할 수 있습니다 .


인간 해석 가능 기계 학습의 목적과 이유, 모델 해석의 필요성과 중요성, 그리고 범위와 기준을 다루지 않은 경우에 대비 하여 '제 1 부 - 사람이 해석 할 수있는 기계 학습의 중요성'을 확인하십시오 !


또한 Part 2 - Model Interpretation Strategies ' 에서는 모델 해석을위한 주요 전략과 관련된 본질적 개념을 볼 때 인간이 해석 할 수있는 기계 학습 방법을 다룹니다.


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari