Package elki.outlier.intrinsic
Class ISOS<O>
- java.lang.Object
-
- elki.outlier.intrinsic.ISOS<O>
-
- Type Parameters:
O
- Object type.
- All Implemented Interfaces:
Algorithm
,OutlierAlgorithm
@Title("ISOS: Intrinsic Stochastic Outlier Selection") @Reference(authors="Erich Schubert, Michael Gertz", title="Intrinsic t-Stochastic Neighbor Embedding for Visualization and Outlier Detection: A Remedy Against the Curse of Dimensionality?", booktitle="Proc. Int. Conf. Similarity Search and Applications, SISAP 2017", url="https://doi.org/10.1007/978-3-319-68474-1_13", bibkey="DBLP:conf/sisap/SchubertG17") public class ISOS<O> extends java.lang.Object implements OutlierAlgorithm
Intrinsic Stochastic Outlier Selection.Reference:
Erich Schubert, Michael Gertz
Intrinsic t-Stochastic Neighbor Embedding for Visualization and Outlier Detection: A Remedy Against the Curse of Dimensionality?
Proc. Int. Conf. Similarity Search and Applications, SISAP 2017- Since:
- 0.7.5
- Author:
- Erich Schubert
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface elki.Algorithm
Algorithm.Utils
-
-
Field Summary
Fields Modifier and Type Field Description protected Distance<? super O>
distance
Distance function used.protected DistanceBasedIntrinsicDimensionalityEstimator
estimator
Estimator of intrinsic dimensionality.protected int
k
Number of neighbors (not including query point).private static Logging
LOG
Class logger.protected double
phi
Expected outlier rate.
-
Constructor Summary
Constructors Constructor Description ISOS(Distance<? super O> distance, int k, DistanceBasedIntrinsicDimensionalityEstimator estimator)
Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected static void
adjustDistances(DBIDRef ignore, DoubleDBIDListIter ki, double max, double id, ModifiableDoubleDBIDList dists)
protected double
estimateID(DBIDRef ignore, DoubleDBIDListIter it, double[] p)
Estimate the local intrinsic dimensionality.TypeInformation[]
getInputTypeRestriction()
Get the input type restriction used for negotiating the data query.static void
nominateNeighbors(DBIDIter ignore, DBIDArrayIter di, double[] p, double norm, WritableDoubleDataStore scores)
Vote for neighbors not being outliers.OutlierResult
run(Relation<O> relation)
Run the algorithm.static DoubleMinMax
transformScores(WritableDoubleDataStore scores, DBIDs ids, double logPerp, double phi)
Transform scores-
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 Logging LOG
Class logger.
-
k
protected int k
Number of neighbors (not including query point).
-
estimator
protected DistanceBasedIntrinsicDimensionalityEstimator estimator
Estimator of intrinsic dimensionality.
-
phi
protected double phi
Expected outlier rate.
-
-
Constructor Detail
-
ISOS
public ISOS(Distance<? super O> distance, int k, DistanceBasedIntrinsicDimensionalityEstimator estimator)
Constructor.- Parameters:
distance
- Distance functionk
- Number of neighbors to considerestimator
- Estimator of intrinsic dimensionality.
-
-
Method Detail
-
getInputTypeRestriction
public TypeInformation[] getInputTypeRestriction()
Description copied from interface:Algorithm
Get the input type restriction used for negotiating the data query.- Specified by:
getInputTypeRestriction
in interfaceAlgorithm
- Returns:
- Type restriction
-
run
public OutlierResult run(Relation<O> relation)
Run the algorithm.- Parameters:
relation
- data relation.- Returns:
- outlier detection result
-
adjustDistances
protected static void adjustDistances(DBIDRef ignore, DoubleDBIDListIter ki, double max, double id, ModifiableDoubleDBIDList dists)
-
estimateID
protected double estimateID(DBIDRef ignore, DoubleDBIDListIter it, double[] p)
Estimate the local intrinsic dimensionality.- Parameters:
ignore
- Object to ignoreit
- Iteratorp
- Scratch array- Returns:
- ID estimate
-
nominateNeighbors
public static void nominateNeighbors(DBIDIter ignore, DBIDArrayIter di, double[] p, double norm, WritableDoubleDataStore scores)
Vote for neighbors not being outliers. The key method of SOS.- Parameters:
ignore
- Object to ignoredi
- Neighbor object IDs.p
- Probabilitiesnorm
- Normalization factor (1/sum)scores
- Output score storage
-
transformScores
public static DoubleMinMax transformScores(WritableDoubleDataStore scores, DBIDs ids, double logPerp, double phi)
Transform scores- Parameters:
scores
- Scores to transformids
- DBIDs to processlogPerp
- log perplexityphi
- Expected outlier rate- Returns:
- Minimum and maximum scores
-
-