#60 Section 15 回帰(4) モデルの分析(1)

-- Views

February 09, 26

スライド概要

PyCaretのplot_model関数を使えば、学習済みモデルのパフォーマンスを直感的なグラフで分析できます。主要な3つのプロットを紹介します。

●残差プロット ('residuals')実測値と予測値の差(残差)を確認します。左の散布図で残差が0を中心にランダムに分散し、右のヒストグラムが正規分布(釣鐘型)に近いほど、データの構造を正しく捉えた良好なモデルと言えます。

●予測誤差プロット ('error')実測値と予測値を比較します。データ点が傾き1の「理想線(identity)」に近いほど精度が高く、決定係数(R2)などの指標も併せて確認できます。

●特徴量重要度 ('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 15 回 帰(4) モデルの分析(1) Setup Compare Models Analyze Model データサイエンス チュートリアル Prediction Save Model 1

2.

4th STEP 機械学習 Section 15 回帰(4) モデルの分析(1) plot_model関数 前のSectionでは、『compare_models』関数で評価が高かったモデル『catboost』を『best』と宣言しましたが、今回は、その 『best』というモデルを分析していきましょう。 『plot_model』関数を使用すると、テストセットにおける学習済みモデルのパフォーマンスをグラフによって分析できます。 plot_model(モデル名, plot='グラフの種類’) plot_modelのグラフの種類についての詳細は、下記の公式ドキュメントの『Examples by module→Regression』 を参照してください。 https://pycaret.gitbook.io/docs/get-started/functions/analyze#regression データサイエンス チュートリアル 2

3.

4th STEP 機械学習 Section 15 回帰(4) モデルの分析(1) plot_model関数 引数 'residuals' さて、続けてPyCaretの公式チュートリアルを見ていきましょう。 『モデル名』は、「best」を指定しています。 『グラフの種類』には、「'residuals'」を指定しています。これにより、「残差プロット(Residuals Plot)」を出力します。 データサイエンス チュートリアル 3

4.

4th STEP 機械学習 Section 15 回帰(4) モデルの分析(1) plot_model関数 引数 ‘residuals’ の出力 実行して、出力を見てみましょう、残差プロットが表示されます。残差は、実際の値と予測値の差のことです。以下の場合、 モデルはデータの構造を適切に捉えており、回帰分析の仮定がおおむね満たされていると判断できます。 ●残差が0の周りに均等に分散している(散布図) ●残差に特定のパターンが見られない(散布図) ●残差の分布が正規分布に近い(ヒストグラム) 散布図(左側) 横軸: モデルによる予測値(Predicted Values) 縦軸: 残差(Residuals、実際の値と予測値の差) 残 差 この散布図により、予測値の大きさに関わらず残差がランダムに 分布しているか(パターンがないか)を確認します。理想的な モデルでは、残差は横軸の0の周りに均等に散らばっています。 ヒストグラム(右側) 散布図の残差の分布を示すヒストグラムが表示されます。 モデルによる予測値 回帰分析の基本的な仮定として、残差は正規分布に従うこと が望ましいため、ヒストグラムが釣鐘型(正規分布に近い形) になっているかを確認します。 4 データサイエンス チュートリアル

5.

4th STEP 機械学習 Section 15 回帰(4) モデルの分析(1) plot_model関数 引数 'error‘ と出力 plot_model(モデル名, plot='グラフの種類') 次は、 『グラフの種類』に「‘error’」と記入しています。横軸に実際の 値、縦軸に予測値をプロットしたグラフが表示されます。これを、予測誤 差プロットと言います。予測が完全であれば、傾き1の直線上に点が乗 り、点が傾き1の直線周辺に集まるモデルが良いモデルとなります。 左上の凡例には、下記の3つが記載されています。 予 測 値 R2 → 決定係数。目的変数が十分に説明されているかどうかを数値 化したもの。 best fit → グラフ上のデータ点(実際の値と予測値のペア)に最も よく適合するように引かれた直線です。 identity → 傾きが 1 の直線を表します。理想的な予測を表す線 になります。 散布図の点がidentityの線の周りに集まり、かつbest fitの線が identityの線に重なっている状態が、最も良いモデルを示します。 実際の値 データサイエンス チュートリアル 5

6.

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

7.

4th STEP 機械学習 Section 15 回帰(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)値を応用 し、各特徴量が予測にどれだけ貢献したかを計算。 ・ 特徴量の貢献度を個々の予測ごとに評価できるため、より詳細な分析が 可能。 ・ 特徴量の値をランダムに並び替えた際に、モデルの性能がどれだけ低下するかを 評価。 ・ 性能低下が大きい特徴量は、重要な特徴量であると考えられる。 データサイエンス チュートリアル 7

8.

4th STEP 機械学習 Section 15 回帰(4) モデルの分析(1) plot_model関数の「help」 次のコードセルでは、plot_model関数のヘルプを呼び出しています。 この「help」は、あまり役に立たないので無視していきましょう。 データサイエンス チュートリアル 8