#61 Section 16 回帰(5) モデルの分析(2)

>100 Views

February 09, 26

スライド概要

PyCaretのevaluate_model関数は、たった一行のコードでモデルの多角的な評価を可視化する強力なツールです。実行するとインタラクティブなボタンが表示され、クリック一つで以下の分析が可能です。

●基本設定の確認: PyCaretが自動調整した「Hyperparameters」や、前処理の工程を示す「Pipeline Plot」を視覚的に把握できます。

●誤差と精度の詳細: 誤差の偏りを見る「Residuals(残差プロット)」や、予測の正確さを測る「Prediction Error」、モデルに強い影響を与えるデータを見つける「Cook's Distance」などで精度を深掘りします。

●最適化のヒント: 過学習を診断する「Learning Curve」や、最適な特徴量数を探る「Feature Selection」は性能改善に役立ちます。「Feature Importance」では、どの変数が予測に貢献したかを一目で特定可能です。

一部、アルゴリズムの特性によりエラーが出る項目もありますが、専門知識を補い迅速な意思決定を助ける、実務者に最適な機能です。

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 16 回 帰(5) モデルの分析(2) Setup Compare Models Analyze Model データサイエンス チュートリアル Prediction Save Model 1

2.

4th STEP 機械学習 Section 16 回帰(5) モデルの分析(2) evaluate_model関数 PyCaretでは、『plot_model関数』を使わなくても、下記の『evaluate_model関数』を使うことで、クリック一つで、様々な モデルの評価を可視化(グラフ化)することができます。 evaluate_model(モデル名) ここをクリックすると、それぞれの評価を可視化したグラフが現れます 出力は、下記のようになります。 何もしない状態では、『Pipline Plot』が選択され、機械学習モデルを構築 する際にPyCaretが自動的に行った前処理を視覚的に表現しています。 ① ② SimpleImputerは欠損値の補完、 CleanColumnNamesはデータセットの列名の整形をしたことを表しています。 データサイエンス チュートリアル 2

3.

4th STEP 機械学習 Section 16 回帰(5) モデルの分析(2) plot_model 関数の出力 下記は、 『plot_model』関数を使って表示させたグラフですね。 前のスライド①の各ボタンをクリックすると、それぞれの評価を可視化したグラフが現れます。これから、それを解説していきます。 Residuals Feature Importance Prediction Error データサイエンス チュートリアル 3

4.

4th STEP 機械学習 Section 16 回帰(5) モデルの分析(2) evaluate_model関数の出力 Hyperparameters(1) Hyperparameters パラメーター(Parameter)は、モデルが訓練データから自動的に学習し、調 整していく重みやバイアスなどの値です。それに対して、ハイパーパラメータ (Hyperparameter)は、学習前に人手で設定するアルゴリズムの挙動を制 御する値です。つまり、パラメータはモデルが学習によって得たもの、ハイパーパラ メータはモデルの学習の前に設定するものとなります。 Hyperparametersでは、PyCaretがハイパーパラメータをどのように設定したか を表示してくれます。 本来、分析者が経験等に基づいて決めるものですが、PyCaretはいい感じに決 めてくれます。 次スライドでハイパーパラメーターの解説をしますが、PyCaretには、このハイパー パラメーターをチューニングして一番結果が良いものを選択してくれる機能 (『tune_model』関数)がありますので、こだわって覚える必要はありません。 この辺が、PyCaretは『シチズンデータサイエンティスト』にぴったりな分析環境と 言える所以です。 データサイエンス チュートリアル 4

5.

