解釈可能な機械学習のための 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でシンプルだが強力な顔認識システムを書く

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

ブログ    
ブログ    
ブログ    

推薦する

クローズドループへ! DriveMLM: LLM と自動運転行動計画の完璧な組み合わせ!

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

...

2024年の製造業の現状:完全デジタル化

世界全体、特に製造業は、パンデミック中に発生した問題や数年前の大規模なサプライチェーンの混乱から脱し...

ディープラーニングによる時系列モデルの評価

技術概要:今回は主に教師なし特徴学習とディープラーニングの最近の発展と、時系列モデル問題におけるそれ...

AIとIoTが健康や医療のスマートイノベーションに貢献

中国の医療サービス市場の規模は巨大です。中国の医療サービス業界は、国家政策の推進により、デジタル化と...

計算能力≠知恵! MIT教授の「意識の源」に関する新理論:人間の認知はコンピューティングとは何の関係もない

[[432064]]長い間、多くの学者は、ディープラーニングと人工ニューラルネットワークのインスピレ...

レノボグループが従業員の払い戻しの内部監査を実施できるようRPAロボットを導入

数万人の従業員を抱える大企業にとって、従業員の払い戻しに関する内部監査の難しさは想像に難くありません...

IoTとAIの融合:予知保全の新たなパラダイム

モノのインターネット (IoT) と人工知能 (AI) の融合により、予知保全における新たなパラダイ...

ChatGPTは時間管理の達人になるお手伝いをします

時間管理は、働く人にとって非常に重要です。適切な管理は、仕事の効率と生活の質を大幅に向上させます。タ...

...

...

ニューラルネットワークの背後にあるシンプルな数学

[[376715]] > Unsplash の Alina Grubnyak による画像ニュー...

AI言語モデルにおける幻覚バイアスのリスク

音声アシスタントからチャットボットまで、人工知能 (AI) はテクノロジーとのやり取りの方法に革命を...

...

機械学習プロジェクトにおけるデータの前処理とデータ ラングリング

要点一般的な機械学習/ディープラーニング プロジェクトでは、データ準備が分析パイプライン全体の 60...