Welche Algorithmen oder Methoden können verwendet werden, um einen Ausreißer aus diesem Datensatz zu erkennen?

8

Angenommen, ich habe einen Datensatz : Amount of money (100, 50, 150, 200, 35, 60 ,50, 20, 500). Ich habe gegoogelt im Internet nach Techniken suchen, der verwendet werden kann , eine mögliche Ausreißer in diesem Datensatz zu finden , aber ich am Ende verwirrte.

Meine Frage ist : Welche Algorithmen, Techniken oder Methoden können verwendet werden, um mögliche Ausreißer in diesem Datensatz zu erkennen?

PS : Beachten Sie, dass die Daten keiner Normalverteilung folgen. Vielen Dank.

Nation Chirara
quelle
Woran erkennt man einen Ausreißer an diesem kleinen Set? Wie würden Sie "von Hand" mit etwas größeren Daten arbeiten?
Laurent Duval

Antworten:

5

Sie können BoxPlot für die Ausreißeranalyse verwenden. Ich würde Ihnen zeigen, wie das in Python geht:

Betrachten Sie Ihre Daten als Array:

a = [100, 50, 150, 200, 35, 60 ,50, 20, 500]

Verwenden Sie jetzt Seaborn, um das Boxplot zu zeichnen:

import seaborn as sn
sn.boxplot(a)

Sie würden also eine Handlung erhalten, die ungefähr so ​​aussieht:

Geben Sie hier die Bildbeschreibung ein

Scheint, als wäre 500 der einzige Ausreißer für mich. Es hängt jedoch alles von der Analyse und dem Toleranzniveau des Analytikers oder des Statistikers sowie von der Problemstellung ab.

Weitere Tests finden Sie in einer meiner Antworten auf der CrossValidated SE.

Und es gibt einige nette Fragen zu Ausreißern und den Algorithmen und Techniken, um sie zu erkennen.

Mein persönlicher Favorit ist die Mahalanobis-Distanztechnik .

Dawny33
quelle
Nun, danke, eine nette Erklärung. Kann ich in diesem Fall die Mahalanobis-Distanztechnik anwenden oder funktioniert sie für multivariate Daten?
Nation Chirara
Du kannst. Es ist jedoch für univariate Daten überqualifiziert. Nur eine Boxplot-Analyse mit einem festgelegten Schwellenwert sollte die Aufgabe für diese Daten erfüllen.
Dawny33
5

Eine Möglichkeit, Ausreißer zu erkennen, besteht darin, ein Vorhersagemodell zu erstellen und dann zu überprüfen, ob ein Punkt in den Bereich der Vorhersagen fällt. Aus informationstheoretischer Sicht können Sie sehen, um wie viel jede Beobachtung die Entropie Ihres Modells erhöht.

Wenn Sie diese Daten nur als Sammlung von Zahlen behandeln und kein Modell für ihre Generierung vorgeschlagen haben, können Sie sich auch den Durchschnitt ansehen. Wenn Sie sicher sind, dass die Zahlen nicht normal verteilt sind, können Sie keine Aussagen darüber machen, wie weit eine bestimmte Zahl vom Durchschnitt entfernt ist, aber Sie können sie nur in absoluten Zahlen betrachten.

Wenn Sie dies anwenden, können Sie den Durchschnitt aller Zahlen nehmen, dann jede Zahl ausschließen und den Durchschnitt der anderen nehmen. Welcher Durchschnitt sich am stärksten vom globalen Durchschnitt unterscheidet, ist der größte Ausreißer. Hier ist etwas Python:

def avg(a):
    return sum(a)/len(a)

l = [100, 50, 150, 200, 35, 60 ,50, 20, 500]
m = avg(l)
for idx in range(len(l)):
    print("outlier score of {0}: {1}".format(l[idx], abs(m - avg([elem for i, elem in enumerate(l) if i!=idx]))))
>>
outlier score of 100: 4
outlier score of 50: 10
outlier score of 150: 3
outlier score of 200: 9
outlier score of 35: 12
outlier score of 60: 9
outlier score of 50: 10
outlier score of 20: 14
outlier score of 500: 46 
Tristan Reid
quelle
Danke für die Antwort. Ich bin sicher, dass die Zahlen nicht normal verteilt sind. Gilt Ihre Methode in diesem Zusammenhang noch?
Nation Chirara
Ja, es gibt immer ein zugrunde liegendes Modell, das Vorhersagen über die Daten impliziert. Wenn wir einen neuen Datenpunkt erhalten, können wir erraten, was dieser Wert ist. Wenn wir keine weiteren Informationen über das Modell haben (es ist nur eine Sammlung von Zahlen), ist die beste Vermutung, dass es den bereits vorhandenen Zahlen ähnlich sieht. Wenn Sie am Ende ein bestimmtes Modell für die Daten haben, ist es wichtig, dieses in Ihre Vorhersage einzubeziehen. Die Verwendung des Mittelwerts bedeutet nicht, dass wir von einer Normalverteilung ausgehen, aber andere Modelle könnten etwas anderes als den Mittelwert verwenden.
Tristan Reid
Hallo. Ich finde es normalerweise nicht gut, den Durchschnitt für nicht normal verteilte Daten zu verwenden. Tatsächlich verwenden beispielsweise viele nicht parametrische statistische Tests den Median anstelle des Mittelwerts. Aber das ist nur eine Meinung ...
Michael Hooreman
Fair genug, aber ich denke, es ist sicher zu sagen, wenn Sie glauben, dass Ihre Daten symmetrisch verteilt sind, ist der Mittelwert eine ziemlich gute Idee, andernfalls ist der Median ein besseres Maß für einen „typischen“ Wert.
Tristan Reid
3

Ein einfacher Ansatz wäre, dasselbe zu verwenden wie Box-Plots: weg als 1,5 (Median-q1) oder 1,5 (q3-Median) = Ausreißer.

Ich finde es in vielen Fällen nützlich, auch wenn es nicht perfekt und vielleicht zu einfach ist.

Es hat den Vorteil, keine Normalität anzunehmen.

Michael Hooreman
quelle