Cross Validated is a question and answer site for people interested in statistics, machine learning, data analysis, data mining, and data visualization. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I built a SVM-based classifier against a data set, the precision is about 66% and the recall is about 88%. Generally, what are the options to tune the parameter that can increase the precision?

share|improve this question
up vote 1 down vote accepted

I've used the approach described in this paper to some success: Cohen, 2006

Although the data used in this paper is specific to the biomedical literature, the approach gets at a larger issue in machine learning--that of the trade-off between precision and recall. In biomedicine, we generally deal with highly skewed data (i.e., one or more rare classes, and one prominent class), which is sometimes the source of the results you're describing. For example, if I'm classifying 100 data points, 95 of which belong to class A, and 5 of which belong to class B, many machine learning algorithms (SVM included) will just classify everything/most things as class A, yielding great recall but awful precision.

share|improve this answer

See section 3.1 of [Morik, et al, 1999], which reads:

"...Since we will be dealing with very unbalanced numbers of positive and negative examples, we introduce cost factors C_+ and C_- to be able to adjust the cost of false positives vs. false negatives...".

The quadratic optimization problem follows that quote. When C_+ > C_-, precision is increased.

Now, if you want just an out-of-the-box solution, the ratio of C_+ to C_- can be passed as the -j parameter to SVMLight.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.