解釈可能な機械学習のための Python ライブラリ

解釈可能な機械学習のための Python ライブラリ

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式サイトにアクセスして許可を申請してください。

AI の偏りに関する懸念が高まるにつれ、モデルによって生成された予測とモデル自体の仕組みを説明できる実践者の能力がますます重要になります。幸いなことに、上記の問題を解決するために多くの Python ツールキットが開発されています。以下では、機械学習モデルの翻訳と解釈のための既存の確立されたツールキット 4 つについて簡単に説明します。

これらのツールキットは pip 経由でインストールでき、包括的なドキュメントが用意されており、解釈可能性を向上させるために視覚化が重視されています。

イエローブリック

このツールキットは本質的には scikit-learn の拡張機能であり、非常に実用的で美しい機械学習モデルの視覚化ツールを提供します。 `visualiser` オブジェクトはコア インターフェイスであり、scikit-learn 推定器であるため、scikit-learn ワークフローに精通している場合は、非常に馴染み深いものになります。

この視覚化ツールは、モデルの選択、機能の重要性、モデルのパフォーマンス分析などの側面をカバーします。

いくつかの短い例を見てみましょう。

ツールキットは pip 経由でインストールできます。

  1. pip インストール yellowbrick

ツールキットのいくつかの機能を説明するために、scikit-learn のワイン認識データセットを使用します。このデータセットには、13 個の機能と 3 つのターゲット カテゴリが含まれています。 scikit-learn 経由で直接ロードできます。以下のコードでは、データセットをインポートし、それを pandas データフレームに変換します。データセットは、他のデータ処理を行わずにモデルを直接トレーニングするために使用できます。

  1. pandasをpdとしてインポートする
  2. sklearnからデータセットをインポートする
  3. wine_data = データセット.load_wine()
  4. df_wine = pd.DataFrame(wine_data.data、列 = wine_data.feature_names)
  5. df_wine[ 'ターゲット' ] = pd.Series(wine_data.target)

Scikit-learn は、データをさらにテスト セットとトレーニング セットに分割するために使用されます。

  1. pandasをpdとしてインポートする
  2. sklearnからデータセットをインポートする
  3. wine_data = データセット.load_wine()
  4. df_wine = pd.DataFrame(wine_data.data、列 = wine_data.feature_names)
  5. df_wine[ 'ターゲット' ] = pd.Series(wine_data.target)

次に、yellowbrick ビジュアライザーを使用して、特徴間の相関関係を観察します。

  1. pandasをpdとしてインポートする
  2. sklearnからデータセットをインポートする
  3. wine_data = データセット.load_wine()
  4. df_wine = pd.DataFrame(wine_data.data、列 = wine_data.feature_names)
  5. df_wine[ 'ターゲット' ] = pd.Series(wine_data.target)

ここで、ランダム フォレスト分類器を適合させ、別のビジュアライザーを通じてそのパフォーマンスを評価します。

  1. yellowbrick.classifier から ClassificationReportをインポートします
  2. sklearn.ensemble から RandomForestClassifierをインポートします
  3. モデル = RandomForestClassifier()
  4. ビジュアライザー = ClassificationReport(モデル、サイズ=( 1080720 ))
  5. ビジュアライザー.fit(X_train, y_train)
  6. visualizer.score(X_test, y_test)
  7. ビジュアライザー.poof()

エリ5

ELI5 は、機械学習モデルのデバッグや、それらが生成する予測の解釈に非常に役立つ、もう 1 つの視覚化ツールキットです。 scikit-learn、XGBoost、Keras など、ほとんどの一般的な Python 機械学習ツールキットで使用できます。

ELI5 を使用して、上でトレーニングしたモデルの特徴の重要度を観察してみましょう。

  1. eli5をインポートする
  2. eli5.show_weights(モデル、feature_names = X.columns.tolist())

デフォルトでは、`show_weights` メソッドは GAIN を使用して重みを計算しますが、他の `importance_type` を渡して特徴の重要度の計算を制御することもできます。

また、`show_prediction` を使用して、特定のサンプルの予測結果の理由を観察することもできます。

  1. eli5からshow_predictionをインポートshow_prediction(model, X_train.iloc[ 1 ], feature_names = X.columns.tolist(),
  2. show_feature_values=True)

ライム

LIME (Model-Independent Local Interpretable) は、モデルによって行われた予測を説明するためのツールキットです。 LIME は、さまざまな分類器の単一サンプル予測の説明をサポートし、scikit-learn をネイティブにサポートします。

LIME を使用して、上でトレーニングしたモデルからの予測の一部を解釈してみましょう。

LIMEはpipを使ってインストールできます

  1. pip インストール lime

まず、トレーニング データセット配列、モデルで使用される機能名、およびターゲット変数のカテゴリ名で初期化される説明を構築します。

  1. lime.lime_tabularをインポートする
  2. 説明者 = lime.lime_tabular.LimeTabularExplainer(X_train.values、feature_names=X_train.columns.values.tolist()、class_names=y_train.unique())

次に、モデルを使用してサンプルを予測することを表すラムダ関数を作成します。こちらの優れた、より詳細な LIME チュートリアルをご覧ください。まず、トレーニング データセット配列、モデルで使用される機能名、およびターゲット変数のカテゴリ名で初期化される説明を構築します。

  1. predict_fn = ラムダ x: model.predict_proba(x).astype( float )

次に、指定したサンプルの予測結果を説明するために、Explainer を使用します。結果は以下の通りです。 LIME は視覚化結果を使用して、得られた予測結果に特徴がどのように影響するかを示します。

  1. exp = explainer.explain_instance(X_test.values[ 0 ], predict_fn, num_features= 6 )
  2. exp.show_in_notebook(show_all=False)

