Comments (3)
Thank you for reporting this issue.
Unfortunately there does not seem to be a clean solution. PR curves are defined by the rank of the labels, and uniform scores do not uniquely specify that.
One could of course return an average of all possible AP scores for all possible rankings compatible with the input scores. However, uniform scores are probably caused by a bug in the application, and this default behaviour would mask that. Furthermore, the reported AP would not correspond to the area of the curve anymore.
Possibly the best solution is to print a warning message when uniform scores are found.
from vlfeat.
All scores being equal is just one case that I used to make the point. In
truth, any two scores being equal will cause the PR curves and
subsequently the APs, to depend on ordering. With algorithms like,
say, decision trees, the set of (probability) scores assigned to data
points is discrete and quite small, so there will inevitably be multiple
data points which are pigeon-holed into the same score, so this issue will
affect the evaluation for very real scenarios (as I found out with
something I was working on).
I think the simplest solution is to go not by ranking, but by the scores
themselves i.e. all data points above a certain operating point are
positives, others are negatives and the operating point is varied to get
the PR/ROC curve. This will produce a discontinuity in the PR/ROC curve
every time a score is shared by multiple data points. This is the same as
assigning the same rank to all operating points with the same score.
Matlab's native perfcurve implementation appears to do something like this.
On Thu, Mar 27, 2014 at 12:21 PM, Andrea Vedaldi
[email protected]:
Thank you for reporting this issue.
Unfortunately there does not seem to be a clean solution. PR curves are
defined by the rank of the labels, and uniform scores do not uniquely
specify that.One could of course return an average of all possible AP scores for all
possible rankings compatible with the input scores. However, uniform scores
are probably caused by a bug in the application, and this default behaviour
would mask that. Furthermore, the reported AP would not correspond to the
area of the curve anymore.Possibly the best solution is to print a warning message when uniform
scores are found.Reply to this email directly or view it on GitHubhttps://github.com//issues/51#issuecomment-38833720
.
Dinesh Jayaraman,
The University of Texas at Austin
from vlfeat.
In case the above comment wasn't clear, this same issue is discussed in Fawcett, ROC Graphs: Notes and Practical Considerations for Researchers, 2004 (http://binf.gmu.edu/mmasso/ROC101.pdf) in section 4.1, together with pseudo-code to handle the issue. Came across this today, and thought it might serve to make the issue clear.
Turns out my suggestion above would have ended up in one of the discussed "pessimistic"/"optimistic" cases in the paper: the final method proposed is the "expected" case.
from vlfeat.
Related Issues (20)
- AVX gets disabled by Makefile for gcc version 8 HOT 2
- MathJax on vlfeat.org is broken due to http/https Mixed Content
- Memory issue in sift.c caused by vl_pgm_extract_head
- If random number generator is thread-safe for any hardware? What are the requirements for any hardware?
- error: ‘vl_infinity_d’ not specified in enclosing ‘parallel’ HOT 11
- Carmack fast inverse sqrt and vector normalize
- vl_covdet_put_image segfaults on small images
- Question on SIFT HOT 2
- Python bindings HOT 1
- How to use vlfeat build KD-TREE?
- pgm file judging condiction
- `vl_covdet_extract_orientations()` does not check OOM condition of `vl_covdet_extract_orientations_for_frame()` HOT 1
- `vl_covdeg_get_laplacian_peak_threshold` function name is error in `covdet.h`
- vl_kdtreequery() and vl_kdtreebuild()
- Markup leaking into HTML
- error: unknown type name 'EXTERN_C' HOT 1
- Building VLFeat on Mac M1 for ARM Architecture HOT 2
- Erroneous line in vl_test_hog.m
- Error in vl_hog.c
- Error in vl_scalespacegeometry_is_equal in scalspace.c
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vlfeat.