summaryrefslogtreecommitdiff
path: root/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca
diff options
context:
space:
mode:
Diffstat (limited to 'elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca')
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/AbstractCovarianceMatrixBuilder.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/CompositeEigenPairFilter.java10
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/CovarianceMatrixBuilder.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/DropEigenPairFilter.java19
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/EigenPairFilter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/FilteredEigenPairs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/FirstNEigenPairFilter.java10
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/LimitEigenPairFilter.java21
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/NormalizingEigenPairFilter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAFilteredAutotuningRunner.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAFilteredResult.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAFilteredRunner.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAResult.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCARunner.java24
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PercentageEigenPairFilter.java24
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/ProgressiveEigenPairFilter.java45
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/RANSACCovarianceMatrixBuilder.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/RelativeEigenPairFilter.java10
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/SignificantEigenPairFilter.java15
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/StandardCovarianceMatrixBuilder.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/WeakEigenPairFilter.java16
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/WeightedCovarianceMatrixBuilder.java22
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ConstantWeight.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ErfcStddevWeight.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ErfcWeight.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ExponentialStddevWeight.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ExponentialWeight.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/GaussStddevWeight.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/GaussWeight.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/InverseLinearWeight.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/InverseProportionalStddevWeight.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/InverseProportionalWeight.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/LinearWeight.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/QuadraticStddevWeight.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/QuadraticWeight.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/WeightFunction.java1
36 files changed, 135 insertions, 106 deletions
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/AbstractCovarianceMatrixBuilder.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/AbstractCovarianceMatrixBuilder.java
index 8190eea5..3874b91b 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/AbstractCovarianceMatrixBuilder.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/AbstractCovarianceMatrixBuilder.java
@@ -37,6 +37,7 @@ import de.lmu.ifi.dbs.elki.math.linearalgebra.Matrix;
* Mostly the specification of an interface.
*
* @author Erich Schubert
+ * @since 0.2
*/
public abstract class AbstractCovarianceMatrixBuilder implements CovarianceMatrixBuilder {
@Override
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/CompositeEigenPairFilter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/CompositeEigenPairFilter.java
index c56217f8..bd88dcb8 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/CompositeEigenPairFilter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/CompositeEigenPairFilter.java
@@ -36,15 +36,11 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectListParamet
* eigenpair filters.
*
* @author Elke Achtert
+ * @since 0.2
*/
// todo parameter comments
public class CompositeEigenPairFilter implements EigenPairFilter {
/**
- * The list of filters to use.
- */
- public static final OptionID EIGENPAIR_FILTER_COMPOSITE_LIST = new OptionID("pca.filter.composite.list", "A comma separated list of the class names of the filters to be used. " + "The specified filters will be applied sequentially in the given order.");
-
- /**
* The filters to be applied.
*/
private List<EigenPairFilter> filters;
@@ -86,6 +82,10 @@ public class CompositeEigenPairFilter implements EigenPairFilter {
*/
public static class Parameterizer extends AbstractParameterizer {
/**
+ * The list of filters to use.
+ */
+ public static final OptionID EIGENPAIR_FILTER_COMPOSITE_LIST = new OptionID("pca.filter.composite.list", "A comma separated list of the class names of the filters to be used. " + "The specified filters will be applied sequentially in the given order.");
+ /**
* The filters to be applied.
*/
private List<EigenPairFilter> filters = null;
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/CovarianceMatrixBuilder.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/CovarianceMatrixBuilder.java
index e3d10297..c2b40a85 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/CovarianceMatrixBuilder.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/CovarianceMatrixBuilder.java
@@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.math.linearalgebra.Matrix;
* Interface for computing covariance matrixes on a data set.
*
* @author Erich Schubert
+ * @since 0.2
*/
public interface CovarianceMatrixBuilder {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/DropEigenPairFilter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/DropEigenPairFilter.java
index 7d642b86..40a171df 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/DropEigenPairFilter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/DropEigenPairFilter.java
@@ -37,16 +37,17 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter;
/**
* The "drop" filter looks for the largest drop in normalized relative
* eigenvalues.
- *
+ *
* Let s_1 .. s_n be the eigenvalues.
- *
+ *
* Let a_k := 1/(n-k) sum_{i=k..n} s_i
- *
+ *
* Then r_k := s_k / a_k is the relative eigenvalue.
- *
+ *
* The drop filter searches for argmax_k r_k / r_{k+1}
- *
+ *
* @author Erich Schubert
+ * @since 0.2
*/
@Title("Drop EigenPair Filter")
public class DropEigenPairFilter implements EigenPairFilter {
@@ -63,7 +64,7 @@ public class DropEigenPairFilter implements EigenPairFilter {
/**
* Constructor.
- *
+ *
* @param walpha
*/
public DropEigenPairFilter(double walpha) {
@@ -121,9 +122,9 @@ public class DropEigenPairFilter implements EigenPairFilter {
/**
* Parameterization class.
- *
+ *
* @author Erich Schubert
- *
+ *
* @apiviz.exclude
*/
public static class Parameterizer extends AbstractParameterizer {
@@ -132,7 +133,7 @@ public class DropEigenPairFilter implements EigenPairFilter {
@Override
protected void makeOptions(Parameterization config) {
super.makeOptions(config);
- DoubleParameter walphaP = new DoubleParameter(WeakEigenPairFilter.EIGENPAIR_FILTER_WALPHA, DEFAULT_WALPHA);
+ DoubleParameter walphaP = new DoubleParameter(WeakEigenPairFilter.Parameterizer.EIGENPAIR_FILTER_WALPHA, DEFAULT_WALPHA);
walphaP.addConstraint(CommonConstraints.GREATER_EQUAL_ZERO_DOUBLE);
if (config.grab(walphaP)) {
walpha = walphaP.getValue();
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/EigenPairFilter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/EigenPairFilter.java
index b0a244f6..7b3886e5 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/EigenPairFilter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/EigenPairFilter.java
@@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.math.linearalgebra.SortedEigenPairs;
* and weak eigenpairs having small variances.
*
* @author Elke Achtert
+ * @since 0.2
*
* @apiviz.uses SortedEigenPairs oneway - - reads
* @apiviz.uses FilteredEigenPairs oneway - - «create»
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/FilteredEigenPairs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/FilteredEigenPairs.java
index b8343a24..fcc09c7c 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/FilteredEigenPairs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/FilteredEigenPairs.java
@@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.math.linearalgebra.EigenPair;
* by an eigenpair filter.
*
* @author Elke Achtert
+ * @since 0.2
*
* @apiviz.has EigenPair
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/FirstNEigenPairFilter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/FirstNEigenPairFilter.java
index d2251f28..ca7d288e 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/FirstNEigenPairFilter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/FirstNEigenPairFilter.java
@@ -42,6 +42,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.IntParameter;
* eigenpairs, where n is a user specified number.
*
* @author Elke Achtert
+ * @since 0.2
*/
// todo parameter comments
@Title("First n Eigenpair filter")
@@ -53,11 +54,6 @@ public class FirstNEigenPairFilter implements EigenPairFilter {
private static final Logging LOG = Logging.getLogger(FirstNEigenPairFilter.class);
/**
- * Paremeter n
- */
- public static final OptionID EIGENPAIR_FILTER_N = new OptionID("pca.filter.n", "The number of strong eigenvectors: n eigenvectors with the n highest" + "eigenvalues are marked as strong eigenvectors.");
-
- /**
* The threshold for strong eigenvectors: n eigenvectors with the n highest
* eigenvalues are marked as strong eigenvectors.
*/
@@ -114,6 +110,10 @@ public class FirstNEigenPairFilter implements EigenPairFilter {
*/
public static class Parameterizer extends AbstractParameterizer {
/**
+ * Paremeter n
+ */
+ public static final OptionID EIGENPAIR_FILTER_N = new OptionID("pca.filter.n", "The number of strong eigenvectors: n eigenvectors with the n highest" + "eigenvalues are marked as strong eigenvectors.");
+ /**
* The number of eigenpairs to keep.
*/
protected int n = 0;
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/LimitEigenPairFilter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/LimitEigenPairFilter.java
index 779ceb2e..a4047473 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/LimitEigenPairFilter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/LimitEigenPairFilter.java
@@ -48,6 +48,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Flag;
* others are marked as strong eigenpairs.
*
* @author Elke Achtert
+ * @since 0.2
*/
@Title("Limit-based Eigenpair Filter")
@Description("Filters all eigenpairs, which are lower than a given value.")
@@ -58,16 +59,6 @@ public class LimitEigenPairFilter implements EigenPairFilter {
private static final Logging LOG = Logging.getLogger(LimitEigenPairFilter.class);
/**
- * "absolute" Flag
- */
- public static final OptionID EIGENPAIR_FILTER_ABSOLUTE = new OptionID("pca.filter.absolute", "Flag to mark delta as an absolute value.");
-
- /**
- * Parameter delta
- */
- public static final OptionID EIGENPAIR_FILTER_DELTA = new OptionID("pca.filter.delta", "The threshold for strong Eigenvalues. If not otherwise specified, delta " + "is a relative value w.r.t. the (absolute) highest Eigenvalues and has to be " + "a double between 0 and 1. To mark delta as an absolute value, use " + "the option -" + EIGENPAIR_FILTER_ABSOLUTE.getName() + ".");
-
- /**
* The default value for delta.
*/
public static final double DEFAULT_DELTA = 0.01;
@@ -154,6 +145,16 @@ public class LimitEigenPairFilter implements EigenPairFilter {
*/
public static class Parameterizer extends AbstractParameterizer {
/**
+ * "absolute" Flag
+ */
+ public static final OptionID EIGENPAIR_FILTER_ABSOLUTE = new OptionID("pca.filter.absolute", "Flag to mark delta as an absolute value.");
+
+ /**
+ * Parameter delta
+ */
+ public static final OptionID EIGENPAIR_FILTER_DELTA = new OptionID("pca.filter.delta", "The threshold for strong Eigenvalues. If not otherwise specified, delta " + "is a relative value w.r.t. the (absolute) highest Eigenvalues and has to be " + "a double between 0 and 1. To mark delta as an absolute value, use " + "the option -" + EIGENPAIR_FILTER_ABSOLUTE.getName() + ".");
+
+ /**
* Threshold for strong eigenpairs, can be absolute or relative.
*/
private double delta;
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/NormalizingEigenPairFilter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/NormalizingEigenPairFilter.java
index fb95a68c..9f77f747 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/NormalizingEigenPairFilter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/NormalizingEigenPairFilter.java
@@ -38,6 +38,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Title;
* eigenvector> * eigenvalue = 1, where <,> is the standard dot product
*
* @author Simon Paradies
+ * @since 0.2
*/
@Title("Perecentage based Eigenpair filter")
@Description("Normalizes all eigenpairs, consisting of eigenvalue e and eigenvector v such that <v,v> * e = 1, where <,> is the standard dot product.")
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAFilteredAutotuningRunner.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAFilteredAutotuningRunner.java
index 600fcf95..4abd1c6d 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAFilteredAutotuningRunner.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAFilteredAutotuningRunner.java
@@ -55,6 +55,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Reference;
* exhibit the clearest correlation.
*
* @author Erich Schubert
+ * @since 0.5.0
*/
@Reference(authors = "Hans-Peter Kriegel, Peer Kröger, Erich Schubert, Arthur Zimek", //
title = "A General Framework for Increasing the Robustness of PCA-based Correlation Clustering Algorithms",//
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAFilteredResult.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAFilteredResult.java
index f7ec9e79..1b7d6910 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAFilteredResult.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAFilteredResult.java
@@ -38,6 +38,7 @@ import de.lmu.ifi.dbs.elki.math.linearalgebra.SortedEigenPairs;
* subspace and an "error" subspace.
*
* @author Erich Schubert
+ * @since 0.2
*
* @apiviz.landmark
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAFilteredRunner.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAFilteredRunner.java
index e7c31cf6..d61c7830 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAFilteredRunner.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAFilteredRunner.java
@@ -42,6 +42,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter;
* regular runner, but afterwards, an {@link EigenPairFilter} is applied.
*
* @author Erich Schubert
+ * @since 0.2
*
* @apiviz.landmark
* @apiviz.has PCAFilteredResult oneway - - «create»
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAResult.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAResult.java
index 4c0de355..72268972 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAResult.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCAResult.java
@@ -30,6 +30,7 @@ import de.lmu.ifi.dbs.elki.math.linearalgebra.SortedEigenPairs;
* Result class for Principal Component Analysis with some convenience methods
*
* @author Erich Schubert
+ * @since 0.2
*
* @apiviz.landmark
* @apiviz.has SortedEigenPairs
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCARunner.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCARunner.java
index bdd4f32f..c4195506 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCARunner.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PCARunner.java
@@ -46,6 +46,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter;
* to a weighted covariance matrix builder)
*
* @author Erich Schubert
+ * @since 0.2
*
* @apiviz.landmark
* @apiviz.uses PCAResult oneway - - «create»
@@ -53,18 +54,6 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter;
*/
public class PCARunner {
/**
- * Parameter to specify the class to compute the covariance matrix, must be a
- * subclass of {@link CovarianceMatrixBuilder}.
- * <p>
- * Default value: {@link CovarianceMatrixBuilder}
- * </p>
- * <p>
- * Key: {@code -pca.covariance}
- * </p>
- */
- public static final OptionID PCA_COVARIANCE_MATRIX = new OptionID("pca.covariance", "Class used to compute the covariance matrix.");
-
- /**
* The covariance computation class.
*/
protected CovarianceMatrixBuilder covarianceMatrixBuilder;
@@ -161,6 +150,17 @@ public class PCARunner {
*/
public static class Parameterizer extends AbstractParameterizer {
/**
+ * Parameter to specify the class to compute the covariance matrix, must be a
+ * subclass of {@link CovarianceMatrixBuilder}.
+ * <p>
+ * Default value: {@link CovarianceMatrixBuilder}
+ * </p>
+ * <p>
+ * Key: {@code -pca.covariance}
+ * </p>
+ */
+ public static final OptionID PCA_COVARIANCE_MATRIX = new OptionID("pca.covariance", "Class used to compute the covariance matrix.");
+ /**
* The covariance computation class.
*/
protected CovarianceMatrixBuilder covarianceMatrixBuilder;
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PercentageEigenPairFilter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PercentageEigenPairFilter.java
index c32ad6fc..8b445b97 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PercentageEigenPairFilter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/PercentageEigenPairFilter.java
@@ -44,6 +44,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter;
* eigenpairs.
*
* @author Elke Achtert
+ * @since 0.2
*/
@Title("Percentage based Eigenpair filter")
@Description("Sorts the eigenpairs in decending order of their eigenvalues and returns the first eigenpairs, whose sum of eigenvalues is higher than the given percentage of the sum of all eigenvalues.")
@@ -54,18 +55,6 @@ public class PercentageEigenPairFilter implements EigenPairFilter {
private static final Logging LOG = Logging.getLogger(PercentageEigenPairFilter.class);
/**
- * The threshold for 'strong' eigenvectors: the 'strong' eigenvectors explain
- * a portion of at least alpha of the total variance.
- * <p>
- * Default value: {@link #DEFAULT_ALPHA}
- * </p>
- * <p>
- * Key: {@code -pca.filter.alpha}
- * </p>
- */
- public static final OptionID ALPHA_ID = new OptionID("pca.filter.alpha", "The share (0.0 to 1.0) of variance that needs to be explained by the 'strong' eigenvectors." + "The filter class will choose the number of strong eigenvectors by this share.");
-
- /**
* The default value for alpha.
*/
public static final double DEFAULT_ALPHA = 0.85;
@@ -145,6 +134,17 @@ public class PercentageEigenPairFilter implements EigenPairFilter {
*/
public static class Parameterizer extends AbstractParameterizer {
/**
+ * The threshold for 'strong' eigenvectors: the 'strong' eigenvectors explain
+ * a portion of at least alpha of the total variance.
+ * <p>
+ * Default value: {@link #DEFAULT_ALPHA}
+ * </p>
+ * <p>
+ * Key: {@code -pca.filter.alpha}
+ * </p>
+ */
+ public static final OptionID ALPHA_ID = new OptionID("pca.filter.alpha", "The share (0.0 to 1.0) of variance that needs to be explained by the 'strong' eigenvectors." + "The filter class will choose the number of strong eigenvectors by this share.");
+ /**
* The threshold for strong eigenvectors: the strong eigenvectors explain a
* portion of at least alpha of the total variance.
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/ProgressiveEigenPairFilter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/ProgressiveEigenPairFilter.java
index 16b6d72e..242c00f4 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/ProgressiveEigenPairFilter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/ProgressiveEigenPairFilter.java
@@ -46,48 +46,44 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter;
* gives better results when clusters of different dimensionality exist, since
* different percentage alpha levels might be appropriate for different
* dimensionalities.
- *
+ *
* 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.
- *
+ *
* @author Erich Schubert
- *
+ * @since 0.2
+ *
*/
@Title("Progressive Eigenpair Filter")
@Description("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 implements EigenPairFilter {
/**
- * Parameter progressive alpha.
- */
- public static final OptionID EIGENPAIR_FILTER_PALPHA = new OptionID("pca.filter.progressivealpha", "The share (0.0 to 1.0) of variance that needs to be explained by the 'strong' eigenvectors." + "The filter class will choose the number of strong eigenvectors by this share.");
-
- /**
* The default value for alpha.
*/
public static final double DEFAULT_PALPHA = 0.5;
@@ -110,7 +106,7 @@ public class ProgressiveEigenPairFilter implements EigenPairFilter {
/**
* Constructor.
- *
+ *
* @param palpha palpha
* @param walpha walpha
*/
@@ -177,13 +173,18 @@ public class ProgressiveEigenPairFilter implements EigenPairFilter {
/**
* Parameterization class.
- *
+ *
* @author Erich Schubert
- *
+ *
* @apiviz.exclude
*/
public static class Parameterizer extends AbstractParameterizer {
/**
+ * Parameter progressive alpha.
+ */
+ public static final OptionID EIGENPAIR_FILTER_PALPHA = new OptionID("pca.filter.progressivealpha", "The share (0.0 to 1.0) of variance that needs to be explained by the 'strong' eigenvectors." + "The filter class will choose the number of strong eigenvectors by this share.");
+
+ /**
* The threshold for strong eigenvectors: the strong eigenvectors explain a
* portion of at least alpha of the total variance.
*/
@@ -204,7 +205,7 @@ public class ProgressiveEigenPairFilter implements EigenPairFilter {
palpha = palphaP.getValue();
}
- DoubleParameter walphaP = new DoubleParameter(WeakEigenPairFilter.EIGENPAIR_FILTER_WALPHA, DEFAULT_WALPHA);
+ DoubleParameter walphaP = new DoubleParameter(WeakEigenPairFilter.Parameterizer.EIGENPAIR_FILTER_WALPHA, DEFAULT_WALPHA);
walphaP.addConstraint(CommonConstraints.GREATER_EQUAL_ZERO_DOUBLE);
if(config.grab(walphaP)) {
walpha = walphaP.getValue();
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/RANSACCovarianceMatrixBuilder.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/RANSACCovarianceMatrixBuilder.java
index 291f91b6..5553936b 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/RANSACCovarianceMatrixBuilder.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/RANSACCovarianceMatrixBuilder.java
@@ -74,6 +74,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.RandomParameter;
* </p>
*
* @author Erich Schubert
+ * @since 0.5.5
*/
@Reference(authors = "Hans-Peter Kriegel, Peer Kröger, Erich Schubert, Arthur Zimek", //
title = "Outlier Detection in Arbitrarily Oriented Subspaces", //
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/RelativeEigenPairFilter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/RelativeEigenPairFilter.java
index 54361c4f..3011a7d8 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/RelativeEigenPairFilter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/RelativeEigenPairFilter.java
@@ -50,16 +50,12 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter;
* dimensionalities.
*
* @author Erich Schubert
+ * @since 0.2
*/
@Title("Relative EigenPair Filter")
@Description("Sorts the eigenpairs in decending order of their eigenvalues and returns those eigenpairs, whose eigenvalue is " + "above the average ('expected') eigenvalue of the remaining eigenvectors.")
public class RelativeEigenPairFilter implements EigenPairFilter {
/**
- * Parameter relative alpha.
- */
- public static final OptionID EIGENPAIR_FILTER_RALPHA = new OptionID("pca.filter.relativealpha", "The sensitivity niveau for weak eigenvectors: An eigenvector which is at less than " + "the given share of the statistical average variance is considered weak.");
-
- /**
* The default value for ralpha.
*/
public static final double DEFAULT_RALPHA = 1.1;
@@ -123,6 +119,10 @@ public class RelativeEigenPairFilter implements EigenPairFilter {
* @apiviz.exclude
*/
public static class Parameterizer extends AbstractParameterizer {
+ /**
+ * Parameter relative alpha.
+ */
+ public static final OptionID EIGENPAIR_FILTER_RALPHA = new OptionID("pca.filter.relativealpha", "The sensitivity niveau for weak eigenvectors: An eigenvector which is at less than " + "the given share of the statistical average variance is considered weak.");
protected double ralpha;
@Override
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/SignificantEigenPairFilter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/SignificantEigenPairFilter.java
index dfc5347d..64dac360 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/SignificantEigenPairFilter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/SignificantEigenPairFilter.java
@@ -39,18 +39,19 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter;
* The SignificantEigenPairFilter sorts the eigenpairs in descending order of
* their eigenvalues and chooses the contrast of an Eigenvalue to the remaining
* Eigenvalues is maximal.
- *
+ *
* It is closely related to the WeakEigenPairFilter and RelativeEigenPairFilter.
* But while the RelativeEigenPairFilter chooses the highest dimensionality that
* satisfies the relative alpha levels, the SignificantEigenPairFilter will
* chose the local dimensionality such that the 'contrast' is maximal.
- *
+ *
* There are some situations where one or the other is superior, especially when
* it comes to handling nested clusters and strong global correlations that are
* not too interesting. These benefits usually only make a difference at higher
* dimensionalities.
- *
+ *
* @author Erich Schubert
+ * @since 0.2
*/
@Title("Significant EigenPair Filter")
@Description("Sorts the eigenpairs in decending order of their eigenvalues and looks for the maxmimum contrast of current Eigenvalue / average of remaining Eigenvalues.")
@@ -68,7 +69,7 @@ public class SignificantEigenPairFilter implements EigenPairFilter {
/**
* Constructor.
- *
+ *
* @param walpha
*/
public SignificantEigenPairFilter(double walpha) {
@@ -122,9 +123,9 @@ public class SignificantEigenPairFilter implements EigenPairFilter {
/**
* Parameterization class.
- *
+ *
* @author Erich Schubert
- *
+ *
* @apiviz.exclude
*/
public static class Parameterizer extends AbstractParameterizer {
@@ -133,7 +134,7 @@ public class SignificantEigenPairFilter implements EigenPairFilter {
@Override
protected void makeOptions(Parameterization config) {
super.makeOptions(config);
- DoubleParameter walphaP = new DoubleParameter(WeakEigenPairFilter.EIGENPAIR_FILTER_WALPHA, DEFAULT_WALPHA);
+ DoubleParameter walphaP = new DoubleParameter(WeakEigenPairFilter.Parameterizer.EIGENPAIR_FILTER_WALPHA, DEFAULT_WALPHA);
walphaP.addConstraint(CommonConstraints.GREATER_EQUAL_ZERO_DOUBLE);
if(config.grab(walphaP)) {
walpha = walphaP.getValue();
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/StandardCovarianceMatrixBuilder.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/StandardCovarianceMatrixBuilder.java
index 677a88eb..ea1a6787 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/StandardCovarianceMatrixBuilder.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/StandardCovarianceMatrixBuilder.java
@@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.math.linearalgebra.Matrix;
* Reasonable default choice for a {@link CovarianceMatrixBuilder}
*
* @author Erich Schubert
+ * @since 0.2
*
* @apiviz.uses CovarianceMatrix
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/WeakEigenPairFilter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/WeakEigenPairFilter.java
index 51d89450..8f76531e 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/WeakEigenPairFilter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/WeakEigenPairFilter.java
@@ -42,19 +42,12 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.DoubleParameter;
* as "strong", the others as "weak".
*
* @author Erich Schubert
+ * @since 0.2
*/
@Title("Weak Eigenpair Filter")
@Description("Sorts the eigenpairs in decending order of their eigenvalues and returns those eigenpairs, whose eigenvalue is above the average ('expected') eigenvalue.")
public class WeakEigenPairFilter implements EigenPairFilter {
/**
- * OptionID for the weak alpha value of {@link WeakEigenPairFilter},
- * {@link de.lmu.ifi.dbs.elki.math.linearalgebra.pca.ProgressiveEigenPairFilter}
- * and
- * {@link de.lmu.ifi.dbs.elki.math.linearalgebra.pca.SignificantEigenPairFilter}
- */
- public static final OptionID EIGENPAIR_FILTER_WALPHA = new OptionID("pca.filter.weakalpha", "The minimum strength of the statistically expected variance (1/n) share an eigenvector " + "needs to have to be considered 'strong'.");
-
- /**
* The default value for walpha.
*/
public static final double DEFAULT_WALPHA = 0.95;
@@ -119,6 +112,13 @@ public class WeakEigenPairFilter implements EigenPairFilter {
*/
public static class Parameterizer extends AbstractParameterizer {
/**
+ * OptionID for the weak alpha value of {@link WeakEigenPairFilter},
+ * {@link de.lmu.ifi.dbs.elki.math.linearalgebra.pca.ProgressiveEigenPairFilter}
+ * and
+ * {@link de.lmu.ifi.dbs.elki.math.linearalgebra.pca.SignificantEigenPairFilter}
+ */
+ public static final OptionID EIGENPAIR_FILTER_WALPHA = new OptionID("pca.filter.weakalpha", "The minimum strength of the statistically expected variance (1/n) share an eigenvector " + "needs to have to be considered 'strong'.");
+ /**
* The threshold for strong eigenvectors: the strong eigenvectors explain a
* portion of at least alpha of the total variance.
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/WeightedCovarianceMatrixBuilder.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/WeightedCovarianceMatrixBuilder.java
index a5b7d545..eba61671 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/WeightedCovarianceMatrixBuilder.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/WeightedCovarianceMatrixBuilder.java
@@ -60,6 +60,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter;
* Computer Science 5069, Springer
*
* @author Erich Schubert
+ * @since 0.2
*
* @apiviz.has WeightFunction
* @apiviz.has PrimitiveDistanceFunction
@@ -73,17 +74,6 @@ booktitle = "Proceedings of the 20th International Conference on Scientific and
url = "http://dx.doi.org/10.1007/978-3-540-69497-7_27")
public class WeightedCovarianceMatrixBuilder extends AbstractCovarianceMatrixBuilder {
/**
- * Parameter to specify the weight function to use in weighted PCA, must
- * implement
- * {@link de.lmu.ifi.dbs.elki.math.linearalgebra.pca.weightfunctions.WeightFunction}
- * .
- * <p>
- * Key: {@code -pca.weight}
- * </p>
- */
- public static final OptionID WEIGHT_ID = new OptionID("pca.weight", "Weight function to use in weighted PCA.");
-
- /**
* Holds the weight function.
*/
protected WeightFunction weightfunction;
@@ -205,6 +195,16 @@ public class WeightedCovarianceMatrixBuilder extends AbstractCovarianceMatrixBui
*/
public static class Parameterizer extends AbstractParameterizer {
/**
+ * Parameter to specify the weight function to use in weighted PCA, must
+ * implement
+ * {@link de.lmu.ifi.dbs.elki.math.linearalgebra.pca.weightfunctions.WeightFunction}
+ * .
+ * <p>
+ * Key: {@code -pca.weight}
+ * </p>
+ */
+ public static final OptionID WEIGHT_ID = new OptionID("pca.weight", "Weight function to use in weighted PCA.");
+ /**
* Weight function.
*/
protected WeightFunction weightfunction = null;
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ConstantWeight.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ConstantWeight.java
index 693cdb2e..71ae52ed 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ConstantWeight.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ConstantWeight.java
@@ -30,6 +30,7 @@ package de.lmu.ifi.dbs.elki.math.linearalgebra.pca.weightfunctions;
* The result is always 1.0
*
* @author Erich Schubert
+ * @since 0.2
*/
public final class ConstantWeight implements WeightFunction {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ErfcStddevWeight.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ErfcStddevWeight.java
index 03423603..76e24d18 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ErfcStddevWeight.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ErfcStddevWeight.java
@@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.math.statistics.distribution.NormalDistribution;
* erfc(1 / sqrt(2) * distance / stddev)
*
* @author Erich Schubert
+ * @since 0.2
*/
public final class ErfcStddevWeight implements WeightFunction {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ErfcWeight.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ErfcWeight.java
index b7bc1c67..11acb0af 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ErfcWeight.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ErfcWeight.java
@@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.math.statistics.distribution.NormalDistribution;
* scaling.
*
* @author Erich Schubert
+ * @since 0.2
*/
public final class ErfcWeight implements WeightFunction {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ExponentialStddevWeight.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ExponentialStddevWeight.java
index 3b265d47..fce17896 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ExponentialStddevWeight.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ExponentialStddevWeight.java
@@ -34,6 +34,7 @@ package de.lmu.ifi.dbs.elki.math.linearalgebra.pca.weightfunctions;
* not squared.
*
* @author Erich Schubert
+ * @since 0.2
*/
public final class ExponentialStddevWeight implements WeightFunction {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ExponentialWeight.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ExponentialWeight.java
index c67e35d7..c45d5cac 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ExponentialWeight.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/ExponentialWeight.java
@@ -36,6 +36,7 @@ package de.lmu.ifi.dbs.elki.math.linearalgebra.pca.weightfunctions;
* -2.3025850929940455 is log(-.1) to achieve the intended range of 1.0 - 0.1
*
* @author Erich Schubert
+ * @since 0.2
*/
public final class ExponentialWeight implements WeightFunction {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/GaussStddevWeight.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/GaussStddevWeight.java
index bf78b576..d8f67639 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/GaussStddevWeight.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/GaussStddevWeight.java
@@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.math.MathUtil;
* with factor being 1 / sqrt(2 * PI)
*
* @author Erich Schubert
+ * @since 0.2
*/
public final class GaussStddevWeight implements WeightFunction {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/GaussWeight.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/GaussWeight.java
index fcad89a3..70826d0e 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/GaussWeight.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/GaussWeight.java
@@ -31,6 +31,7 @@ package de.lmu.ifi.dbs.elki.math.linearalgebra.pca.weightfunctions;
* exp(-2.3025850929940455 * (distance/max)^2)
*
* @author Erich Schubert
+ * @since 0.2
*/
public final class GaussWeight implements WeightFunction {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/InverseLinearWeight.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/InverseLinearWeight.java
index 3fb8e9e0..f2c27d5a 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/InverseLinearWeight.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/InverseLinearWeight.java
@@ -33,6 +33,7 @@ package de.lmu.ifi.dbs.elki.math.linearalgebra.pca.weightfunctions;
* This function has increasing weight, from 0.1 to 1.0 at distance == max.
*
* @author Erich Schubert
+ * @since 0.2
*/
public final class InverseLinearWeight implements WeightFunction {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/InverseProportionalStddevWeight.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/InverseProportionalStddevWeight.java
index a4d4a28e..952e7a56 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/InverseProportionalStddevWeight.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/InverseProportionalStddevWeight.java
@@ -30,6 +30,7 @@ package de.lmu.ifi.dbs.elki.math.linearalgebra.pca.weightfunctions;
* 1 / (1 + distance/stddev)
*
* @author Erich Schubert
+ * @since 0.2
*/
public final class InverseProportionalStddevWeight implements WeightFunction {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/InverseProportionalWeight.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/InverseProportionalWeight.java
index fb1d71ba..810d17a9 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/InverseProportionalWeight.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/InverseProportionalWeight.java
@@ -30,6 +30,7 @@ package de.lmu.ifi.dbs.elki.math.linearalgebra.pca.weightfunctions;
* 1 / (1 + distance/max)
*
* @author Erich Schubert
+ * @since 0.2
*/
public final class InverseProportionalWeight implements WeightFunction {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/LinearWeight.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/LinearWeight.java
index a37617b5..bc92660e 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/LinearWeight.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/LinearWeight.java
@@ -31,6 +31,7 @@ package de.lmu.ifi.dbs.elki.math.linearalgebra.pca.weightfunctions;
* 1 - 0.9 * (distance/max)
*
* @author Erich Schubert
+ * @since 0.2
*/
public final class LinearWeight implements WeightFunction {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/QuadraticStddevWeight.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/QuadraticStddevWeight.java
index e35e9a67..c02d78f1 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/QuadraticStddevWeight.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/QuadraticStddevWeight.java
@@ -33,6 +33,7 @@ package de.lmu.ifi.dbs.elki.math.linearalgebra.pca.weightfunctions;
* max(0.0, 1.0 - (distance/(3*stddev))^2
*
* @author Erich Schubert
+ * @since 0.2
*/
public final class QuadraticStddevWeight implements WeightFunction {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/QuadraticWeight.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/QuadraticWeight.java
index 87bd552b..d764ef08 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/QuadraticWeight.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/QuadraticWeight.java
@@ -31,6 +31,7 @@ package de.lmu.ifi.dbs.elki.math.linearalgebra.pca.weightfunctions;
* 1.0 - 0.9 * (distance/max)^2
*
* @author Erich Schubert
+ * @since 0.2
*/
public final class QuadraticWeight implements WeightFunction {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/WeightFunction.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/WeightFunction.java
index 49bced02..afc04fb9 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/WeightFunction.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/math/linearalgebra/pca/weightfunctions/WeightFunction.java
@@ -30,6 +30,7 @@ package de.lmu.ifi.dbs.elki.math.linearalgebra.pca.weightfunctions;
* normalized according to the maximum or standard deviation.
*
* @author Erich Schubert
+ * @since 0.2
*/
public interface WeightFunction {
/**