MLエクステンド

このツールキットには、機械学習で使用できる一連のユーティリティ関数が含まれています。スタッキングと投票、モデル評価、特徴抽出、特徴エンジニアリング、視覚化を通じて構築された分類器が含まれます。ツールキットのドキュメントに加えて、このホワイト ペーパーもツールキットの詳細を理解するための優れたリソースです。

MLxtend を使用して、アンサンブル分類器の分類境界とそれを構成するサブ分類器の分類境界を比較してみましょう。

同様に、MLxtend も pip 経由でインストールできます。

  1. pip インストール mlxtend

いくつかのツールキットを紹介します。

  1. mlxtend.plotting から plot_decision_regionsをインポートします
  2. mlxtend.classifier から EnsembleVoteClassifierをインポートします
  3. matplotlib.gridspec を gridspec としてインポートします
  4. itertoolsをインポートする
  5. sklearnからmodel_selectionをインポート
  6. sklearn.linear_model から LogisticRegressionをインポートします
  7. sklearn.naive_bayes から GaussianNBをインポートします
  8. sklearn.ensemble から RandomForestClassifierをインポートします

次のビジュアライザーは、一度に 2 つの機能のみを入力として受け入れることができるため、配列 ['proline', 'color_intensity'] を作成します。上記の ELI5 を使用して分析した場合、これら 2 つの特徴は最も重要な特徴であるためです。いくつかのツールキットを紹介します。

  1. X_train_ml = X_train[[ 'プロリン' , '色の強度' ]].値
  2. y_train_ml = y_train.値

次に、いくつかの分類器を作成し、それをトレーニング データに適合させ、MLxtend を使用して決定境界を視覚化します。出力は以下のコードから得られます。

  1. clf1 = ロジスティック回帰(ランダム状態= 1 )
  2. clf2 = ランダムフォレスト分類子(ランダム状態 = 1 )
  3. clf3 = ガウスNB()
  4. eclf = EnsembleVoteClassifier(clfs=[clf1, clf2, clf3], 重み=[ 1 , 1 , 1 ])
  5. 値 = 1.5
  6. 幅 = 0.75
  7. gs = グリッドスペック.GridSpec( 2 , 2 )
  8. 図 = plt.figure(図サイズ=( 10 , 8 ))
  9. labels = [ 'ロジスティック回帰''ランダムフォレスト''ナイーブベイズ''アンサンブル' ]
  10. clf 、lab、grd を zip([clf1、clf2、clf3、eclf] に格納します。
  11. ラベル、
  12. itertools.product([ 0 , 1 ], 繰り返し= 2 )):
  13. clf.fit(X_train_ml、y_train_ml) 関数
  14. ax = plt.subplot(gs[grd[ 0 ], grd[ 1 ]])
  15. 図 = plot_decision_regions(X=X_train_ml、y=y_train_ml、clf=clf)
  16. plt.title(ラボ)

上記は、モデルの解釈可能性と視覚化ツールキットの包括的なリストではありません。このブログ投稿には、チェックする価値のある他の便利なツールキットのリストが含まれています。

読んでくれてありがとう!

<<:  Pythonでシンプルだが強力な顔認識システムを書く

>>:  自然言語処理がデータ分析の世界をどう変えるか

ブログ    
ブログ    
ブログ    

推薦する

データセンター市場はAIの爆発的な増加に向けて準備を整えている

最近、人工知能分野での成功事例や投資発表が急増し、ビジネス界の注目と関心を集めています。最近の AI...

Keras の創設者: ディープラーニング関連の仕事は過去 6 か月で減少

[[340767]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...

...

人民日報:教室規律における顔認識は目的ではなく手段

どの学校も生徒をより深く理解したいと考えていますが、テクノロジーを駆使した解決策の中には、満場一致で...

医療における人工知能: COVID-Net プラットフォームを使用してコロナウイルスを診断する方法

COVID-NetとオープンソースのAIベースのプラットフォームは、コロナウイルスの発生によって引き...

グラフなしの ICLR'24 のための新しいアイデア! LaneSegNet: 車線セグメンテーションを考慮したマップ学習

序文と著者の個人的な理解自動運転システムの下流アプリケーションにとって重要な情報である地図は、通常、...

...

調査によると、ヨーロッパ人はロボットに対してますます懐疑的になっている

海外メディアの報道によると、ヨーロッパ人は5年前よりもロボットに対して保守的になっていることが調査で...

...

機械学習の背後にある数学的な柱を理解するには、この 5 冊の本が役立ちます。

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...

...

キングス・カレッジ・ロンドンとグラクソ・スミスクラインが人工知能技術に基づくがん研究で協力

海外メディアの報道によると、9月30日、キングス・カレッジ・ロンドンと世界的な製薬会社グラクソ・スミ...

ローコード機械学習ツール

機械学習は、ビジネスや世界中のさまざまな問題の解決に役立つ可能性があります。通常、機械学習モデルを開...

対話 | QingCloud CTO: AI が到来し、基本的なクラウド サービス プロバイダーもそれに備える必要があります。

[51CTO記者の李玲玲が北京からレポート] 真夏が到来し、人工知能も北京の天気のように、より暑い...

将来の旅行に関する最初の質問:自動運転による交通渋滞の解決策は本当に実現可能でしょうか?

交通渋滞問題は北京、上海、広州の都市脳血栓症となっている。我々の巧妙な統治の下では、都市部の道路渋滞...