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

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

ブログ    
ブログ    
ブログ    

推薦する

...

無料の Python 機械学習コース パート 4: ロジスティック回帰アルゴリズム

ロジスティック回帰は、前世紀以来人気の手法です。カテゴリ変数と 1 つ以上の独立変数間の関係を確立し...

香港科技大学のタン・ピン氏のチームが3D生成における重要な問題を突破し、多頭モンスターの出現を防止

生成モデルは画像生成の分野で大きな成功を収めてきましたが、この技術を 3D 分野に拡張するには常に多...

このおもちゃからヒントを得たアクチュエータは、ソフトロボットにジャンプする能力を与える可能性がある。

[[327163]]海外メディアの報道によると、ポッパーという、押すと飛び上がるおもちゃで遊んだこ...

2021年第2四半期の人工知能へのベンチャーキャピタル投資は200億ドルを超え、新たな記録を樹立した。

CB Insightsが発表した2021年第2四半期のAI(人工知能)レポートによると、疫病の刺激...

産業用ロボットは2021年に44.9%成長し、2022年の成長率は低下すると予想されている

産業用ロボットの年間成長率は44.9%でしたが、累積成長率は月ごとに低下しました。 Windのデータ...

IEEEの論文では、画像強調を実現するための放射状変換を提案している

[[202259]]最近、「少量のデータによるニューラル ネットワークのトレーニング - ドラフト」...

「人間の顔認識」は事故が多発していますが、「豚の顔認識」は信頼性が高いです!アリババは正しい賭けをした

科学技術の発展に伴い、人々は次第にプライバシーに気を配るようになり、「顔認識」という新興技術に対して...

マッキンゼー:人工知能の最大の課題と機会

最近、多くの専門家とコミュニケーションをとる中で、人工知能の3つの重要なビジネス面が徐々に明らかにな...

...

Python 機械学習チュートリアル

この機械学習チュートリアルでは、機械学習の基本および中級の概念について説明します。初心者の学生と働く...

Google Cloud AI が機械学習にどのように役立つかを包括的に説明します

[51CTO.com クイック翻訳] 調査によると、Google Cloud AI および機械学習プ...

海外の子どもたちはみんなプログラミングを学んでいますが、彼らが学んでいるのはプログラミングではなく、プログラミング的思考なのです!

人工知能が話題になるにつれ、コーディングも親たちの注目の的になっています。実は、子どもにプログラミン...