【GCP】BigQuery MLで作成した線形回帰モデルを評価してみる

こんにちは。SCSKの山口です。

本ブログでは、前回のブログで作成したBigQuery MLの線形回帰モデルの性能を評価してみたいと思います。

[前回ブログ]モデル作成・予測結果

【GCP】BigQuery MLを触りたいときに読むブログ
今回はBigQuery MLを使って機械学習モデルの作成、テストをやってみます。 AI/MLの知識はあまりないがとにかくBigQuery MLを触ってみたい方、BigQuery MLでモデルを作成して推論してみたい方にぜひ読んでいただきたいブログです。

前回のブログで線形回帰モデルの作成・予測をした結果、下記の出力を得ました。

従業員数 モデル予測結果(原材料費) 正解値(原材料費)
476 1344.5283231034557 1564

この結果は果たしてどうなのでしょうか、、?モデルの予測精度はどうなのでしょうか、、?

これを今回は計測したいと思います。

 

モデル評価

BigQuery ML モデルの評価の概要  |  Google Cloud

作成したモデルの評価は、「ML.EVALUATE関数」を用いることで可能です。
選択したモデルタイプによって、他の評価関数を使用することで様々な評価指標を得ることができます。詳細は公式ドキュメントをご覧ください。

今回はモデルタイプとして線形回帰を選択したので、ML.EVALUATE関数で評価してみます。
下記SQLを実行します。

SELECT
  *
FROM
  ML.EVALUATE(MODEL `yamaguchi_test_bqml.test_model_liner_reg`,
    (
    SELECT
      IFNULL(cost_manufacturing, 0) AS cost_mf,
      IFNULL(cost_material, 0) AS label,
      IFNULL(cost_employees, 0) AS cost_emp,
      IFNULL(manufacturing_line, 0) AS manu_line,
      IFNULL(manufacturing_efficiency, 0) AS manu_eff,
      IFNULL(employees, 0) AS emp
    FROM
      `scsksdv-dev-dais.yamaguchi_test_bqml.test` ));
実行結果

公式ドキュメントを見ると、線形回帰のモデルでは、ML.EVALUATE関数を実行することで下記の指標が得られます。

  • mean_absolute_error:平均絶対誤差
  • mean_squared_error:平均二乗誤差
  • mean_squared_log_error:平均二乗対数誤差
  • median_absolute_error:絶対誤差の中央値
  • r2_score:R2スコア
  • explained_variance:説明分散

 

回帰モデルの評価指標

平均絶対誤差:MAE

SCSK AI AutoML
「誰でも」「簡単に」AIを利用できるようにするために、SCSKでは、H2O Driverless AIやLearning Center Forecastなど、データサイエンティストによる機械学習モデル作成を自動化・高速化するソリューションを...

平均絶対誤差(MAE)は、各行で[予測値 – 正解値]の絶対値(=絶対誤差)を取り、その平均を出したものです。
以下の式で表されます。

MAEの代表的な特性は下記のとおりです。

  • 0以上の値
  • 小さいほど良い結果となる
  • 外れ値に対して脆弱

今回の結果で言うと、MAE=190くらいなので、「予測値と正解値が平均して190くらい離れている」ということになります。

評価で使用したtestテーブルに外れ値を加えてMAEの値を見てみましょう。

21行目に原材料費が外れ値となるようなデータを追加しました。

この状態で再度モデルを評価してみると、

MAEの値がかなり大きくなりました。
このようにたった一つでも外れ値のデータが入ってしまうと値が大きくなってしまうのがMAEの弱点です。

平均二乗誤差:MSE

SCSK AI AutoML
「誰でも」「簡単に」AIを利用できるようにするために、SCSKでは、H2O Driverless AIやLearning Center Forecastなど、データサイエンティストによる機械学習モデル作成を自動化・高速化するソリューションを...

平均二乗誤差(MSE)は下記の式で表されます。

先ほどのMAEとかなり似た式ですが、予測値と正解値の差を二乗している点が違いです。

誤差を二乗しているため、より大きな誤差が発生していると値が大きくなります。すなわち、間違いをより重要視した指標ということになります。

この指標も値が小さいほど良い結果となります。

お気づきの方も多いかもしれないですが、MSEはMAEよりも外れ値に対して脆弱です。
誤差を二乗しているため、その分外れ値に対しても弱くなってしまうわけですね。

平均二乗対数誤差:MSLE

[損失関数/評価関数]平均二乗対数誤差(MSLE:Mean Squared Logarithmic Error)/RMSLE(MSLEの平方根)とは?
用語「平均二乗対数誤差」について説明。損失関数/評価関数の一つで、各データに対して「予測値の対数と正解値の対数との差(=対数誤差)」の二乗値を計算し、その総和をデータ数で割った値(=平均値)を表す。

平均二乗対数誤差(MSLE)は、各行で予測値の対数と正解値の対数の差(=対数誤差)の二乗を計算し、その平均を出したものです。0に近いほど良い結果となります。

下記の式で表されます。

