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?
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.
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_-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_- can be passed as the
-j parameter to SVMLight.