Python
機械学習
入門
性能指標

機械学習 モデル構築入門[モデルと性能指標について]

機械学習の流れを大きく分けると、以下の3つに大別できます。

  • 1.データ分析
  • 2.モデル構築
  • 3.データ運用

ここではそのうちの二つ目、「モデル構築」について、「モデルとは何か」及び「モデルの評価基準」についての知識をまとめていきます。
初心者のメモなので、レベルが低いことはご勘弁ください。
誤りなどあれば、指摘していただけると嬉しいです。

なお、ここでは教師あり学習を前提として話を進めていきます。

モデルとは

上述のように、機械学習を行うには大前提としてデータが必要なわけですが、そのデータに対しての分析処理を担うのがモデルです。
例えば、以下のような式を例に考えてみます。

y = f(x)

ここで、求めたい結果を仮に「カフェの適切な明るさ」とします。その結果を予測するためには、「カフェの明るさ」を試行したデータはもちろん、「その日の天気(外の明るさ)」「顧客の満足度」などのデータも必要に思えます。
これを先ほどの式に代入するとこのようになるかと思います。

カフェの適切な明るさ = f(カフェの明るさ、その日の天気、顧客満足度)

この式において、関数f に相当するもの、つまりデータを分析し結果を導き出すものが「モデル」と呼ばれるものです。

では「モデル構築」とは?
それは文字通りモデルを構築することなのですが、今の機械学習の世界では自分で分析の論理(ロジック)を組むことはあまりしません(それは第二次AIブームの時に行われ、衰退した文化です)

すでに用意されているモデル(分析ロジック)の中から適切なモデルを選択する、それが機械学習における「モデル構築」です。

モデルの性能指標

モデルの中身に入る前に、選択したモデルが適切であるかどうかを判断する基準について確認します。
モデルの性能指標は多くありますが、ここでは特に4つを挙げます。

Accuracy (全体正解率)

 :算出した予測がどれだけ正解に近かったか。

Accuracy = (TP+TN)/(TP+TN+FP+FN)

※真陽性(TP / TruePositive):正しいものに対して正しいと予測できたこと
※真陰性(TN / TrueNegative):正しくないものに対して正しくないと予測できたこと
※偽陽性(FP / FalsePositive):正しくないものに対して正しいと予測してしまったこと
※偽陰性(FN / FalseNegative):正しいものに対して正しくないと予想してしまったこと

予測値:「正」 予測値:「誤」
データ:「正」 TP FN
データ:「誤」 FP TN

[example]
犬と猫の画像がそれぞれ40,60件存在する合計100件のデータから犬の画像を検出することを目的として分析を行なったところ、以下のように予測を算出した。

  ・「犬」と判定したもののうち、30件が「犬」だった(TP = 30)
  ・「猫」と判定したもののうち、40件が「猫」だった(TN = 40)
  ・「犬」と判定したもののうち、10件が「猫」だった(FP = 10)
  ・「猫」と判定したもののうち、20件が「犬」だった(FN = 20)

予測値:「犬」 予測値:「猫」
データ:「犬」(正) TP(30) FN(20)
データ:「猫」(誤) FP(10) TN(40)

この時の予測全体についての正解率は、

Accuracy = (30+40)/(30+40+10+20)

と算出できるので、Accuracy は 0.7。

Recall(再現率)

 :見つけるべきもののうち、正しく見つけられたものの割合。Sensitivility(敏感度)ともいう。

Recall = TP/(TP+FN)

[example]
先ほどと同じデータ例において、「犬」のデータについての正解率は

予測値:「犬」 予測値:「猫」
データ:「犬」(正) TP(30) FN(20)
Recall = 30/(30+20)

と算出できるので、Recall は 0.6。

Precision(適合率)

 :正しいと判断したもののうち、本当に正しかったものの割合。

Precision = TP/(TP+FP)

[example]
先ほどと同じデータ例において、「犬」と判定したものについての正解率は

予測値:「犬」
データ:「犬」(正) TP(30)
データ:「猫」(誤) FP(10)
Precision = 30/(30+10)

と算出できるので、Precision は 0.75。

F-measure(F値)

 :適合率と再現率から、そのバランスを測ったもの。

Fmeasure = (2*Recall*Precision)/(Recall+Precision)

[example]
先ほどと同じデータ例において、その適合率と再現率のバランスを測ると、

Recall = 0.6 \\
Precision = 0.75 \\
\\ 
Fmeasure = (2*0.6*0.75)/(0.6+0.75)=0.9/1.35=0.66...

と算出できるので、 F-measure は 0.66 となります。

終わりに

モデルと性能指標についてのまとめは以上となります。
本当は各指標の数値の意味まで書ければ良いのですが、初学者につきまだよくわかっていません。今後の記事で明らかにしていきたいと思います。

以上。
2018/2/3