trybeetle

take it slow!!

Skewed dataについて


Posted on July 26, 2018, 1:25 a.m.



下記の流れでMLモデルを改善するとします。

  • 最初に作成するモデルは、シンプルでスモールスタートとする。
  • accuracyを上げるために、featureをaddしたり、layerを増やしたり、複雑化させる。
  • 変更前後でaccuracyを求め、比較し、変更を取り入れるか判断する。

しかし、skewed dataの様な場合だと、accuracyによる判定では対応できない場合があります。


skewed dataの場合

skewed dataの場合、例えば、1%の確立で'1'、99%の確立で'0'となるようなデータセットの場合を考えます。仮に、h = 0と設定すると、それだけで、accuracy=99%となってしまいます。そうしたチートを防ぐために、skewed dataの場合には、accuracyによる比較ではなく、F scoreによる比較を行います。

F scoreは下記の様に計算します。
F score = 2 * ((P * R)/(P + R))
※P = Precision、R = Recall

上記のError matrixで、PrecisionとRecallについて考えます。
Preciseはh=1と予測し、実際にy=1であった割合。
Recallは実際にy=1であり、h=1と予測していた割合。
そのPreciseとRecallを用いてF scoreを求めます。上記の様なskewed dataの場合、h = 0と仮定とするようなチートを行うと、Recall = 0となり、Fscoreも0となります。
※Fscoreの高いほうを、より最適であるとして採用します。
※Fscoreもaccuracyと同様に、Training用datasetではなく、validation用datasetに対して計算します。

以上、skewed dataについてでした。


Category:ML
Tag: ML Octave
July 26, 2018, 1:25 a.m.

Comments