異常檢測:算法分類及經典模型概覽

在這里插入圖片描述

第一部分:異常檢測的核心概念

在深入算法細節之前,理解異常檢測的“語境”至關重要。

1. 什么是異常檢測?

異常檢測(Anomaly Detection 或 Outlier Detection)旨在通過數據挖掘技術,識別出數據集中與大多數數據在行為模式上不一致的“異常個體”或“異常事件”。這些異常點通常蘊含著重要的業務信息,如欺詐行為、設備故障或新的商業機會。

2. 異常點的類型

  • 單點異常 (Global Outlier):一個數據點與數據集中所有其他點相比都顯得非常孤立。例如,在一群小黃人中,突然出現一個海綿寶寶。
  • 上下文異常 (Contextual Outlier):一個數據點在特定上下文中表現出異常,但在其他情境下可能完全正常。例如,夏季的某一天氣溫驟降到10℃,在“夏季”這個上下文中即為異常。
  • 集體異常 (Collective Outlier)單個數據點本身不異常,但當一小組數據點集合在一起出現時,則構成了異常。例如,小區里有10戶人家在同一天搬家,這個“集體行為”就是異常。

3. 實踐中的挑戰

  • 標簽缺失:絕大多數真實場景的數據沒有“異常”標簽,導致無法直接使用有監督學習。
  • 噪音混淆:數據中的隨機噪音與有價值的異常點很難區分。
  • 定義模糊:異常模式多樣且持續演變(如欺詐手段升級),難以給出精確定義。
  • 專家依賴:通常需要“無監督算法初步篩選 + 領域專家反饋驗證”的閉環模式來持續優化模型。

第二部分:異常檢測算法的分類維度

我們可以從不同角度對算法進行歸類,這有助于我們根據具體場景選擇最合適的工具。

  • 按監督方式 (Supervision)

    • 有監督:訓練數據已明確標注“正常”和“異常”。問題轉化為一個(通常是類別不均衡的)分類問題。
    • 無監督:訓練數據完全沒有標簽,算法需要自主發現“與眾不同”的數據點。這是最常見、也是挑戰最大的場景。
  • 按數據特性 (Data Characteristics)

    • 時序 vs. 非時序:異常的判斷是否依賴于時間維度。
    • 單維 vs. 多維:是只檢測單個特征的異常值,還是在多特征構成的空間中尋找異常組合。
  • 按檢測范圍 (Detection Scope)

    • 全局檢測:將每個數據點與數據集中的所有其他點進行比較。
    • 局部檢測:僅將每個數據點與其“鄰居”進行比較,更擅長處理密度不均的數據。
  • 按輸出結果 (Output Result)

    • 輸出標簽:模型直接給出“正常/異常”的判斷。
    • 輸出分數:模型為每個數據點計算一個“異常分”,分數越高代表異常可能性越大,決策更靈活。

第三部分:主流異常檢測模型詳解

幾乎所有現代算法都源于一些經典的核心思想。下面我們按照模型的內在邏輯,對它們進行歸類和詳細解析。

1. 基于統計的方法 (Statistical-based Methods)

核心思想:正常數據遵循一個特定的概率分布,而低概率事件被視為異常。

  • IQR (Interquartile Range,四分位距)

    • 適用場景:單維度異常檢測。
    • 工作原理:這是一種簡單穩健的統計方法。它通過計算數據的上四分位數(Q3)和下四分位數(Q1)的差值(IQR = Q3 - Q1),來定義數據的“中心范圍”。任何超出 [Q1 - 1.5*IQR, Q3 + 1.5*IQR] 這個“圍欄”的數據點都被視為異常。它不需要假設數據分布,非常實用。
  • 高斯分布模型 (Gaussian Model)

    • 適用場景:單維或多維數據。
    • 工作原理:假設正常數據服從高斯(正態)分布。通過計算數據的均值和標準差,我們可以確定一個置信區間(如均值±3倍標準差)。落在該區間之外的數據點因其出現概率極低,被判定為異常。在多維場景下,則使用“多元高斯分布”模型。

