데이터과학 삼학년

EBM(Explainable Boosting Machine) 본문

Machine Learning

EBM(Explainable Boosting Machine)

Dan-k 2023. 9. 18. 09:00
반응형

Explainable Boosting Machine(EBM)

- 트리기반의 순환형 gradient boosting - Generalized Additive 모델

[참고]

- 다른 알고리즘 모델보다 학습에 시간이 더 소요될 수 잇음

- glassbox 모델이라 불림

  ㄴ 기존 딥러닝 모델이 blackbox모델로 불리며 내부 동작구조를 알기 어려움

  ㄴ 내부가 다 보이는 glass박스 모델은 내부 동작구조를 어느정도 알수 있어서 이렇게 명명하지 않았을까?!

 

source : https://towardsdatascience.com/interpretml-another-way-to-explain-your-model-b7faf0a384f8

  ㄴ model-agnostic에 맞게 의역해보면, Model에 관계없이 적용가능한 방법론

- 기존 boosting 방식으로 학습시키나, Xi와 y간의 관계를 추가함수를 통해 정의함으로서 비선형성 문제도 해결할 수 있도록 고안

 

학습방식

- feature를 한개씩 쓰면서 residual fitting방식으로 학습시키는 방식

  ㄴ feature의 순서는 중요하지 않음

- 각 feature별 tree가 완성되면 feature별 트리를 합친다.

 

 

코드

from interpret import set_visualize_provider
from interpret.provider import InlineProvider
set_visualize_provider(InlineProvider())


import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_auc_score

from interpret.glassbox import ExplainableBoostingClassifier
from interpret import show

df = pd.read_csv(
    "https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data",
    header=None)
df.columns = [
    "Age", "WorkClass", "fnlwgt", "Education", "EducationNum",
    "MaritalStatus", "Occupation", "Relationship", "Race", "Gender",
    "CapitalGain", "CapitalLoss", "HoursPerWeek", "NativeCountry", "Income"
]
X = df.iloc[:, :-1]
y = df.iloc[:, -1]

seed = 42
np.random.seed(seed)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=seed)

ebm = ExplainableBoostingClassifier()
ebm.fit(X_train, y_train)

auc = roc_auc_score(y_test, ebm.predict_proba(X_test)[:, 1])
print("AUC: {:.3f}".format(auc))
## global surrogate
show(ebm.explain_global())
# local surrogate
show(ebm.explain_local(X_test[:5], y_test[:5]), 0)

참조

https://interpret.ml/docs/ebm.html

 

Explainable Boosting Machine — InterpretML documentation

Explainable Boosting Machine Links to API References: ExplainableBoostingClassifier, ExplainableBoostingRegressor See the reference paper for full details [1]. Link Summary Explainable Boosting Machine (EBM) is a tree-based, cyclic gradient boosting Genera

interpret.ml

https://towardsdatascience.com/interpretml-another-way-to-explain-your-model-b7faf0a384f8

 

InterpretML: Another Way to Explain Your Model

An overview of the InterpretML package, which offers new explainability tools along side existing ones.

towardsdatascience.com

 

728x90
반응형
LIST
Comments