4th STEP 機械学習 Section 16 回帰(5) モデルの分析(2) evaluate_model関数の出力 Hyperparameters (2) ハイパーパラメーター PyCaretのデフォルト nan_mode Min eval_metric RMSE iterations 1000 sampling_frequency PerTree leaf_estimation_method random_score_type 内 容 カテゴリ特徴量の欠損値処理をどのように行ったかを確認するハイパーパラメータ。「Min」は、数値特徴量 の欠損値をその列の最小値で補完しています。欠損値をそのカテゴリの特徴量の最頻値('mode')で 補完 ('mode') で補完するか、欠損値を含む行全体をデータセットから削除 ('drop') するかなどを指定 することもできます。 その機械学習モデル(通常は回帰モデル)の性能を評価するために使用される指標を示しています。 「RMSE」になっていますので、「二乗平均平方根誤差」(Root Mean Squared Error)が使われてい ることを意味します。 勾配ブースティング系のアルゴリズム(LightGBM, XGBoost, CatBoost等)や、ニューラルネットワーク などの反復的な学習プロセスを持つモデルにおいて、学習の繰り返し回数を指定するハイパーパラメーター。 ツリーを構築する際にウェイトやオブジェクトをサンプリングする頻度。「PerTree」を指定した場合、勾配ブー スティングアルゴリズムが新しい決定木(Tree)を一つ構築するたびに、訓練データセットから異なるサブサ ンプルをランダムに選択して、その木を学習させることになります。 主に勾配ブースティングライブラリのCatBoostで使用される設定で、決定木の葉ノード(leaf node)の 値(予測値)をどのように推定・計算するかを制御するハイパーパラメーターです。「Newton」を指定した Newton 場合、勾配(Gradient)だけでなく、ヘッセ行列(Hessian)も利用して、より速く、より正確に最適な 葉の値を推定しようとします。一般的に精度が高い傾向がありますが、計算コストは高くなります。 主に勾配ブースティングライブラリのCatBoostで使用される設定で、分割点(Split)の選択にランダム性 をどのように導入するかを表したハイパーパラメーターです。「NormalWithModelSizeDecrease」を指定 NormalWithModelSi した場合、分割スコアの計算に、モデルの複雑さ(サイズ)を抑制するようなペナルティ(正則化項)を zeDecrease 組み込みます。このペナルティは、分割後の葉ノードの数やツリーの深さなど、モデルのサイズに関連する要 素に基づいて計算されます。このスコアリング方法を採用することで、精度向上とモデルの複雑さの減少を 両立できるような分割点が優先的に選択されます。 データサイエンス チュートリアル 5

6.

4th STEP 機械学習 Section 16 回帰(5) モデルの分析(2) evaluate_model関数の出力 Hyperparameters (3) ハイパーパラメーター PyCaretのデフォルト grow_policy SymmetricTree penalties_coefficient 1 boosting_type Plain model_shrink_mode feature_border_type 内 容 主に勾配ブースティングライブラリのCatBoostで使用される設定で、決定木をどのように構築・成長させる かという戦略を定義するものです。「SymmetricTree」指定した場合、深さ優先で成長し、すべての葉 ノードが同じレベル(深さ)になるまで成長させることになります。特定のレベル(深さ)において、最も損 失を減らす単一の分割点がすべての葉ノードに適用され、その結果、高速な学習が期待でき、過学習を 抑制する効果が高い傾向となります。 主に勾配ブースティングライブラリのCatBoostで使用される設定で、リーフ値の正則化(葉ノードの予測 値に対するペナルティ)を制御するハイパーパラメーターです。この場合、主にCatBoostモデルにおいて、 リーフ値(葉ノードの予測値)に対する正則化の強さが「1」に設定されている状態を意味します。「1」とい う値は、そのペナルティがデフォルト設定(あるいはデフォルトに近い、標準的な強さ)で適用されていること を示します。これにより、過度に大きな葉の値(訓練データ特有のノイズに強く適合した結果生じることがあ る)が抑制され、モデルの汎化性能を高める効果が期待されます。 ハイパーパラメータ「boosting_type」で「Plain」を指定した場合、それは主に勾配ブースティングライブラリ のCatBoostが使用されており、そのブースティングの実行方法が最も基本的な形式に設定されている状 態を意味します。また、「Plain」はより速く学習を完了させることができます。 Constant 主に勾配ブースティングライブラリのCatBoostで使用される設定で、モデルの複雑さ(サイズ)を抑制する ための方法を示すハイパーパラメーターです。「Constant」を指定した場合、学習率(learning_rate) を一定に保ち、モデルの縮小は特に意図的に行いません。これは伝統的なブースティングアプローチに近い 状態です。 GreedyLogSum 主に勾配ブースティングライブラリのCatBoostで使用される設定で、数値特徴量をカテゴリ変数のように扱 うために分割点(境界、Border)をどのように決定するかを定義したものです。「GreedyLogSum」を指 定した場合、データ分布と学習の目的(損失関数)を考慮して、最も情報量が多くなるように分割点を 貪欲に選択します。計算は複雑になりますが、より高い精度を目指す場合に適しています。 データサイエンス チュートリアル 6

7.

