Maison  >  Article  >  développement back-end  >  PHP et Machine Learning : Comment détecter des anomalies sur des données de séries chronologiques

PHP et Machine Learning : Comment détecter des anomalies sur des données de séries chronologiques

PHPz
PHPzoriginal
2023-07-29 10:07:491125parcourir

PHP et Machine Learning : Comment effectuer une détection d'anomalies sur les données de séries chronologiques

Introduction :
À l'ère actuelle axée sur les données, de plus en plus d'organisations et d'entreprises doivent traiter et analyser des données de séries chronologiques. Les données de séries chronologiques sont des données classées par ordre chronologique, qui contiennent une série d'observations ou de mesures. La détection des anomalies dans les données de séries chronologiques est une tâche importante, qui peut aider les organisations et les entreprises à découvrir des comportements anormaux dans les données et à prendre des mesures en temps opportun. Cet article expliquera comment utiliser PHP et la technologie d'apprentissage automatique pour la détection d'anomalies dans les données de séries chronologiques.

1. Préparer les données
Avant de commencer la détection des anomalies, nous devons d'abord préparer les données de séries chronologiques. Supposons que nous disposions d'un ensemble de données qui enregistre les ventes quotidiennes, nous pouvons utiliser les ventes comme données de séries chronologiques pour la détection des anomalies. Voici un exemple d'ensemble de données :

$dateSales = [
    ['2019-01-01', 100],
    ['2019-01-02', 120],
    ['2019-01-03', 80],
    ['2019-01-04', 90],
    ['2019-01-05', 110],
    // 其他日期的销售量数据...
];

2. Prétraitement des données
Avant de commencer la détection des anomalies, nous devons prétraiter les données. Tout d’abord, nous convertissons la date en horodatage pour le traitement à l’aide d’algorithmes d’apprentissage automatique. Ensuite, nous normalisons les données de vente et les adaptons à une plage plus petite pour éviter l'impact des différences entre les valeurs des caractéristiques sur la détection des anomalies. Voici un exemple de code pour le prétraitement des données :

// 将日期转换为时间戳
foreach ($dateSales as &$data) {
    $data[0] = strtotime($data[0]);
}

// 对销售量数据进行归一化处理
$sales = array_column($dateSales, 1);
$scaledSales = [];

$minSales = min($sales);
$maxSales = max($sales);

foreach ($sales as $sale) {
    $scaledSales[] = ($sale - $minSales) / ($maxSales - $minSales);
}

3. Sélection de l'algorithme de détection d'anomalies
Avant d'effectuer une détection d'anomalies sur des données de séries chronologiques, nous devons choisir un algorithme d'apprentissage automatique approprié. Les algorithmes de détection d'anomalies de séries chronologiques couramment utilisés comprennent des méthodes basées sur des statistiques, des méthodes basées sur le clustering et des méthodes basées sur l'apprentissage profond. Dans cet article, nous utiliserons l'algorithme ARIMA (Autoregressive Moving Average Model) pour la détection des anomalies.

4. Utilisez l'algorithme ARIMA pour la détection des anomalies
L'algorithme ARIMA est un algorithme largement utilisé dans l'analyse de données de séries chronologiques. En PHP, nous pouvons utiliser la fonction arima dans la bibliothèque stats pour implémenter l'algorithme ARIMA. Voici un exemple de code pour la détection d'anomalies à l'aide de l'algorithme ARIMA :

$data = new StatsTimeSeries($scaledSales);

// Fit the model
$arima = StatsARIMA::fit($data);

// Predict the next data point
$prediction = $arima->predict();

// Calculate the residual error
$residual = $data->last() - $prediction;

// Set a threshold for anomaly detection
$errorThreshold = 0.05;

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

Dans l'exemple de code ci-dessus, nous utilisons d'abord la classe TimeSeries et la classe ARIMA de la bibliothèque de statistiques pour initialiser et ajuster le modèle. Nous prédisons ensuite le prochain point de données et calculons l’erreur résiduelle. Enfin, nous fixons un seuil de détection d'anomalie. Si l'erreur résiduelle dépasse le seuil, cela signifie qu'il y a une anomalie.

Conclusion :
Cet article explique comment utiliser PHP et la technologie d'apprentissage automatique pour la détection d'anomalies dans les données de séries chronologiques. Nous avons d’abord préparé les données de la série chronologique, puis prétraité les données. Ensuite, nous avons choisi l'algorithme ARIMA et implémenté la détection des anomalies à l'aide de la fonction arima dans la bibliothèque de statistiques. En seuillant l’erreur de prédiction, nous pouvons déterminer s’il existe une anomalie. J'espère que cet article pourra aider les lecteurs à comprendre et à appliquer les méthodes de détection d'anomalies pour les données de séries chronologiques.

L'exemple de code provient des statistiques de la bibliothèque d'analyse de données de séries chronologiques PHP. Veuillez installer la bibliothèque vous-même pour terminer l'implémentation du code.

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