O
- the type of DatabaseObjects handled by this AlgorithmD
- Distance type@Title(value="DWOF: Dynamic Window Outlier Factor") @Description(value="Algorithm to compute dynamic-window outlier factors in a database based on the neighborhood size parameter \'k\'") @Reference(authors="R. Momtaz, N. Mohssen, M. A. Gowayyed", title="DWOF: A Robust Density-Based OutlierDetection Approach", booktitle="Pattern Recognition and Image Analysis, Proc. 6th Iberian Conference, IbPRIA 2013, Funchal, Madeira, Portugal, 2013.", url="http://dx.doi.org/10.1007%2F978-3-642-38628-2_61") public class DWOF<O,D extends NumberDistance<D,?>> extends AbstractDistanceBasedAlgorithm<O,D,OutlierResult> implements OutlierAlgorithm
Algorithm to compute dynamic-window outlier factors in a database based on a
specified parameter DWOF.Parameterizer.K_ID
(-dwof.k
).
The parameter DWOF.Parameterizer.K_ID
specifies the number of the
neighbors to be considered during the calculation of the DWOF score.
All the distance queries -KNN and Range- are determined using the parameter
DistanceBasedAlgorithm.DISTANCE_FUNCTION_ID
Reference:
Rana Momtaz, Nesma Mohssen and Mohammad A. Gowayyed: DWOF: A Robust
Density-Based OutlierDetection Approach.
In: Pattern Recognition and Image Analysis , Proc. 6th Iberian Conference,
IbPRIA 2013, Funchal, Madeira, Portugal, June 5-7, 2013.
Modifier and Type | Class and Description |
---|---|
static class |
DWOF.Parameterizer<O,D extends NumberDistance<D,?>>
Parameterization class.
|
Modifier and Type | Field and Description |
---|---|
private double |
delta
The radii changing ratio
|
protected int |
k
Holds the value of
DWOF.Parameterizer.K_ID i.e. |
private static Logging |
LOG
The logger for this class.
|
DISTANCE_FUNCTION_ID
Constructor and Description |
---|
DWOF(DistanceFunction<? super O,D> distanceFunction,
int k,
double delta)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
private void |
clusterData(DBIDs ids,
RangeQuery<O,D> rnnQuery,
WritableDoubleDataStore radii,
WritableDataStore<ModifiableDBIDs> labels)
This method applies a density based clustering algorithm.
|
TypeInformation[] |
getInputTypeRestriction()
Get the input type restriction used for negotiating the data query.
|
protected Logging |
getLogger()
Get the (STATIC) logger for this class.
|
private void |
initializeRadii(DBIDs ids,
KNNQuery<O,D> knnq,
DistanceQuery<O,D> distFunc,
WritableDoubleDataStore radii)
This method prepares a container for the radii of the objects and
initializes radii according to the equation:
initialRadii of a certain object = (absoluteMinDist of all objects) *
(avgDist of the object) / (minAvgDist of all objects)
|
OutlierResult |
run(Database database,
Relation<O> relation)
Performs the Generalized DWOF_SCORE algorithm on the given database by
calling all the other methods in the proper order.
|
private int |
updateSizes(DBIDs ids,
WritableDataStore<ModifiableDBIDs> labels,
WritableIntegerDataStore newSizes)
This method updates each object's cluster size after the clustering step.
|
getDistanceFunction
makeParameterDistanceFunction, run
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
run
private static final Logging LOG
protected int k
DWOF.Parameterizer.K_ID
i.e. Number of neighbors to
consider during the calculation of DWOF scores.private double delta
public DWOF(DistanceFunction<? super O,D> distanceFunction, int k, double delta)
distanceFunction
- Distance function to use in queriesk
- the value of kdelta
- Radius increase factorpublic OutlierResult run(Database database, Relation<O> relation)
database
- Database to queryrelation
- Data to processprivate void initializeRadii(DBIDs ids, KNNQuery<O,D> knnq, DistanceQuery<O,D> distFunc, WritableDoubleDataStore radii)
ids
- Database IDs to processdistFunc
- Distance functionknnq
- kNN search functionradii
- WritableDoubleDataStore to store radiiprivate void clusterData(DBIDs ids, RangeQuery<O,D> rnnQuery, WritableDoubleDataStore radii, WritableDataStore<ModifiableDBIDs> labels)
ids
- Database IDs to processrnnQuery
- Data to processradii
- Radii to cluster accordinglylabels
- Label storage.private int updateSizes(DBIDs ids, WritableDataStore<ModifiableDBIDs> labels, WritableIntegerDataStore newSizes)
ids
- Object IDs to processlabels
- references for each object's clusternewSizes
- the sizes container to be updatedpublic TypeInformation[] getInputTypeRestriction()
AbstractAlgorithm
getInputTypeRestriction
in interface Algorithm
getInputTypeRestriction
in class AbstractAlgorithm<OutlierResult>
protected Logging getLogger()
AbstractAlgorithm
getLogger
in class AbstractAlgorithm<OutlierResult>