@Title(value="Progressive Eigenpair Filter") @Description(value="Sorts the eigenpairs in decending order of their eigenvalues and returns the first eigenpairs, whose sum of eigenvalues explains more than the a certain percentage of the unexpected variance, where the percentage increases with subspace dimensionality.") public class ProgressiveEigenPairFilter extends java.lang.Object implements EigenPairFilter
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.
Modifier and Type | Class and Description |
---|---|
static class |
ProgressiveEigenPairFilter.Parameterizer
Parameterization class.
|
Modifier and Type | Field and Description |
---|---|
static double |
DEFAULT_PALPHA
The default value for alpha.
|
static double |
DEFAULT_WALPHA
The default value for alpha.
|
private double |
palpha
The threshold for strong eigenvectors: the strong eigenvectors explain a
portion of at least alpha of the total variance.
|
private double |
walpha
The noise tolerance level for weak eigenvectors
|
PCA_EIGENPAIR_FILTER
Constructor and Description |
---|
ProgressiveEigenPairFilter(double palpha,
double walpha)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
int |
filter(double[] eigenValues)
Filter eigenpairs.
|
public static final double DEFAULT_PALPHA
public static final double DEFAULT_WALPHA
private double palpha
private double walpha
public ProgressiveEigenPairFilter(double palpha, double walpha)
palpha
- palphawalpha
- walphapublic int filter(double[] eigenValues)
filter
in interface EigenPairFilter
eigenValues
- the array of eigenvalues, must be sorted descendingCopyright © 2019 ELKI Development Team. License information.