4th STEP 機械学習 Section 16 回帰(5) モデルの分析(2) evaluate_model関数の出力 Hyperparameters (4) ハイパーパラメーター bayesian_matrix_reg eval_fraction force_unit_auto_pair_weights l2_leaf_reg PyCaretのデフォルト 内 容 CatBoostは、カテゴリ特徴量を直接扱うために、ターゲット変数(目的変数)の統計情報(例:平均 値)に基づいてカテゴリ値を数値に変換します(ターゲットエンコーディングに似た手法)。この処理は、 0.10000000149011 ターゲットリーク(Target Leakage、目的変数の情報を不適切に利用してしまうこと)を防ぐように工夫 612 されています。「0.10000000149011612」を指定した場合、カテゴリ特徴量の過学習を防ぐためにベイ ズ的アプローチを使用しているものの、その正則化の強さは標準的か、または控えめなレベルに設定されて おり、モデルがデータから十分な情報を学習できるように配慮されていることを示しています。 モデルの過学習(オーバーフィッティング)を監視し、早期停止(Early Stopping)を適用するために、 訓練データから分割して使用されるデータの割合(比率)を指定します。「0」を指定した場合、主に CatBoostモデルにおいて、訓練データからモデルの性能監視用(早期停止用)の検証データを一切確 0 保していない状態を意味します。そのため、早期停止(Early Stopping)のメカニズムは実質的に無効 になっています。通常、ハイパーパラメータチューニングや最終モデルの訓練では、過学習を防ぐために eval_fractionを「0」より大きな値(例:「0.1」や「0.2」)に設定することが推奨されます。 CatBoostは、個々のカテゴリ特徴量だけでなく、カテゴリ特徴量の組み合わせ(ペア)も自動的に新しい 特徴量として生成・考慮します。これは、2つの特徴量が組み合わさることで初めて意味を持つような複雑 なパターン(例:「地域X」かつ「製品タイプY」など)をモデルが捉えるのを助けます。このペアワイズ特徴量 が生成される際、それらの信頼性や重要度を評価するために重みが計算されます。 False force_unit_auto_pair_weights が有効(Trueまたは1)になっている場合、この重み付けが特定の 単純な形式(通常はすべてのペアに均一な重み)に強制されます。Falseは、モデルがカテゴリ特徴量の ペアワイズ相互作用を最大限に活用し、データの特性に応じて重みを最適化しながら学習している状況を 示しています。 主に勾配ブースティングライブラリのCatBoostやXGBoostで使用される設定で、決定木の葉ノード (Leaf Node)の値に対して適用されるL2正則化の強さを制御するハイパーパラメーターです。モデルの 複雑さと訓練データへの適合度の間のバランスを取るための重要な調整役となります。値が「0」の場合、正 則化は適用されず過学習のリスクが高まります。また、値が大きいほど、L2正則化のペナルティが強くなりま 3 す。葉の値は全体的に小さくなり、モデルはより保守的(穏やか)になりますが、強すぎると未学習 (Underfitting)を引き起こす可能性があります。「3」は、しばしばCatBoostのデフォルト値として使わ れ、正則化が比較的標準的な強さで適用されていることを示します。過剰にモデルを制約するほど強くはな く、訓練データへの適合と過学習の抑制のバランスを取ることを目的としています。 データサイエンス チュートリアル 7

8.

4th STEP 機械学習 Section 16 回帰(5) モデルの分析(2) evaluate_model関数の出力 Hyperparameters (5) ハイパーパラメーター PyCaretのデフォルト random_strength 1 rsm 1 boost_from_average TRUE model_size_reg 0.5 内 容 主に勾配ブースティングライブラリのCatBoostで使用される設定で、決定木の分割点(Split)を選択す る際のランダム性の強さを制御するハイパーパラメーターです。これは、CatBoostが持つ他のランダム化戦 略(例:random_score_type)と組み合わさって機能し、モデルの安定性と汎化能力を調整します。 この値が大きいほど、ランダムなノイズの寄与が大きくなり、モデルはよりロバストになりますが、ノイズが強すぎ ると未学習(Underfitting)のリスクが高まります。「1」を指定した場合、モデルが標準的なランダム性を 導入して訓練されており、モデルの多様性を高め、汎化性能を向上させることを目指している状況を示して います。 rsmは「Random Subspace Method」の略で、主にXGBoostやLightGBMなどの勾配ブースティング 系アルゴリズムにおいて使用されるハイパーパラメーターです。これは、各決定木を構築する際、データセット に含まれる全特徴量の中から、rsmで指定された割合の特徴量がランダムに選ばれ、その木(Tree)の 学習に利用されます。例えば、rsm=0.8 の場合、各決定木は全特徴量の80%をランダムに選んで学習 します。「rsm=1」を指定した場合、すべての決定木が、データセットに存在するすべて(100%)の特徴 量を使用して学習します。 主に勾配ブースティング系アルゴリズム(特にXGBoostやLightGBM)で使用される設定で、最初の決 定木(ベースラインモデル)をどのように初期化するかを制御するハイパーパラメーターです。「True」を指定 した場合、最初の予測をターゲットの平均値に設定します。これにより、初期の残差(誤差)が小さくな り、学習の収束が速くなる傾向があります。回帰問題では一般的に推奨される設定です。 主に勾配ブースティングライブラリのCatBoostで使用される設定で、モデルの複雑さ(サイズ)に対して適 用される正則化の強さを制御するハイパーパラメーターです。これは、モデルの過学習を抑制し、よりシンプ ルなモデル構造を奨励するために使用されます。「0.5」を指定した場合、極端に大きな値(例:10)ほ どモデルを強く制約するわけでも、極端に小さな値(例:0.01)ほど無視されるわけでもない、標準的で 穏やかなレベルのペナルティが適用されていることを示します。これは、モデルの精度を大きく損なうことなく、 過学習のリスクを適度に軽減し、よりコンパクトなモデルを構築したいという意図を示していると言えます。 データサイエンス チュートリアル 8

