- Natural Language Processing with Java and LingPipe Cookbook
- Breck Baldwin Krishna Dayanidhi
- 430字
- 2021-08-05 17:12:50
Understanding precision and recall
The false positive from the preceding recipe is one of the four possible error categories. All the categories and their interpretations are as follows:
- For a given category X:
- True positive: The classifier guessed X, and the true category is X
- False positive: The classifier guessed X, but the true category is a category that is different from X
- True negative: The classifier guessed a category that is different from X, and the true category is different from X
- False negative: The classifier guessed a category different from X, but the true category is X
With these definitions in hand, we can define the additional common evaluation metrics as follows:
- Precision for a category X is true positive / (false positive + true positive)
- The degenerate case is to make one very confident guess for 100 percent precision. This minimizes the false positives but will have a horrible recall.
- Recall or sensitivity for a category X is true positive / (false negative + true positive)
- The degenerate case is to guess all the data as belonging to category X for 100 percent recall. This minimizes false negatives but will have horrible precision.
- Specificity for a category X is true negative / (true negative + false positive)
- The degenerate case is to guess that all data is not in category X.
The degenerate cases are provided to make clear what the metric is focused on. There are metrics such as f-measure that balance precision and recall, but even then, there is no inclusion of true negatives, which can be highly informative. See the Javadoc at com.aliasi.classify.PrecisionRecallEvaluation
for more details on evaluation.
- In our experience, most business needs map to one of the three scenarios:
- High precision / high recall: The language ID needs to have both good coverage and good accuracy; otherwise, lots of stuff will go wrong. Fortunately, for distinct languages where a mistake will be costly (such as Japanese versus English or English versus Spanish), the LM classifiers perform quite well.
- High precision / usable recall: Most business use cases have this shape. For example, a search engine that automatically changes a query if it is misspelled better not make lots of mistakes. This means it looks pretty bad to change "Breck Baldwin" to "Brad Baldwin", but no one really notices if "Bradd Baldwin" is not corrected.
- High recall / usable precision: Intelligence analysis looking for a particular needle in a haystack will tolerate a lot of false positives in support of finding the intended target. This was an early lesson from our DARPA days.
推薦閱讀
- Learn Blockchain Programming with JavaScript
- Cross-platform Desktop Application Development:Electron,Node,NW.js,and React
- Rust編程從入門到實戰
- SEO實戰密碼
- The Data Visualization Workshop
- 深度強化學習算法與實踐:基于PyTorch的實現
- 高級語言程序設計(C語言版):基于計算思維能力培養
- C#實踐教程(第2版)
- Visual Studio Code 權威指南
- Java并發編程之美
- C語言程序設計實訓教程與水平考試指導
- Python Programming for Arduino
- C語言程序設計
- Mobile Test Automation with Appium
- Flutter for Beginners