E nvironment for Deve L oping K DD-Applications Supported by I ndex-Structures

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

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

`public class ProgressiveEigenPairFilterextends AbstractParameterizableimplements 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 (2009-07-06_1820)