Position actuelle: Accueil> Derniers articles> PHP et apprentissage automatique: comment mettre en œuvre une détection d'anomalies des données de séries chronologiques

PHP et apprentissage automatique: comment mettre en œuvre une détection d'anomalies des données de séries chronologiques

M66 2025-07-13

introduction

Dans l'ère actuelle, le traitement et l'analyse des séries chronologiques sont devenus cruciaux. Les données de séries chronologiques sont organisées par ordre chronologique, couvrant plusieurs observations ou mesures. La détection des anomalies est une tâche importante de l'analyse des séries chronologiques, qui peut aider les entreprises ou les organisations à détecter les comportements anormaux en temps opportun et à prendre les mesures nécessaires. Cet article présentera comment utiliser PHP et la technologie d'apprentissage automatique pour détecter l'anomalie dans les données de séries chronologiques.

Préparer les données

Tout d'abord, nous devons préparer des données de séries chronologiques. Supposons que nous ayons un ensemble de données qui enregistre les ventes quotidiennes et que nous pouvons utiliser ces données de vente comme données de séries chronologiques pour une détection anormale. Voici un exemple de jeu de données:

 $dateSales = [
    ['2019-01-01', 100],
    ['2019-01-02', 120],
    ['2019-01-03', 80],
    ['2019-01-04', 90],
    ['2019-01-05', 110],
    // Plus de données de date...
];

Prétraitement des données

Avant d'effectuer une détection d'exception, nous devons prétraiter les données. Tout d'abord, nous convertissons les dates en horodatage afin que les algorithmes d'apprentissage automatique puissent les gérer efficacement. Ensuite, nous normalisons les données de vente pour garantir que les différences entre les différentes caractéristiques n'affectent pas la détection des anomalies. Voici un exemple de code pour le prétraitement des données:

 // Convertir la date en horodatage
foreach ($dateSales as &$data) {
    $data[0] = strtotime($data[0]);
}

// Normaliser les données de vente
$sales = array_column($dateSales, 1);
$scaledSales = [];
$minSales = min($sales);
$maxSales = max($sales);
foreach ($sales as $sale) {
    $scaledSales[] = ($sale - $minSales) / ($maxSales - $minSales);
}

Sélectionnez l'algorithme de détection d'anomalie

Avant de commencer la détection des anomalies, nous devons choisir le bon algorithme d'apprentissage automatique. Les algorithmes de détection d'anomalies temporelles courants comprennent des méthodes statistiques, des méthodes de clustering et des méthodes d'apprentissage en profondeur. Dans cet article, nous utiliserons l'algorithme ARIMA (modèle mobile autorégressif) pour la détection d'anomalies.

Détection d'exception à l'aide d'algorithme ARIMA

L'algorithme ARIMA est un modèle statistique largement utilisé dans l'analyse des séries chronologiques. Grâce à la fonction ARIMA dans la bibliothèque de statistiques dans PHP, nous pouvons implémenter cet algorithme pour effectuer une détection d'exception. Voici un exemple de code pour la détection des exceptions à l'aide de l'algorithme ARIMA:

 $data = new StatsTimeSeries($scaledSales);

// Ajuster le modèle
$arima = StatsARIMA::fit($data);

// Prédire le point de données suivant
$prediction = $arima->predict();

// Calculer l'erreur résiduelle
$residual = $data->last() - $prediction;

// Définir un seuil de détection d'anomalie
$errorThreshold = 0.05;

if (abs($residual) > $errorThreshold) {
    echo "Anomaly detected!";
} else {
    echo "No anomaly detected.";
}

Dans le code ci-dessus, nous utilisons d'abord la classe TimesSeries et la classe ARIMA dans la bibliothèque Statts pour initialiser et ajuster le modèle. Nous prédisons ensuite le point de données suivant et calculons l'erreur résiduelle. Enfin, nous déterminons si l'erreur résiduelle dépasse la plage normale en définissant la valeur de seuil, déterminant ainsi s'il existe une anomalie.

en conclusion

Cet article décrit comment utiliser les techniques de PHP et d'apprentissage automatique pour effectuer la détection des anomalies sur les données de séries chronologiques. Nous avons d'abord préparé et prétraité les données de la série temporelle, puis sélectionné l'algorithme ARIMA et l'avons implémenté à l'aide de la bibliothèque Statts en PHP. En effectuant une détection seuil des erreurs de prédiction, nous pouvons juger efficacement les anomalies des données. J'espère que cet article peut aider les lecteurs à comprendre et à appliquer des méthodes de détection d'anomalies pour les données de séries chronologiques.