Translate

#52 Section8 分類(5)モデルの分析(2)

さて、モデルのパフォーマンスを分析するパートの続きを始めます。




実は、PyCaretでは、「plot_model関数」を使わなくても、下記の「evaluate_model関数」を使うことで、様々なモデルの評価を可視化(グラフ化)することができます。

下図のように、

evaluate_model(best)

と短いコードを書き、実行すると、21種類の描画(Plot type)を選択するボタンが現れます。

何もしない状態では、「Pipline Plot」が選択され、機械学習モデルを構築する際にPyCaretが自動的に行った前処理を視覚的に表現しています。SimpleImputerは欠損値の補完、 CleanColumnNamesはデータセットの列名の整形をしたことを表しています。



各ボタンをクリックすると、それぞれの評価を可視化したグラフが現れます。下記は、 『plot_model』関数を使って表示させたグラフですね。




グラフの中には、直感的に理解しにくいものも含まれています。4th STEPでは、クラスの予測をすることが最大の目的ですので、今は理解できなくても構いません。

予測結果が思わしくない場合、データサイエンティストや統計に詳しいメンバーとディスカッションする時にこのグラフが威力を発揮します。それぞれのグラフを見て、スライドの緑文字のように感じることができれば一人前です。

一通り、どんなものか、解説していきます。

***********

1.Hyperparameters

パラメーター(Parameter)は、モデルが訓練データから自動的に学習し、調整していく重みやバイアスなどの値です。それに対して、ハイパーパラメータ(Hyperparameter)は、学習前に人手で設定するアルゴリズムの挙動を制御する値です。つまり、パラメータはモデルが学習によって得たもの、ハイパーパラメータはモデルの学習の前に設定するものとなります。

Hyperparametersでは、PyCaretがハイパーパラメータをどのように設定したかを表示してくれます。
本来、分析者が経験等に基づいて決めるものですが、PyCaretはいい感じに決めてくれます。

次スライドでハイパーパラメーターの解説をしますが、PyCaretには、このハイパーパラメーターをチューニングして一番結果が良いものを選択してくれる機能(『tune_model関数』)がありますので、こだわって覚える必要はありません。この辺が、PyCaretは『シチズンデータサイエンティスト』にぴったりな分析環境と言える所以です。






2.Threshold

『Threshold』は、precision (適合率)、recall (真陽性率)、f1(F1-score)、および*queue rateの各数値を縦軸に、識別閾値を横軸にしたグラフを表します。

*ある特定の識別閾値において、モデルが positive クラスに分類したデータの割合

求められる予測特性に対して、識別閾値をどの程度に設定すればいいかの検討に利用できます。

点線はf1 scoreが最大になる識別閾値を表していて最適なF1-scoreは『0.48』となります。

例えば、真陽性率を重視する場合は、閾値を低く設定することで、より多くの陽性データを検出できます。逆に、適合率を重視する場合は、閾値を高く設定することで、誤って陽性と予測するデータを減らすことができます。

下記のグラフの形状からは、閾値を上げると精度が上がる傾向にありますが、再現率は下がる傾向にあることがわかります。逆に、閾値を下げると再現率は上がりますが、精度は下がる傾向にあります。また、 F1-scoreは、精度と再現率のバランスを取った指標であり、このグラフでは閾値が0.4〜0.6付近で最も高い値を示しています。したがって、このモデルにおいては、この付近の閾値が全体的な性能のバランスが良い可能性があります。


















3.Precision-Recall

『Precision-Recall』は、適合率を縦軸に、真陽性率を横軸にしたグラフです。

正解データ数に偏りがある場合、モデルの性能をより詳細に把握するのに役立ちます(逆に正解データ数に偏りが無い場合、 ROC曲線を使うとより正しい評価を得ることができます)。

下記のグラフの形状からは、曲線が右に向かって比較的高い位置を推移しているため、このモデルは、多くの閾値において比較的高い適合率と真陽性率を両立できていると言えます。ただし、再現率が0.6付近までは精度が比較的高い水準を維持していますが、それ以降は再現率が向上するにつれて精度が緩やかに低下しています。




4.Prediction Error

