とある回帰問題の評価指標を考えた話

はじめに

「最近仕事で多次元ベクトル集合を推測する」時の評価指標を考えるシーンがあったので、 備忘録として考えたことを書き記しておく。

実務に関わることなので情報はぼかしている。(故にちょっと抽象的すぎるかも……)

解こうとしている問題

以下のような2次元ベクトル集合を予測する問題

予測には、仮想ロボットが取得した3D点群データや周辺の画像データを用いる。

今回、ここは触れない。

f:id:massox:20200716193927p:plain

(説明変数を省いて)テーブルデータで表現すると

f:id:massox:20200716194004p:plain

みたいな雰囲気になる。

何を評価したいのだろうか?

顧客にヒアリングしてみると、以下のような返答であった。

  • 搭載しているセンサーの性能と補正ベクトルの推定ロジックから、正解ベクトルに完全一致しないのは承知している。つまり、限界値があることは理解している。
  • センサーが取得したデータに問題がない場所については、可能な限り上記限界値付近に収まってほしい
  • ただし、外部環境が要因で適切にセンシングできない場合は、多少大きく予測が外れてしまうところはあってもしょうがない。その場合は、後の工程で手動補正を行う。
  • そのうえで、予測結果に対してOK/NG判定をできるような指標が欲しい。「OK=後工程に流してもよい」を意味する。

f:id:massox:20200718171142p:plain

少し整理してみる。

(おそらく)顧客のやりたいこと

  • 補正ベクトルの自動推定ロジックがどの程度「使える」のかを知りたい
  • 後工程にまわしてもよいかどうかを妥当な基準を用いて判断したい

ポイント

  • 後工程にまわす基準が決まっていない。後工程にまわす基準を考える手助けになる情報があると良さそう。
  • 一つの判断指標として、「センサー分解能と予測ロジックの性質から求められる許容誤差」があると良さそう
  • 一つの判断指標として、「外れ値=後工程で手動補正が必要になりそうなデータ数」があると良さそう
  • 目標値が2段階存在し、データは3つに分類されるだろう
    • 分類①:センサー分解能+予測ロジック的に算出できそうな最高クラスの結果
    • ==========目標値①=============
    • 分類②:悪くはない。後工程で手動補正が必要ではない結果
    • ==========目標値②=============
    • 分類③:外れ値=後工程で手動補正が必要になりそうな結果
  • 目標値①は、推定性能を測る為に利用する
  • 目標値②は、推定性能を測る為+後工程への影響を測る為に利用する

次のアクション

(おそらく)顧客のやりたいこと」を実現する為に

以下のアクションをとることにする。

  1. 補正ベクトルの自動推定ロジックがどの程度「使える」のかを示す情報を提示する
  2. 後工程にまわす基準を考える手助けになる情報を提示する

推定ロジックがどの程度「使える」のかを示す情報を提示する

これは、シンプルに回帰でよく利用される「決定係数・RMSE・MAE」などを用いれば良さそうだ。 評価指標が目標となる値より大きいか、小さいかを見れば良い。


ここでは便宜的に目標値①をL_1、目標値②をL_2とする。 さらに簡単の為、X成分もY成分も目標値は同じものとする。


さて、ここで、目標値①をギリギリ達成するような仮想の推定値Z _ 1は以下のように計算できる。

Z_{1i} = (y_i - L_1)

次に、目標値②をギリギリ達成するような仮想の推定値Z _ 2は以下のように計算できる。

Z_{2i} = (y_i - L_2)

ある指標における目標値を求めたいならば、 上記Z _ 1Z _ 2について、指標値(例えば決定係数R2)を求めれば良い。


(具体例)決定係数 R2 の場合

決定係数の数式は、推定値をY _ i、正解値をy _ i、正解値の平均を\overline{y}とすると、

R^2 = \frac{\displaystyle{\sum_{i = 1}^n {\left(Y_i - \overline{y}\right)}^2}}{\displaystyle{\sum_{i = 1}^n {\left(y_i - \overline{y} \right)}^2}}

と表現できる。


したがって、上記 Y _ iZ _ {1i} を代入すれば目標値①が、 Y _ iZ _ {2i} を代入すれば目標値②が求められる。

すなわち

R^2の目標値① = \frac{\displaystyle{\sum_{i = 1}^n {\left(Z_{1i} - \overline{y}\right)}^2}}{\displaystyle{\sum_{i = 1}^n {\left(y_i - \overline{y} \right)}^2}}


R^2の目標値② = \frac{\displaystyle{\sum_{i = 1}^n {\left(Z_{2i} - \overline{y}\right)}^2}}{\displaystyle{\sum_{i = 1}^n {\left(y_i - \overline{y} \right)}^2}}


※注:決定係数やRMSEは相対的な値なので、判断指標にするならば使うデータセットは固定しなければならない


一応、外れ値を入れた場合と入れない場合の2パターンの値を計算しておくと良さそう。

レポートするときに両方出せるようにしておくと良いだろう。

後工程にまわす基準を考える手助けになる情報を提示する

自動補正によって全工程の工数をどれだけ削減できるだろうか?といった角度から結果を見ることができれば、

後工程にまわす基準」を考えやすそうだ。今はその情報がないので、作ってやればよいだろう。

具体的には、「外れ値が○件のとき、後工程で追加で発生する整備コストは△である」という関係式を作って上げて、 実験したときの「外れ値の件数」から「後工程で追加で発生する整備コスト」を算出する。


「外れ値の数が○以下であれば良い」を直接判断するのは難しいけど、 「後工程で追加で発生するコストが○円(あるいはOP工数△時間)以下であれば良い」を判断するのは、少し簡単だからだ。

■手順

  1. 外れ値を定義する ※顧客ヒアリングにより決める
  2. 外れ値1つあたりの追加コスト(=手動整備コスト)を算出する ※調査+試算
  3. 外れ値をカウントする
  4. 外れ値の数 × 外れ値1つあたりの追加コスト=後工程で追加で発生する整備コスト


まとめ

結果として、以下の情報を提供することが今の所の結論だ。

  1. R2, RMSE, MAE を外れ値含む/含まないの2パターン算出し、目標値①と目標値②と並べて提示する。
  2. 外れ値の個数と単位コストから後工程で追加で発生しそうな整備コストを提示する。