【機器學習筆記 Ⅲ】3 異常檢測算法

異常檢測算法(Anomaly Detection)詳解

異常檢測是識別數據中顯著偏離正常模式的樣本(離群點)的技術,廣泛應用于欺詐檢測、故障診斷、網絡安全等領域。以下是系統化的解析:


1. 異常類型
類型描述示例
點異常單個樣本明顯異常信用卡交易中的天價消費
上下文異常在特定上下文中異常(如時間序列)夏季氣溫突降至零下
集體異常一組相關樣本聯合表現為異常網絡流量中突然的DDOS攻擊流量

2. 常用算法
(1) 基于統計的方法
  • Z-Score(標準差法)

    • 計算樣本與均值的標準差距離,超出閾值(如3σ)判為異常。
    • 公式:
      [
      z = \frac{x - \mu}{\sigma}
      ]
    • 代碼實現
      from scipy import stats
      z_scores = stats.zscore(data)
      anomalies = np.where(np.abs(z_scores) > 3)
      
  • IQR(四分位距法)

    • 定義異常值為低于Q1-1.5×IQR或高于Q3+1.5×IQR。
    • 代碼實現
      Q1, Q3 = np.percentile(data, [25, 75])
      IQR = Q3 - Q1
      lower_bound = Q1 - 1.5 * IQR
      upper_bound = Q3 + 1.5 * IQR
      anomalies = data[(data < lower_bound) | (data > upper_bound)]
      
(2) 基于距離的方法
  • KNN(K近鄰)
    • 計算每個樣本到最近K個鄰居的平均距離,距離過大則為異常。
    • 代碼實現
      from sklearn.neighbors import NearestNeighbors
      knn = NearestNeighbors(n_neighbors=5)
      knn.fit(X)
      distances, _ = knn.kneighbors(X)
      anomaly_scores = distances.mean(axis=1)
      
(3) 基于密度的方法
  • LOF(局部離群因子)
    • 比較樣本的局部密度與鄰居的密度,密度顯著偏低則為異常。
    • 代碼實現
      from sklearn.neighbors import LocalOutlierFactor
      lof = LocalOutlierFactor(n_neighbors=20, contamination=0.01)
      anomalies = lof.fit_predict(X)  # 返回-1表示異常
      
(4) 基于聚類的方法
  • DBSCAN
    • 將不屬于任何簇的樣本(噪聲點)標記為異常。
    • 代碼實現
      from sklearn.cluster import DBSCAN
      dbscan = DBSCAN(eps=0.5, min_samples=5)
      labels = dbscan.fit_predict(X)
      anomalies = X[labels == -1]  # 噪聲點即異常
      
(5) 基于樹的方法
  • Isolation Forest(孤立森林)
    • 異常點因特征值特殊,容易被隨機樹快速隔離。
    • 代碼實現
      from sklearn.ensemble import IsolationForest
      iso_forest = IsolationForest(contamination=0.01)
      anomalies = iso_forest.fit_predict(X)  # 返回-1表示異常
      
(6) 基于深度學習的方法
  • 自編碼器(Autoencoder)
    • 正常數據重建誤差低,異常數據誤差高。
    • 代碼實現
      from tensorflow.keras import layers, Model
      # 構建自編碼器
      encoder = layers.Dense(32, activation='relu')(input_layer)
      decoder = layers.Dense(64, activation='sigmoid')(encoder)
      autoencoder = Model(input_layer, decoder)
      autoencoder.compile(optimizer='adam', loss='mse')
      # 訓練后計算重建誤差
      reconstructions = autoencoder.predict(X)
      mse = np.mean(np.square(X - reconstructions), axis=1)
      anomalies = mse > threshold
      

3. 算法選擇指南
場景推薦算法理由
單維數據,分布已知Z-Score / IQR計算簡單高效
高維數據,無標簽Isolation Forest / LOF無需假設數據分布
時間序列異常LSTM-Autoencoder捕捉時序依賴關系
圖像異常檢測Variational Autoencoder (VAE)學習潛在特征空間

4. 評估指標
  • 有標簽時
    • 精確率(Precision)、召回率(Recall)、F1-Score。
    • AUC-ROC(異常檢測常偏重召回率)。
  • 無標簽時
    • 人工驗證(如Top-N異常樣本是否合理)。
    • 聚類指標(如輪廓系數)間接評估。

5. 關鍵挑戰
  • 樣本不平衡:異常樣本極少(如0.1%),需使用過采樣或調整損失函數。
  • 動態環境:正常模式隨時間變化(需在線學習或滑動窗口)。
  • 解釋性:需提供異常原因(如SHAP值解釋)。

