Pythonでsklearn.metricsを使用して、モデルメトリックをテストしながら、平均精度(average_precision_scoreを使用)と精度(classification_reportを使用)を計算しました。しかし、私は異なる答えを得ました(それぞれ0.89対0.93)。私は両方のドキュメントを読み、方程式が異なることを知っていますが、2つの違いと、どちらをいつ使用するかについて直感的に説明したいと思っていました。
コメント
- これは人々が対処するのが難しいでしょう。解釈に問題があるドキュメントにリンクする必要があります。&理解できない特定のテキスト/方程式をコピーしてください'。などこれを解釈できるようにするには、十分なコンテキストを提供する必要があります。ここのスレッドをスタンドアロンにできるようにする必要があります。
- この記事では、平均精度(mAP)の内訳の例を使用して詳細に説明します。
回答
精度とは、特定の決定しきい値での精度を指します。たとえば、0.5未満のモデル出力を負としてカウントし、0.5を超えるモデル出力を正としてカウントする場合です。ただし、場合によっては(特に、クラスのバランスが取れていない場合、またはリコールよりも精度を優先したい場合、またはその逆の場合)、このしきい値を変更したい場合があります。平均精度は、そのようなすべての可能なしきい値での平均精度を示します。これは、適合率-再現率曲線の下の領域にも似ています。特定の決定しきい値を考慮せずに、モデルが予測をどの程度適切に順序付けているかを比較するのに役立つメトリックです。
参照: https://scikit-learn.org/stable/modules/generated/sklearn.metrics.average_precision_score.html
回答
精度はPr = TP /(TP + FP)ここで、はTPとFPは真陽性と偽陽性です。そのため、このメトリックを使用して分類子などのシステムを評価し、陽性をどれだけ正確に見つけたかを把握します。分類子がエントリをTrueとマークした場合、実際にはFalseであっても、FPが増加し、Prが減少します。したがって、システムは正確ではありません。そのため、分類子の場合、「どのエントリがクラスに属する可能性が最も高いかなどを知る必要はありません。
たとえば、音楽を検索するアプリを作成したとします。ビデオ。したがって、曲についてクエリが実行された場合(たとえば、解放したい場合)、クエリから取得された最初の5つのエントリが曲またはバンド「クイーン」にまったく関連しておらず、6〜10のエントリが関連している場合彼らにとって、あなたのアプリはまったく無駄です。したがって、順序が重要なこれらのケースでは、適合率と再現率(Re = TP /(TP + FN))を計算し、曲線の下の領域はMAP(平均平均精度)です
背後にある直感アイデアは次のとおりです。実際の真のエントリの数は固定されているため、次のエントリに移動すると、再現率が上がる(真陽性に遭遇した場合)か、同じままになります(偽陽性に遭遇した場合)。 FPが検出された場合)、同じままであるか増加している(TPが検出された場合)ため、開始時に無関係な結果が得られた場合、精度はほぼ0のままであり、MAP 0になります。これにより、すべての正確な結果が開始時(基本的にFPがゼロであることを意味します)、精度が1に近いため、MAPは1に近くなります。これにより、システムが最適であることが証明されます
この記事では例を挙げて詳細に説明します