본문 바로가기
■ 칼퇴를 위한 파이썬 : 사례

파이썬으로 머신러닝하기: 예측 모델 해석

by 포탈메이커 2023. 7. 22.

파이썬으로 머신러닝하기: 예측 모델 해석

머신러닝은 데이터를 활용하여 예측 모델을 구축하는 기술로, 파이썬은 이러한 머신러닝 작업을 위한 강력한 도구로 사용됩니다. 하지만 예측 모델을 만들고 나면, 그 모델이 어떻게 예측을 수행하고 있는지 이해하고 해석하는 것은 종종 도전적인 과제입니다. 이번 포스팅에서는 파이썬을 사용하여 예측 모델을 해석하는 방법에 대해 알아보겠습니다.

모델 설명력 확인하기

머신러닝 모델의 설명력을 확인하는 방법 중 하나는 변수의 중요도를 살펴보는 것입니다. 예를 들어, 회귀 모델의 경우 각 독립 변수의 계수를 통해 변수의 중요도를 파악할 수 있습니다. 다른 모델 유형의 경우에도 비슷한 접근 방식을 사용할 수 있습니다.

파이썬에서는 sklearn 라이브러리를 활용하여 모델 설명력을 확인할 수 있습니다. feature_importances_ 속성을 통해 변수의 중요도를 확인할 수 있습니다.

```python from sklearn.ensemble import RandomForestClassifier import pandas as pd

데이터 로드

data = pd.read_csv("data.csv")

독립 변수와 종속 변수 분리

X = data.drop("target", axis=1) y = data["target"]

랜덤 포레스트 모델 생성

model = RandomForestClassifier()

모델 훈련

model.fit(X, y)

변수의 중요도 확인

importance = pd.Series(model.featureimportances, index=X.columns).sort_values(ascending=False) print(importance) ```

이렇게 하면 각 변수의 중요도를 내림차순으로 확인할 수 있습니다. 변수의 중요도를 알 수 있으면, 예측 결과에 영향을 주는 독립 변수를 파악할 수 있습니다.

모델 해석을 위한 SHAP

SHAP(SHapley Additive exPlanations)은 머신러닝 모델의 해석력을 높이기 위해 개발된 라이브러리로, 모델의 특징별 기여도를 분석하는 데 사용됩니다. SHAP은 예측의 변동성(베이지안 관점에서의)을 각 특징이 기여한 정도로 분해하여 설명하는 개념입니다.

파이썬에서는 shap 라이브러리를 활용하여 SHAP 값을 계산할 수 있습니다. KernelExplainer 클래스를 사용하면 모델의 예측에 기여하는 특징별 중요도를 계산할 수 있습니다.

```python import shap

모델 생성

model = RandomForestClassifier()

SHAP 값 계산을 위한 explainer 생성

explainer = shap.KernelExplainer(model.predictproba, Xtrain)

특징별 중요도 계산

shapvalues = explainer.shapvalues(X_test)

결과 출력

shap.summaryplot(shapvalues, Xtest, plottype="bar") ```

위 코드를 실행하면, 각 특징이 예측에 기여한 정도를 바 차트로 확인할 수 있습니다. 중요도가 높은 순으로 정렬되어 있어 어떤 변수가 가장 큰 영향을 주는지 알 수 있습니다.

모델 해석 시각화

머신러닝 모델의 예측을 시각적으로 분석하는 데는 여러 가지 방법이 있습니다. 이중에서 가장 대표적인 방법은 'LIME(Local Interpretable Model-agnostic Explanations)'입니다. LIME은 인스턴스 수준의 모델 해석을 제공하여 전체 모델의 예측 결과를 설명할 수 있는 개별 예제를 찾는 데 사용됩니다.

파이썬에서는 lime 라이브러리를 활용하여 LIME을 쉽게 사용할 수 있습니다. 예측값을 해석하고자 하는 인스턴스와 해석 결과의 설명을 출력할 수 있습니다.

```python import lime import lime.lime_tabular import numpy as np

LIME 모델 생성

explainer = lime.limetabular.LimeTabularExplainer(np.array(Xtrain), featurenames=Xtrain.columns, class_names=['0', '1'])

예측 설명 생성

exp = explainer.explaininstance(Xtest.iloc[0], model.predictproba, numfeatures=len(X_train.columns))

설명 결과 출력

exp.showinnotebook(show_table=True) ```

위 코드를 실행하면 Jupyter Notebook에서 해당 인스턴스의 예측 결과를 해석할 수 있습니다. LIME을 사용하면 모델의 예측 결과를 더욱 명확하게 이해할 수 있습니다.

마치며

이번 포스팅에서는 파이썬을 사용하여 머신러닝 모델을 해석하는 방법에 대해 알아보았습니다. 변수의 중요도를 확인하고 SHAP을 통해 특징별 기여도를 분석하는 방법, 그리고 LIME을 활용하여 모델 예측 결과를 설명하는 방법을 배웠습니다. 이러한 방법들을 통해 예측 모델을 해석하고, 예측에 대한 이해도를 높일 수 있습니다.