summaryrefslogtreecommitdiff
path: root/elki/src/main/java/de/lmu/ifi/dbs/elki/algorithm/outlier/lof/LOCI.java
diff options
context:
space:
mode:
authorErich Schubert <erich@debian.org>2016-02-13 17:05:40 +0100
committerAndrej Shadura <andrewsh@debian.org>2019-03-09 22:30:47 +0000
commitdefdc6d2d24cb1cefca77aa63ca6c436a8f3672c (patch)
treea017235849736e0a0ea8a2b28de23f46dc47b082 /elki/src/main/java/de/lmu/ifi/dbs/elki/algorithm/outlier/lof/LOCI.java
parentaee1a6e43bd1a264226de31eadf10003c46d47c6 (diff)
parent0a055548ae9f9d5c639bb29ca32e0fd88de37c1d (diff)
Import Debian changes 0.7.1-1
elki (0.7.1-1) unstable; urgency=low * New upstream release (mostly bug fixes) * Drop patches included upstream * Build-dep on default-jdk instead of openjdk7-jdk (Closes: #814163)
Diffstat (limited to 'elki/src/main/java/de/lmu/ifi/dbs/elki/algorithm/outlier/lof/LOCI.java')
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/algorithm/outlier/lof/LOCI.java108
1 files changed, 62 insertions, 46 deletions
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/algorithm/outlier/lof/LOCI.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/algorithm/outlier/lof/LOCI.java
index 7b332639..f8623bcc 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/algorithm/outlier/lof/LOCI.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/algorithm/outlier/lof/LOCI.java
@@ -63,26 +63,33 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.IntParameter;
/**
* Fast Outlier Detection Using the "Local Correlation Integral".
- *
+ *
* Exact implementation only, not aLOCI. See {@link ALOCI}.
- *
+ *
* Outlier detection using multiple epsilon neighborhoods.
- *
+ *
* This implementation has O(n<sup>3</sup> log n) runtime complexity!
- *
- * Based on: S. Papadimitriou, H. Kitagawa, P. B. Gibbons and C. Faloutsos:
- * LOCI: Fast Outlier Detection Using the Local Correlation Integral. In: Proc.
- * 19th IEEE Int. Conf. on Data Engineering (ICDE '03), Bangalore, India, 2003.
- *
+ *
+ * Reference:
+ * <p>
+ * S. Papadimitriou, H. Kitagawa, P. B. Gibbons and C. Faloutsos: <br />
+ * LOCI: Fast Outlier Detection Using the Local Correlation Integral. <br />
+ * In: Proc. 19th IEEE Int. Conf. on Data Engineering (ICDE '03)
+ * </p>
+ *
* @author Erich Schubert
- *
+ * @since 0.2
+ *
* @apiviz.has RangeQuery
- *
+ *
* @param <O> Object type
*/
@Title("LOCI: Fast Outlier Detection Using the Local Correlation Integral")
@Description("Algorithm to compute outliers based on the Local Correlation Integral")
-@Reference(authors = "S. Papadimitriou, H. Kitagawa, P. B. Gibbons, C. Faloutsos", title = "LOCI: Fast Outlier Detection Using the Local Correlation Integral", booktitle = "Proc. 19th IEEE Int. Conf. on Data Engineering (ICDE '03), Bangalore, India, 2003", url = "http://dx.doi.org/10.1109/ICDE.2003.1260802")
+@Reference(authors = "S. Papadimitriou, H. Kitagawa, P. B. Gibbons, C. Faloutsos", //
+title = "LOCI: Fast Outlier Detection Using the Local Correlation Integral", //
+booktitle = "Proc. 19th IEEE Int. Conf. on Data Engineering (ICDE '03)", //
+url = "http://dx.doi.org/10.1109/ICDE.2003.1260802")
@Alias({ "de.lmu.ifi.dbs.elki.algorithm.outlier.LOCI" })
public class LOCI<O> extends AbstractDistanceBasedAlgorithm<O, OutlierResult> implements OutlierAlgorithm {
/**
@@ -91,39 +98,23 @@ public class LOCI<O> extends AbstractDistanceBasedAlgorithm<O, OutlierResult> im
private static final Logging LOG = Logging.getLogger(LOCI.class);
/**
- * Parameter to specify the maximum radius of the neighborhood to be
- * considered, must be suitable to the distance function specified.
- */
- public static final OptionID RMAX_ID = new OptionID("loci.rmax", "The maximum radius of the neighborhood to be considered.");
-
- /**
- * Parameter to specify the minimum neighborhood size
- */
- public static final OptionID NMIN_ID = new OptionID("loci.nmin", "Minimum neighborhood size to be considered.");
-
- /**
- * Parameter to specify the averaging neighborhood scaling.
- */
- public static final OptionID ALPHA_ID = new OptionID("loci.alpha", "Scaling factor for averaging neighborhood");
-
- /**
- * Holds the value of {@link #RMAX_ID}.
+ * Maximum radius.
*/
private double rmax;
/**
- * Holds the value of {@link #NMIN_ID}.
+ * Minimum neighborhood size.
*/
- private int nmin;
+ private int nmin = 0;
/**
- * Holds the value of {@link #ALPHA_ID}.
+ * Scaling of averaging neighborhood.
*/
- private double alpha;
+ private double alpha = 0.5;
/**
* Constructor.
- *
+ *
* @param distanceFunction Distance function
* @param rmax Maximum radius
* @param nmin Minimum neighborhood size
@@ -138,7 +129,7 @@ public class LOCI<O> extends AbstractDistanceBasedAlgorithm<O, OutlierResult> im
/**
* Run the algorithm
- *
+ *
* @param database Database to process
* @param relation Relation to process
* @return Outlier result
@@ -228,7 +219,7 @@ public class LOCI<O> extends AbstractDistanceBasedAlgorithm<O, OutlierResult> im
/**
* Preprocessing step: determine the radii of interest for each point.
- *
+ *
* @param ids IDs to process
* @param rangeQuery Range query
* @param interestingDistances Distances of interest
@@ -284,7 +275,7 @@ public class LOCI<O> extends AbstractDistanceBasedAlgorithm<O, OutlierResult> im
/**
* Array of double-int values.
- *
+ *
* @author Erich Schubert
*
* @apiviz.exclude
@@ -307,7 +298,7 @@ public class LOCI<O> extends AbstractDistanceBasedAlgorithm<O, OutlierResult> im
/**
* Constructor.
- *
+ *
* @param alloc Initial allocation.
*/
public DoubleIntArrayList(int alloc) {
@@ -318,7 +309,7 @@ public class LOCI<O> extends AbstractDistanceBasedAlgorithm<O, OutlierResult> im
/**
* Collection size.
- *
+ *
* @return Size
*/
public int size() {
@@ -327,7 +318,7 @@ public class LOCI<O> extends AbstractDistanceBasedAlgorithm<O, OutlierResult> im
/**
* Get the key at the given position.
- *
+ *
* @param i Position
* @return Key
*/
@@ -337,7 +328,7 @@ public class LOCI<O> extends AbstractDistanceBasedAlgorithm<O, OutlierResult> im
/**
* Get the value at the given position.
- *
+ *
* @param i Position
* @return Value
*/
@@ -347,7 +338,7 @@ public class LOCI<O> extends AbstractDistanceBasedAlgorithm<O, OutlierResult> im
/**
* Get the value at the given position.
- *
+ *
* @param i Position
* @param val New value
*/
@@ -357,7 +348,7 @@ public class LOCI<O> extends AbstractDistanceBasedAlgorithm<O, OutlierResult> im
/**
* Append a key-value pair.
- *
+ *
* @param key Key to append
* @param val Value to append.
*/
@@ -373,7 +364,7 @@ public class LOCI<O> extends AbstractDistanceBasedAlgorithm<O, OutlierResult> im
/**
* Find the last position with a smaller or equal key.
- *
+ *
* @param search Key
* @return Position
*/
@@ -412,18 +403,43 @@ public class LOCI<O> extends AbstractDistanceBasedAlgorithm<O, OutlierResult> im
/**
* Parameterization class.
- *
+ *
* @author Erich Schubert
- *
+ *
* @apiviz.exclude
- *
+ *
* @param <O> Object type
*/
public static class Parameterizer<O> extends AbstractDistanceBasedAlgorithm.Parameterizer<O> {
+ /**
+ * Parameter to specify the maximum radius of the neighborhood to be
+ * considered, must be suitable to the distance function specified.
+ */
+ public static final OptionID RMAX_ID = new OptionID("loci.rmax", "The maximum radius of the neighborhood to be considered.");
+
+ /**
+ * Parameter to specify the minimum neighborhood size
+ */
+ public static final OptionID NMIN_ID = new OptionID("loci.nmin", "Minimum neighborhood size to be considered.");
+
+ /**
+ * Parameter to specify the averaging neighborhood scaling.
+ */
+ public static final OptionID ALPHA_ID = new OptionID("loci.alpha", "Scaling factor for averaging neighborhood");
+
+ /**
+ * Maximum radius.
+ */
protected double rmax;
+ /**
+ * Minimum neighborhood size.
+ */
protected int nmin = 0;
+ /**
+ * Scaling of averaging neighborhood.
+ */
protected double alpha = 0.5;
@Override