Translate

#59 Section14 回帰(3)モデルの評価・比較

 今回は、「モデルの評価・比較」を体験していきましょう。



compare_models』関数は、ライブラリで使用可能なすべてのアルゴリズム(PyCaretでは『モデル』と言います)を交差検証を用いて訓練し、評価指標を算出して性能を評価します。この関数の出力は、交差検証での平均スコアを含む評価指標一覧(次スライド参照)で、様々なアルゴリズムの性能を比較できます。

『分類』で行ったように、関数型API、オブジェクト指向APIの二つの方法があります。順番にコードを実行しましょう。

また、『compare_models(sort=“評価指標”) 』で、 任意の指標で結果を並べ替えることもできます。




compare_models関数を使った前のスライドのコードを入力すると、下記の結果が出力されます。

表頭には、評価指標がいくつか並んでいます。

また、それぞれのモデルは、デフォルトで決定係数(R2)の降順に表示されます!




さて、ここからは、前のスライドに出てきた評価指標を解説していきます。

まずは、平均絶対誤差(MAE/Mean Absolute Error)

平均絶対誤差(MAE/Mean Absolute Error)は、各データに対して「予測値と正解値の差(誤差)」の絶対値を計算し、その総和をデータ数で割った値(平均値)を算出したもの。スライドの式で算出されます。

平均絶対誤差に普遍的な目安はありませんが、数値が小さいほど予測精度が高いと評価されます。

平均絶対誤差はあくまで相対的な指標ですから、過去の類似データで比較したり、複数のモデルで比較する等して使用します。





2番目は、平均二乗誤差(MSE/Mean Squared Error)

平均二乗誤差(MSE/Mean Squared Error)は、各データに対して「予測値と正解値の差(誤差)」の二乗の総和を計算し、その総和をデータ数で割った値(平均値)を算出したもの。下記のスライドに示す式で算出されます。

平均二乗誤差に普遍的な目安はありませんが、0に近いほど予測値と実測値の差(誤差)が小さいことを示します。誤差を2乗するため、大きな誤差(外れ値)が評価に与える影響が大きくなります。

平均二乗誤差はあくまで相対的な指標ですから、過去の類似データで比較したり、複数のモデルで比較する等して使用します。





3番目は、二乗平均平方根誤差(RMSE/Root Mean Squared Error)

二乗平均平方根誤差(RMSE/Root Mean Squared Error)は、3番目に示したMSEの平方根。下記のスライドに示す式で算出されます。

二乗平均平方根誤差に普遍的な目安はありませんが、0に近いほど予測値と実測値の差(誤差)が小さいことを示します。誤差を2乗するため、大きな誤差(外れ値)が評価に与える影響が大きくなります。二乗平均平方根誤差はあくまで相対的な指標ですから、過去の類似データで比較したり、複数のモデルで比較する等して使用します。





4番目は、決定係数(R2)

決定係数(R2/R2)は、目的変数が十分に説明されているかどうかを数値化したもので、下記のスライドに示す式で算出されます。相関係数を二乗した値で、寄与率と呼ばれることもあります。

決定係数に普遍的な目安はありませんが、比率(割合)としての意味合いを持つため、0以上1以下の値となります。決定係数が1に近い高い値の時、説明変数は目的変数を十分に説明できていると言えます。逆に、0に近い低い値の時、説明変数は目的変数を十分に説明できているとは言えません。





5番目は、対数平方平均二乗誤差(RMSLE)

対数平方平均二乗誤差(RMSLE)は、二乗平均平方根誤差(RMSE)に似ていますが、下記のスライドに示す式で算出されます。真値と予測値の対数をとってから計算する点が異なります。

対数変換を取り入れることで、スケールの調整、対称性の確保、異常値の影響の軽減など、多くのメリットがあります。特にデータの範囲が広く、外れ値が存在する場合や、相対的な誤差を重視する場合に適しています。

対数平方平均二乗誤差は、0が理論上の最適値であり、最も値が小さいモデルが最も優れた予測性能を持つと評価されます。





最後は、平均絶対パーセント誤差(MAPE)

平均絶対パーセント誤差(MAPE)は、各データに対して「予測値と正解値との差を、正解値で割った値の絶対値を計算した後、その総和をデータ数で割った指標です。下記のスライドに示す式で算出されます。

平均絶対誤差(MAE)では絶対値の差で比較しましたが、MAPEでは±○○パーセントズレているかの平均で求めます。

平均絶対パーセント誤差が、0%の時は、予測値がすべて実測値と完全に一致している理想的な状態です。

一般的な目安としては、以下の基準が用いられることがあります。

   10%未満  非常に高い精度
   10%~20% 良好な精度
   20%~50% 妥当な(許容できる)精度
   50%超   精度が低い





今まで説明してきた各評価指標には、モデルの性能を測る上での「得意分野」や「特徴」があります。主な評価指標と使い分けをまとめておきます。

●決定係数: モデルがどれだけデータの変動を説明できているか(適合度)を示します。予測の全体的な当てはまりを見たい場合に有用です。

●平均絶対誤差・二乗平均平方根誤差: 予測値と実測値の間の誤差の大きさを示します。

・ 二乗平均平方根誤差は大きな誤差により大きなペナルティを与えるため、外れ値の影響を受けやすいですが、大きな予測ミスを避けたい場合に重要です。

・ 平均絶対誤差は誤差の絶対値の平均で、誤差の平均的な大きさを直感的に理解しやすい指標です。

●平均絶対パーセント誤差: 誤差をパーセントで示すため、異なるスケールのデータセット間でのモデル比較や、相対的な誤差の大きさを評価したい場合に便利です。

業務上では、次のような使い分けができるでしょう。

◆大きな予測ミスを絶対に避けたい場合
 →大きな誤差に厳しい指標である二乗平均平方根誤差

◆予測の平均的な誤差を最も重視したい場合
 →誤差の絶対値の平均で直感的な平均絶対誤差

また、複数の評価指標を見ることで、高い説明力(決定係数)と低い予測誤差(平均絶対誤差・二乗平均平方根誤差)という、モデル設計におけるトレードオフを適切に評価できます。




コードの続きを見てみましょう。『compare_models』関数の次のコードは、『create _model』関数モデルを呼び出して確認しています。

この『compare_models』関数の出力で、一番左の『モデルの略称』を『’ ’』で囲んで()内に記入すると、そのモデルの各評価指標の一覧が算出されます。そしてそのモデルは、『best』と名付けられました。




『compare_models()』の結果では、モデルの略称『gbr』、すなわち『Gradient Boosting Regressor』(勾配ブースティング回帰)が最も決定係数の値が高いのですが、このチュートリアルでは、それに準ずる『catboost』を選択しています。

もっとも、 略称『catboost』である『CatBoost Regressor』は勾配ブースティングの一種なので、『create_model』 関数で出た結果は、各指標ともにそれほど違いはありません。




これで、回帰の『モデルの評価・比較』は終了です。分類と比較して、評価指標は新しいものが出てきましたね。












コメント