# Local Outlier Factor

Der Local Outlier Factor (LOF, etwa „Lokaler Ausreißerfaktor“) ist ein Algorithmus zur Erkennung von dichtebasierten Ausreißern, der von Markus M. Breunig, Hans-Peter Kriegel, Raymond T. Ng und Jörg Sander im Jahr 2000 vorgeschlagen wurde. Die Kernidee von LOF besteht darin, die Dichte eines Punktes mit den Dichten seiner Nachbarn zu vergleichen. Ein Punkt, der „dichter“ ist als seine Nachbarn, befindet sich in einem Cluster. Ein Punkt mit einer deutlich geringeren Dichte als seine Nachbarn ist hingegen ein Ausreißer.
LOF hat viele Konzepte gemeinsam mit den Clusteranalyse-Algorithmen DBSCAN und OPTICS.

## Grundprinzip

LOF definiert die „lokale Umgebung“ eines Punktes über seine $k$ nächsten Nachbarn. Der Abstand zu diesen wird verwendet, um eine lokale Dichte zu schätzen. In einem zweiten Schritt wird der Quotient aus den lokalen Dichten seiner Nachbarn und der lokalen Dichte des Punktes selbst gebildet. Dieser Wert bewegt sich nahe an $1{,}0$ wenn ein Punkt in einem Bereich gleichmäßiger Dichte ist. Für Objekte, die aber abgeschieden von einer solchen Fläche sind, wird der Wert deutlich größer und kennzeichnet so Ausreißer.

## Formal

Die ${\text{k-Distanz}}(A)$ ist die Distanz des Objektes $A$ zu seinem k-nächsten Nachbarn. Diese Menge kann gegebenenfalls mehr als k Objekte enthalten, wenn es mehrere Objekte mit dem gleichen Abstand gibt. Wir bezeichnen diese „k-Nachbarschaft“ hier mit $N_{k}(A)$.
Basierend auf dieser Distanz wird die „Erreichbarkeitsdistanz“ definiert:
    ${\text{Erreichbarkeitsdistanz}}_{k}(A,B)=\max\{{\text{k-Distanz}}(B),d(A,B)\}$
Die Erreichbarkeitsdistanz eines Objektes $A$ von $B$ ist also entweder der wahre Abstand, jedoch mindestens die ${\text{k-Distanz}}$ von $B$. Objekte die zu den k-nächsten Nachbarn von $B$ gehören werden also als gleich weit entfernt betrachtet. Die Motivation für diese Distanzdefinition ist es, stabilere Ergebnisse zu bekommen. (Es handelt sich hierbei aber nicht mehr um eine Distanzfunktion im mathematischen Sinne, da sie nicht symmetrisch ist.)
Die lokale Erreichbarkeitsdichte („local reachability density“, „lrd“) eines Objektes $A$ wird definiert als
    $\operatorname {lrd} _{k}(A):=1/\left({\frac {\sum _{B\in N_{k}(A)}{\text{Erreichbarkeits-Distanz}}_{k}(A,B)}{|N_{k}(A)|}}\right)$
Diese Dichte ist also der Kehrwert der durchschnittlichen Erreichbarkeitsdistanz des Objektes $A$ von seinen Nachbarn, nicht andersherum die durchschnittliche Erreichbarkeitsdistanz der Nachbarn von $A$, was definitionsgemäß ${\text{k-Distanz}}(A)$ wäre. Bei $k+1$ Duplikaten in einem Datensatz wird die Erreichbarkeitsdichte dieser Objekte unendlich.
Die lokale Erreichbarkeitsdichte wird jetzt mit denen der Nachbarn verglichen:
    ${\text{LOF}}_{k}(A):={\frac {\sum _{B\in N_{k}(A)}{\frac {\operatorname {lrd} (B)}{\operatorname {lrd} (A)}}}{|N_{k}(A)|}}={\frac {\sum _{B\in N_{k}(A)}\operatorname {lrd} (B)}{|N_{k}(A)|}}/\operatorname {lrd} (A)$
Der „Local Outlier Factor“ (LOF) ist also die „Durchschnittliche Erreichbarkeitsdichte der Nachbarn“ dividiert durch die Erreichbarkeitsdichte des Objektes selbst. Ein Wert von etwa $1$ bedeutet, dass das Objekt eine mit seinen Nachbarn vergleichbare Dichte hat (also kein Ausreißer ist). Ein Wert kleiner als $1$ bedeutet sogar eine dichtere Region (was ein sogenannter „Inlier“ wäre), während signifikant höhere Werte als $1$ einen Ausreißer kennzeichnen.

## Vorteile

Im Gegensatz zu vielen globalen Verfahren zur Ausreißererkennung kann LOF mit Bereichen unterschiedlicher Dichte in demselben Datensatz umgehen. Punkte mit einer „mittleren“ Dichte in einer Umgebung mit „hoher“ werden von LOF als Ausreißer klassifiziert, während ein Punkt mit „mittlerer“ Dichte in einer „dünnen“ Umgebung explizit nicht als solcher erkannt wird.
Während die geometrische Intuition von LOF nur in niedrigdimensionalen Vektorräumen Sinn ergibt, kann das Verfahren auf beliebigen Daten angewendet werden, auf denen eine „Unähnlichkeit“ definiert werden kann. Es muss sich dabei nicht um eine Distanzfunktion im strengeren mathematischen Sinne handeln, die Dreiecksungleichung wird beispielsweise nicht benötigt. Der Algorithmus wurde erfolgreich auf verschiedensten Datensätzen eingesetzt, beispielsweise zum Erkennen von Angriffen in Computernetzwerken, wo er bessere Erkennungsraten lieferte als die Vergleichsverfahren.

## Nachteile

Ein wichtiger Nachteil von LOF ist, dass die Ergebniswerte schwer zu interpretieren sind. Werte um $1$ und weniger sind sicher keine Ausreißer, aber es gibt keine klare Regel, ab welchem Wert ein Punkt ein signifikanter Ausreißer ist. In einem sehr gleichmäßigen Datensatz sind Werte von $1.1$ auffällig, in einem Datensatz mit starken Dichteschwankungen kann ein Wert wie $2$ noch ein ganz normaler Datenpunkt sein. Im schlimmsten Falle treten solche Unterschiede sogar in unterschiedlichen Teilen desselben Datensatzes auf.

## Erweiterungen

* Feature Bagging for Outlier Detection wendet LOF in mehreren Projektionen an und kombiniert die Ergebnisse, um in hochdimensionalen Daten bessere Ergebnisse zu erhalten.
* Local Outlier Probability (LoOP) ist eine von LOF abgeleitete Methode, die die Dichte statistisch schätzt, um weniger abhängig vom genauen Wert von k zu werden. Zusätzlich wird das Ergebnis statistisch in den Wertebereich $[0,1]$ normalisiert, um besser interpretierbare Werte zu liefern.
* Interpreting and Unifying Outlier Scores stellt eine Normalisierung für LOF und andere Verfahren vor, die die Scores statistisch in das Intervall $[0,1]$ normalisiert um die Benutzerfreundlichkeit des Ergebnisses zu verbessern.

## Verfügbarkeit

Eine Referenzimplementierung ist im Software-Paket ELKI verfügbar, inklusive Implementierungen von Vergleichsverfahren.