6. 應用案例
  • 金融:信用卡欺詐交易識別。
  • 工業:生產線設備故障預警。
  • 醫療:心電圖異常心跳檢測。
  • 網絡安全:入侵行為檢測。

7. 總結
  • 核心目標:區分正常模式與異常,而非精確預測。
  • 算法選擇:取決于數據維度、分布和異常類型。
  • 落地要點
    1. 結合領域知識定義“異常”。
    2. 處理樣本不平衡(如加權損失或過采樣)。
    3. 模型需持續監控和更新(概念漂移問題)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/90189.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/90189.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/90189.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【ssh】在 Windows 上生成 SSH 公鑰并實現免密登錄 Linux

在 Windows 上生成 SSH 公鑰并實現免密登錄 Linux&#xff0c;可以使用 ssh-keygen 命令&#xff0c;這是 Windows 10 和 Windows 11 中默認包含的 OpenSSH 工具的一部分。下面是詳細步驟&#xff1a; 在 Windows 上生成 SSH 公鑰 打開 PowerShell 或命令提示符&#xff1a; 在…

MS51224 一款 16 位、3MSPS、雙通道、同步采樣模數轉換器(ADC)

MS51224 是一款 16 位、3MSPS、雙通道、同步采樣模數轉換器&#xff08;ADC&#xff09;&#xff0c;具有集成的內部參考和參考電壓緩沖器。芯片可由 5V 單電源供電&#xff0c;支持單極性和全差分模擬信號輸入&#xff0c;具有出色的直流和交流性能。芯片模擬輸入信號頻率高達…

WPF學習(四)

