edu.udo.cs.yale.operator.meta
Class IterativeWeightOptimization

java.lang.Object
  extended by edu.udo.cs.yale.operator.Operator
      extended by edu.udo.cs.yale.operator.OperatorChain
          extended by edu.udo.cs.yale.operator.meta.IterativeWeightOptimization
All Implemented Interfaces:
ConfigurationListener

public class IterativeWeightOptimization
extends OperatorChain

Performs an iterative feature selection guided by the AttributeWeights. Its an backward feature elemination where the feature with the smallest weight value is removed. After each iteration the weight values are updated (e.g. by a learner like JMySVMLearner).

Version:
$Id: IterativeWeightOptimization.java,v 1.3 2006/04/05 08:57:26 ingomierswa Exp $
Author:
Daniel Hakenjos

Field Summary
private  PerformanceVector best
           
private  AttributeWeights bestweights
           
private  double currentweight
           
private  AttributeWeights currentweights
           
private static java.lang.Class[] INPUT_CLASSES
           
private  double lastperf
           
private  double min_diff
           
private  java.lang.String[] names
           
private  int numberOfCombinations
           
private  Operator operator
           
private static java.lang.Class[] OUTPUT_CLASSES
           
private  java.lang.String parameter
           
private  double[] weights
           
 
Constructor Summary
IterativeWeightOptimization(OperatorDescription description)
           
 
Method Summary
 IOObject[] apply()
          Applies all inner operators.
 InnerOperatorCondition getInnerOperatorCondition()
          Must return a condition of the IO behaviour of all desired inner operators.
 java.lang.Class[] getInputClasses()
          Returns the classes that are needed as input.
 int getMaxNumberOfInnerOperators()
          Returns the maximum number of innner operators.
 int getMinNumberOfInnerOperators()
          Returns the minimum number of innner operators.
 int getNumberOfSteps()
          Returns the number of steps performed by this chain.
 java.lang.Class[] getOutputClasses()
          Returns the classes that are guaranteed to be returned by apply() as additional output.
 void getParametersToOptimize()
           
 java.util.List<ParameterType> getParameterTypes()
          Returns a list of ParameterTypes describing the parameters of this operator.
 
Methods inherited from class edu.udo.cs.yale.operator.OperatorChain
addAddListener, addOperator, addOperator, checkDeprecations, checkIO, checkNumberOfInnerOperators, checkProperties, clearErrorList, clearStepCounter, cloneOperator, countStep, createExperimentTree, delete, experimentFinished, experimentStarts, getAllInnerOperators, getCurrentStep, getIndexOfOperator, getInnerOperatorForName, getInnerOperatorsXML, getNumberOfAllOperators, getNumberOfChildrensSteps, getNumberOfOperators, getOperator, getOperatorFromAll, getOperators, isEnabled, performAdditionalChecks, removeAddListener, removeOperator, setEnabled, setExperiment, shouldReturnInnerOutput
 
Methods inherited from class edu.udo.cs.yale.operator.Operator
addError, addValue, addWarning, apply, createExperimentTree, createFromXML, createMarkedExperimentTree, getAddOnlyAdditionalOutput, getApplyCount, getDeliveredOutputClasses, getDeprecationInfo, getDesiredInputClasses, getErrorList, getExperiment, getInput, getInput, getInput, getInputDescription, getIOContainerForInApplyLoopBreakpoint, getName, getOperatorClassName, getOperatorDescription, getParameter, getParameterAsBoolean, getParameterAsColor, getParameterAsDouble, getParameterAsFile, getParameterAsInt, getParameterAsString, getParameterList, getParameters, getParameterType, getParent, getStartTime, getStatus, getUserDescription, getValue, getValues, getXML, hasBreakpoint, hasBreakpoint, hasInput, inApplyLoop, isParameterSet, logMessage, register, remove, rename, resume, setBreakpoint, setInput, setListParameter, setOperatorParameters, setParameter, setParameters, setParent, setUserDescription, toString, writeXML
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

INPUT_CLASSES