9.

4th STEP 機械学習 Section 16 回帰(5) モデルの分析(2) evaluate_model関数の出力 Hyperparameters (6) ハイパーパラメーター PyCaretのデフォルト pool_metainfo_options {'tags': {}} subsample 0.800000012 use_best_model False random_seed 123 depth 6 posterior_sampling False 内 容 主に勾配ブースティングライブラリのCatBoostで使用される設定で、データセット(Pool)のメタ情報 (Metadata)の扱い方に関するハイパーパラメーターです。「{'tags': {}}」を指定した場合、それは、 データセット(Pool)のメタ情報のうち、タグ(tags)に関連する情報が設定されていない状態を意味し ます。モデルの訓練において、CatBoostのデフォルトのメタ情報処理ロジックが使用されており、ユーザーが 特定の特徴量に対して特別な指示(タグ付け)を加えていない、標準的なデータセット処理が行われてい ることを示しています。 モデルの過学習を抑制するために、ブースティング学習プロセスにランダムサンプリングを導入するハイパーパ ラメータです。「0.800000011920929」を指定した場合、各決定木を構築する際、訓練データセット全 体の 80%のサンプル(行)がランダムに選ばれ、その木の学習に利用されます。残りの20%のサンプル は、その木の学習には使われません。 主に勾配ブースティング系アルゴリズム(特にCatBoost)で使用される設定で、モデルの学習が早期停 止された場合に、どの時点のモデルを採用するかを制御するハイパーパラメーターです。「1」を指定した場 合、早期停止が発動した直前、つまり学習が終了した時点の決定木のセットを持つモデルを採用します。 これは、ベストな時点のモデルよりもわずかに過学習している可能性があります。 random_seedに固定された整数値(例:42や123)を設定することで、乱数生成器が常に同じ順序 の乱数を生成するようになります。これにより、いつ、誰が、どの環境で実行しても、モデルの訓練結果(ハ イパーパラメータのチューニング、交差検証の分割など)が完全に同じになることが保証されます。 主に決定木ベースのモデル(例:Random Forest、Decision Tree、勾配ブースティング系アルゴリズ ム)において、個々の決定木の最大の深さを定義するハイパーパラメーターです。 主に勾配ブースティングライブラリのCatBoostで使用される、カテゴリ特徴量(例:色、地域名など)の 処理に関する非常に具体的なハイパーパラメーターです。このプロセスは、ターゲットエンコーディングに似てい ますが、CatBoostではデータの順序を考慮することでターゲットリークを防ぎます。「False」を指定した場 合、カテゴリ特徴量のエンコーディングプロセスにベイズ的なランダム性(ノイズ)が適用されていない状態を 意味し、モデルが訓練データからの情報を最大限に活用することを優先している設定と言えます。 データサイエンス チュートリアル 9

10.

