目次
1. eli5の概要
1.1 eli5とは
1.2 eli5のライブラリ
2. 実験
2.1 データロード
2.2 SVCの分類分析
2.3 eli5のモデル解釈
1. eli5の概要
1.1 eli5とは
Eli5は「Explain Like I’m 5 (私が5歳だと思って説明して)」を略したスラングです。Eli5は統合されたものを使用してさまざまな機械学習モデルを解釈するPythonライブラリです。
1.2 eli5のライブラリ
対応機械学習ライブラリ:
scikit-learn
XGBoost
LightGBM
CatBoost
lightning
sklearn-crfsuite
Keras
2. 実験
環境:Google colab
データセット:20 Newsgroups:Usenet*1から収集した約20000文書、20カテゴリのデータセットです。
モデル:SVCの分類分析
モデル解釈:eli5のTextExplainer
ライブラリのインストール
!pip install eli5 |
2.1 データロード
Scikit-learnのデータセットから、20 Newsgroupsの学習とテストのデータセットを読み込みます。
from sklearn.datasets import fetch_20newsgroups
categories = [‘alt.atheism’, ‘soc.religion.christian’, ‘comp.graphics’, ‘sci.med’] twenty_train = fetch_20newsgroups( subset=’train’, categories=categories, shuffle=True, random_state=42, remove=(‘headers’, ‘footers’), ) twenty_test = fetch_20newsgroups( subset=’test’, categories=categories, shuffle=True, random_state=42, remove=(‘headers’, ‘footers’), ) |
2.2 SVCの分類分析
SVMのモデルを学習して、モデルの精度を計算しました。0.89の精度を確認できました。
from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.svm import SVC from sklearn.decomposition import TruncatedSVD from sklearn.pipeline import Pipeline, make_pipeline
vec = TfidfVectorizer(min_df=3, stop_words=’english’, ngram_range=(1, 2)) svd = TruncatedSVD(n_components=100, n_iter=7, random_state=42) lsa = make_pipeline(vec, svd)
clf = SVC(C=150, gamma=2e-2, probability=True) pipe = make_pipeline(lsa, clf) pipe.fit(twenty_train.data, twenty_train.target) pipe.score(twenty_test.data, twenty_test.target)
|
0.8901464713715047
モデルを推論します。一番目のニュースは0.99の信頼性でsci.medを予測しました。
def print_prediction(doc): y_pred = pipe.predict_proba([doc])[0] for target, prob in zip(twenty_train.target_names, y_pred): print(“{:.3f} {}”.format(prob, target))
doc = twenty_test.data[0] print_prediction(doc)
|
0.001 alt.atheism
0.001 comp.graphics
0.995 sci.med
0.004 soc.religion.christian
2.3 eli5のモデル解釈
上記の予測結果に対して、どう判断かeli5で解釈ができます。4つの分類に対して、緑色はポジティブの影響があります。赤色はネガの影響があります。どんな言葉で判断しましたことを解釈します。
担当者:HM
香川県高松市出身 データ分析にて、博士(理学)を取得後、自動車メーカー会社にてデータ分析に関わる。その後コンサルティングファームでデータ分析プロジェクトを歴任後独立 気が付けばデータ分析プロジェクトだけで50以上担当
理化学研究所にて研究員を拝命中 応用数理学会所属