メモ

F値に関するメモ

//追記ラベルのテーブルに関してPRをいただきました(2018年06月24日に修正しました).ありがとうございます.

機械学習/統計において,F値という評価方法が用いられる.
この記事はF値に関するちょっとした理解を与える(メモ代わりの)記事である.

F値の定義

F値の定義を確認する.
表記は朱鷺の杜Wiki-F値を参照し,次のように表記する

真のラベル 予測ラベル 表記
 真 True Positive (TP)
 偽 False Negative (FN)
 真 False Positive (FP)
 偽 True Negative (TN)

モデルの学習結果としては,TPとTNが多い方が嬉しく,FPやFNが少ない方が嬉しい.前者は真のラベルと予測レベルが一致しているためTrueがついていて,後者は2つのラベルが一致していないためFalseがついている.つまりは,Tが頭に付いてる数値が増えるのは正義,Fが頭についてる数値が増えると辛い.

上記の記号を用い,PrecisionとRecallを次で定義する.

Precision = \frac{TP}{TP+FP},  \ \ Recall = \frac{TP}{TP+FN}

簡単のため以降ではP=Precision, R=Recallとする.
この時,次で定義される値がF値(もしくはF1値)と呼ばれるものになる.

F = \frac{2P*R}{P+R}

F値の性質

このF1値の範囲は

0 \leq F \leq 1

である.機械学習/統計モデルとしては,1に近づく方がより良い精度で,0に近づく方がより悪い精度であることを意味する.しかしこの直感的な理解がつらい.それぞれかけて,2倍して,足したので割るってつまりは何を意味してるの?もっと分かりやすい説明欲しい.そこでこの記事です(?)
まずは一般的な解釈を振り返る.

一般的な解釈

wikipediaにもPrecisionとRecallに関するページがあるが,情報量が多すぎてゴチャゴチャしててつらい.今

A=TP+FP,  \ \ B = TP+FN

とする.つまりAは真のラベルがPositiveデータの数であり,Bは予測されたPositiveデータの数である.これを用いれば

P = \frac{TP}{A}, \ \ R = \frac{TP}{B}

となり,Precisionは真のラベルを上手く予測できた割合,Recallは予測したラベルに正しいのがどれだけ混ざってたかの割合になる.これを組み合わせた何か,というのがF値の解釈の1つ.

幾何平均的な解釈

どう組み合わせたかに対し,幾何平均からの解釈を与えられたのが次のブログである.あらびき日記-F値に調和平均を使う理由(再).基本的には,次の形

F = \frac{2}{\frac{1}{P}+\frac{1}{R}}

に注目し,F値がPrecisionとRecallの幾何平均である,という視点が与えられている.これはwikipediaより丁寧でとてもありがたい.しかし,今回は最初の表(真のラベル/予測したラベル)との関係が明瞭になるような解釈を与える.

F値の解釈:間違ったデータ数の影響

次の式変形を行う(というかこれがこの記事の全てである)

まずF値の定義は次である.

F = \frac{2P*R}{P+R}

この分母と分子をそれぞれ次のように変形する.

P*R = \frac{TP}{A} * \frac{TP}{B} = TP * \frac{TP}{A*B} \\
P+R = \frac{TP}{A}+\frac{TP}{B}  = (B+A) * \frac{TP}{A*B}

F値に代入するとTP/(A*B)がそれぞれ打ち消され,またAとBを戻せば

F = \frac{2TP}{A+B} = \frac{2TP}{(TP+FP)+(TP+FN)}

調整して次式を得る.これが目的の形式である.

F =  \frac{TP}{TP+\frac{1}{2}(FP+FN)}  

FP+FNは,(両方の頭にFが付くとおり),間違ったラベル予測をしたデータの総数である.C=FP+FNとすれば,C=0でF値は1になる.C!=0の場合では,C/2が分母に足されている.

この形式に基づけば,間違って予測したデータ数が0ならF値は1, 0でないならそれを1/2して分母に足して影響を見る.それがF値といえる.