Contexte: Je développe un système qui analyse les données cliniques pour filtrer les données invraisemblables qui pourraient être des fautes de frappe.
Ce que j'ai fait jusqu'à présent:
Pour quantifier la plausibilité, ma tentative jusqu'à présent était de normaliser les données, puis de calculer une valeur de plausibilité pour le point p en fonction de sa distance aux points de données connus dans l'ensemble D (= l'ensemble d'apprentissage):
Avec cette quantification, je peux ensuite sélectionner un seuil qui sépare les données plausibles des données invraisemblables. J'utilise python / numpy.
Mes problèmes:
- Cet algorithme ne peut pas détecter les dimensions indépendantes. Idéalement, je pourrais mettre tout ce que je sais de l'enregistrement dans l'algorithme et le laisser découvrir par lui-même que la dimension X n'influence pas la plausibilité de l'enregistrement.
- L'algorithme ne fonctionne pas vraiment pour les valeurs discrètes comme les booléens ou les entrées de sélection. Ils peuvent être mappés sur des valeurs continues, mais il est contre-intuitif que Select 1 soit plus proche de Select 2 que de Select 3.
Question:
Quel type d'algorithmes dois-je étudier pour cette tâche? Il semble y avoir une tonne d'options, y compris les approches basées sur le voisin le plus proche, les clusters et les statistiques. De plus, j'ai du mal à trouver des articles traitant de la détection des anomalies de cette complexité.
Tout conseil est fortement apprécié.
[Modifier] Exemple:
Supposons que les données se composent de la taille d'une personne, du poids d'une personne et de l'horodatage - il s'agit donc de données 3D. Le poids et la taille sont corrélés, mais l'horodatage est complètement indépendant. Si je considère uniquement les distances euclidiennes, je devrais choisir un petit seuil pour s'adapter à la plupart de mes données de validation croisée. Idéalement, l'algorithme ignorerait simplement la dimension d'horodatage, car il n'est pas pertinent de déterminer si un enregistrement est plausible, car l'horodatage n'est en aucun cas en corrélation avec les autres dimensions. Tout horodatage est plausible.
D'un autre côté, on pourrait inventer des exemples où l'horodatage est important. Par exemple, il se peut que la valeur Y pour la caractéristique X soit plausible lorsqu'elle est mesurée avant une certaine date, mais pas après une certaine date.
Réponses:
Une formulation typique de la détection des anomalies consiste à trouver la moyenne et la variance pour chacune des caractéristiques des données non anormales et si est un vecteur de ces caractéristiques ayant les composantes puis définir la probabilité d'une combinaison de caractéristiques commex x i p ( x )m x xi p(x)
où chaque est distribué gaussien:x i ∼ N ( μ i , σ 2 i )xi xi∼N(μi,σ2i)
une anomalie se produit chaque fois quep(x)<ϵ
La distribution de chaque n'a pas besoin d'être réellement normale, mais il vaut mieux qu'elle soit au moins normale. Mais les fonctionnalités que vous utilisez sont arbitraires; ils peuvent être pris directement à partir des données brutes ou calculés. Par exemple, si vous pensez qu'une fonction est mieux modélisée à l'aide de définissez la fonction sur plutôt que .xi xi log log(xi) xi
Cela semble être très similaire à ce que vous faites déjà si vous prenez .q=μ
Déterminerϵ
L'algorithme est adapté à des exemples négatifs (non-anomalies). Mais est déterminé à partir de l'ensemble de validation croisée et est généralement sélectionné comme la valeur qui fournit le meilleur scoreϵ F1
Mais pour calculer la F1, vous devez savoir ce qui est anormal et ce qui ne l'est pas; c'est-à-dire que les vrais positifs sont lorsque le système prédit une anomalie et qu'il s'agit en fait d'une anomalie, les faux positifs sont des anomalies prédites qui ne le sont pas et ainsi de suite. Donc, à moins que vous n'ayez cela, vous devrez peut-être retomber dans les conjectures.
Le problème des fonctionnalités corrélées
Ce qui précède présente cependant un inconvénient si les caractéristiques sont corrélées. S'ils le sont, le calcul ci-dessus peut ne pas signaler quelque chose d'anormal. Un correctif est d'utiliser la gaussienne multivariée pour entités où est la matrice de covariance.m Σ
La même chose vaut pour trouver et cette approche a aussi un inconvénient qui est que vous devez calculer l'inverse de . Il doit donc y avoir au moins autant d'échantillons que de fonctionnalités et si le nombre de fonctionnalités est important, le processus sera gourmand en calculs, et vous devez vous prémunir contre les fonctionnalités linéairement dépendantes. Gardez ces mises en garde à l'esprit, mais il semble que ce ne soit pas un problème.ϵ Σ
la source
J'ai presque terminé le projet où j'avais besoin de résoudre ces problèmes et je voudrais partager ma solution, au cas où quelqu'un aurait les mêmes problèmes.
Tout d'abord, l'approche que j'ai décrite est très similaire à une estimation de densité de noyau . Donc, c'était bon à savoir pour la recherche ...
Caractéristiques indépendantes
Les entités indépendantes peuvent être filtrées en mesurant son coefficient de corrélation . J'ai comparé toutes les fonctionnalités par paire et mesuré la corrélation. Ensuite, j'ai pris le coefficient de corrélation absolu maximum de chaque entité comme facteur d'échelle. De cette façon, les entités qui ne sont pas en corrélation avec une autre sont multipliées par une valeur proche de 0 et donc leur effet sur la distance euclidienne(aka ) est négligeable.||x1−x2|| distance(x1,x2)
Attention: le coefficient de corrélation ne peut mesurer que des corrélations linéaires. Voir la page wiki liée pour plus de détails. Si la corrélation dans les données peut être approchée linéairement, cela fonctionne bien. Sinon, vous devriez jeter un œil à la dernière page de cet article et voir si vous pouvez utiliser leur mesure de corrélation pour trouver un facteur d'échelle.
Valeurs discrètes
J'ai utilisé l'algorithme décrit uniquement pour les valeurs de continuos. Des valeurs discrètes ont été utilisées pour filtrer l'ensemble d'apprentissage. Donc, si j'ai la taille et le poids d'une personne et que je sais qu'elle est une femme, je ne regarderai que des échantillons d'autres femmes pour vérifier s'il y a une anomalie.
la source