4th STEP 機械学習 Section 16 回帰(5) モデルの分析(2) evaluate_model関数の出力 Hyperparameters (7) ハイパーパラメーター PyCaretのデフォルト border_count 254 classes_count 0 auto_class_weights None sparse_features_conflict_fraction 0 内 容 主に勾配ブースティングライブラリのCatBoostで使用される設定で、数値特徴量を離散化(ビニング)す る際の最大分割点(境界、Border)の数を定義するものです。CatBoostを含む多くの決定木ベース のアルゴリズムは、連続的な数値特徴量をそのまま扱うのではなく、いくつかのビン(bin、区間)に分割し て扱います。これは、学習の高速化、メモリ効率の向上、そして過学習の抑制に役立ちます。数値特徴量 をビニングする際、「254」はデフォルト値または一般的な最大値としてよく使用されます。すなわち、モデルが 数値特徴量の情報をほぼ最大限に利用して学習している、積極的なビニング戦略を採用していることを示 しています。 モデルが分類(Classification)タスクである場合に、その目的変数(ターゲット)に含まれるクラス(カ テゴリ)の総数を定義するものです。回帰(Regression)タスクにおいて「classes_count」というパラ メータは必要ありません。特にCatBoostやXGBoostなどの勾配ブースティングライブラリが、分類 (Classification)と回帰(Regression)の両方に対応する汎用的なインターフェースを持っているた めに表示されてしまいます。 主に勾配ブースティングライブラリのCatBoostで使用されるハイパーパラメーターで、クラスの不均衡 (Class Imbalance)を補正するためにクラス重み(Class Weights)を自動的に計算し、適用する かどうかを制御するものです。「0」を指定した場合、、自動重み付けは適用されず、すべてのクラスが均等に 扱われます。 主に勾配ブースティングライブラリのCatBoostで使用されるハイパーパラメーターで、疎な特徴量(Sparse Features)の処理に関連するものです。疎な特徴量を効率的に、かつ正確に扱うためのCatBoostの内 部的なメカニズムを制御します。「0」を指定した場合、、疎な特徴量(Sparse Features)の処理に関 して、特定の最適化戦略を無効化している状況を意味します。データがそれほど疎ではない場合、または CatBoostのデフォルトの疎な特徴量処理が十分に高速である場合に採用されることが多いです。もし データが非常に疎でコンフリクトが多い場合、この値を「0」よりも大きな値(例:「0.5」)に設定すること で、学習効率の改善が期待できます。 データサイエンス チュートリアル 10

11.

4th STEP 機械学習 Section 16 回帰(5) モデルの分析(2) evaluate_model関数の出力 Hyperparameters (8) ハイパーパラメーター PyCaretのデフォルト leaf_estimation_backtracking AnyImprovement best_model_min_trees 1 model_shrink_rate 0 min_data_in_leaf 1 loss_function RMSE 内 容 主に勾配ブースティングライブラリのCatBoostで使用されるハイパーパラメーターで、決定木の葉ノード (Leaf Node)の予測値(値)を推定するプロセスに関連するものです。「AnyImprovement」を選 択した場合、損失がわずかでも改善したステップサイズを採用し、改善が見られない場合はステップサイズを 縮小してバックトラックします。 主に勾配ブースティングライブラリのCatBoostで使用される設定で、早期停止(Early Stopping)が 有効な場合に、採用されるモデルが持つべき最小の決定木の数を定義します。「いくら早く性能が良く見え ても、最低でもこれだけの数の木を作ってからベストモデルを選びなさい」というルールを設定するものです。 「1」が設定されている場合、モデルが未学習(Underfitting)を防ぐための「最低限の学習回数」の制 約を受けずに訓練されていることを示しています。これは、訓練データセットが非常に小さく、モデルを無理に 複雑化させたくない場合などに選択されます。 主に勾配ブースティングライブラリのCatBoostで使用されるハイパーパラメーターで、モデルの学習率 (Learning Rate)が減少する割合を制御するものです。「0」を指定した場合、モデルが標準的な学習 率スケジュール(つまり、学習率が一定)で訓練されており、学習の進行に伴う学習率の調整による正則 化は適用されていないことを示しています。 主に決定木ベースのモデル(LightGBM、XGBoost、Random Forestなど)において、決定木の葉 ノード(Leaf Node)に含まれるべき最小限のデータサンプル数を定義するハイパーパラメーターです。 「1」を指定した場合、モデルがデータの細かな変動を最大限に捉えようとしている、あるいは正則化をほとん ど行わずに訓練データに強く適合しようとしていることを示しています。通常、汎化性能を高めるためには、こ の値を増やして過学習を抑制することが推奨されます。 モデルの訓練において、最適化の目標として使用される損失関数(目的関数)を定義するものです。 「RMSE (二乗平均平方誤差)」を指定した場合は、外れ値に敏感になります。 データサイエンス チュートリアル 11

12.

