gazou6 機械学習の基礎

-------------------------

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%以下であれば、その平均性能は信頼できるものであり、モデルを実用化しても問題ないと考えます。

重要なのは、データ件数が少ない場合、性能と合わせて、「信頼度」も必ずよく検証することです。