J'essaie de détecter les valeurs aberrantes de mon jeu de données et je trouve le sklearn Isolation Forest . Je ne comprends pas comment travailler avec. J'y ajuste mes données d'entraînement et cela me donne un vecteur avec des valeurs -1 et 1.
Quelqu'un peut-il m'expliquer comment cela fonctionne et fournir un exemple?
Comment puis-je savoir que les valeurs aberrantes sont de "vraies" valeurs aberrantes?
Paramètres de réglage?
Voici mon code:
clf = IsolationForest(max_samples=10000, random_state=10)
clf.fit(x_train)
y_pred_train = clf.predict(x_train)
y_pred_test = clf.predict(x_test)
[1 1 1 ..., -1 1 1]
Semble que vous avez beaucoup de questions, permettez-moi d'essayer de répondre un par un au mieux de mes connaissances. - Comment ça marche? -> Cela fonctionne sur le fait que la nature des valeurs aberrantes dans n'importe quel ensemble de données, qui sont des valeurs aberrantes, est "peu nombreuses et différentes", ce qui est assez différent de l'algorithme basé sur le clustering ou la distance. Au niveau supérieur, il fonctionne sur la logique selon laquelle les valeurs aberrantes prennent moins de mesures pour "isoler" le point "normal" dans n'importe quel ensemble de données. Pour ce faire, voici ce que fait IF, supposons que vous ayez un ensemble de données d'entraînement X avec n points de données ayant chacun m fonctionnalités. Lors de la formation, IF crée des arbres d'isolement (arbres de recherche binaires) pour différentes fonctionnalités. Pour la formation, vous avez 3 paramètres pour le réglage, l'un est le nombre d'arbres d'isolement ('n_estimators' dans sklearn_IsolationForest), le deuxième est le nombre d'échantillons ('max_samples' dans sklearn_IsolationForest) et le troisième est le nombre de fonctionnalités à tirer de X pour former chacun estimateur de base ('max_features' dans sklearn_IF). 'max_sample' est le nombre d'échantillons aléatoires qu'il prendra dans l'ensemble de données d'origine pour créer des arbres d'isolement.
Pendant la phase de test, il trouve la longueur de chemin du point de données sous test à partir de tous les arbres d'isolement formés et trouve la longueur de chemin moyenne. Plus la longueur du trajet est élevée, plus le point est normal et vice-versa. Basé sur la longueur moyenne du trajet. il calcule le score d'anomalie, decision_function de sklearn_IF peut être utilisé pour l'obtenir. Pour sklearn_IF, abaissez le score, plus l'anomalie de l'échantillon. Sur la base du score d'anomalie, vous pouvez décider si l'échantillon donné est anormal ou non en définissant la valeur appropriée de contamination dans l'objet sklearn_IF. la valeur par défaut de contamination est 0,1 que vous pouvez régler pour décider du seuil. Le degré de contamination de l'ensemble de données, c'est-à-dire la proportion de valeurs aberrantes dans l'ensemble de données.
Paramètres de réglage Entraînement -> 1. n_estimateurs, 2. max_samples, 3.max_features. Test -> 1. contamination
-1 représente les valeurs aberrantes (selon le modèle ajusté). Voir exemple IsolationForest pour une belle représentation du processus. Si vous avez des connaissances antérieures, vous pouvez fournir plus de paramètres pour obtenir un ajustement plus précis. Par exemple, si vous connaissez la contamination (proportion de valeurs aberrantes dans l'ensemble de données), vous pouvez la fournir comme entrée. Par défaut, il est supposé être 0,1. Voir la description des paramètres ici .