/*
* JNI_SVM-light - A Java Native Interface for SVM-light
*
* Copyright (C) 2005
* Tom Crecelius & Martin Theobald
* Max-Planck Institute for Computer Science
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
package jnisvmlight;
/**
* Learning parameters as denoted by SVM-light.
*
* @author Tom Crecelius & Martin Theobald
*/
public class LearnParam {
/** Trains a classification model. */
public static final int CLASSIFICATION = 1;
/** Trains on general set of constraints. */
public static final int OPTIMIZATION = 4;
/** Trains a ranking model. */
public static final int RANKING = 3;
/** Trains a regression model. */
public static final int REGRESSION = 2;
/**
* File to store optimal alphas in. use empty string if alphas should not be
* output.
*/
public String alphafile;
/** The cardinality of the command line parameters. */
public int argc = 0;
/**
* Optionally simulates a simple command shell-like usage and transfers the
* command line parameters to SVM-light.
*/
public String[] argv;
/** If nonzero, use hyperplane w*x+b=0 otherwise w*x=0. */
public long biased_hyperplane;
/** If nonzero, computes leave-one-outestimates. */
public long compute_loo;
/** Regression epsilon (eps=1.0 for classification). */
public double eps;
/** Tolerable error on alphas at bounds. */
public double epsilon_a;
/** Tolerable error on eq-constraint. */
public double epsilon_const;
/** Tolerable error for distances used in stopping criterion. */
public double epsilon_crit;
/** How much a multiplier should be above zero for shrinking. */
public double epsilon_shrink;
/** Size of kernel cache in megabytes. */
public long kernel_cache_size;
/**
* Number of iterations after which the optimizer terminates, if there was no
* progress in maxdiff.
*/
public long maxiter;
/** Precision of solver, set to e.g. 1e-21 if you get convergence problems. */
public double opt_precision;
/** File for predictions on unlabeled examples in transduction. */
public String predfile;
/** Exclude examples with alpha at C and retrain. */
public long remove_inconsistent;
/** Parameter in xi/alpha-estimates and for pruning leave-one-out range [1..2]. */
public double rho;
/**
* If nonzero, it will use the shared slack variable mode. In
* svm_learn_optimization it requires that the slack-id is set for every
* training example.
*/
public long sharedslack;
/**
* Do not check KT-Conditions at the end of optimization for examples removed
* by shrinking. WARNING: This might lead to sub-optimal solutions!
*/
public long skip_final_opt_check;
/** Upper bound C on alphas. */
public double svm_c;
/** Increase C by this factor every step. */
public double svm_c_factor;
/** Do so many steps for finding optimal C. */
public long svm_c_steps;
/** Individual upper bounds for each var. */
public double svm_cost;
/** Factor to multiply C for positive examples. */
public double svm_costratio;
public double svm_costratio_unlab;
/* You probably do not want to touch the following: */
/** Iterations h after which an example can be removed by shrinking. */
public long svm_iter_to_shrink;
/** Size q of working set. */
public long svm_maxqpsize;
/** New variables to enter the working set in each iteration. */
public long svm_newvarsinqp;
/* The following are only for internal use: */
public double svm_unlabbound;
/** Total amount of features. */
public long totwords;
/** Fraction of unlabeled examples to be classified as positives. */
public double transduction_posratio;
/** Selects between CLASSIFICATION, REGRESSION, RANKING, or OPTIMIZATION mode. */
public long type;
/** The level of SVM-light debugging infos. */
public int verbosity;
/**
* Parameter in xi/alpha-estimates upper bounding the number of SV the current
* alpha_t is distributed over.
*/
public long xa_depth;
/** Initializes the learning parameters with the default SVM-light values. */
public LearnParam() {
this.verbosity = 0;
this.type = CLASSIFICATION;
this.predfile = new String("trans_predictions");
this.alphafile = new String("");
this.biased_hyperplane = 1;
this.sharedslack = 0;
this.remove_inconsistent = 0;
this.skip_final_opt_check = 0;
this.svm_maxqpsize = 10;
this.svm_newvarsinqp = 0;
this.svm_iter_to_shrink = -9999;
this.maxiter = 100000;
this.kernel_cache_size = 40;
this.svm_c = 0.0;
this.eps = 0.1;
this.transduction_posratio = -1.0;
this.svm_costratio = 1.0;
this.svm_costratio_unlab = 1.0;
this.svm_unlabbound = 1E-5;
this.epsilon_crit = 0.001;
this.epsilon_a = 1E-15;
this.compute_loo = 0;
this.rho = 1.0;
this.xa_depth = 0;
}
}