『Prediction Error』は、予測数を縦軸に、実際(診断)クラス(陰性:0、陽性:1)を横軸にしたグラフです。

モデルがどのクラスを混同しやすいか、誤分類がどの程度発生しているかを視覚的に把握するのに役立ちます。

下記のグラフの形状からは、クラス『1』がクラス『0』に誤分類される傾向が、クラス『0』のデータポイントがクラス『1』に誤分類される傾向よりも顕著である可能性があることが示唆されます。クラス『0』の予測は比較的良好ですが、クラス『1』の予測には改善の余地があるかもしれません。しかし、クラス『1』のデータ数がクラス『0』よりも少ないために、誤分類の影響がより大きく見えているのかもしれません。




5.Class Report

『Class Report』は、予測数を縦軸(積上)に、各評価指数を横軸にしたグラフです。

各クラスごとにprecision、recall、f1、*supportを確認し、モデルがどのクラスの予測を得意とし、どのクラスの予測を苦手としているかを把握します。

*support:実際のデータのn数(サンプル数)を表しています。

下記のグラフの形状からは、全体的に高いPrecision、Recall、F1-scoreを示しており、このロジスティック回帰モデルは今回の分類タスクにおいて良好な性能を発揮していることがわかります。また、クラス『0』の方がクラス『1』よりも、Precision、Recallともに高いという傾向が見られます。クラス『0』のn数がクラス『1』よりも多いため、クラス『1』 の予測にばらつきが大きいことが推測されます。しかし、通常、陽性と診断される患者数は、陰性と診断される人よりも少ないことが多いので、このような事はよく見られます。




6.Feature Selection

『Feature Selection』は、F1-scoreを縦軸に、選択された特徴量の数を横軸にしたグラフです。

特徴量の数を増やしていくにつれて、モデルの性能を表す指標F1-scoreがどのように変化するかを示しています。

下記のグラフの形状からは、特徴量の数を増やしていくにつれて、F1-scoreが最初は大きく向上していることがわかります。これは、モデルが予測に必要な重要な情報を持つ特徴量を優先的に学習していることを示唆しています。さらに横軸を右に見ていくと、F1-scoreは、特徴量の数が3〜4個のあたりでピークに達しているように見えます。この付近の数の特徴量で、モデルは比較的高い性能を発揮できると考えられます。特徴量の数をさらに増やしていくと、F1-scoreの向上は緩やかになるか、わずかに低下する傾向が見られます。これは、追加された特徴量がノイズを含んでいたり、モデルの汎化性能を妨げたりする可能性があることを示唆しています。さらに、影の領域から、特定の特徴量数におけるモデルの性能のばらつきを確認できます。ばらつきが小さいほど、その特徴量数でのモデルの性能は安定していると言えます。




7.Learning Curve 

『Learning Curve』は、F1-scoreを縦軸に、学習に使用したデータセットのn数を横軸にしたグラフです。

このグラフは、モデルの訓練データサイズに対する性能の変化を示すもので、モデルが適切に学習できているか、過学習学習不足に陥っていないかを診断するために役立ちます。

Training Score(学習曲線)
→訓練データセットで評価したモデルの性能の変化を示す曲線

Cross Validation Score(検証曲線)
→検証データセット(学習には使用していないデータ)で評価したモデルの性能の変化を示す曲線

下記のグラフの学習曲線(青色の線)を見ると、データサイズが増加するにつれて、比較的早い段階で高い値に達し、その後はわずかに上昇または安定していることがわかります。検証曲線(緑色の線)では、データサイズが増加するにつれて向上していますが、学習曲線よりも低い値で推移しています。学習曲線と検証曲線の間にギャップが見られますが、モデルが訓練データに対しては高い性能を発揮しているものの、未知の検証データに対してはやや性能が劣る、つまり過学習の兆候があることを示唆しています。ただし、そのギャップはそれほど大きくはないため、過学習の程度は軽微であると考えられます。




8.Manifold Learning

『Manifold Learning』の縦軸、横軸は、高次元データを2次元に変換して可視化するための次元削減アルゴリズムt-SNEで算出された主要成分を表しています。点の色はクラスラベルを表しており、青色がクラス『0』、緑色がクラス『1』に対応しています。

