Package elki.outlier.lof
Class VarianceOfVolume<O extends elki.data.spatial.SpatialComparable>
- java.lang.Object
-
- elki.outlier.lof.VarianceOfVolume<O>
-
- Type Parameters:
O- the type of data objects handled by this algorithm
- All Implemented Interfaces:
elki.Algorithm,OutlierAlgorithm
@Reference(authors="T. Hu, S. Y. Sung", title="Detecting pattern-based outliers", booktitle="Pattern Recognition Letters 24(16)", url="https://doi.org/10.1016/S0167-8655(03)00165-X", bibkey="DBLP:journals/prl/HuS03") public class VarianceOfVolume<O extends elki.data.spatial.SpatialComparable> extends java.lang.Object implements OutlierAlgorithmVariance of Volume for outlier detection.The volume is estimated by the distance to the k-nearest neighbor, then the variance of volume is computed.
Unfortunately, this approach needs an enormous numerical precision, and may not work for high-dimensional, non-normalized data. We therefore divide each volume by the average across the data set. This means values are even less comparable across data sets, but this avoids some of the numerical problems of this method.
Reference:
T. Hu, S. Y. Sung
Detecting pattern-based outliers
Pattern Recognition Letters 24(16)- Since:
- 0.7.0
- Author:
- Erich Schubert
-
-
Constructor Summary
Constructors Constructor Description VarianceOfVolume(int k, elki.distance.Distance<? super O> distance)Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidcomputeVolumes(elki.database.query.knn.KNNSearcher<elki.database.ids.DBIDRef> knnq, int dim, elki.database.ids.DBIDs ids, elki.database.datastore.WritableDoubleDataStore vols)Compute volumesprivate voidcomputeVOVs(elki.database.query.knn.KNNSearcher<elki.database.ids.DBIDRef> knnq, elki.database.ids.DBIDs ids, elki.database.datastore.DoubleDataStore vols, elki.database.datastore.WritableDoubleDataStore vovs, elki.math.DoubleMinMax vovminmax)Compute variance of volumes.elki.data.type.TypeInformation[]getInputTypeRestriction()OutlierResultrun(elki.database.relation.Relation<O> relation)Runs the VOV algorithm on the given database.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface elki.outlier.OutlierAlgorithm
autorun
-
-
-
-
Field Detail
-
LOG
private static final elki.logging.Logging LOG
The logger for this class.
-
distance
protected elki.distance.Distance<? super O extends elki.data.spatial.SpatialComparable> distance
Distance function used.
-
kplus
protected int kplus
The number of neighbors to query (plus the query point!)
-
-
Constructor Detail
-
VarianceOfVolume
public VarianceOfVolume(int k, elki.distance.Distance<? super O> distance)Constructor.- Parameters:
k- number of neighbors to use for comparisondistance- the neighborhood distance function
-
-
Method Detail
-
getInputTypeRestriction
public elki.data.type.TypeInformation[] getInputTypeRestriction()
- Specified by:
getInputTypeRestrictionin interfaceelki.Algorithm
-
run
public OutlierResult run(elki.database.relation.Relation<O> relation)
Runs the VOV algorithm on the given database.- Parameters:
relation- Data to process- Returns:
- VOV outlier result
-
computeVolumes
private void computeVolumes(elki.database.query.knn.KNNSearcher<elki.database.ids.DBIDRef> knnq, int dim, elki.database.ids.DBIDs ids, elki.database.datastore.WritableDoubleDataStore vols)Compute volumes- Parameters:
knnq- KNN querydim- Data dimensionalityids- IDs to processvols- Volume storage
-
computeVOVs
private void computeVOVs(elki.database.query.knn.KNNSearcher<elki.database.ids.DBIDRef> knnq, elki.database.ids.DBIDs ids, elki.database.datastore.DoubleDataStore vols, elki.database.datastore.WritableDoubleDataStore vovs, elki.math.DoubleMinMax vovminmax)Compute variance of volumes.- Parameters:
knnq- KNN queryids- IDs to processvols- Volumesvovs- Variance of Volume storagevovminmax- Score minimum/maximum tracker
-
-