001 /*
002 * JNI_SVM-light - A Java Native Interface for SVM-light
003 *
004 * Copyright (C) 2005
005 * Tom Crecelius & Martin Theobald
006 * Max-Planck Institute for Computer Science
007 *
008 * This program is free software; you can redistribute it and/or modify it under
009 * the terms of the GNU General Public License as published by the Free Software
010 * Foundation.
011 *
012 * This program is distributed in the hope that it will be useful, but WITHOUT
013 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
014 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
015 * details.
016 *
017 * You should have received a copy of the GNU General Public License along with
018 * this program; if not, write to the Free Software Foundation, Inc., 51
019 * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
020 */
021
022 package jnisvmlight;
023
024 /**
025 * Learning parameters as denoted by SVM-light.
026 *
027 * @author Tom Crecelius & Martin Theobald
028 */
029 public class LearnParam {
030
031 /** Trains a classification model. */
032 public static final int CLASSIFICATION = 1;
033
034 /** Trains on general set of constraints. */
035 public static final int OPTIMIZATION = 4;
036
037 /** Trains a ranking model. */
038 public static final int RANKING = 3;
039
040 /** Trains a regression model. */
041 public static final int REGRESSION = 2;
042
043 /**
044 * File to store optimal alphas in. use empty string if alphas should not be
045 * output.
046 */
047 public String alphafile;
048
049 /** The cardinality of the command line parameters. */
050 public int argc = 0;
051
052 /**
053 * Optionally simulates a simple command shell-like usage and transfers the
054 * command line parameters to SVM-light.
055 */
056 public String[] argv;
057
058 /** If nonzero, use hyperplane w*x+b=0 otherwise w*x=0. */
059 public long biased_hyperplane;
060
061 /** If nonzero, computes leave-one-outestimates. */
062 public long compute_loo;
063
064 /** Regression epsilon (eps=1.0 for classification). */
065 public double eps;
066
067 /** Tolerable error on alphas at bounds. */
068 public double epsilon_a;
069
070 /** Tolerable error on eq-constraint. */
071 public double epsilon_const;
072
073 /** Tolerable error for distances used in stopping criterion. */
074 public double epsilon_crit;
075
076 /** How much a multiplier should be above zero for shrinking. */
077 public double epsilon_shrink;
078
079 /** Size of kernel cache in megabytes. */
080 public long kernel_cache_size;
081
082 /**
083 * Number of iterations after which the optimizer terminates, if there was no
084 * progress in maxdiff.
085 */
086 public long maxiter;
087
088 /** Precision of solver, set to e.g. 1e-21 if you get convergence problems. */
089 public double opt_precision;
090
091 /** File for predicitions on unlabeled examples in transduction. */
092 public String predfile;
093
094 /** Exclude examples with alpha at C and retrain. */
095 public long remove_inconsistent;
096
097 /** Parameter in xi/alpha-estimates and for pruning leave-one-out range [1..2]. */
098 public double rho;
099
100 /**
101 * If nonzero, it will use the shared slack variable mode. In
102 * svm_learn_optimization it requires that the slack-id is set for every
103 * training example.
104 */
105 public long sharedslack;
106
107 /**
108 * Do not check KT-Conditions at the end of optimization for examples removed
109 * by shrinking. WARNING: This might lead to sub-optimal solutions!
110 */
111 public long skip_final_opt_check;
112
113 /** Upper bound C on alphas. */
114 public double svm_c;
115
116 /** Increase C by this factor every step. */
117 public double svm_c_factor;
118
119 /** Do so many steps for finding optimal C. */
120 public long svm_c_steps;
121
122 /** Individual upper bounds for each var. */
123 public double svm_cost;
124
125 /** Factor to multiply C for positive examples. */
126 public double svm_costratio;
127
128 public double svm_costratio_unlab;
129
130 /* You probably do not want to touch the following: */
131
132 /** Iterations h after which an example can be removed by shrinking. */
133 public long svm_iter_to_shrink;
134
135 /** Size q of working set. */
136 public long svm_maxqpsize;
137
138 /** New variables to enter the working set in each iteration. */
139 public long svm_newvarsinqp;
140
141 /* The following are only for internal use: */
142
143 public double svm_unlabbound;
144
145 /** Total amount of features. */
146 public long totwords;
147
148 /** Fraction of unlabeled examples to be classified as positives. */
149 public double transduction_posratio;
150
151 /** Selects between CLASSIFICATION, REGRESSION, RANKING, or OPTIMIZATION mode. */
152 public long type;
153
154 /** The level of SVM-light debugging infos. */
155 public int verbosity;
156
157 /**
158 * Parameter in xi/alpha-estimates upper bounding the number of SV the current
159 * alpha_t is distributed over.
160 */
161 public long xa_depth;
162
163 /** Initializes the learning parameters with the default SVM-light values. */
164 public LearnParam() {
165 this.verbosity = 0;
166 this.type = CLASSIFICATION;
167 this.predfile = new String("trans_predictions");
168 this.alphafile = new String("");
169 this.biased_hyperplane = 1;
170 this.sharedslack = 0;
171 this.remove_inconsistent = 0;
172 this.skip_final_opt_check = 0;
173 this.svm_maxqpsize = 10;
174 this.svm_newvarsinqp = 0;
175 this.svm_iter_to_shrink = -9999;
176 this.maxiter = 100000;
177 this.kernel_cache_size = 40;
178 this.svm_c = 0.0;
179 this.eps = 0.1;
180 this.transduction_posratio = -1.0;
181 this.svm_costratio = 1.0;
182 this.svm_costratio_unlab = 1.0;
183 this.svm_unlabbound = 1E-5;
184 this.epsilon_crit = 0.001;
185 this.epsilon_a = 1E-15;
186 this.compute_loo = 0;
187 this.rho = 1.0;
188 this.xa_depth = 0;
189 }
190 }