private static final java.lang.Class[] INPUT_CLASSES

OUTPUT_CLASSES

private static final java.lang.Class[] OUTPUT_CLASSES

best

private PerformanceVector best

names

private java.lang.String[] names

weights

private double[] weights

currentweight

private double currentweight

lastperf

private double lastperf

operator

private Operator operator

parameter

private java.lang.String parameter

min_diff

private double min_diff

numberOfCombinations

private int numberOfCombinations

bestweights

private AttributeWeights bestweights

currentweights

private AttributeWeights currentweights
Constructor Detail

IterativeWeightOptimization

public IterativeWeightOptimization(OperatorDescription description)
Parameters:
description -
Method Detail

apply

public IOObject[] apply()
                 throws OperatorException
Description copied from class: OperatorChain
Applies all inner operators. The input to this operator becomes the input of the first inner operator. The latter's output is passed to the second inner operator and so on. Note to subclassers: If subclasses (for example wrappers) want to make use of this method remember to call exactly this method (super.apply()) and do not call super.apply(IOContainer) erroneously which will result in an infinite loop. Subclasses who override this method without invoking super.apply() should at least invoke the method OperatorChain.clearStepCounter().

Overrides:
apply in class OperatorChain
Returns:
the last inner operator's output or the input itself if the chain is empty.
Throws:
OperatorException


getMaxNumberOfInnerOperators

public int getMaxNumberOfInnerOperators()
Description copied from class: OperatorChain
Returns the maximum number of innner operators.

Specified by:
getMaxNumberOfInnerOperators in class OperatorChain


getMinNumberOfInnerOperators

public int getMinNumberOfInnerOperators()
Description copied from class: OperatorChain
Returns the minimum number of innner operators.

Specified by:
getMinNumberOfInnerOperators in class OperatorChain


getNumberOfSteps

public int getNumberOfSteps()
Description copied from class: OperatorChain
Returns the number of steps performed by this chain.

Specified by:
getNumberOfSteps in class OperatorChain


getInputClasses

public java.lang.Class[] getInputClasses()
Description copied from class: Operator
Returns the classes that are needed as input. May be null or an empty (no desired input). As default, all delivered input objects are consumed and must be also delivered as output in both Operator.getOutputClasses() and Operator.apply() if this is necessary. This default behavior can be changed by overriding Operator.getInputDescription(Class). Subclasses which implement this method should not make use of parameters since this method is invoked by getParameterTypes(). Therefore, parameters are not fully available at this point of time and this might lead to exceptions. Please use InputDescriptions instead.

Specified by:
getInputClasses in class Operator


getOutputClasses

public java.lang.Class[] getOutputClasses()
Description copied from class: Operator
Returns the classes that are guaranteed to be returned by apply() as additional output. Please note that input object which should not be consumed must also be defined by this method (e.g. for preprocessing operators). The default behavior for input consumation is defined by Operator.getInputDescription(Class) and can be changed by overwriting this method. Objects which are not consumed must not be defined as additional output in this method. May be null or an empy array (no additional output is produced).

Specified by:
getOutputClasses in class Operator


getParametersToOptimize

public void getParametersToOptimize()
                             throws OperatorException
Throws:
OperatorException

getInnerOperatorCondition

public InnerOperatorCondition getInnerOperatorCondition()
Description copied from class: OperatorChain
Must return a condition of the IO behaviour of all desired inner operators. If there are no "special" conditions and the chain works similar to a simple operator chain this method should at least return a SimpleChainInnerOperatorCondition. More than one condition should be combined with help of the class CombinedInnerOperatorCondition.

Specified by:
getInnerOperatorCondition in class OperatorChain


getParameterTypes

public java.util.List<ParameterType> getParameterTypes()
Description copied from class: Operator
Returns a list of ParameterTypes describing the parameters of this operator. The default implementation returns an empty list if no input objects can be retained and special parameters for those input objects which can be prevented from being consumed.

Overrides:
getParameterTypes in class Operator



Copyright © 2001-2006