MATLAB Answers

2クラス分類問題にお​ける事後確率を用いた​拒否オプションについ​て

8 views (last 30 days)
Sae Onodera
Sae Onodera on 25 Jun 2020
Commented: Kenta on 29 Jun 2020
学習済みのCNNネットワークを用いて画像を2クラスに分類し、分類の事後確率がある値よりも高い場合にはCNNの分類結果を受け入れ、低い場合にはCNNの分類結果を拒否するプログラムを作成しようと考え、以下のようなコードで実行したところ、
エラー: confusionmat (line 71)
G と GHAT は同じタイプでなければなりません。
エラー: Squeezenet_ensemble (line 161)
C = confusionmat(imdsValidation.Labels,YPred)
というエラーが出てしまいました。
質問なのですが、事後確率の低い場合には拒否する、という場合にはクラス1・クラス2の分類のほかに分類結果を拒否する3つ目のクラスを定義する必要があるのでしょうか。よろしくお願いいたします。
% 事後確率に応じてCNNの分類結果を拒否するオプション
for i=1:filesuu
if ( probs(i,:) < 0.9)
YPred = 'Reject';
[img,info] = readimage(imdsValidation,i);
info.Filename
imshow(img)
end
end
% 正解率を表示
accuracy = mean(YPred == imdsValidation.Labels)
% 分類の混同行列を表示
C = confusionmat(imdsValidation.Labels,YPred)
confusionchart(C)

  0 Comments

Sign in to comment.

Accepted Answer

Kenta
Kenta on 25 Jun 2020
こんにちは、「~のほかに分類結果を拒否する3つ目のクラスを定義する必要があるのでしょうか」とありますが、confusion matrixをA, B, rejectの3つのカテゴリーで作成したい場合は、定義する必要がある(=imdsValidation.Labelsにrejectが含まれないとエラーを返す場合が多い)と思います。もしかしたらデータの入れ方次第では問題にはならないかもしれません。
ただ、本来的には、imdsValidation.Labels内にはAかBのみが入るはずで、rejectというカテゴリーの概念はないですよね。そのため、精度計算をした行の次の段階としては、reject以外のカテゴリをもつYPredとそれに対応するラベルでconfusion matrixを作るのかと想像していたのですがいかがでしょうか。

  2 Comments

Sae Onodera
Sae Onodera on 29 Jun 2020
ご回答ありがとうございます。
お返事が遅くなってしまってすみません。
2つ目に挙げてくださった手順でconfusion matrixを作ることができました。ありがとうございました。
Kenta
Kenta on 29 Jun 2020
はい、解決しよかったです。

Sign in to comment.

More Answers (0)