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