2. 基于鄰近度的方法 (Proximity-based Methods)

核心思想:通過衡量數據點之間的“遠近”或“疏密”程度來發現異常。這類方法在處理低維數據時非常有效。

  • 子類:基于距離 (Distance-based)

    • KNN (K-Nearest Neighbors):其思想是“物以類聚,離群索居”。對每個點,計算它到其第K個最近鄰居的距離。如果這個距離特別大,說明該點處于一個稀疏區域,遠離任何種群,因此很可能是異常點。
    • 聚類方法 (Clustering-based):
      • K-Means:先將數據聚成k個簇,然后計算每個點到其所屬簇中心的距離。距離中心非常遙遠的點,可以被看作不屬于任何一個簇的異常點。
      • DBSCAN:這是一個基于密度的聚類算法。它能自動發現高密度區域作為簇。那些無法被歸入任何一個高密度簇的點,會被算法直接標記為“噪聲(Noise)”,這些噪聲點就是我們尋找的異常點。
  • 子類:基于密度 (Density-based)

    • LOF (Local Outlier Factor, 局部異常因子):這是對純距離方法的重大改進。它認為,異常的判斷應該是“相對”的。LOF不僅看一個點到鄰居的距離,更關鍵的是,它會比較這個點的局部密度與其鄰居們的局部密度。如果一個點的密度遠低于其周圍鄰居的密度,它就會被賦予一個很高的異常分數,即使它處于一個整體稀疏的區域。
    • HBOS (Histogram-based Outlier Score):這是一種快速的密度估計方法。它為數據的每個維度(特征)單獨構建直方圖。一個數據點的異常分數由它在各個維度上所落入的直方圖“箱子”的高度(即密度)的倒數決定。如果一個點在多個維度上都落在低密度區域,它的總分就會很高。

3. 基于隔離/集成的方法 (Isolation/Ensemble-based Methods)

核心思想:異常點因為“稀少且與眾不同”,所以應該比正常點更容易被“孤立”出來。這類方法在處理高維數據時表現卓越。

  • 孤立森林 (Isolation Forest)
    • 工作原理:想象一下用隨機的“刀”(超平面)去切割數據空間。異常點由于處于稀疏地帶,往往用很少的幾刀就能被完美地從群體中分離出來。而正常的、處于數據簇內部的點,則需要很多刀才能被“孤立”。孤立森林通過計算一個點被孤立所需的平均“刀數”(路徑長度)來判斷其異常程度。路徑越短,異常分數越高。

4. 基于降維的方法 (Dimensionality Reduction-based Methods)

核心思想:高維數據的主要模式可以用少數幾個關鍵方向來表示。正常數據能夠很好地遵循這些模式,而異常數據則會偏離。

  • PCA (主成分分析)
    • 工作原理:PCA能夠找到代表數據變化最主要方向的幾個“主成分”。我們將所有數據點投影到這些主成分構成的低維空間,然后再將它們“重建”回原始的高維空間。對于正常點,這個過程中的信息損失很小,重建誤差(原始點與重建點之間的距離)也很低。而異常點由于不符合數據的主流模式,在降維時會丟失大量個性信息,導致其重建誤差非常大。這個重建誤差就可以作為其異常分數。

5. 基于深度學習的方法 (Deep Learning-based Methods)

核心思想:利用神經網絡強大的非線性擬合能力,學習正常數據的復雜模式。當模型遇到與該模式不符的數據時,會產生巨大偏差。

  • 自編碼器 (Autoencoder)

    • 適用場景:復雜的非時序數據,如圖像、用戶向量等。
    • 工作原理:這是一種自我監督的神經網絡。它由一個編碼器(壓縮數據)和一個解碼器(解壓并重建數據)組成。我們只用正常數據來訓練它,迫使它學會如何完美地重建正常樣本。當一個異常樣本(如一張它從未見過的圖片)輸入時,由于模型沒有學過它的模式,解碼器將無法很好地重建它,導致巨大的重建誤差。這個誤差值就是異常分數。
  • RNN/LSTM (循環神經網絡)

    • 適用場景:時序相關數據、序列數據。
    • 工作原理:RNN及其變體(如LSTM)擅長捕捉序列中的時間依賴關系。通過在正常的時間序列上進行訓練,模型能學習到“下一時刻應該發生什么”。當一個不符合歷史規律的事件發生時,模型的預測會與真實值產生巨大差異,這個預測誤差就可以用來識別上下文異常或集體異常。

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

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

