Quels algorithmes ou méthodes peuvent être utilisés pour détecter une valeur aberrante dans cet ensemble de données?


8

Supposons que j'ai un ensemble de données: Amount of money (100, 50, 150, 200, 35, 60 ,50, 20, 500). J'ai parcouru le Web à la recherche de techniques qui peuvent être utilisées pour trouver une valeur aberrante possible dans cet ensemble de données, mais je me suis retrouvé confus.

Ma question est la suivante : quels algorithmes, techniques ou méthodes peuvent être utilisés pour détecter d'éventuelles valeurs aberrantes dans cet ensemble de données?

PS : Considérez que les données ne suivent pas une distribution normale. Merci.


Comment reconnaissez-vous une valeur aberrante sur ce petit ensemble? Comment feriez-vous "à la main" sur des données légèrement plus importantes?
Laurent Duval

Réponses:


5

Vous pouvez utiliser BoxPlot pour l'analyse des valeurs aberrantes. Je voudrais vous montrer comment faire cela en Python:

Considérez vos données comme un tableau:

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

Maintenant, utilisez seaborn pour tracer le boxplot:

import seaborn as sn
sn.boxplot(a)

Ainsi, vous obtiendrez une intrigue qui ressemble un peu à ceci:

entrez la description de l'image ici

On dirait que 500 est la seule valeur aberrante pour moi. Mais tout dépend de l'analyse et du niveau de tolérance de l'analyste ou du statisticien et aussi de l'énoncé du problème.

Vous pouvez jeter un œil à l' une de mes réponses sur le CrossValidated SE pour plus de tests.

Et il y a plusieurs belles questions sur les valeurs aberrantes et les algorithmes et techniques pour les détecter.

Mon préféré est la technique de distance Mahalanobis .


Eh bien, merci, une belle explication en effet. Puis-je appliquer la technique de distance de Mahalanobis dans ce cas ou cela fonctionne pour les données multivariées?
Nation Chirara

Vous pouvez. Mais, il est surqualifié pour les données univariées. Seule une analyse Boxplot avec une valeur de seuil définie devrait faire le travail pour ces données.
Dawny33

5

Une façon de penser la détection des valeurs aberrantes consiste à créer un modèle prédictif, puis à vérifier si un point se situe dans la plage des prévisions. D'un point de vue théorique de l'information, vous pouvez voir à quel point chaque observation augmente l'entropie de votre modèle.

Si vous traitez ces données comme une simple collection de chiffres et que vous n'avez pas de modèle proposé pour la façon dont elles sont générées, vous pourriez tout aussi bien regarder la moyenne. Si vous êtes certain que les nombres ne sont pas normalement distribués, vous ne pouvez pas dire à quel point un nombre donné est éloigné de la moyenne, mais vous pouvez simplement le regarder en termes absolus.

En appliquant cela, vous pouvez prendre la moyenne de tous les nombres, puis exclure chaque nombre et prendre la moyenne des autres. La moyenne la plus différente de la moyenne mondiale est la plus grande valeur aberrante. Voici du 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 

Eh bien, merci pour la réponse. Je suis certain que les chiffres ne sont pas normalement distribués, votre méthode s'applique-t-elle toujours dans ce contexte?
Nation Chirara

Oui, il existe toujours un modèle sous-jacent qui implique des prédictions sur les données. Si nous obtenons un nouveau point de données, nous pouvons deviner quelle est cette valeur. Si nous n'avons pas d'autres informations sur le modèle (c'est juste une collection de chiffres), alors la meilleure supposition est qu'il ressemblera aux chiffres que nous avons déjà. Si vous vous retrouvez avec un modèle spécifique pour les données, il est important de l'intégrer dans votre prédiction. L'utilisation de la moyenne ne signifie pas que nous supposons une distribution normale, mais d'autres modèles pourraient utiliser autre chose que la moyenne.
Tristan Reid

Bonjour. Je ne trouve généralement pas que c'est une bonne idée d'utiliser la moyenne pour les données distribuées non normales. En fait, par exemple, de nombreux tests statistiques non paramétriques utilisent la médiane au lieu de la moyenne. Mais ce n'est qu'une opinion ...
Michael Hooreman

Assez juste, mais je pense qu'il est prudent de dire que si vous pensez que vos données sont distribuées symétriquement, la moyenne est une assez bonne idée, sinon la médiane est une meilleure mesure d'une valeur `` typique ''.
Tristan Reid

3

Une approche simple consisterait à utiliser la même chose que les boîtes à moustaches: à l'écart de 1,5 (médiane-q1) ou 1,5 (q3-médiane) = valeur aberrante.

Je le trouve utile dans de nombreux cas, même pas parfait et peut-être trop simple.

Il a l'avantage de ne pas supposer la normalité.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.