現在の位置: ホーム> 最新記事一覧> PHPと機械学習:時系列データの異常検出を実装する方法

PHPと機械学習:時系列データの異常検出を実装する方法

M66 2025-07-13

導入

今日のデータ駆動型時代には、時系列データの処理と分析が重要になっています。時系列のデータは、複数の観測値または測定をカバーする時系列の順序で配置されます。異常検出は、時系列分析における重要なタスクであり、企業や組織がタイムリーに異常な行動を検出し、必要な措置を講じるのに役立ちます。この記事では、PHPおよび機械学習技術を使用して、時系列データの異常を検出する方法を紹介します。

データを準備します

まず、時系列データを準備する必要があります。毎日の販売を記録するデータセットがあり、これらの販売データを異常な検出のための時系列データとして使用できるとします。これがサンプルデータセットです:

 $dateSales = [
    ['2019-01-01', 100],
    ['2019-01-02', 120],
    ['2019-01-03', 80],
    ['2019-01-04', 90],
    ['2019-01-05', 110],
    // より多くの日付データ...
];

データの前処理

例外検出を実行する前に、データを事前に処理する必要があります。まず、機械学習アルゴリズムが効率的に処理できるように、日付をタイムスタンプに変換します。次に、販売データを正規化して、異なる特性の違いが異常検出に影響しないようにします。以下は、データ前処理のコード例です。

 // 日付をタイムスタンプに変換します
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);
}

アノマリー検出アルゴリズムを選択します

異常検出を開始する前に、適切な機械学習アルゴリズムを選択する必要があります。一般的な時系列の異常検出アルゴリズムには、統計的方法、クラスタリング方法、深い学習方法が含まれます。この記事では、異常検出にArima(Autoregressive Moving Average Model)アルゴリズムを使用します。

ARIMAアルゴリズムを使用した例外検出

Arimaアルゴリズムは、時系列分析で広く使用されている統計モデルです。 PHPのStatsライブラリのARIMA関数を使用して、このアルゴリズムを実装して例外検出を実行できます。 ARIMAアルゴリズムを使用した例外検出のコード例は次のとおりです。

 $data = new StatsTimeSeries($scaledSales);

// モデルに適合します
$arima = StatsARIMA::fit($data);

// 次のデータポイントを予測します
$prediction = $arima->predict();

// 残留エラーを計算します
$residual = $data->last() - $prediction;

// 異常検出しきい値を設定します
$errorThreshold = 0.05;

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

上記のコードでは、最初にSTATSライブラリのTimeseriesクラスとArimaクラスを使用して、モデルを初期化して適合させます。次に、次のデータポイントを予測し、残差エラーを計算します。最後に、しきい値を設定することにより、残留誤差が正常範囲を超えるかどうかを判断し、それにより異常があるかどうかを決定します。

結論は

この記事では、PHPおよび機械学習技術を使用して時系列データで異常検出を実行する方法について説明します。最初に時系列データを準備して前処理し、次にArimaアルゴリズムを選択し、PHPのStatsライブラリを使用して実装しました。予測エラーのしきい値検出を実行することにより、データの異常を効果的に判断できます。この記事が、読者が時系列データの異常検出方法を理解し、適用するのに役立つことを願っています。