4th STEP 機械学習 Section 16 回帰(5) モデルの分析(2) evaluate_model関数の出力 Hyperparameters (9) ハイパーパラメーター PyCaretのデフォルト learning_rate 0.040516999 score_function Cosine task_type CPU leaf_estimation_iterations 1 内 容 勾配ブースティング系アルゴリズム(XGBoost、LightGBM、CatBoostなど)において、各決定木が全 体の予測に寄与する度合い(重み)を制御する最も重要なハイパーパラメーターの一つです。新しい決定 木が学習を完了した後、その木の予測結果はそのまま全体の予測に組み込まれるのではなく、この learning_rateによって縮小(スケールダウン)されてから加算されます。「0.0405169986188411」と 指定した場合、一般的な設定(デフォルト値は 「0.1」前後であることが多い)と比較して低い学習率で す。これは、各決定木が残差を修正する際に非常に小さなステップを踏んでいることを意味します。学習率 を低くすることで、モデルはより慎重に学習を進め、過学習(オーバーフィッティング)のリスクを抑制しようと しています。したがって、モデルが過学習を避け、高精度を目指すために、穏やかな学習率で丹念に訓練さ れていることを示しています。 主に勾配ブースティングライブラリのCatBoostで使用される設定で、決定木の分割点(Split)を選択す る際の基準となる評価関数を定義するものです。決定木は、データを最も良く分離し、目的関数(損失 関数)を最大に減少させるような最適な分割点を見つけようとします。score_functionは、この「最も良 い分割」を判断するための計算方法を指定します。「Cosine」を指定した場合、モデルが標準的なL2ベー スのスコアリングではなく、方向性(コサイン類似度)を重視した、よりロバストな決定木の分割戦略を採 用していることを示しています。これは、CatBoost独自のスコアリング方法の一つで、勾配の方向性を利用 して分割を評価します。 主に勾配ブースティングライブラリのCatBoostで使用される設定で、モデルが実行するタスクの種類、およ びそのタスクの訓練をどのデバイスで行うかを定義するものです。デフォルトでは、CPUが指定されています。 主に勾配ブースティングライブラリのCatBoostで使用される設定で、決定木の葉ノード(Leaf Node)の 予測値を推定する際に実行される内部的な最適化の反復回数を定義するハイパーパラメーターです。 「1」と指定した場合、各決定木の葉ノードの値(予測値)を推定する内部的な最適化プロセスが、最大 で1回しか実行されない状況を意味します。モデルが訓練速度を重視し、葉ノードの推定プロセスをシンプ ルかつ高速に保っていることを示しています。この設定は、特に早期停止(Early Stopping)と組み合わ せることで、過学習を効果的に防ぎつつ、高速な学習を実現する戦略の一つです。 データサイエンス チュートリアル 12

13.

4th STEP 機械学習 Section 16 回帰(5) モデルの分析(2) evaluate_model関数の出力 Hyperparameters (10) ハイパーパラメーター PyCaretのデフォルト bootstrap_type MVS max_leaves 64 内 容 主に勾配ブースティングライブラリのCatBoostで使用される設定で、モデルの訓練中にどのサンプリング手 法を使用してデータをランダムに選択するかを定義するハイパーパラメーターです。CatBoostは、ブースティ ングの過程で各決定木を構築する際に、予測誤差(残差)の勾配が大きいデータポイントをより重視し ます。「MVS」と指定した場合、この勾配の情報に加えて、予測値の分散が小さくなるようにサンプリングを 行います。これにより、モデルの安定性と汎化性能の向上が期待されます。 主にLightGBMなどの決定木ベースのモデルにおいて、個々の決定木が持つことができる最大の葉ノード (Leaf Node)の数を定義するハイパーパラメーターです。64という値は、多くのデータセットとタスクにおい て、過学習を防ぎつつ十分な表現力を持たせるための、バランスの取れた標準的な値としてよく用いられま す。これより小さい値(例:32や16)はより強い正則化を意味し、より大きい値(例:128や256)は より複雑なモデル(過学習のリスク増大)を意味します。 データサイエンス チュートリアル 13

14.

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

15.

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

16.

4th STEP 機械学習 Section 16 回帰(5) モデルの分析(2) evaluate_model関数の出力 Cooks Distance Cooks Distance Cook's Distance このグラフの目的は、影響力のある観測値(Influential Observations)を特定することです。クックの距離が大きい データポイントは、その点をデータセットから除外した場合に、モ デルの推定された係数や予測値が大きく変化することを示して おり、モデルの結果に強い影響を与えています。 グラフには、破線(紫色の点線)で影響力の閾値 が示されています。この閾値 は、特定のデータポイントがモデルに過度に影響を与えているかを判断する一般 的な基準の一つです。凡例には と記載されています。これは、 全データポイントの6.62%がこの設定された閾値 を超えていることを 示しています。約6.6%のデータが、モデルの結果に注意が必要なレベルの影響 を与えているということです。 【参考】 統計検定準1級 クックの距離を深めに理解する https://qiita.com/DeepMata /items/1657b3c463b9f5d2a39f インデックス(行番号) データサイエンス チュートリアル 16

17.