データのクラスタリングの傾向や、クラス間の分離度合い を視覚的に理解するために用いられます。

下記のグラフの形状から、クラス『0』は比較的凝集性の高い1つの主要なクラスターを形成しているのに対し、クラス『1』は複数の小さなサブクラスターに分かれている可能性を見ることができます。全体的に見ると、完全には分離しておらず、一部の領域ではクラス『0』とクラス『1』のデータポイントが混在しています。これは、モデルがこれらの混在した領域のデータポイントを分類する際に、誤分類を起こしやすい可能性を示唆しています。




9.Calibration Curve

『Calibration Curve』は、モデルが予測した確率の平均値をX軸に、その予測確率帯において、実際に陽性クラスであった割合をY軸とするグラフです。

●青い実線
→ モデルが予測した確率と実際の陽性割合を結んだ線。「モデルの較正曲線」と言う。 

●破線
→予測確率と実際の陽性割合が完全に一致する場合の線(y = x の直線)。「理想的な較正曲線」と言う。

モデルが予測した確率と、実際にその確率でイベントが発生した頻度を比較することで、モデルの確率予測の信頼性(較正度合い) を評価するためのグラフです。

下記のグラフの形状を見ると、グラフの左側の青い実線が点線より低い部分は、モデルは低い確率で陽性と予測したが、実際はそれよりも陽性の割合が高くなっています。また、グラフの中央の青い実線が点線より高い部分は、モデルは低い確率で陽性と予測したが、実際はそれよりも陽性の割合が低くなっています。全体を見ると、モデルの較正曲線が滑らかな曲線ではなく、階段状になっているのは、データセットのサイズが比較的小さいか、モデルの出力する確率の分解能が低いことが原因かもしれません。




10.Validation Curve

『Validation Curve』は、調整しているハイパーパラメータの値を横軸に、モデルの性能指標であるF1-scoreを縦軸にしたグラフです。

●青い実線(学習曲線) 
→訓練データセットで評価したモデルの性能を、ハイパーパラメータの各値に対して示しています。

●緑の実践(検証曲線) 
→検証データセットで評価したモデルの性能を、ハイパーパラメータの各値に対して示しています。

このグラフは、ハイパーパラメータの調整がモデルの性能にどのように影響するか、そして過学習や学習不足に陥るハイパーパラメータの値を特定するために使用されます。

下記のグラフの形状を見ると、学習曲線は検証曲線よりもわずかに高い位置にありますが、その差は非常に小さく、過学習の兆候はほとんど見られません。検証曲線の性能が*l1_ratioの値に関わらずほぼ一定であるため、F1スコアの観点からは、l1_ratioのどの値を選んでもモデルの性能に大きな影響はないと言えます。

*l1_ratio:スライド5「ハイパーパラメータの例」を参照




11.Dimensions

『Dimensions』は、調整しているハイパーパラメータの値を横軸に、モデルの性能指標であるF1-score
を縦軸にしたグラフです。

●青い実線(学習曲線) 
→訓練データセットで評価したモデルの性能を、ハイパーパラメータの各値に対して示しています。

●緑の実践(検証曲線) 
→検証データセットで評価したモデルの性能を、ハイパーパラメータの各値に対して示しています。

このグラフは、データセットの特徴量(説明変数)の数と、ターゲット変数(目的変数)の分布を視覚的に示し、データの基本的な特性を把握するのに役立ちます。しかし、二項分類では、直線になってしまってあまり役に立ちません。

具体例は、下記の参考を参照してください。






12.Feature Importance Plot

出力は、下記のようなグラフが表示されました…。バグですかね。





13.Decision Boundary

『Decision Boundary』は、モデルの学習に使用した2つの特徴量がX軸とY軸になります。通常、最も重要な2つの特徴量や、ユーザーが指定した2つの特徴量が選ばれます。

●グラフの背景は、モデルがそれぞれの領域をどのクラスに予測するかを示しています。 
●データセットの各データが、その特徴量の値に基づいて2次元空間にプロットされています。
●異なるクラスを分離するためにモデルが学習した境界線を決定境界線(Decision Boundary)と言います。下図では、黄緑と青の境界線です。

