250x250
반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- TensorFlow
- flask
- youtube data
- hadoop
- gather_nd
- tensorflow text
- Retry
- UDF
- session 유지
- airflow subdag
- requests
- API
- grad-cam
- 상관관계
- 유튜브 API
- subdag
- login crawling
- API Gateway
- GCP
- 공분산
- top_k
- integrated gradient
- Airflow
- GenericGBQException
- Counterfactual Explanations
- chatGPT
- BigQuery
- correlation
- spark udf
- XAI
Archives
- Today
- Total
데이터과학 삼학년
EBM(Explainable Boosting Machine) 본문
반응형
Explainable Boosting Machine(EBM)
- 트리기반의 순환형 gradient boosting - Generalized Additive 모델
[참고]
- 다른 알고리즘 모델보다 학습에 시간이 더 소요될 수 잇음
- glassbox 모델이라 불림
ㄴ 기존 딥러닝 모델이 blackbox모델로 불리며 내부 동작구조를 알기 어려움
ㄴ 내부가 다 보이는 glass박스 모델은 내부 동작구조를 어느정도 알수 있어서 이렇게 명명하지 않았을까?!
ㄴ 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
https://towardsdatascience.com/interpretml-another-way-to-explain-your-model-b7faf0a384f8
728x90
반응형
LIST
'Machine Learning' 카테고리의 다른 글
Inductive Learning vs Transductive Learning (1) | 2024.02.09 |
---|---|
다중공선성 확인 및 처리 방법 (0) | 2023.11.06 |
커널 함수(kernel function) 조건 및 종류 (0) | 2023.09.13 |
TensorRT for Inference (0) | 2023.09.04 |
Zero-Shot, One-Shot, Few-Shot learning (1) | 2023.08.28 |
Comments