4th STEP 機械学習 Section 16 回帰(5) モデルの分析(2) evaluate_model関数の出力 Feature Selection Feature Selection Cross-Validation Score (交差検証スコア) このグラフは、モデルの性能を最大化するために最適な 特徴量の数を見つける過程を視覚化したものです。 X軸にNumber of Features (特徴量の数)、Y軸 にCross-Validation Score (*R2) をとった折れ線 グラフです。 *R2: PyCaretでは、ハイパーパラメーター『eval_metric』が RMSEと指定されていても、デフォルトでグラフのY軸にR2のような「高 いほど良い」指標を表示するように設計されているためと考えられます。 このグラフは、特徴量の数を増やすにつれてスコア(おそらくR2などの 性能指標)が上昇し、特徴量が4つの時点でピークに達していること を示しています。最適な特徴量の数は「4」で、その時のスコア 「0.820」となっており、これは、モデルの性能を最大化するために9個 中4個の特徴量を選択すれば十分であることを意味しています。 Number of Features (特徴量の数) データサイエンス チュートリアル 17

18.

4th STEP 機械学習 Section 16 回帰(5) モデルの分析(2) evaluate_model関数の出力 Learning Curve(1) Learning Curve X軸がTraining Instance(訓練データセットのサイズ、 またはサンプルの数)、Y軸: Score(R2)で、以下の 2本の線が表示されます。 Score Training Score(訓練スコア曲線)→モデルが訓 練データそのものに対して出した性能。 Cross Validation Score (交差検証スコア曲 線)→訓練データとは異なる検証データに対するモデル の汎化性能。 *R2: PyCaretでは、eval_metricでRMSEが指定されていても、デ フォルトでグラフのY軸にR2のような「高いほど良い」指標を表示するように 設計されているためと考えられます。 Training Instance データサイエンス チュートリアル 18

19.

4th STEP 機械学習 Section 16 回帰(5) モデルの分析(2) evaluate_model関数の出力 Learning Curve(2) 2本の曲線の状態から、モデルの学習状況を判断したものが下記の表です。 曲線パターンの特徴 診断されるモデルの状態 対策の方向性 両方の曲線が低く、互いに接近している 未学習(Underfitting / High Bias):モデル が単純すぎるため、訓練データからもパターンを学習で きていない。 モデルの複雑化(より強力なモデル、特徴量の追 加、正則化の緩和) Training Scoreが高く、 CV Scoreが低い (2本の線に大きなギャップがある) 過学習(Overfitting / High Variance):モ デルが訓練データのノイズまで学習し、汎化能力を失っ ている。 データの追加、正則化の強化、特徴量の削減、 モデルの単純化 両方の曲線が高く、互いに接近している 理想的な状態:モデルが訓練データから適切にパター ンを学習し、高い汎化能力を持っている。 なし、またはデータの追加でスコアがさらに向上する か確認 このLearning Curveの曲線パターンからは、モデルが過学習の状態にあることを強く示しています。 Training Score (青線):訓練データサイズが小さいときから非常に高いスコア(約0.99)を維持しており、データが増えてもわずかに低下する程度で高止まり しています。これは、モデルが訓練データに含まれるパターン(およびノイズ)を非常に詳細に記憶していることを意味します。 Cross Validation Score (緑線):訓練データが増えるにつれてスコアはわずかに上昇していますが、0.80〜0.82程度の水準で留まっています。これは、モデ ルが未知のデータ(検証データ)に対して発揮できる汎化性能を示しています。 データサイエンス チュートリアル 19

20.

4th STEP 機械学習 Section 16 回帰(5) モデルの分析(2) evaluate_model関数の出力 Manifold Learning Manifold Learning 「Manifold Learning」のボタンでは、次元削減 手法によって生成されたプロットが表示されます。 この場合は、t-SNE(最も一般的に表示される グラフで、特にデータポイント間の局所的な類似 性を保持しながら、高次元データを2次元にマッピ ングします)のグラフが表示されており、クラスター 構造を視覚化しています。 プロットの右側にあるカラーバーは、各データポイン トの目的変数の値を示しています。 このグラフは、目的変数の高い値(青)を持つ点も低い値 (赤)を持つ点も、2次元空間の多くの領域で混ざり合って存 在しています。この混ざり合いは、モデルが使用している9つの特 徴量だけでは、目的変数の値が高いグループと低いグループを明 確に区別できていないことを意味します。モデルが予測を行おうと しても、特徴空間においてターゲットが明確に分離されていない ため、予測の精度に限界が生じる可能性を示唆しています。 データサイエンス チュートリアル 20

21.