相關文章

技術干貨 | 矢網DTF測量技術:透視線纜、天線與波導內部缺陷的“射頻X光”(二)

無線通信、雷達等領域中,射頻組件與傳輸系統的性能至關重要,其內部微小損傷易導致信號問題甚至系統失效。傳統測試無法精確定位故障點,排查困難。DTF測量,矢網賦予的“透視眼”!它能穿透“黑箱”,精確定位線…

【[CSP-J 2022] 上升點列】

題目 [CSP-J 2022] 上升點列 題目描述 在一個二維平面內,給定 n 個整數點 (x i ,y i? ),此外你還可以自由添加 k 個整數點。 你在自由添加 k 個點后,還需要從 nk 個點中選出若干個整數點并組成一個序列,使得序列中任意相鄰兩點間…

Kong API Gateway的十年進化史

一、技術基因的誕生(2007-2015) 2007年,三位意大利開發者Augusto Marietti、Marco Palladino和Michele Orru在博洛尼亞的一個小車庫中創立了Mashape公司。 最初他們開發了一個名為Mashup的API聚合平臺,試圖通過整合第三方API為開發…

藍牙設備配對:從機發現主機全過程

在藍牙 paging 過程中,從設備(Slave)是通過特定的掃描機制和跳頻方式來發現主設備發送的 ID 包的,具體過程如下:從設備處于特定掃描模式:從設備需要處于 Page Scan 模式,才能夠接收主設備發送的…

聚觀早報 | 三星獲特斯拉AI芯片訂單;小米16首發成安卓最強SOC;iPhone 17 Pro支持8倍光學變焦

聚觀早報每日整理最值得關注的行業重點事件,幫助大家及時了解最新行業動態,每日讀報,就讀聚觀365資訊簡報。整理丨肖羽7月29日消息三星獲特斯拉AI芯片訂單小米16首發成安卓最強SOCiPhone 17 Pro支持8倍光學變焦寧德時代滑板底盤公司啟動首輪融…

Gemini Fullstack LangGraph Quickstart(DeepSeek+Tavily版本)

文章目錄參考資料說明Gemini Fullstack LangGraph QuickstartDeepSeek Fullstack LangGraph Quickstart項目部署完整源碼地址后端部署前端部署參考資料 DeepResearch應用開發實戰網盤課件資料 說明 本文僅供學習和交流使用,感謝賦范社區相關老師的辛苦付出&#…

鋼筋計數誤差↓78%!陌訊多模態融合算法在建筑地產AI質檢的落地實踐

?摘要??針對建筑地產行業鋼筋驗收場景的高誤差痛點,本文解析陌訊視覺算法的多模態融合架構如何實現毫米級精度目標檢測。實測顯示:在Jetson Xavier NX邊緣設備上,鋼筋計數mAP0.5達??92.4%??,較基線模型提升28個百分點&…

負載均衡 LoadBalance

問題引入 我們一個服務可能會進行多機部署,也就說多臺服務器組成的集群共同對外提供一致的服務,那么我們的微服務的代碼就需要拷貝多份,部署到不同的機器上。 我們使用 IDEA 來開啟多個相同的服務 這里以 product-service 為例:…

13. 若依框架中的 Sensitive 敏感字段過濾

若依框架中有Sensitive注解,但代碼中并未使用,但該注解的實現還是比較值的學習的。該注解是一個運行時注解該注解只能應用在字段上JacksonAnnotationsInside 表示當使用Jackson序列化時,Jackson會自動識別該注解下的其他Jackson相關注解&…

git本地倉庫,工作區和暫存區的知識

一 git工作原理 Git 的工作原理基于分布式版本控制,通過管理文件的不同版本狀態,實現代碼的追蹤、協作和回溯。除了常見的工作區(Working Directory) 和暫存區(Staging Area/Index),核心還包括本…

MPU6050模塊

一:MPU6050簡介輸出一個隨姿態變化而變化的電壓,想要量化電壓,就得使用ADC轉化歐拉角偏航角(Yaw):也叫航向角,通常是繞 z 軸旋轉的角度,以 x 軸正向為起始邊,旋轉后 x 軸…

jvm的棧和堆

在 JVM 中,棧(Stack)和堆(Heap)是兩種核心內存區域,用于存儲不同類型的數據,它們的設計和存儲規則有明確區分,主要體現在存儲內容、生命周期和管理方式上:一、棧&#xf…

自動駕駛車輛的敏捷安全檔案

簡介近年來,在開發安全關鍵軟件時,敏捷開發方法的使用日益增多。敏捷方法非常適合自動駕駛汽車軟件的增量改進、運行設計域的逐步擴展以及新型智能路側單元的開發。由于車輛和智能路側單元的預期改進,未來幾年將會有新的自動駕駛車輛試驗。因…

【時時三省】(C語言基礎)動態內存分配與它的指針變量

山不在高,有仙則名。水不在深,有龍則靈。 ----CSDN 時時三省什么是內存的動態分配全局變量是分配在內存中的靜態存儲區的,非靜態的局部變量(包括形參)是分配在內存中的動態存儲區的,這個存儲區是一個稱為棧…

SpringMVC的核心架構與請求處理流程

Spring MVC 核心架構核心組件組件作用類比DispatcherServlet前端控制器,統一接收請求并協調各組件處理一個餐廳的前臺HandlerMapping根據請求URL映射到對應的處理器(Controller)路由表HandlerAdapter執行處理器方法,處理參數綁定、…

css 不錯的按鈕動畫

效果圖wxml <view class"{{status?active:}}"><view class"up-top btn"><text>向上</text></view><view class"up-left btn"><text>向左</text></view><view class"up-center b…

若依框架RuoYi-Vue-Plus-5.X的啟動,本地安裝docker,再部署 Redis、PG數據庫(智慧水務)SmartWaterServer

一、部署redis數據庫拉取鏡像 docker pull redis啟動Redis容器docker run -d --name redis-server -p 6379:6379 -v redis-data:/data redis redis-server --requirepass 123redis版本二、部署PostgreSQL 數據庫拉取鏡像docker pull postgres:15 創建數據存儲目錄、建議將數據掛…

Idea 清除無用的引用類

在IntelliJ IDEA中&#xff0c;你可以通過以下方式將選中的代碼設置為大寫&#xff1a;1. 使用快捷鍵(推薦)Windows/Linux&#xff1a;Ctrl Shift UMac&#xff1a;Cmd Shift U操作步驟&#xff1a;選中文本按下快捷鍵&#xff0c;即可在大小寫之間切換。2. 通過菜單操作選…

同個主機拉取不同權限倉庫的方法

背景&#xff1a;因為某些神奇的原因&#xff0c;無法同時授權倉庫權限給自己。 1.本地電腦只有權限訪問web倉庫地址&#xff0c;無權限訪問backend倉庫&#xff1b; 2.堡壘機服務器只有權限訪問backend倉庫&#xff0c;無權限訪問web倉庫地址。 web倉庫地址 &#xff1a;codeu…

快速搭建Node.js服務指南

Node.js是構建高效、可擴展網絡應用的理想選擇。以下是幾種快速搭建Node.js服務的方法。 方法一&#xff1a;使用Express&#xff08;最流行框架&#xff09; 1. 初始化項目 mkdir my-node-service cd my-node-service npm init -y2. 安裝Express npm install express3. 基礎服…