weka.classifiers.misc
Class OSDL

java.lang.Object
  extended by weka.classifiers.Classifier
      extended by weka.classifiers.misc.monotone.OSDLCore
          extended by weka.classifiers.misc.OSDL
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, CapabilitiesHandler, OptionHandler, TechnicalInformationHandler

public class OSDL
extends OSDLCore

This class is an implementation of the Ordinal Stochastic Dominance Learner.
Further information regarding the OSDL-algorithm can be found in:

S. Lievens, B. De Baets, K. Cao-Van (2006). A Probabilistic Framework for the Design of Instance-Based Supervised Ranking Algorithms in an Ordinal Setting. Annals of Operations Research..

Kim Cao-Van (2003). Supervised ranking: from semantics to algorithms.

Stijn Lievens (2004). Studie en implementatie van instantie-gebaseerde algoritmen voor gesuperviseerd rangschikken.

For more information about supervised ranking, see

http://users.ugent.be/~slievens/supervised_ranking.php

BibTeX:

 @article{Lievens2006,
    author = {S. Lievens and B. De Baets and K. Cao-Van},
    journal = {Annals of Operations Research},
    title = {A Probabilistic Framework for the Design of Instance-Based Supervised Ranking Algorithms in an Ordinal Setting},
    year = {2006}
 }
 
 @phdthesis{Cao-Van2003,
    author = {Kim Cao-Van},
    school = {Ghent University},
    title = {Supervised ranking: from semantics to algorithms},
    year = {2003}
 }
 
 @mastersthesis{Lievens2004,
    author = {Stijn Lievens},
    school = {Ghent University},
    title = {Studie en implementatie van instantie-gebaseerde algoritmen voor gesuperviseerd rangschikken},
    year = {2004}
 }
 

Valid options are:

 -D
  If set, classifier is run in debug mode and
  may output additional info to the console
 -C <REG|WSUM|MAX|MED|RMED>
  Sets the classification type to be used.
  (Default: MED)
 -B
  Use the balanced version of the Ordinal Stochastic Dominance Learner
 -W
  Use the weighted version of the Ordinal Stochastic Dominance Learner
 -S <value of interpolation parameter>
  Sets the value of the interpolation parameter (not with -W/T/P/L/U)
  (default: 0.5).
 -T
  Tune the interpolation parameter (not with -W/S)
  (default: off)
 -L <Lower bound for interpolation parameter>
  Lower bound for the interpolation parameter (not with -W/S)
  (default: 0)
 -U <Upper bound for interpolation parameter>
  Upper bound for the interpolation parameter (not with -W/S)
  (default: 1)
 -P <Number of parts>
  Determines the step size for tuning the interpolation
  parameter, nl. (U-L)/P (not with -W/S)
  (default: 10)
More precisely, this is a simple extension of the OSDLCore class, so that the OSDLCore class can be used within the WEKA environment. The problem with OSDLCore is that it implements both classifyInstance and distributionForInstance in a non trivial way.

One can evaluate a model easily with the method evaluateModel from the Evaluation class. However, for nominal classes they do the following: they use distributionForInstance and then pick the class with maximal probability. This procedure is not valid for a ranking algorithm, since this destroys the required monotonicity property.

This class reimplements distributionForInstance in the following way: first classifyInstance of OSDLCore is used and the chosen label then gets assigned probability one. This ensures that the classification accuracy is calculated correctly, but possibly some other statistics are no longer meaningful.

Version:
$Revision: 1.1 $
Author:
Stijn Lievens (stijn.lievens@ugent.be)
See Also:
Serialized Form

Field Summary
 
Fields inherited from class weka.classifiers.misc.monotone.OSDLCore
CT_MAXPROB, CT_MEDIAN, CT_MEDIAN_REAL, CT_REGRESSION, CT_WEIGHTED_SUM, TAGS_CLASSIFICATIONTYPES
 
Constructor Summary
OSDL()
           
 
Method Summary
 double[] distributionForInstance(Instance instance)
          Use classifyInstance from OSDLCore and assign probability one to the chosen label.
static void main(java.lang.String[] args)
          Main method for testing this class and for using it from the command line.
 
Methods inherited from class weka.classifiers.misc.monotone.OSDLCore
balancedTipText, buildClassifier, classificationTypeTipText, classifyInstance, crossValidate, crossValidate, crossValidate, cumulativeDistributionForInstance, getBalanced, getCapabilities, getClassificationType, getInterpolationParameter, getInterpolationParameterLowerBound, getInterpolationParameterUpperBound, getLowerBound, getNumberOfPartsForInterpolationParameter, getNumInstances, getOptions, getTechnicalInformation, getTuneInterpolationParameter, getUpperBound, getWeighted, globalInfo, interpolationParameterLowerBoundTipText, interpolationParameterTipText, interpolationParameterUpperBoundTipText, listOptions, numberOfPartsForInterpolationParameterTipText, setBalanced, setClassificationType, setInterpolationParameter, setInterpolationParameterBounds, setInterpolationParameterLowerBound, setInterpolationParameterUpperBound, setNumberOfPartsForInterpolationParameter, setOptions, setTuneInterpolationParameter, setWeighted, toString, tuneInterpolationParameter, tuneInterpolationParameter, tuneInterpolationParameterTipText, weightedTipText
 
Methods inherited from class weka.classifiers.Classifier
debugTipText, forName, getDebug, makeCopies, makeCopy, setDebug
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

OSDL

public OSDL()
Method Detail

distributionForInstance

public double[] distributionForInstance(Instance instance)
Use classifyInstance from OSDLCore and assign probability one to the chosen label. The implementation is heavily based on the same method in the Classifier class.

Overrides:
distributionForInstance in class OSDLCore
Parameters:
instance - the instance to be classified
Returns:
an array containing a single '1' on the index that classifyInstance returns.

main

public static void main(java.lang.String[] args)
Main method for testing this class and for using it from the command line.

Parameters:
args - array of options for both the classifier OSDL and for evaluateModel