機械学習の基礎
-------------------------5.モデルの評価方法(2)
前章「4.モデルの評価方法(1)」で性能評価方法を述べました。
正解率、混同行列による適合率、再現率、f値です。
これら評価指標では、例えば適合率=90%のように予測性能が求まります。
先の新型コロナウイルスの例では、陽性の適合率=90/(90+10)=90%でした。
予測モデルが予測した陽性者が100人いれば、そのうち90人が真の陽性であることを意味します。
これは、なかなか高い性能だと言えます。
しかし、このモデルはいつも90%の性能(適合率)を得ることができるのでしょうか?
今日は90%、昨日は50%、一昨日は95%...。
このようにバラツキがあっては信頼できるモデルとは言えません。
ではどうすればよいのでしょうか?
統計では、危険率(p値)を算出して「信頼度」を求めます。
これはめったに起こらない(許容可能な)確率のことです。
一般的にp値=5%以下であれば、信頼できると考えます。
これは、得られた性能(適合率)=90%が、100回中95回得られることを意味します。
すなわち、100回中5回は、90%とはならないが、許容できると解釈します。
データ件数が多くなると、p値は小さくなり信頼度が向上する傾向があります。
機械学習の世界では扱うデータ件数が非常に多いため、このp値を求めることは稀で、そのモデルは信頼できるということが前提となっています。
現にscikit-learnの多くの推論アルゴリズムではp値のメソッドを持っていません。
k分割交差検証という方法を信頼度のように扱う人もいますが、k分割交差検証はあくまで、k回の平均性能が求まるだけで、k個のモデルのバラツキ(信頼度)は分かりません。
データ数が多い場合は、この信頼度はあまり気にする必要はないのですが、データ数が少ない場合(千件以下)は、なんらかの方法でこの信頼度を得る必要があります。
その一つとしては、ホールドアウトを複数回行う方法です。
データをシャフルしたホールドアウト(学習データと検証データ)の検証データ性能をk回取得します。
そして、その値から平均、標準偏差を求め、p値を算出します。
p値が5%以下であれば、その平均性能は信頼できるものであり、モデルを実用化しても問題ないと考えます。
重要なのは、データ件数が少ない場合、性能と合わせて、「信頼度」も必ずよく検証することです。