数学では、底が同じ対数の引き算は割り算に変換することができます。これに着目すると、上記の式は「予測値/正解値」の形に変換することができます。

すなわちMSLEは、予測値/正解値の比率に着目した指標であるということが言えます。
比率に着目することで、誤差が大きくなっても過大に評価しないことが可能です。
そのため、MAE,MSEの弱点であった、外れ値への脆弱性をある程度克服した指標と言えます。

絶対誤差中央値:MedAE

[評価関数]中央絶対誤差(MedAE:Median Absolute Error)とは?
用語「中央絶対誤差」について説明。評価関数の一つで、各データに対して「予測値と正解値の差(=誤差)」の絶対値を計算していき、それら全ての計算結果における中央値を表す。

そのまま略すと「MAE」となり平均絶対誤差と混同してしまうので「MedAE」と略すのが一般的のようです。

MedAEは、各行で[予測値 – 正解値]の絶対値(=絶対誤差)を計算し、小さい順に並べた際の中央値を出したものです。
下記の式で表されます。

この値も、0に近いほど良い結果となります。

決定計数:R2スコア

SCSK AI AutoML
「誰でも」「簡単に」AIを利用できるようにするために、SCSKでは、H2O Driverless AIやLearning Center Forecastなど、データサイエンティストによる機械学習モデル作成を自動化・高速化するソリューションを...

R2スコアは、回帰モデルを評価する際に「最も直感的な基準」だと言われています・
これまで説明した指標はすべて誤差を見るものでしたが、ここでやっとモデルの性能(良し悪し)を測ることのできる指標が登場します。

複数のモデルの性能を比較する際にもよく使われる指標で、モデルがどれだけデータをうまく説明できているかを表現してくれる値です。
テストの点数に置き換えると理解しやすいです。

  • 数学のテストの点数が高い:数学についてよく理解できており、説明できる。
  • 英語のテストの点数が悪い:英語についてよく英買いできておらず、説明できない。

下記の式で表されます。

SSEとSSTについてみていきます。

残差平方和:SSE

  • 各行に対して、観測値(正解値)と予測値の差を二乗した値を総和したもの
  • MSEの平均を求めないバージョン
  • 正解値と予測値がどれくらい離れているかを示す

二乗平均:SST

  • 各行に対して、観測値(正解値)と全観測値の平均との差を二乗した値を総和したもの
  • 分散の平均を求めないバージョン
  • 正解データ自体の平均からのばらつき具合を示す

これを抑えたうえでr2スコアの公式をもう一度見ると、

予測値に正解データの平均値を用いた” 単純なモデル ”” 作成したモデル ”を比較(前者で後者を割る)する

という作りになっていることがわかります。このことから、r2スコアは非常に単純なモデルと比較した際のパフォーマンスを示していると言えいます。

R2スコアは、1に近づくほど良い結果となります。

説明分散:EV

[評価関数]分散説明率(Explained variance score)とは?
用語「分散説明率」について説明。線形回帰モデルなどの評価関数の一つで、回帰式のモデルが「観測データの分散」のうちどれくらいの割合を説明するかを表す。決定係数R2の代わりに用いられることがある。

説明分散(ここではEVと略します。)は、R2スコアと同様にモデルの性能を測ることができる指標です。

正解データの散らばり(分散)のうち、モデルがどのくらいの割合を説明できるかを表現する指標です。
下記の式で表されます。

式のつくりを見ていきますが、視覚的に把握するために図式化します。

  • オレンジ色:モデル予測できた割合
  • 紺色:モデル予測できなかった(誤差)割合

です。

EV値では上図のオレンジ色の部分を以下の流れで表現します。

EV値は、1に近づくほど良い結果となります。

 

作成したモデルの性能はどうなの?

必要な知識が揃ったところで、今回作成した線形回帰モデルの性能を見てみたいと思います。

R2スコアとEV値を見てみると、

  • R2スコア:0.568692977058064
  • EV値:0.58093681298823574

という結果でした。だいたい60点くらいの性能のモデルですね。

 

まとめ

今回は線形回帰モデルを評価してみました。

複数の指標を組み合わせて評価することが非常に重要だと感じました。
ほとんど指標の説明に費やしてしまいましたが、今後はモデルの性能を向上させるための方法を調べてみたいなと思っています。

著者について

Google Cloud歴2年目です。
日々捌ききれないほどのインプットを浴びているので、本ブログをアウトプットの場として活用しています。
-----
保有資格:応用情報技術者、Google Cloud 認定資格全冠(11冠)
好きな(よく触っている)サービス:BigQuery、Cloud Functions、Data Fusion

山口翔平をフォローする

クラウドに強いによるエンジニアブログです。

SCSKクラウドサービス(Google Cloud)は、Google Cloudの多彩なAIや各種サービスを活用したワンストップソリューションを提供します。SCSKのノウハウや体制を有効活用し、業務課題の解決に必要な全体検討と組み合わせで、最適な業務実装まで支援します。

AI・MLGoogle Cloudソリューションデータ分析・活用基盤
シェアする
タイトルとURLをコピーしました