#51 Section7 分類(4)モデルの分析(1)

>100 Views

February 06, 26

スライド概要

compare_modelsで選ばれた最良のモデルを、さらに深く「解剖」するのがplot_model関数です。わずか1行のコードで、複雑な計算結果を直感的なグラフへと変換し、モデルの正体を確認できます。

主要な3つの分析メニュー

●混同行列 ('confusion_matrix'): 予測と実績のズレを可視化します。「陽性を陰性と間違えた数」などを具体的に把握し、ミスの傾向を分析するのに最適です。

●AUC ('auc'): 予測精度を「ROC曲線」として描き出します。曲線の形状から、モデルが実用的な性能を持っているかを直感的に判断できます。

●特徴量重要度 ('feature'): どのデータ(変数)が予測に最も影響を与えたかをランキング形式で表示します。特徴量重要度の計算は、モデルの種類に応じて適切な方法が自動的に選択されます。

例えば、糖尿病の予測において「家系指数」がどれほど寄与しているかといった、ビジネス上の重要なインサイトを導き出せます。

profile-image

すべてのビジネスパーソンが意思決定プロセスにデータを活用する思考を身につけるため、まずは、データサイエンスの分析を体験していきましょう。SECIモデルの最初の段階、共同化(Socialization)からはじめていきます。 下記のブログで、ここにアップしたスライド、動画を随時、公開中です。 【ブログ】https://tutorial4datascience.blogspot.com/ 【Youtubeチャンネル】https://www.youtube.com/@DataScience_for_everyone 【Kindle】そして、このブログをまとめて書籍にしました!   https://amzn.to/4ryVppn   https://amzn.to/4pGgFb1

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

4th STEP 機械学習 前処理 Section 7 分 類(4) モデルの分析(1) Setup Compare Models Analyze Model データサイエンス チュートリアル Prediction Save Model 1

2.

4th STEP 機械学習 Section7 分類(4) モデルの分析(1) plot_model関数 引数 'confusion_matrix' 『plot_model』関数を使用すると、テストセットにおける学習済みモデルのパフォーマンスを分析できます(場合によっては、モデ ルの再学習が必要になる場合がありますがここでは、割愛します)。 plot_model(モデル名, plot='グラフの種類’) plot_modelのグラフの種類については、下記の公式ドキュメントの『Examples by module→Classification』を 参照してください。 https://pycaret.gitbook.io/docs/get-started/functions/analyze#classification 『モデル名』に「best」と記入すると、『compare_models』関数で最も性能が良かったモデル(今回はロジスティック 回帰モデル)を選択してくれます。 『グラフの種類』に「‘confusion_matrix’」と記入すると、そのモデルの性能評価の元になる「混同行列(Confusion Matrix)」 の結果を表示してくれます。 データサイエンス チュートリアル 2

3.

4th STEP 機械学習 Section7 分類(4) モデルの分析(1) plot_model関数 引数 'confusion_matrix'の出力 出力は、縦軸が診断(結果)の患者数、横軸が検査(予測)の患者数を表す混同行列(Confusion Matrix)となります。 1:糖尿病診断(実際)陽性 0:糖尿病診断(実際)陰性 https://www.analyticsvidhya.co m/blog/2021/07/diabetesprediction-with-pycaret/ 診断(結果) 「0」と「1」は、データ「diabetes」に従っていますので、 データ「diabetes」の仕様を確認してください。 1:糖尿病予測陽性 0:糖尿病予測陰性 検査(予測) データサイエンス チュートリアル 3

4.

4th STEP 機械学習 Section7 分類(4) モデルの分析(1) plot_model関数 引数 'auc' plot_model(モデル名, plot='グラフの種類') 『グラフの種類』に「'auc'」と記入すると、 ROC曲線の下の面積を表すAUC(Area Under the ROC Curve)を 表示してくれます。 データサイエンス チュートリアル 4

5.

4th STEP 機械学習 Section7 分類(4) モデルの分析(1) plot_model関数 引数 ’auc’ の出力 真陽性率(TP率) 出力は、下記のようになります。これは、前回の『compare_models』の解説の部分(Section 6 『分類(3)モデルの評 価・比較』のスライド6~8)と同様です。 偽陽性率(FP率) データサイエンス チュートリアル 5

6.

4th STEP 機械学習 Section7 分類(4) モデルの分析(1) plot_model関数 引数 ’feature' plot_model(モデル名, plot ='グラフの種類') 『グラフの種類』に「'feature'」と記入すると、特徴量重要度(feature importance)を可視化するグラフを出力して くれます。 特徴量重要度とは ●機械学習モデルが予測を行う際に、各特徴量がどれくらい重要であるかを示す指標。 ●重要度が高い特徴量は、モデルの予測に大きな影響を与えていると考えられます。 ●特徴量重要度を分析することで、モデルがどのような特徴量を重視しているか、また、どの特徴量が予測に貢献 しているかを理解することができます。 データサイエンス チュートリアル 6

7.

4th STEP 機械学習 Section7 分類(4) モデルの分析(1) plot_model関数 引数 'feature' の出力 特徴量 特徴量重要度(Variable Importance) 糖尿病家系指数 人の年齢と家族歴に基づいて糖尿病を発症 する可能性を推定する指数。高いほど、糖 尿病を発症する可能性が高くなります。 データサイエンス チュートリアル 7

8.

4th STEP 機械学習 Section7 分類(4) モデルの分析(1) 【参考】 特徴量重要度の算出方法 PyCaretでは、様々なモデルに対応した特徴量重要度の計算方法が提供されており、モデルの種類に応じて適切な方法が自動的に選択されます。さらに、特徴 量重要度を可視化します。これにより、ユーザーは複雑なコードを書くことなく、簡単に特徴量重要度を分析できます。PyCaretは、これらの情報を活用することで、 モデルの解釈や改善に役立てることができます。 主な計算方法としては、以下のものが挙げられます。 1. 決定木系モデル(ランダムフォレスト、勾配ブースティングなど) 2. 線形モデル(ロジスティック回帰、線形回帰など) ■Gini重要度(Gini Importance) ■係数(Coefficients) ・ 決定木における不純度(Gini不純度)の減少量を基に、特徴量の重要 度を計算。 ・ 特徴量がどれだけ予測の精度向上に貢献したかを評価。 ・ 線形モデルの係数の絶対値を、特徴量の重要度として扱う。 ・ 係数の大きい特徴量は、予測に大きな影響を与えていると考えられる。 ■平均不純度減少(Mean Decrease Impurity) 3. その他 ・ ランダムフォレストなどで、各決定木におけるGini重要度の平均値を計算。 ・ 特徴量の全体的な重要度を評価。 ■順列重要度(Permutation Importance) ■SHAP値(SHAP Values) ・ ゲーム理論のSHAP(SHapley Additive exPlanations)値を応用 し、各特徴量が予測にどれだけ貢献したかを計算。 ・ 特徴量の貢献度を個々の予測ごとに評価できるため、より詳細な分析が 可能。 ・ 特徴量の値をランダムに並び替えた際に、モデルの性能がどれだけ低下するかを 評価。 ・ 性能低下が大きい特徴量は、重要な特徴量であると考えられる。 データサイエンス チュートリアル 8

9.

4th STEP 機械学習 Section7 分類(4) モデルの分析(1) plot_model関数の「help」 この「help」は、あまり役に立たないので無視していきましょう。 データサイエンス チュートリアル 9