異常検出: 障害検出や不正検出など、データ内の外れ値を検出するモデルを構築します。

目次

パート 1: 異常検出の概要

パート 2: データの準備

データセットの紹介

パート 3: データ処理

データの正規化

パート 4: モデルの構築

異常検出モデルを構築する

パート 5: モデルのトレーニング

パート 6: モデルの評価


異常検出モデルの確立は、データ分析と機械学習の分野で重要なタスクであり、障害検出、不正検出、異常動作検出など、データ内の外れ値を検出するのに役立ちます。このブログでは、TensorFlow を使用して異常検出モデルを実装し、それを不正検出タスクに適用します。異常検出、データの準備、モデルの構築とトレーニング、そして最後に評価と視覚化の基本概念について説明します。

パート 1: 異常検出の概要

異常検出は、予想されるパターンに適合しないデータ内の観測値を特定するプロセスです。多くの場合、外れ値はデータ内の極端なまたはまれな観測値であり、潜在的な問題や異常を表す可能性があります。異常検出は、不正検出、障害検出、ネットワーク セキュリティ、品質管理などの分野に幅広く応用できます。

パート 2: データの準備

データセットの紹介

異常検出モデルを構築するには、正常な観測値と異常な観測値を含むデータセットが必要です。この記事では、クレジット カード不正検出データセットの例を使用します。

まず、データをロードして前処理する必要があります。

import pandas as pd

# 读取数据集
data = pd.read_csv('credit_card_fraud.csv')

# 数据预处理
features = data.drop(['Class'], axis=1)
labels = data['Class']

パート 3: データ処理

データの正規化

異常を検出する前に、通常、すべての特徴が同様のスケールであることを確認するためにデータを正規化する必要があります。

 
 
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
features = scaler.fit_transform(features)

パート 4: モデルの構築

異常検出モデルを構築する

TensorFlow を使用して、オートエンコーダーベースの異常検出モデルを構築します。オートエンコーダーは、入力データを低次元表現にエンコードし、それを元のデータと同様の出力にデコードするニューラル ネットワーク モデルです。外れ値は通常、再構成誤差が大きい場合に検出されます。

オートエンコーダー モデルのアーキテクチャは次のとおりです。

import tensorflow as tf

# 定义自编码器模型
class Autoencoder(tf.keras.Model):
    def __init__(self, encoding_dim):
        super(Autoencoder, self).__init__()
        self.encoder = tf.keras.Sequential([
            tf.keras.layers.Input(shape=(features.shape[1],)),
            tf.keras.layers.Dense(encoding_dim, activation='relu')
        ])
        self.decoder = tf.keras.Sequential([
            tf.keras.layers.Input(shape=(encoding_dim,)),
            tf.keras.layers.Dense(features.shape[1], activation='sigmoid')
        ])
    
    def call(self, inputs):
        encoded = self.encoder(inputs)
        decoded = self.decoder(encoded)
        return decoded

# 创建自编码器模型
encoding_dim = 32
autoencoder = Autoencoder(encoding_dim)

パート 5: モデルのトレーニング

これで、準備されたデータとモデルを使用してトレーニングできるようになりました。

 
 
# 编译模型
autoencoder.compile(optimizer='adam', loss='mean_squared_error')

# 训练模型
autoencoder.fit(features, features, epochs=50, batch_size=64, shuffle=True, validation_split=0.2)

パート 6: モデルの評価

トレーニングが完了したら、モデルのパフォーマンスを評価する必要があります。再構成誤差を使用して、外れ値を検出するモデルの能力を測定できます。

# 计算重构误差
reconstructed_features = autoencoder.predict(features)
mse = ((features - reconstructed_features) ** 2).mean(axis=1)

# 设置异常检测阈值
threshold = 2.0  # 根据实际情况调整阈值

# 标记异常值
labels_predicted = (mse > threshold).astype(int)

おすすめ

転載: blog.csdn.net/m0_68036862/article/details/133491430