質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

Q&A

解決済

2回答

1652閲覧

認識率、精度と再現率について

mikawa

総合スコア13

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

1グッド

2クリップ

投稿2018/01/22 17:34

編集2018/01/23 02:18

顔画像のパターン認識システムを作りました。
クエリ画像は適当に300枚、データベースには50人分が10000枚あります。
クエリとして入ってきた画像に対して、データベースにある画像とのピクセルごとの二乗誤差を全て計算し、もっとも小さい人物を識別結果としています。
また、クエリ画像にはデータベースに入っていない人の顔画像をいれて、それをリジェクト(拒否)するために、二乗誤差に閾値を設けてリジェクトをするように実装しました。(データベースにない顔画像はある画像に比べて二乗誤差が大きい)
クエリ画像を順番に入力して、それと同じ人物の顔画像を出力したら正解、そうでなければ不正解、閾値に引っかかったらリジェクトとします。

このシステムの評価としてはじめは、認識率として

認識率 = リジェクトしてない場合の正解数/(300 - リジェクトした回数)

のようにしようと思っていたのですが、この場合、閾値して誤認識したものをほとんど排除するようにすると、リジェクトしたものの中にも正しく認識したものが含まれており、認識率は上がるが、正解のものまで多数リジェクトしてしまっているという問題点に気づきました。

そこで、このシステムの評価として、精度(precision)と再現率(recall)を使おうと思いました。

リジェクトした場合を、不正解と予測
リジェクトしなかった場合を正解と予測

として

リジェクトして、正解の場合をFalse Negative
リジェクトして、不正解の場合をTrue Negative
リジェクトしないで、正解の場合をTrue Positive
リジェクトしないで、不正解の場合をFalse Positive

として精度と再現率をそれぞれ計算してF値までだしました。
ここで、精度 = TP/(TP+FP)、再現率 = TP/(TP+FN)とします。

しかし、閾値を調節して、リジェクトしたものがすべて不正解だったとき(FN=0)、リジェクトしなかった中にも不正解のものが含まれているのですが、再現率が100%となって、これはおかしいのではと思いました。

質問をまとめると

  • 上記のようにFN,TN,TP,FPとして精度と再現率を求めるやり方は合っているか?
  • このシステムに上記のような精度と再現率を用いた評価は適切か?
  • このようなリジェクトあり多値問題システムの評価はどのようにして行えばよいか?

になります。よくわからない文章になって申し訳ありません。
どうかよろしくお願いします。

umyu👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

門外漢なので見当違い、間違いなどありましたらすみません。

とりあえず、リジェクト(拒否)機能を「含有判別器」、データベースにより画像識別する機能を「画像識別器」と呼びます。

今回のケースでは、含有判別器と画像識別器それぞれの性能を別に検証すべきかと思います。
そうでないと、含有判別器がバカで画像識別器が天才の場合と、含有判別器が天才で画像識別器がバカの場合の認識率(正解率)が同じになる可能性がありますが、どちらを調整すべきかが判別できません。

まず「含有判別器」についてですが、入力と結果を以下のように定義します。

DBに・判別でパス拒否
含まれるTPFN
含まれないFPTN

この場合は

結果意味成否
真陽性(True Positive)DBに含まれる画像なのでパスした。
偽陰性(False Negative)DBに含まれる画像だが拒否された。×
偽陽性(False Positive)DBに含まれない画像なのに、パスした。×
真陰性(True Negative)DBに含まれない画像なので拒否された。

なので、以下の指標で性能を検証できます。

性能意味
精度(適合率)TP/(TP+FP)パスした画像のうち、実際にDBに含まれる画像である率
再現率TP/(TP+FN)データベースに含まれる画像のうち、パスした率

一方、画像識別器の結果は、正解 or 不正解 の2択しかありませんので再現率や適合率による検証は不要でしょう。
そしてトータルの正解率は、含有判別器と画像識別器それぞれの結果(確率)をベイズの定理により?重ね合わせることで計算できると思います。(このあたりちょっと自信ないですが)

投稿2018/01/24 07:14

can110

総合スコア38233

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mkgrei

2018/01/24 07:49

おそらく今回のケースでは閾値で「含有判別器」を作っているので、モデルとしては「画像識別器」しかないことになっているのかと思われます。 これは2つ合わせてのセットで、1つのモデルとして評価することが目的であるように思いました。 モデリングとしての改善は「画像識別器」の方しかなく、「含有判別器」では実用上導入されている機能になっています。 >しかし、閾値を調節して、リジェクトしたものがすべて不正解だったとき(FN=0)、リジェクトしなかった中にも不正解のものが含まれているのですが、再現率が100%となって これを別々の評価値を出すと、どのように評価値を受け止めるべきなのかが困難であるというのが混乱の原因となっていて、それが、閾値をチューンすることで片方の評価値をパーフェクトにできるけれども、もう片方の評価値が悪化して、それで、結局閾値をどのように設定したらトータルとしての予測器をよくできるのか評価できない、ということにつながってしまったのではないかと推測します。 そこでの提案が、推定できないべきカテゴリをモデル学習後に無理やり追加して、それを含めて評価値を1つ与えようという作戦です。 もちろんモデル評価時の信頼度がないのなら、安牌のリジェクトを選ぶべき価値判断があります。 そのようなケースに対応させるには、can110さんの2つの指標をうまい割合で足し合わせて評価することになると思われます。 別の作戦として、モデルを作る際に、雑多な画像を放り込んだクラスを加えて、リジェクトされるべき画像がそのクラスに分類されることを期待する、ということも考えられます。 おそらくこれが一番いいモデルを作るはずです。 一般的には学習時に想定されていない画像に対してはモデルが非常に弱いことが知られていますので… https://qiita.com/AkiyoshiOkano/items/dc19bffc88c549393699 >女性の画像はかなりの確率でビルゲイツ氏かイーロンマスク氏が95%以上
can110

2018/01/24 08:21

> おそらく今回のケースでは閾値で「含有判別器」を作っているので、モデルとしては「画像識別器」しかないことになっているのかと思われます。 あ、なるほど。どちらも同じ機構「ピクセルごとの二乗誤差(の和)」を使っているわけですから この場合はmkgreiさんの提案された修正を加えたうえで、1つの指標で評価するのが自然ですね。 納得です。 詳細なコメントありがとうございます。勉強になりました。 (短文の返答で申し訳ありません)
guest

0

ベストアンサー

データベースに入っていない人は別の1つのラベルを用意すべきでしょう。
そして、そのラベルをモデルのリジェクトと対応させればよいのではないでしょうか。

リジェクトすべき人が閾値を下回ってリジェクトされているのであれば、それは正解です。
リジェクトすべき人に何かの判定がされているのなら、それは不正解なはずです。

リジェクトすべきでない人が正しく判定されたら、それは正解です。
リジェクトすべきでない人が間違って判定されたら、それは不正解です。
リジェクトすべきでない人が閾値を下回ってリジェクトされているのであれば、それも不正解です。

投稿2018/01/24 05:53

mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mikawa

2018/01/24 05:56

納得できました!ありtがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問