Kontext: Ich entwickle ein System, das klinische Daten analysiert, um unplausible Daten herauszufiltern, bei denen es sich möglicherweise um Tippfehler handelt.
Was ich bisher gemacht habe:
Um die Plausibilität zu quantifizieren, habe ich bisher versucht, die Daten zu normalisieren und dann einen Plausibilitätswert für Punkt p basierend auf seiner Entfernung zu bekannten Datenpunkten in Satz D (= dem Trainingssatz) zu berechnen:
Mit dieser Quantifizierung kann ich dann einen Schwellenwert auswählen, der die plausiblen Daten von den unplausiblen Daten trennt. Ich benutze Python / Numpy.
Meine Probleme:
- Dieser Algorithmus kann keine unabhängigen Dimensionen erkennen. Im Idealfall könnte ich alles, was ich über den Datensatz weiß, in den Algorithmus einfügen und ihn selbst herausfinden lassen, dass die Dimension X die Plausibilität des Datensatzes nicht beeinflusst.
- Der Algorithmus funktioniert nicht wirklich für diskrete Werte wie Boolesche Werte oder ausgewählte Eingaben. Sie könnten auf kontinuierliche Werte abgebildet werden, aber es ist nicht intuitiv, dass Auswahl 1 näher an Auswahl 2 liegt als an Auswahl 3.
Frage:
Welche Art von Algorithmen sollte ich für diese Aufgabe untersuchen? Es scheint eine Menge Optionen zu geben, einschließlich auf dem nächsten Nachbarn basierender, auf Clustern basierender und statistischer Ansätze. Außerdem habe ich Probleme, Artikel zu finden, die sich mit der Erkennung von Anomalien dieser Komplexität befassen.
Jeder Rat wird sehr geschätzt.
[Bearbeiten] Beispiel:
Angenommen, die Daten bestehen aus der Größe einer Person, dem Gewicht einer Person und dem Zeitstempel - es handelt sich also um 3D-Daten. Gewicht und Größe sind korreliert, aber der Zeitstempel ist völlig unabhängig. Wenn ich nur die euklidischen Abstände betrachte, müsste ich einen kleinen Schwellenwert wählen, der zu den meisten meiner Kreuzvalidierungsdaten passt. Im Idealfall würde der Algorithmus die Zeitstempeldimension einfach ignorieren, da es irrelevant ist, zu bestimmen, ob ein Datensatz plausibel ist, da der Zeitstempel in keiner Weise mit den anderen Dimensionen korreliert. Jeder Zeitstempel ist plausibel.
Andererseits könnte man Beispiele finden, bei denen der Zeitstempel eine Rolle spielt. Zum Beispiel könnte es sein, dass der Wert Y für Merkmal X plausibel ist, wenn er vor einem bestimmten Datum gemessen wird, jedoch nicht nach einem bestimmten Datum.
Antworten:
Eine typische Formulierung der Anomalieerkennung besteht darin, den Mittelwert und die Varianz für jedes der Merkmale nicht anomaler Daten zu ermitteln. Wenn ein Vektor dieser Merkmale mit den Komponenten ist, definieren Sie die Wahrscheinlichkeit einer Kombination von Merkmalen alsm x xi p(x)
wobei jedes gaußverteilt ist:xi xi∼N(μi,σ2i)
Eine Anomalie tritt immer dann auf, wennp(x)<ϵ
Die Verteilung jedes muss nicht normal sein, aber es ist besser, wenn es zumindest normal ist. Die von Ihnen verwendeten Funktionen sind jedoch beliebig. Sie können direkt aus den Rohdaten entnommen oder berechnet werden. Wenn Sie beispielsweise der Meinung sind, dass ein Feature besser mit modelliert wird, setzen Sie das Feature auf anstatt auf .xi xi log log(xi) xi
Dies scheint sehr ähnlich zu sein, was Sie bereits tun, wenn Sie .q=μ
Bestimmen vonϵ
Der Algorithmus ist an negative Beispiele (Nichtanomalien) angepasst. Aber aus der Kreuzvalidierung Satz bestimmt und wird typischerweise als Wert ausgewählt, der die beste liefert PunktzahlF 1ϵ F1
Aber um F1 zu berechnen, müssen Sie wissen, was anomal ist und was nicht; Das ist wahr, positiv ist, wenn das System eine Anomalie vorhersagt und es tatsächlich eine Anomalie ist. Falsch positive sind vorhergesagte Anomalien, die es tatsächlich nicht sind und so weiter. Wenn Sie das nicht haben, müssen Sie möglicherweise auf Vermutungen zurückgreifen.
Das Problem der korrelierten Merkmale
Das Obige hat jedoch einen Nachteil, wenn die Merkmale korreliert sind. Wenn dies der Fall ist, kann die obige Berechnung möglicherweise nicht darauf hinweisen, dass etwas tatsächlich anomal ist. Eine Lösung hierfür ist die Verwendung des multivariaten Gaußschen für Merkmale, wobei die Kovarianzmatrix ist.Σm Σ
Das Gleiche gilt für das Finden von und dieser Ansatz hat auch den Nachteil, dass Sie die Umkehrung von berechnen müssen . Es müssen also mindestens so viele Stichproben wie Features vorhanden sein. Wenn die Anzahl der Features groß ist, ist der Prozess rechenintensiv, und Sie müssen sich vor linear abhängigen Features schützen. Beachten Sie diese Vorbehalte, aber es scheint für Sie kein Problem zu sein.ϵ Σ
quelle
Ich habe das Projekt fast abgeschlossen, in dem ich diese Probleme lösen musste, und ich möchte meine Lösung mitteilen, falls jemand die gleichen Probleme hat.
Erstens ist der von mir beschriebene Ansatz einer Kernel-Dichteschätzung sehr ähnlich . Das war also gut zu wissen für die Forschung ...
Unabhängige Funktionen
Unabhängige Merkmale können durch Messen des Korrelationskoeffizienten herausgefiltert werden . Ich habe alle Merkmale paarweise verglichen und die Korrelation gemessen. Dann nahm ich den maximalen absoluten Korrelationskoeffizienten jedes Merkmals als Skalierungsfaktor. Auf diese Weise werden Merkmale, die mit keinem anderen korrelieren, mit einem Wert nahe 0 multipliziert und damit ihre Auswirkung auf den euklidischen Abstand(auch bekannt als ) ist vernachlässigbar.||x1−x2|| distance(x1,x2)
Seien Sie gewarnt: Der Korrelationskoeffizient kann nur lineare Korrelationen messen. Weitere Informationen finden Sie auf der verlinkten Wiki-Seite. Wenn die Korrelation in den Daten linear angenähert werden kann, funktioniert dies einwandfrei. Wenn nicht, sollten Sie einen Blick auf die letzte Seite dieses Dokuments werfen und prüfen, ob Sie anhand der Korrelationsmessung einen Skalierungsfaktor ermitteln können.
Diskrete Werte
Ich habe den beschriebenen Algorithmus nur für Continuos-Werte verwendet. Diskrete Werte wurden verwendet, um den Trainingssatz zu filtern. Wenn ich also die Größe und das Gewicht einer Person habe und weiß, dass sie weiblich ist, werde ich nur Proben von anderen Frauen untersuchen, um nach einer Anomalie zu suchen.
quelle