ホームページ  >  記事  >  バックエンド開発  >  PHP と機械学習: 異常検出と外れ値の処理を行う方法

PHP と機械学習: 異常検出と外れ値の処理を行う方法

王林
王林オリジナル
2023-07-31 16:09:101070ブラウズ

PHP と機械学習: 異常検出と外れ値処理を実行する方法

概要:
実際のデータ処理では、データ セット内で外れ値が頻繁に発生します。外れ値は、測定エラー、予測不可能なイベント、データ ソースの問題など、さまざまな理由で発生する可能性があります。これらの外れ値は、データ分析、モデルのトレーニング、予測などのタスクに悪影響を与える可能性があります。この記事では、異常検出と外れ値の処理に PHP と機械学習テクニックを使用する方法を紹介します。

  1. 異常検出方法:
    異常値を検出するには、さまざまな機械学習アルゴリズムを使用できます。一般的に使用される 2 つの異常検出方法は次のとおりです。

1.1 Z スコア方法:
Z スコア方法は、各データ ポイントとデータ ポイント間の関係を計算する統計ベースの異常検出方法です。データセットの平均値の偏差値は、それが外れ値であるかどうかを判断するために使用されます。具体的な手順は次のとおりです。

  1. データセットの平均と標準偏差を計算します。
  2. 各データ ポイントについて、平均からの偏差を計算します: 偏差 = (データ - 平均) / std。
  3. 特定のしきい値 (通常は 3) に対して、しきい値より大きい偏差値を持つデータ ポイントを外れ値としてマークします。

サンプルコードは以下のとおりです:

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 Isolation Forest:
Isolation Forest は集合ツリーに基づく異常検出手法であり、ランダムに分割された Binary Tree を構築して判定を行います。データポイントの異常。具体的な手順は次のとおりです。

  1. 特徴をランダムに選択し、特徴の最小値と最大値の間のランダムな分割点を選択します。
  2. 分割フィーチャと分割点をランダムに選択し、データ ポイントを 2 つのサブセットに分割し、各サブセットにデータ ポイントが 1 つだけ含まれるか、ツリーの最大深さに達するまで繰り返します。
  3. ツリー内のデータ ポイントのパス長に基づいて異常の度合いを計算し、パス長が短いほど異常であることを示します。

サンプルコードは以下の通りです:

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. 外れ値の処理方法:
    外れ値が検出された場合には、それを処理する必要があります。異常値を処理するためによく使用される 2 つの方法は次のとおりです。

2.1 異常値の削除:
簡単な方法は、異常値を直接削除することです。異常検出の結果に基づいて、しきい値を超えるデータ ポイントをデータ セットから削除できます。

サンプルコードは以下の通りです:

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 外れ値の置換:
別の処理方法は、外れ値を平均値や中央値などの妥当な値に置き換えることです。このようにして、データセットの全体的な分布特性を保存できます。

サンプルコードは以下の通りです:

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);

結論:
この記事では、PHPと機械学習技術を利用した異常検出と外れ値処理の手法を紹介しました。 Z スコア法と分離フォレスト アルゴリズムを通じて、外れ値を検出し、必要に応じて削除または置換できます。これらの方法は、データをクリーンアップし、モデルの精度を向上させ、より信頼性の高いデータ分析と予測を実行するのに役立ちます。

コード例の完全な実装は、GitHub にあります。この記事があなたの学習や実践に役立つことを願っています。

参考:

  • [PHP での異常検出のための分離フォレスト](https://github.com/lockeysama/php_isolation_forest)
  • [AnomalyDetectionPHP](https ://github.com/zenthangplus/AnomalyDetectionPHP)

以上がPHP と機械学習: 異常検出と外れ値の処理を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。