4th STEP 機械学習 Section 16 回帰(5) モデルの分析(2) evaluate_model関数の出力 Validation Curve Validation Curve このグラフは、特定のハイパーパラメータ(この場合は、 決定木の深さ)を変化させたときの、モデルのパフォー マンスの変化を視覚化し、過学習や未学習を防ぐ最 適なパラメータ値を見つけるのに役立ちます。 X軸は選択された単一のハイパーパラメータの値軸 (この場合は決定木の深さ)、Y軸はScore(この 場合はR2)を表します。 Score プロットされる曲線は、以下の2本の線が表示されます。 Training Score Curve(訓練スコア曲線):モデ ルが訓練データそのものに対して出した性能。 Cross-Validation Score Curve(交差検証 スコア曲線):訓練データとは異なる検証データに対 するモデルの汎化性能。 このグラフからは、モデルの汎化性能を最大化する最適な木の深さは2 付近ということが読み取れます。 Training Instance データサイエンス チュートリアル 21

22.

4th STEP 機械学習 Section 16 回帰(5) モデルの分析(2) evaluate_model関数の出力 Feature Importance Feature Importance これは、モデルの予測にどの特徴量(入力変 数)が最も貢献しているかを示すためのグラフで す。 X軸はその特徴量の重要度スコア、Y軸は特徴 量の名前を示しています。 Score このグラフから、モデルは事実上、「smoker」、「bmi」、 「age」という3つの特徴量に基づいて予測の大部分を行ってい ることがわかります。その結果、モデルがデータに含まれる他の 要因(特に地域差や性別)をほとんど考慮していないことも 示しています。 Training Instance データサイエンス チュートリアル 22

23.

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

24.

4th STEP 機械学習 Section 16 回帰(5) モデルの分析(2) evaluate_model関数の出力 Feature Importance... Feature Importance... 省略されて名前が隠れているボタン(「Feature Importance…」)の完全な名称は、「Feature Importance Permutation」である可能性が高いです。 「Feature Importance」ボタンが訓練データに基づいて計算されるのに対し、 「Feature Importance Permutation」は検証データに基づいて特徴量の重要度を評価します。 その出力は、グラフの左側(Y軸)に表示されるべきすべて(またはほとんど)の特徴量の名前が、他の要素によって上書き されています。本来、特徴量ごとに横棒(またはドット)がX軸に沿って並ぶはずですが、画面上には一本の長い線と、途切 れた特徴量名しか見えず、他の特徴量の棒が完全に欠落しています。 このような不具合は、Google ColaboratoryやJupyter Notebook環境で、グラフの描画ライブラリ(Matplotlibなど) のバージョン、またはPyCaret内部の描画設定が原因で、出力領域が適切に設定されず、グラフの一部(特にY軸ラベル) がコンテナ外に描画されてしまうことによって起こるようです。 今のところは、無視しておきましょう(Docker、勉強中です)。 データサイエンス チュートリアル 24

25.

4th STEP 機械学習 Section 16 回帰(5) モデルの分析(2) evaluate_model関数の出力 Decision Tree Decision Tree evaluate_modelの「Decision Tree」ボタンは、モデルの複雑な構造を単純な単一の木に分解して視覚化 (プロット)することを意図しています。このプロットは、通常、単一の決定木モデルや、ランダムフォレストのように 個々の木を簡単に抽出できるモデルに対して有効です。 今回、モデルの評価は「CatBoost」を選択しましたが、「CatBoost」のような勾配ブースティングは、多数の弱学 習器(通常は浅い決定木)を逐次的に結合して、最終的な強力なモデルを構築します。したがって、 「CatBoost」は、単一の決定木として視覚化できるような構造を持っていません。 ですから、このボタンではエラーになります(「TypeError」ではなく、「Not Available」とでも表示してくれればわ かりやすいのですが・・・)。 データサイエンス チュートリアル 25

26.

4th STEP 機械学習 Section 16 回帰(5) モデルの分析(2) evaluate_model関数の出力 Interactive Residuals Interactive Residuals これは、エラーになってしまいますが、原因として、以下の2点が考えられます。 ①「Interactive Residuals」プロットは、通常、「yellowbrick」などの外部ライブラリの機能を利用して残差 を視覚化します。CatBoostはモデルの予測結果や残差の形式が、この外部ライブラリが期待する標準的な 形式と一致しない場合、プロットの生成過程でエラー(型エラーや次元エラーなど)が発生します。 ②CatBoostRegressorとPyCaretの組み合わせでプロットを生成する際に、Colab環境で必要な JavaScriptやHTMLのレンダリングが失敗し、結果的にPython側でエラーが発生する、あるいはプロットが空 白になることがあります。 ここは、インタラクティブではないですが、前出の「Residuals」で我慢しましょう。 【参考】 回帰を改善するための残存プロットの解釈 https://www.qualtrics.com/support/jp/stats-iq/analyses/regression-guides/interpreting-residual-plots-improve-regression/ データサイエンス チュートリアル 26