このグラフを見ることにより、モデルがどのように異なるクラスを区別しているか、その境界線がどのような形状をしているかを理解することができます。

下図のグラフの形状を見ると、決定境界が直線であることから、モデルは比較的単純な線形分離を行っていると言えます。決定境界線によって、大部分の青色の点(クラス『0』)は黄緑色の領域に、大部分の緑色の点(クラス『1』)は青緑色の領域に分類されています。しかし、完全に分離できているわけではなく、境界線の近くや、背景色とは異なる色の点も存在します。




14.Lift Chart

『Lift Chart』のX軸は、モデルが「ランダムに選択した場合」に比べて、どれだけ効率的に目的のクラス(陽性クラス)を識別できるかを示します。具体的には、下記の2つの部分から成り立っています。

①リフトカーブ (Lift Curve):モデルが予測した陽性クラスの確信度が高い順にデータを並べ、その中で実際に陽性であったケースの割合を示します。

②ベースライン (Baseline):ランダムにデータを選択した場合のパフォーマンスを示します。通常は、データセット全体の陽性クラスの割合を示す直線になります。

リフトカーブがベースラインよりも上に位置しているほど、モデルの予測性能が高いことを意味します。

また、リフトカーブとベースラインの間の面積が大きいほど、モデルの「リフト(持ち上げ効果)」が大きいことを示します。

下図のグラフの形状は、モデルが両クラスのインスタンスをランダムな選択よりも効率的に捉える能力を持っていることを示しています。特にクラス『1』において、モデルは非常に高いリフト値を達成しており、ターゲットマーケティングや意思決定において有用である可能性が高いことを示唆しています。




15.Gain Chart

『Gain Chart』は、サンプルの割合をX軸に、累積正解率をY軸とするグラフです。

モデルが予測した確信度に基づいて母集団をターゲットにした場合に、実際にどれだけの陽性クラス(ターゲットとなる結果)を「獲得」できるかを視覚的に表しています。

Lift Chartは、モデルがランダムな選択と比較して、どれだけ効率的にターゲットを識別できるかを「比率」で示します 。Gain Chartは、「どれだけ多くの陽性ケースを捕捉できたか」を直接的に示しています。

下図のグラフの形状は、このモデルが両クラスの陽性インスタンスをランダムな選択よりも効率的に捉える能力を持っていることを示しています。特にクラス『1』 において、モデルは非常に高い累積ゲインを達成しており、ターゲットマーケティングや意思決定において有用である可能性が高いです。




16.Decision Tree 

「Decision Tree」のボタンを押すとエラーになってしまいます。

エラーメッセージは、「決定木の図を描画しようとしているけど、指定されたものが決定木の図を描画できるタイプのモデルじゃないよ!」ということを意味しているようです…。バグです!

これが使えないからと言って、致命的ではありませんので、無視していきましょう。




17.KS Statistic Plot

『KS Statistic Plot』は、確率閾値(次スライド参照)をx軸に、閾値よりも低い確率で予測されたインスタンスの累積割合をy軸とするグラフです。

このグラフは、モデルが陽性クラスと陰性クラスをどれだけうまく分離できているかを視覚的に示します。良いモデルであればあるほど、2つの累積分布曲線の間に大きなギャップ(差)が生じます。

KS統計量は、この2つの累積分布曲線の間の最大垂直距離として定義されます。この最大距離が発生するx軸上の点が、モデルのパフォーマンスを最大化する可能性のある最適な分類閾値(カットオフポイント)になります。

下図のグラフの形状は、青色の線(クラス『0』)と緑色の線(クラス『1』)は、特に閾値が低い領域で大きく乖離しています。これは、モデルがクラス『0』とクラス『1』のインスタンスに対して異なる確率分布を予測していることを示唆しています。また、KS統計量の値は約0.498であり、これは医学の分野では比較的高い値です。KS統計量は、モデルが陽性クラスと陰性クラスをどれだけうまく分離できているかの指標であり、一般的に0.4以上であれば良好な分離とされます。このモデルは、予測確率に基づいてクラスをかなり明確に区別できていると言えます。




【参考】 確率閾値(Probability Threshold)

KS Statistic Plotの説明に出てきた確率閾値に関しては、下図を参照してください。


















コメント