🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
機械学習

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

Q&A

解決済

1回答

1097閲覧

平均適合率が重視する要素が分かりません

hikaru397

総合スコア6

機械学習

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

0グッド

0クリップ

投稿2021/01/30 08:48

物体検出における平均適合率は、適合率と再現率のどちらを重視した指標と言えるのでしょうか。

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

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

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

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

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

guest

回答1

0

ベストアンサー

興味深い問題なので実験してみたところ、適合率を重視しているという結果が出ました。
理論的背景はわかりませんが、ご参考まで。

シンプルに2値の乱数で正解ラベルを、0〜1の一様乱数で予測値(2値にする前の値)で求め、適合率、再現率、平均適合率を計算し、それぞれの相関がわかるようにグラフ化しました。

Python

1import numpy as np 2from sklearn.metrics import precision_score, recall_score, average_precision_score 3import matplotlib.pyplot as plt 4 5SIZE = 100 6 7prec = [] 8recall = [] 9ap = [] 10for i in range(1000): 11 y_true = np.random.randint(0, 2, SIZE) 12 y_score = np.random.normal(0, 1, SIZE) 13 y_pred = np.where(y_score > 0.5, 1, 0) 14 prec.append(precision_score(y_true, y_pred)) 15 recall.append(recall_score(y_true, y_pred)) 16 ap.append(average_precision_score(y_true, y_score)) 17 18_, ax = plt.subplots(1, 3) 19ax[0].scatter(prec, recall, marker='.') 20ax[0].set_title('prec - recall') 21ax[1].scatter(ap, prec, marker='.') 22ax[1].set_title('ap - prec') 23ax[2].scatter(ap, recall, marker='.') 24ax[2].set_title('ap - recall') 25plt.show()

こちらが結果です。左のグラフは、適合率と再現率が適度に散らばっているか見るもので、真ん中と右のグラフが質問に対応したものです。はっきりと、適合率が重視されていることがわかります。

イメージ説明

投稿2021/01/30 13:00

編集2021/01/30 13:04
toast-uz

総合スコア3266

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

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

hikaru397

2021/01/31 11:14 編集

グラフへの可視化まで行っていただきありがとうございます。 また、各グラフについてご説明いただき、ありがとうございます。 平均適合率が、適合率を重視する指標であることが良く分かり、大変勉強になります。 平均適合率は、再現率と適合率の内、適合率を重視していますが、 逆に、再現率と適合率の内、再現率を重視するような評価指標は存在するのでしょうか。
toast-uz

2021/01/31 12:52 編集

言葉通りであれば"平均再現率"という指標がありそうですが、この言葉でググっても、再現率の単純平均を意味するものが多く、期待とは違います。ただし、物体検出データセットのCOCOでは、Average Recallという指標があって、期待通りのAPの再現率版のような指標になっているようです。 https://www.sigfoss.com/developer_blog/detail?actual_object_id=267 の文末を参照ください。定義はわからないですが、調査のとっかかりにはなるかと思います。sklearnにはありませんので、あまり一般的にはなっていなさそうです。
hikaru397

2021/01/31 12:45

ありがとうございます。大変助かります。 Average Recall について一度調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問