Skip to main content

LocalOutlierFactor

A density-based anomaly score: each point is compared to the local density of its neighbours, flagging those in relatively sparse regions as outliers.

The examples/neighbors/local_outlier_factor.cpp program renders a dense inlier cluster with detected outliers highlighted:

Local Outlier Factor highlights sparse outliers around a dense inlier clusterLocal Outlier Factor highlights sparse outliers around a dense inlier cluster

Algorithm

Computes the local reachability density of each point and the ratio to its neighbours' densities (the local outlier factor). Scores far below 1 indicate inliers; large scores indicate outliers. Exposed as the negated factor to match scikit-learn's convention.

Constructor

Skigen::LocalOutlierFactor<Scalar> model(int n_neighbors = 20, Scalar contamination = -1);

Parameters

ParameterDefaultDescription
n_neighbors20Neighbours used for the density estimate.
contamination-1Expected outlier fraction; -1 disables automatic thresholding.

Methods

MethodDescription
fit(X)Score every training point.
fit_predict_labels(X)Inlier/outlier labels.

Fitted Attributes

AccessorDescription
negative_outlier_factor()Negated LOF scores (lower = more anomalous).
n_neighbors_used()Effective neighbour count.

Example

Skigen::LocalOutlierFactor<double> lof(20);
lof.fit(X);
auto scores = lof.negative_outlier_factor();
Verified against scikit-learn

This estimator is checked by the parity suite. See the generator tests/parity/generate_neighbors_reference.py and the reference fixtures in tests/parity/data/local_outlier_factor/, exercised by tests/parity/parity_neighbors.cpp.

API Reference

For full signatures see the LocalOutlierFactor API Reference.