こんにちはー。管理人のピヨ猫でーす。
SONY Neural Network Consoleで機械学習をしてるんだけど、学習精度が良いかどうかってどうやって確認すれば良いのかな?
訓練データとテストデータのエラー率が低ければそれで良いのかな?
ディープラーニングでは正解率が高いだけでは良い結果と判断は出来ないよ。「正解率(accuracy)」「適合率(precision)」「再現率(recall)」「F値(F measure)」を確認しないとダメなんだ。これから、SONY Neural Network Consoleで各種指標を確認する方法を紹介するね。
1.機械学習の学習結果の評価指標
訓練データとテストデータのエラー率
機械学習の精度の確認で最初に見るべきものは、訓練データとテストデータのエラー率です。
- 訓練データのエラー率 ・・・ 訓練データに対し不正解だった確率
- テストデータのエラー率 ・・・ テストデータに対し不正解だった確率
答えに一致していないのですから、エラー率が大きい(不正解の確率が大きい)ことは良くありません。
上記の場合、訓練データのエラー率は学習につれて減少していますが、テストデータのエラー率が上昇しています。未知のデータについては正解できていないということです。
テストデータのエラー率が高いものは細かく評価するまでも無くNGです。
訓練データとテストデータのエラー率を見るだけでは何故良くないのか?
では訓練データとテストデータのエラー率を見るだけでは何故評価として足りないのでしょうか?
例えば、製品の出荷にあたり不良品を検知したい場合を考えてみましょう。
製品100個の中で不良品が3個あったとします。これに対し、正常な製品を調べたとします。調べた結果99個が正常、不良品は1個と判断した場合、正解率はいくつでしょうか?
正解率 = 正常な製品の数97個 / 正常と判断した数99個 = 97% となり、非常に優秀な結果です。でも実際は不良品を見分けた確率は = 不良品と判断した数1個 / 不良品の製品の数3個 = 33%です。不良品が3個あるのに1個しか見つけれれていません。
この様に、正解率が高いからといっても、それだけで良い結果とは評価出来ないのです。
2.機械学習の学習結果の評価指標
混同行列(Confusion Matrix)
実際の値と予測値を組み合わせると以下の表が出来上がります。これを混同行列(Confusion Matrix)と言います。
機械学習の学習結果の評価はこれらの値を使って行います。
- 真陽性(TP)・・・ True Position
- 偽陰性(FP)・・・False Position
- 偽陽性(FN)・・・ False Negative
- 真陰性(TN)・・・ True Negative
正解率(accuracy)
正解率(accuracy)= (TP + TN) / (TP + FP + FN + TN)
全データ中に対し、予測がどれだけ当たったかを表す指標。
適合率(precision)
適合率(precision)= TP / (TP + FP)
予測が正の中で、実際に正であったものの割合。
再現率(recall)
再現率(recall)=TP / (TP + FN)
実際に正であるものの中で、正だと予測できた割合。
F値(F measure)
F値(F measure)= {2 × (precision × recall)} / (precision + recall)
適合率と再現率の調和平均。適合率(precision)のみ、あるいは再現率(recall)のみで評価すると予測が隔たっている時に値が高くなる可能性があるので、適合率(precision)と再現率(recall)の双方が良い数値かを見るための指標。
3.SONY Neural Network Consoleで学習結果の評価指標を確認する方法
学習結果の評価ウィンドウの表示方法
①EVALUATIONタグを選択 ⇒ ②Confusion Matrixラジオボタンを選択
各種指標の確認方法
SONY Neural Network Consoleの混同行列(Confusion Matrix)の確認方法は下図の通りです。
4.混同行列の評価例
参考として先ほどの図をもう一度みてみましょう。
これは、じゃんけんで相手がグー(y0)を出すか、チョキ(y1)を出すかパー(y2)を出すかを予想した様なものです。(※)
正解率(accuracy)
正解率は46%です。じゃんけんの3択だと思えば良い方です。
再現率(recall)
チョキ(y1)の正解率が87%、残りは10%前後です。
何かがおかしいですね・・・。
適合率(precision)
チョキ(y1)と予想して実際にチョキ(y1)だった確率が48%です。残りは30%前後です。
F値(F measure)
チョキ(y1)が62%です。残りは20%前後です。
評価結果
まず、正解率が46%ですからあまり良くはありません。ですが、じゃんけんだと考えれば46%は高いので、正解率はまずまずの結果です。
次は、再現率のチョキが87%と高いことについてです。これは殆どチョキと予想しているからです。再現率は「実際に正であるものの中で、正だと予測できた割合」ですから、常にチョキを出していれば、評価が高いのは当たり前です。つまり、AIは、相手はチョキを出す傾向があり、自信がなければチョキを選んでいると思われます。
適合率はどうでしょうか?チョキ(y1)だった確率が48%です。残りは30%前後です。適合率は「予測が正の中で、実際に正であったものの割合。」です。前述の通り、AIは相手がチョキを選ぶ傾向が高いと予想しています。
チョキと予想した場合の適合率は48%ですので、相手がチョキを出す確率が1/3ではなく、もっと高いというAIの予想は合っていると評価できます。
しかし、グー、パーを出すと予想し、実際にグー、パーだった確率は30%(約1/3)で、ランダムと変わりません。
ですので、今回のサンプル結果は、AIは相手がグー、チョキ、パーのどれを出す確率が高いかの傾向はつかめているが、どれを出すかは予測できていないと評価できます。
この様に、正解率だけでなく、再現率や適合率を使うことで、AIの精度を正しく分析することが出来ます。
前述の通り、これは実のところじゃんけんではなく、目下奮闘中のFX分析の結果なのでイマイチな結果です・・・・。がんばります。