Environment for
DeveLoping
KDD-Applications
Supported by Index-Structures

de.lmu.ifi.dbs.elki.math.linearalgebra.pca
Class ProgressiveEigenPairFilter

java.lang.Object
  extended by de.lmu.ifi.dbs.elki.logging.AbstractLoggable
      extended by de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizable
          extended by de.lmu.ifi.dbs.elki.math.linearalgebra.pca.ProgressiveEigenPairFilter
All Implemented Interfaces:
EigenPairFilter, Parameterizable

public class ProgressiveEigenPairFilter
extends AbstractParameterizable
implements EigenPairFilter

The ProgressiveEigenPairFilter sorts the eigenpairs in descending order of their eigenvalues and marks the first eigenpairs, whose sum of eigenvalues is higher than the given percentage of the sum of all eigenvalues as strong eigenpairs. In contrast to the PercentageEigenPairFilter, it will use a percentage which changes linearly with the subspace dimensionality. This makes the parameter more consistent for different dimensionalities and often gives better results when clusters of different dimensionality exist, since different percentage alpha levels might be appropriate for different dimensionalities.

Author:
Erich Schubert Example calculations of alpha levels: In a 3D space, a progressive alpha value of 0.5 equals: - 1D subspace: 50 % + 1/3 of remainder = 0.667 - 2D subspace: 50 % + 2/3 of remainder = 0.833 In a 4D space, a progressive alpha value of 0.5 equals: - 1D subspace: 50% + 1/4 of remainder = 0.625 - 2D subspace: 50% + 2/4 of remainder = 0.750 - 3D subspace: 50% + 3/4 of remainder = 0.875 Reasoning why this improves over PercentageEigenPairFilter: In a 100 dimensional space, a single Eigenvector representing over 85% of the total variance is highly significant, whereas the strongest 85 Eigenvectors together will by definition always represent at least 85% of the variance. PercentageEigenPairFilter can thus not be used with these parameters and detect both dimensionalities correctly. The second parameter introduced here, walpha, serves a different function: It prevents the eigenpair filter to use a statistically weak Eigenvalue just to reach the intended level, e.g. 84% + 1% >= 85% when 1% is statistically very weak.

Field Summary
static double DEFAULT_PALPHA
          The default value for alpha.
static double DEFAULT_WALPHA
          The default value for alpha.
static OptionID EIGENPAIR_FILTER_PALPHA
          OptionID for PALPHA_PARAM
private  double palpha
          The threshold for strong eigenvectors: the strong eigenvectors explain a portion of at least alpha of the total variance.
private  DoubleParameter PALPHA_PARAM
          Parameter progressive alpha.
private  double walpha
          The noise tolerance level for weak eigenvectors
private  DoubleParameter WALPHA_PARAM
          Parameter weak alpha.
 
Fields inherited from class de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizable
optionHandler
 
Fields inherited from class de.lmu.ifi.dbs.elki.logging.AbstractLoggable
debug, logger
 
Constructor Summary
ProgressiveEigenPairFilter()
          Provides a new EigenPairFilter that sorts the eigenpairs in descending order of their eigenvalues and marks the first eigenpairs, whose sum of eigenvalues is higher than the given percentage of the sum of all eigenvalues as string eigenpairs.
 
Method Summary
 FilteredEigenPairs filter(SortedEigenPairs eigenPairs)
          Filter eigenpairs.
 List<String> setParameters(List<String> args)
          Set parameters
 String shortDescription()
          Parameter description.
 
Methods inherited from class de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizable
addOption, addParameterizable, addParameterizable, checkGlobalParameterConstraints, collectOptions, getAttributeSettings, getParameters, rememberParametersExcept, removeOption, removeParameterizable
 
Methods inherited from class de.lmu.ifi.dbs.elki.logging.AbstractLoggable
debugFine, debugFiner, debugFinest, exception, progress, verbose, warning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface de.lmu.ifi.dbs.elki.utilities.optionhandling.Parameterizable
checkGlobalParameterConstraints, collectOptions, getParameters
 

Field Detail

EIGENPAIR_FILTER_PALPHA

public static final OptionID EIGENPAIR_FILTER_PALPHA
OptionID for PALPHA_PARAM


DEFAULT_PALPHA

public static final double DEFAULT_PALPHA
The default value for alpha.

See Also:
Constant Field Values

PALPHA_PARAM

private final DoubleParameter PALPHA_PARAM
Parameter progressive alpha.


palpha

private double palpha
The threshold for strong eigenvectors: the strong eigenvectors explain a portion of at least alpha of the total variance.


DEFAULT_WALPHA

public static final double DEFAULT_WALPHA
The default value for alpha.

See Also:
Constant Field Values

WALPHA_PARAM

private final DoubleParameter WALPHA_PARAM
Parameter weak alpha.


walpha

private double walpha
The noise tolerance level for weak eigenvectors

Constructor Detail

ProgressiveEigenPairFilter

public ProgressiveEigenPairFilter()
Provides a new EigenPairFilter that sorts the eigenpairs in descending order of their eigenvalues and marks the first eigenpairs, whose sum of eigenvalues is higher than the given percentage of the sum of all eigenvalues as string eigenpairs.

Method Detail

filter

public FilteredEigenPairs filter(SortedEigenPairs eigenPairs)
Filter eigenpairs.

Specified by:
filter in interface EigenPairFilter
Parameters:
eigenPairs - the eigenPairs (i.e. the eigenvectors and
Returns:
the filtered eigenpairs

shortDescription

public String shortDescription()
Parameter description.

Specified by:
shortDescription in interface Parameterizable
Overrides:
shortDescription in class AbstractParameterizable
Returns:
Description of the class

setParameters

public List<String> setParameters(List<String> args)
                           throws ParameterException
Set parameters

Specified by:
setParameters in interface Parameterizable
Overrides:
setParameters in class AbstractParameterizable
Parameters:
args - parameters to set the attributes accordingly to
Returns:
a list containing the unused parameters
Throws:
ParameterException - in case of wrong parameter-setting

Release 0.2.1 (2009-07-13_1605)