簡潔で透明性、正確な予測モデリングのためのPythonパッケージ。
すべてのsklearn互換性があり、使いやすい。
NLPでの解釈可能性については、新しいパッケージをご覧ください:imodelsx
ドキュメント•デモノートブック
最新の機械学習モデルはますます複雑になっており、多くの場合、解釈が難しくなっています。このパッケージは、すべてSCIKIT-LEARNと互換性のある最先端の解釈可能なモデルをフィッティングおよび使用するためのシンプルなインターフェイスを提供します。これらのモデルは、多くの場合、ブラックボックスモデル(ランダムフォレストなど)をより単純なモデル(ルールリスト)に置き換えることができ、すべての予測精度を犠牲にすることなく、解釈可能性と計算効率を改善します。分類器またはレグレッサーをインポートするだけで、標準のSCIKIT-LEARNモデルと同じように、 fitおよびpredict方法を使用します。
from sklearn . model_selection import train_test_split
from imodels import get_clean_dataset , HSTreeClassifierCV # import any imodels model here
# prepare data (a sample clinical dataset)
X , y , feature_names = get_clean_dataset ( 'csi_pecarn_pred' )
X_train , X_test , y_train , y_test = train_test_split (
X , y , random_state = 42 )
# fit the model
model = HSTreeClassifierCV ( max_leaf_nodes = 4 ) # initialize a tree model and specify only 4 leaf nodes
model . fit ( X_train , y_train , feature_names = feature_names ) # fit model
preds = model . predict ( X_test ) # discrete predictions: shape is (n_test, 1)
preds_proba = model . predict_proba ( X_test ) # predicted probabilities: shape is (n_test, n_classes)
print ( model ) # print the model ------------------------------
Decision Tree with Hierarchical Shrinkage
Prediction is made by looking at the value in the appropriate leaf of the tree
------------------------------
|--- FocalNeuroFindings2 <= 0.50
| |--- HighriskDiving <= 0.50
| | |--- Torticollis2 <= 0.50
| | | |--- value: [0.10]
| | |--- Torticollis2 > 0.50
| | | |--- value: [0.30]
| |--- HighriskDiving > 0.50
| | |--- value: [0.68]
|--- FocalNeuroFindings2 > 0.50
| |--- value: [0.42]
pip install imodelsでインストールします(ヘルプについてはこちらを参照)。
ドキュメント?研究論文?参照コードの実装
| モデル | 参照 | 説明 |
|---|---|---|
| ルールフィットルールセット | 、?、? | 意思決定ツリーから抽出されたルールにまばらな線形モデルに適合します |
| スコープルールセット | 、? | グラデーションブーストされた木からルールを抽出し、それらを推測し、 次に、OOB精度に基づいてそれらを線形に結合します |
| ブーストされたルールセット | 、?、? | Adaboostを使用して、一連のルールに順番に適合します |
| スリッパルールセット | 、? | スリッパで一連のルールを順次学習します |
| ベイジアンルールセット | 、?、? | ベイジアンサンプリング(遅い)で設定された簡潔なルールを見つける |
| 最適なルールリスト | 、?、? | スパースのグローバル最適化を使用したルールリスト(corels) |
| ベイジアンルールリスト | 、?、? | ベイジアンサンプリング(スロー)を使用したコンパクトルールリスト分布に適合する |
| 貪欲なルールリスト | 、? | カートを使用して、ツリーではなくリストに適合します(単一のパスのみ) |
| Onerルールリスト | 、? | 適合ルールリストは、1つの機能のみに制限されています |
| 最適なルールツリー | 、?、? | スパース(GOSDT)のグローバルな最適化を使用して簡潔な木に適合する |
| 貪欲なルールツリー | 、?、? | カートを使用して貪欲に木に適合します |
| C4.5ルールツリー | 、?、? | C4.5を使用して貪欲に木に適合します |
| タオルールツリー | 、? | 交互の最適化を使用してツリーに適合します |
| 反復ランダム 森 | 、?、? | ランダムフォレストに繰り返しフィットし、機能を与えます 重要性が高く、選択される可能性が高くなります |
| スパース整数 線形モデル | 、? | 整数係数を備えたスパース線形モデル |
| ツリーゲーム | 、?、? | 一般化された添加剤モデルは、短いブーストツリーに適合します |
| 貪欲な木 合計(図) | 、ㅤ?? | 合計ルールが非常に少ない小さな木の合計(図) |
| 階層 収縮ラッパー | 、? | 決定ツリー、ランダムフォレスト、または 超高速の事後正規化を備えたグラデーションブーストアンサンブル |
| RF+(MDI+) | 、? | 柔軟なランダムフォレストベースの機能の重要性 |
| 蒸留 ラッパー | ブラックボックスモデルを訓練し、 次に、解釈可能なモデルに蒸留します | |
| オートルラッパー | 解釈可能なモデルを自動的に取り付けて選択します | |
| その他のモデル | ⌛ | (すぐに来ます!)軽量ルール誘導、mlrules、... |
デモはノートブックフォルダーに含まれています。
imodelsを使用する例を示しています上記のモデルの最終的な形式は、次の形式のいずれかを取ります。これは、理解が簡単で高度に予測的であることを目的としています。
| ルールセット | ルールリスト | ルールツリー | 代数モデル |
|---|---|---|---|
さまざまなモデルとアルゴリズムは、最終的な形式だけでなく、モデリング中に行われた異なる選択でも異なります。
| ルール候補生成 | ルール選択 | 後処理をルールします |
|---|---|---|
さまざまなモデルがさまざまな機械学習タスクをサポートしています。さまざまなモデルの現在のサポートを以下に示します(これらのモデルはそれぞれimodelsから直接インポートできます(例: from imodels import RuleFitClassifier )。
| モデル | バイナリ分類 | 回帰 | メモ |
|---|---|---|---|
| ルールフィットルールセット | RuleFitClassifier | rulefitregressor | |
| スコープルールセット | Skoperulesclassifier | ||
| ブーストされたルールセット | BoostedRuleSclassifier | BoostedRulesRegressor | |
| スリッパルールセット | SlipperClassifier | ||
| ベイジアンルールセット | BayesianRuleSetClassifier | 大きな問題に失敗します | |
| 最適なルールリスト(corels) | OptimalRuleRistClassifier | コレールが必要であり、大きな問題に失敗します | |
| ベイジアンルールリスト | BayesianRulelistClassifier | ||
| 貪欲なルールリスト | greedyrulelistclassifier | ||
| Onerルールリスト | OnerClassifier | ||
| 最適ルールツリー(GOSDT) | OptimalTreeClassifier | GOSDTが必要であり、大きな問題に失敗します | |
| 貪欲なルールツリー(カート) | greedytreeclassifier | greedytreeregressor | |
| C4.5ルールツリー | C45TREECLASSIFIER | ||
| タオルールツリー | taotreeclassifier | Taotreeregressor | |
| 反復ランダムフォレスト | IRFCLASSIFIER | IRFが必要です | |
| スパース整数線形モデル | SlimClassifier | Slimregressor | 速度に追加の依存関係が必要です |
| ツリーゲーム | treegamclassifier | Treegamregressor | |
| 貪欲な木の合計(図) | イチジク | イチジクのリグレッサー | |
| 階層収縮 | hstreeclassifiercv | hstreeregressorcv | Sklearnツリーベースのモデルをラップします |
| 蒸留 | 蒸留再生器 | sklearn互換モデルをラップします | |
| Automlモデル | AutoInterStableClassifier️ | AutoInterpletableReGressor® |
| 離散剤 | 参照 | 説明 |
|---|---|---|
| mdlp | 、?、? | エントロピー最小化ヒューリスティックを使用して離散化します |
| 単純 | 、? | 単純なKbins離散化 |
| ランダムフォレスト | ランダムな森林分割の人気に基づいてビンに離散化します |
imodelsで開発して遊んだ後、既存の解釈可能なモデルの制限を克服するためのいくつかの新しいモデルを開発しました。
?紙、 ?役職、 ?引用
高速解釈可能な貪欲な木の合計(図)は、簡潔なルールベースのモデルを適合させるためのアルゴリズムです。具体的には、イチジクはカートを一般化して、合計で柔軟な数の木を同時に栽培します。すべての木の分割の総数は、事前に指定されたしきい値によって制限され、モデルを解釈可能に保つことができます。幅広い現実世界のデータセットにわたる実験では、イチジクがわずか数分の分割(20未満)に制限されている場合、最先端の予測性能を達成することが示されています。
イチジクモデルの例。イチジクは、柔軟な数の木で木の合計を学びます。その予測を行うために、各ツリーからの結果を合計します。
?紙(ICML 2022)、?役職、 ?引用
階層収縮は、決定ツリー(またはランダムフォレストなどのツリーベースのアンサンブル)で機能する非常に高速な事後正規化方法です。ツリー構造を変更せず、代わりに、各ノードの予測を祖先のサンプル平均に向けて縮小することでツリーを正規化します(単一の正規化パラメーターを使用)。多種多様なデータセットにわたる実験は、階層的な収縮により、個々の意思決定ツリーと意思決定ツリーアンサンブルの予測パフォーマンスが大幅に向上することが示されています。
HSの例。 HSは、各ノードを親に縮小することにより、あらゆる意思決定ツリーに事後正則化を適用します。
?紙、 ?役職、 ?引用
MDI+は、ランダムフォレストの不純物(MDI)の重要性スコアの一般的な平均減少を一般化する新しい機能の重要性フレームワークです。その中心で、MDI+は、最近発見された線形回帰と決定ツリーの間の接続を拡張します。そうすることで、MDI+は、実務家が(1)データ/問題構造に特徴の重要性計算を調整できるようにし、(2)決定ツリーの既知のバイアスを緩和するために追加機能または知識を組み込むことができます。実際のデータケーススタディと広範な実際のDATAにインスパイアされたシミュレーションの両方で、MDI+は、実質的なマージンによる一般的に使用される機能の重要性測定(MDI、順列ベースのスコア、およびTreeshapなど)を上回ります。
アカデミックな仕事で使用する場合は、パッケージを引用してください:)
@ software {
imodels2021 ,
title = { imodels : a python package for fitting interpretable models },
journal = { Journal of Open Source Software },
publisher = { The Open Journal },
year = { 2021 },
author = { Singh , Chandan and Nasseri , Keyan and Tan , Yan Shuo and Tang , Tiffany and Yu , Bin },
volume = { 6 },
number = { 61 },
pages = { 3192 },
doi = { 10.21105 / joss.03192 },
url = { https : // doi.org / 10.21105 / joss.03192 },
}