文章目錄一、用戶控價1.1 依賴屬性的注冊1.2 具體使用一、用戶控價 1.1 依賴屬性的注冊 using System.Windows; using System.Windows.Controls;namespace WpfApp {public partial class MyUserControl : UserControl{// 依賴屬性&#xff1a;外部可綁定的文本public static …

vue3+typescript項目配置路徑別名@

1. vite.config.ts配置//方法1 import { defineConfig } from vite; import vue from vitejs/plugin-vue; import path from path;export default defineConfig({plugins: [vue()],resolve: {alias: {: path.resolve(__dirname, src)}} });//方法2,需要執行npm install -D type…

MySql 常用SQL語句、 SQL優化

???????????????SQL語句主要分為哪幾類 SQL&#xff08;結構化查詢語言&#xff09;是用于管理和操作關系型數據庫的標準語言&#xff0c;其語句通常根據功能劃分為以下幾大類&#xff0c;每類包含不同的子句和命令&#xff0c;用于實現特定的數據庫操作需求&am…

代理模式實戰指南:打造高性能RPC調用與智能圖片加載系統

代理模式實戰指南&#xff1a;打造高性能RPC調用與智能圖片加載系統 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 總有一行代碼&#xff0c;能點亮萬千星辰。 &#x1f50d; 在技術的宇宙中&#xff0c;我愿做永不停歇的探索者。 ? 用代碼丈量…

登山第二十六梯:單目3D檢測一切——一只眼看世界

文章目錄 一 摘要 二 資源 三 內容 一 摘要 盡管深度學習在近距離 3D 對象檢測方面取得了成功&#xff0c;但現有方法難以實現對新對象和相機配置的零鏡頭泛化。我們介紹了 DetAny3D&#xff0c;這是一種可提示的 3D 檢測基礎模型&#xff0c;能夠在任意相機配置下僅使用單目…

ROS2簡記一:第一個ros2程序,海龜模擬與C++和python的《你好,世界!》

目錄 引言 一、控制小海龜 二、鍵盤控制海龜 三、控制海龜案例的簡單分析 四、ROS2之linux基礎 4.1 linux終端命令 4.1.1 查看當前終端所在目錄 pwd 4.1.2 切換終端所在目錄 cd 4.1.3 查看當前目錄下的文件 ls 4.1.4 主目錄 ~ 4.1.5 文件的操作 4.1.6 命令使用幫助…

監控的基本理論和prometheus安裝

監控的基本理論和prometheus安裝 前言 這篇博客主要講的是關于理論的知識&#xff0c;大家盡可能的消化和吸收&#xff0c;也能擴展大家的知識面 監控的基本概念 監控俗稱為運維的第三只眼。沒有了監控&#xff0c;業務運維都是“瞎子”。所以說監控室運維這個職業的根本&…

互聯網生態下贏家群體的崛起與“開源AI智能名片鏈動2+1模式S2B2C商城小程序“的賦能效應

摘要&#xff1a;本文聚焦未來互聯網贏家群體的構成特征&#xff0c;剖析網紅經濟與專業主播的差異化發展路徑&#xff0c;結合開源AI智能名片鏈動21模式與S2B2C商城小程序的融合創新&#xff0c;提出技術賦能下互聯網商業生態的重構路徑。研究表明&#xff0c;開源AI技術通過智…

OneCode 圖表組件核心優勢解析

一、全方位的可視化能力 OneCode 圖表組件提供了15種專業圖表類型&#xff0c;覆蓋從基礎到高級的數據可視化需求&#xff1a; 基礎圖表&#xff1a;柱狀圖、折線圖、餅圖、面積圖等高級圖表&#xff1a;金字塔圖、雷達圖、儀表盤、LED圖表等實時圖表&#xff1a;實時折線圖、實…

【Linux】RHCE中ansible的配置

1.安裝并配置ansible 第一步先安裝ansible所需軟件 #安裝ansible所需軟件 [devopsworkstation ~]$ sudo dnf install ansible ansible-navigator rhel-system-roles -y 第二步登錄鏡像倉庫&#xff0c;在鏡像倉庫下載鏡像容器來運行ansible 由于ansible-navigator 知ansible…

ubuntu server系統 安裝寶塔

更新系統軟件包sudo apt update && sudo apt upgrade -y提示&#xff0c;如果想博主這樣是存綠色liunx系統&#xff0c;要先安裝python3腳本才可以python3 --version有pyhton版本號就是安裝了&#xff0c;沒有的話就要安裝安裝 Pythonsudo apt update sudo apt install…

用C++實現五子棋游戲

#include <iostream> #include <vector> #include <string> #include <iomanip> // 用于控制輸出格式 #include <limits> // 用于numeric_limitsusing namespace std;// 游戲常量定義 const int BOARD_SIZE 15; // 定義棋盤大小為15x15// 棋…

【LeetCode 熱題 100】73. 矩陣置零——(解法一)空間復雜度 O(M + N)

Problem: 73. 矩陣置零 題目&#xff1a;給定一個 m x n 的矩陣&#xff0c;如果一個元素為 0 &#xff0c;則將其所在行和列的所有元素都設為 0 。請使用 原地 算法。 文章目錄整體思路完整代碼時空復雜度時間復雜度&#xff1a;O(M * N)空間復雜度&#xff1a;O(M N)整體思路…

【深度學習新浪潮】國內零樣本抗體設計的科研進展如何?

什么是AI零樣本抗體設計? AI零樣本抗體設計(Zero-shot AI Antibody Design)是指不依賴任何已知抗體序列或結構數據,僅根據靶點抗原信息,通過人工智能直接生成具有高親和力、高特異性的全新抗體序列的技術。其核心在于突破傳統抗體研發的“數據依賴瓶頸”,實現真正的“從…

【論文閱讀】A Diffusion model for POI recommendation

論文出處&#xff1a;ACM Transactions on Information Systems (TOIS) SCI一區 CCF-A期刊 論文地址&#xff1a;[2304.07041] A Diffusion model for POI recommendation 論文代碼&#xff1a;Yifang-Qin/Diff-POI: The official PyTorch implementation of Diff-POI. 目…

Rust實現FasterR-CNN目標檢測全流程

使用 Rust 和 FasterR-CNN 進行目標檢測 FasterR-CNN 是目標檢測領域廣泛使用的深度學習模型。Rust 生態中可以通過 tch-rs(Torch 綁定)調用預訓練的 PyTorch 模型實現。以下為完整實現步驟: 環境準備 安裝 Rust 和必要的依賴: cargo add tch cargo add anyhow # 錯誤…

Github 2025-07-03Go開源項目日報Top10

根據Github Trendings的統計,今日(2025-07-03統計)共有10個項目上榜。根據開發語言中項目的數量,匯總情況如下: 開發語言項目數量Go項目10JavaScript項目2Go編程語言:構建簡單、可靠和高效的軟件 創建周期:3474 天開發語言:Go協議類型:BSD 3-Clause “New” or “Revise…

XML Schema 安裝使用教程

一、XML Schema 簡介 XML Schema&#xff08;XSD&#xff0c;全稱 XML Schema Definition&#xff09;是用于定義 XML 文檔結構、數據類型和數據約束的標準方式。它比 DTD 更加強大&#xff0c;支持數據類型、默認值、命名空間等&#xff0c;是企業級 XML 應用推薦的驗證方式。…