Maison >développement back-end >tutoriel php >PHP et Machine Learning : Comment effectuer la détection des anomalies et la gestion des valeurs aberrantes

PHP et Machine Learning : Comment effectuer la détection des anomalies et la gestion des valeurs aberrantes

王林
王林original
2023-07-31 16:09:101098parcourir

PHP et apprentissage automatique : Comment effectuer la détection des anomalies et le traitement des valeurs aberrantes

Présentation :
Dans le traitement réel des données, des valeurs aberrantes sont souvent rencontrées dans l'ensemble de données. Des valeurs aberrantes peuvent survenir pour diverses raisons, notamment une erreur de mesure, des événements imprévisibles ou des problèmes liés à la source de données. Ces valeurs aberrantes peuvent avoir un impact négatif sur des tâches telles que l'analyse des données, la formation de modèles et la prédiction. Dans cet article, nous présenterons comment utiliser PHP et les techniques d'apprentissage automatique pour la détection des anomalies et la gestion des valeurs aberrantes.

  1. Méthodes de détection des anomalies :
    Pour détecter les valeurs aberrantes, nous pouvons utiliser divers algorithmes d'apprentissage automatique. Voici deux méthodes de détection d'anomalies couramment utilisées :

1.1 Méthode Z-Score :
La méthode Z-Score est une méthode de détection d'anomalies basée sur des statistiques, qui détermine en calculant la valeur d'écart de chaque point de données par rapport à la valeur moyenne du ensemble de données Est-ce une valeur aberrante. Les étapes spécifiques sont les suivantes :

  1. Calculez la moyenne et l'écart type de l'ensemble de données.
  2. Pour chaque point de données, calculez son écart par rapport à la moyenne : écart = (données - moyenne) / std.
  3. Pour un seuil donné, généralement 3, marquez les points de données avec des valeurs d'écart supérieures au seuil comme valeurs aberrantes.

L'exemple de code est le suivant :

function zscore($data, $threshold){
    $mean = array_sum($data) / count($data);
    $std = sqrt(array_sum(array_map(function($x) use ($mean) { return pow($x - $mean, 2); }, $data)) / count($data));
    $result = [];
    foreach ($data as $value) {
        $deviation = ($value - $mean) / $std;
        if (abs($deviation) > $threshold) {
            $result[] = $value;
        }
    }
    return $result;
}

$data = [1, 2, 3, 4, 5, 100];
$threshold = 3;
$result = zscore($data, $threshold);

echo "异常值检测结果:" . implode(", ", $result);

1.2 Forêt d'isolement :
Isolation Forest est une méthode de détection d'anomalies basée sur des arbres définis, qui détermine l'anomalie des points de données en construisant un arbre binaire divisé de manière aléatoire. Les étapes spécifiques sont les suivantes :

  1. Sélectionnez aléatoirement une caractéristique et sélectionnez un point de division aléatoire entre les valeurs minimales et maximales de la caractéristique.
  2. Sélectionnez au hasard une entité de division et un point de division, et divisez les points de données en deux sous-ensembles, en itérant jusqu'à ce que chaque sous-ensemble ne contienne qu'un seul point de données ou que la profondeur maximale de l'arborescence soit atteinte.
  3. Calculez le degré d'anomalie du point de données en fonction de la longueur de son chemin dans l'arborescence. Plus la longueur du chemin est courte, plus il est anormal.

L'exemple de code est le suivant :

require_once('anomaly_detection.php');

$data = [1, 2, 3, 4, 5, 100];
$contamination = 0.1;
$forest = new IsolationForest($contamination);
$forest->fit($data);
$result = $forest->predict($data);

echo "异常值检测结果:" . implode(", ", $result);
  1. Méthode de traitement des valeurs aberrantes :
    Lorsqu'une valeur aberrante est détectée, nous devons la traiter. Voici deux méthodes de traitement des valeurs aberrantes couramment utilisées :

2.1 Supprimer les valeurs aberrantes :
Une méthode de traitement simple consiste à supprimer directement les valeurs aberrantes. Nous pouvons supprimer les points de données qui dépassent le seuil de l'ensemble de données en fonction des résultats de la détection des anomalies.

L'exemple de code est le suivant :

function removeOutliers($data, $threshold){
    $result = [];
    foreach ($data as $value) {
        if (abs($value) <= $threshold) {
            $result[] = $value;
        }
    }
    return $result;
}

$data = [1, 2, 3, 4, 5, 100];
$threshold = 3;
$result = removeOutliers($data, $threshold);

echo "异常值处理结果:" . implode(", ", $result);

2.2 Remplacer les valeurs aberrantes :
Une autre approche consiste à remplacer les valeurs aberrantes par des valeurs raisonnables telles que la moyenne ou la médiane. De cette manière, les caractéristiques globales de distribution de l’ensemble de données peuvent être préservées.

L'exemple de code est le suivant :

function replaceOutliers($data, $threshold, $replacement){
    $result = [];
    foreach ($data as $value) {
        if (abs($value) > $threshold) {
            $result[] = $replacement;
        } else {
            $result[] = $value;
        }
    }
    return $result;
}

$data = [1, 2, 3, 4, 5, 100];
$threshold = 3;
$replacement = 0;
$result = replaceOutliers($data, $threshold, $replacement);

echo "异常值处理结果:" . implode(", ", $result);

Conclusion :
Dans cet article, nous avons présenté des méthodes de détection des anomalies et de gestion des valeurs aberrantes à l'aide de PHP et de techniques d'apprentissage automatique. Grâce à la méthode Z-Score et à l'algorithme de forêt d'isolation, nous pouvons détecter les valeurs aberrantes et les supprimer ou les remplacer si nécessaire. Ces méthodes peuvent nous aider à nettoyer les données, à améliorer la précision des modèles et à effectuer des analyses et des prédictions de données plus fiables.

L'implémentation complète de l'exemple de code est disponible sur GitHub. J'espère que cet article sera utile à votre étude et à votre pratique.

Référence :

  • [Forêt d'isolement pour la détection d'anomalies en PHP](https://github.com/lockeysama/php_isolation_forest)
  • [AnomalyDetectionPHP](https://github.com/zenthangplus/AnomalyDetectionPHP)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn