1、什麼是異常檢測
異常檢測(outlier detection),顧名思義,是識別與正常資料不同的資料,與預期行為差異大的資料。
識別如信用卡欺詐,工業生產異常,網路流裡的異常(網路侵入)等問題,針對的是少數的事件。
1.1 異常的類別
點異常:指的是少數個體例項是異常的,大多數個體例項是正常的,例如正常人與病人的健康指標;
上下文異常:又稱上下文異常,指的是在特定情境下個體例項是異常的,在其他情境下都是正常的,例如在特定時間下的溫度突然上公升或下降,在特定場景中的快速信用卡交易;
群體異常:指的是在群體集合中的個體例項出現異常的情況,而該個體例項自身可能不是異常,例如社交網路中虛假賬號形成的集合作為群體異常子集,但子集中的個體節點可能與真實賬號一樣正常。
1.2 異常檢測任務分類
有監督:訓練集的正例和反例均有標籤
無監督:訓練集無標籤
半監督:在訓練集中只有單一類別(正常例項)的例項,沒有異常例項參與訓練
1.3 異常檢測場景
故障檢測
物聯網異常檢測
欺詐檢測
工業異常檢測
時間序列異常檢測
日誌異常檢測
醫療日常檢測
網路入侵檢測
2、異常檢測常用方法
2.1 傳統方法
2.1.1 基於統計學的方法
統計學方法對資料的正常性做出假定。**它們假定正常的資料物件由乙個統計模型產生,而不遵守該模型的資料是異常點。**統計學方法的有效性高度依賴於對給定資料所做的統計模型假定是否成立。
異常檢測的統計學方法的一般思想是:學習乙個擬合給定資料集的生成模型,然後識別該模型低概率區域中的物件,把它們作為異常點。
即利用統計學方法建立乙個模型,然後考慮物件有多大可能符合該模型。
假定輸入資料集為x(1
),x(
2),.
..,x
(m
), x^, ..., x^}
x(1),x
(2),
...,
x(m)
,資料集中的樣本服從正態分佈,即x(i
)∼n(
μ,σ2
)x^\sim n(\mu, \sigma^2)
x(i)∼n
(μ,σ
2),我們可以根據樣本求出引數μ
\muμ和σ
\sigma
σ。μ =1
m∑i=
1mx(
i)
\mu=\frac 1m\sum_^m x^
μ=m1∑
i=1m
x(i
) σ 2=
1m∑i
=1m(
x(i)
−μ)2
\sigma^2=\frac 1m\sum_^m (x^-\mu)^2
σ2=m1
∑i=1
m(x
(i)−
μ)22.1.2 線性模型
典型的如pca方法,principle component analysis是主成分分析,簡稱pca。它的應用場景是對資料集進行降維。降維後的資料能夠最大程度地保留原始資料的特徵(以資料協方差為衡量標準)。 pca的原理是通過構造乙個新的特徵空間,把原資料對映到這個新的低維空間裡。pca可以提高資料的計算效能,並且緩解"高維災難"。
2.1.3 基於相似度的方法
這類演算法適用於資料點的聚集程度高、離群點較少的情況。同時,因為相似度演算法通常需要對每乙個資料分別進行相應計算,所以這類演算法通常計算量大,不太適用於資料量大、維度高的資料。
基於相似度的檢測方法大致可以分為三類:
基於集群(簇)的檢測,如dbscan等聚類演算法。
聚類演算法是將資料點劃分為乙個個相對密集的「簇」,而那些不能被歸為某個簇的點,則被視作離群點。這類演算法對簇個數的選擇高度敏感,數量選擇不當可能造成較多正常值被劃為離群點或成小簇的離群點被歸為正常。因此對於每乙個資料集需要設定特定的引數,才可以保證聚類的效果,在資料集之間的通用性較差。聚類的主要目的通常是為了尋找成簇的資料,而將異常值和雜訊一同作為無價值的資料而忽略或丟棄,在專門的異常點檢測中使用較少。
聚類演算法的優缺點:
(1)能夠較好發現小簇的異常;
(2)通常用於簇的發現,而對異常值採取丟棄處理,對異常值的處理不夠友好;
(3)產生的離群點集和它們的得分可能非常依賴所用的簇的個數和資料中離群點的存在性;
(4)聚類演算法產生的簇的質量對該演算法產生的離群點的質量影響非常大。
基於距離的度量,如k近鄰演算法。
k近鄰演算法的基本思路是對每乙個點,計算其與最近k個相鄰點的距離,通過距離的大小來判斷它是否為離群點。在這裡,離群距離大小對k的取值高度敏感。如果k太小(例如1),則少量的鄰近離群點可能導致較低的離群點得分;如果k太大,則點數少於k的簇中所有的物件可能都成了離群點。為了使模型更加穩定,距離值的計算通常使用k個最近鄰的平均距離。
k近鄰演算法的優缺點:
(1)簡單;
(2)基於鄰近度的方法需要o(m2)時間,大資料集不適用;
(3)對引數的選擇敏感;
(4)不能處理具有不同密度區域的資料集,因為它使用全域性閾值,不能考慮這種密度的變化。
基於密度的度量,如lof(區域性離群因子)演算法。
區域性離群因子(lof)演算法與k近鄰類似,不同的是它以相對於其鄰居的區域性密度偏差而不是距離來進行度量。它將相鄰點之間的距離進一步轉化為「鄰域」,從而得到鄰域中點的數量(即密度),認為密度遠低於其鄰居的樣本為異常值。
lof(區域性離群因子)演算法的優缺點:
(1)給出了對離群度的定量度量;
(2)能夠很好地處理不同密度區域的資料;
(3)對引數的選擇敏感。
2.2 整合方法
整合是提高資料探勘演算法精度的常用方法。整合方法將多個演算法或多個基檢測器的輸出結合起來。其基本思想是一些演算法在某些子集上表現很好,一些演算法在其他子集上表現很好,然後整合起來使得輸出更加魯棒。整合方法與基於子空間方法有著天然的相似性,子空間與不同的點集相關,而整合方法使用基檢測器來探索不同維度的子集,將這些基學習器集合起來。
常用的整合方法有feature bagging,孤立森林等。
**feature bagging **:
與bagging法類似,只是物件是feature。
孤立森林:
孤立森林假設我們用乙個隨機超平面來切割資料空間,切一次可以生成兩個子空間。然後我們繼續用隨機超平面來切割每個子空間並迴圈,直到每個子空間只有乙個資料點為止。直觀上來講,那些具有高密度的簇需要被切很多次才會將其分離,而那些低密度的點很快就被單獨分配到乙個子空間了。孤立森林認為這些很快被孤立的點就是異常點。
用四個樣本做簡單直觀的理解,d是最早被孤立出來的,所以d最有可能是異常。
img2.3 機器學習
在有標籤的情況下,可以使用樹模型(gbdt,xgboost等)進行分類,缺點是異常檢測場景下資料標籤是不均衡的,但是利用機器學習演算法的好處是可以構造不同特徵。
3、異常檢測常用開源庫
scikit-learn:
scikit-learn是乙個python語言的開源機器學習庫。它具有各種分類,回歸和聚類演算法。也包含了一些異常檢測演算法,例如lof和孤立森林。
官網:pyod:
**python outlier detection(pyod)**是當下最流行的python異常檢測工具庫,其主要亮點包括:
包括近20種常見的異常檢測演算法,比如經典的lof/loci/abod以及最新的深度學習如對抗生成模型(gan)和整合異常檢測(outlier ensemble)
支援不同版本的python:包括2.7和3.5+;支援多種作業系統:windows,macos和linux
簡單易用且一致的api,只需要幾行**就可以完成異常檢測,方便評估大量演算法
使用jit和並行化(parallelization)進行優化,加速演算法執行及擴充套件性(scalability),可以處理大量資料
——
vertias異機恢復過程 1
說明 10.10.0.58 backupdatabase 假設此為使用中重要db 通過veritas 全庫備份至磁帶機。10.10.0.53 ctdb04 假設此為新伺服器,無資料庫。10.10.0.59 cdim veritas server軟體伺服器,windows 2000 說明 1,58資料...
十二省聯考2019 D1T1異或粽子
嘟嘟嘟 做這題之前,強烈推薦先把這道題切了p1631序列合併。這兩道題思路基本一模一樣。首先把異或處理成字首異或,然後維護乙個大根堆,每一次取出堆頂加到答案裡面,然後把堆頂所在元素的次大的異或值放進堆裡。這樣迴圈 k 次,就是答案。關鍵在於對於數 sum i 怎麼找異或第幾大。眾人皆知是建01tri...
分析修改h1標籤後出現的異象
為了進一步凸顯 關鍵詞,所以就修改了下 的h1標籤,之uynxtpktkl前的h1標籤內容是 天津 優化,seo方案策劃 劉虞seo 現在全站的h1標籤內容全部www.cppcns.com修改成 l程式設計客棧dquo 天津seo 這樣做應該不會觸及搜尋引擎的底線吧 我這樣做無疑就是為了精準突出關鍵...