
異常值檢測一般要求新發(fā)現(xiàn)的數(shù)據(jù)是否與現(xiàn)有觀測數(shù)據(jù)具有相同的分布或者不同的分布,相同的分布可以稱之為內(nèi)點(inlier),具有不同分布的點可以稱之為離群值。離群點和新奇點檢測是不同的,有一個重要的區(qū)分必須掌握:
離群點檢測:訓練數(shù)據(jù)包含離群點,這些離群點被定義為遠離其它內(nèi)點的觀察值。因此,離群點檢測估計器會嘗試擬合出訓練數(shù)據(jù)中內(nèi)圍點聚集的區(qū)域, 而忽略異常值觀察。
新奇點檢測:訓練數(shù)據(jù)沒有受到離群點污染,我們感興趣的是檢測一個新的觀測值是否為離群點。在這種情況下,離群點被認為是新奇點。
離群點檢測和新奇點檢測都用于異常檢測, 其中一項感興趣的是檢測異?;虍惓S^察。離群點檢測又被稱之為無監(jiān)督異常檢測,新奇點檢測又被稱之為半監(jiān)督異常檢測。 在離群點檢測的背景下, 離群點/異常點不能夠形成密集的簇,因為可用的估計器假設離群點/異常點位于低密度區(qū)域。相反的,在新奇點檢測的背景下, 新奇點/異常點只要位于訓練數(shù)據(jù)的低密度區(qū)域,是可以形成稠密聚類簇的,在此背景下被認為是正常的。
scikit-learn有一套機器學習工具estimator.fit(X_train),可用于新奇點或離群值檢測。然后可以使用estimator.predict(X_test)方法將新觀察值分類為離群點或內(nèi)點 :內(nèi)圍點會被標記為1,而離群點標記為-1。
離群點檢測方法總結
下面的例子展示了二維數(shù)據(jù)集上不同異常檢測算法的特點。數(shù)據(jù)集包含一種或兩種模式(高密度區(qū)域),以說明算法處理多模式數(shù)據(jù)的能力。
對于每個數(shù)據(jù)集,產(chǎn)生15%的樣本作為隨機均勻噪聲。這個比例是給予OneClassSVM的nu參數(shù)和其他離群點檢測算法的污染參數(shù)的值。由于局部離群因子(LOF)用于離群值檢測時沒有對新數(shù)據(jù)應用的預測方法,因此除了局部離群值因子(LOF)外,inliers和離群值之間的決策邊界以黑色顯示。
sklearn.svm。一個已知的eclasssvm對異常值很敏感,因此在異常值檢測方面表現(xiàn)不太好。該估計器最適合在訓練集沒有異常值的情況下進行新穎性檢測。也就是說,在高維的離群點檢測,或者在不對嵌入數(shù)據(jù)的分布做任何假設的情況下,一個類支持向量機可能在這些情況下給出有用的結果,這取決于它的超參數(shù)的值。
sklearn.covariance。橢圓包絡假設數(shù)據(jù)是高斯分布,并學習一個橢圓。因此,當數(shù)據(jù)不是單峰時,它就會退化。但是請注意,這個估計器對異常值是穩(wěn)健的。
sklearn.ensemble。IsolationForest sklearn.neighbors。LocalOutlierFactor對于多模態(tài)數(shù)據(jù)集似乎表現(xiàn)得相當好。sklearn的優(yōu)勢。第三個數(shù)據(jù)集的局部離群因子超過其他估計顯示,其中兩種模式有不同的密度。這種優(yōu)勢是由LOF的局域性來解釋的,即它只比較一個樣本的異常分數(shù)與其相鄰樣本的異常分數(shù)。
最后,對于最后一個數(shù)據(jù)集,很難說一個樣本比另一個樣本更反常,因為它們是均勻分布在超立方體中。除了sklearn。svm。有一點過度擬合的支持向量機,所有的估計器都對這種情況給出了合適的解決方案。在這種情況下,明智的做法是更密切地觀察樣本的異常分數(shù),因為一個好的估計器應該給所有樣本分配相似的分數(shù)。
雖然這些例子給出了一些關于算法的直覺,但這種直覺可能不適用于非常高維的數(shù)據(jù)。
最后,請注意,模型的參數(shù)在這里是精心挑選的,但在實踐中需要進行調(diào)整。在沒有標記數(shù)據(jù)的情況下,這個問題是完全無監(jiān)督的,因此模型的選擇是一個挑戰(zhàn)。
# Author: Alexandre Gramfort <alexandre.gramfort@inria.fr> # Albert Thomas <albert.thomas@telecom-paristech.fr> # License: BSD 3 clause import time import numpy as np import matplotlib import matplotlib.pyplot as plt from sklearn import svm from sklearn.datasets import make_moons, make_blobs from sklearn.covariance import EllipticEnvelope from sklearn.ensemble import IsolationForest from sklearn.neighbors import LocalOutlierFactor print(__doc__) matplotlib.rcParams['contour.negative_linestyle'] = 'solid' # Example settings n_samples = 300 outliers_fraction = 0.15 n_outliers = int(outliers_fraction * n_samples) n_inliers = n_samples - n_outliers # define outlier/anomaly detection methods to be compared anomaly_algorithms = [ ("Robust covariance", EllipticEnvelope(contamination=outliers_fraction)), ("One-Class SVM", svm.OneClassSVM(nu=outliers_fraction, kernel="rbf", gamma=0.1)), ("Isolation Forest", IsolationForest(contamination=outliers_fraction, random_state=42)), ("Local Outlier Factor", LocalOutlierFactor( n_neighbors=35, contamination=outliers_fraction))] # Define datasets blobs_params = dict(random_state=0, n_samples=n_inliers, n_features=2) datasets = [ make_blobs(centers=[[0, 0], [0, 0]], cluster_std=0.5, **blobs_params)[0], make_blobs(centers=[[2, 2], [-2, -2]], cluster_std=[0.5, 0.5], **blobs_params)[0], make_blobs(centers=[[2, 2], [-2, -2]], cluster_std=[1.5, .3], **blobs_params)[0], 4. * (make_moons(n_samples=n_samples, noise=.05, random_state=0)[0] - np.array([0.5, 0.25])), 14. * (np.random.RandomState(42).rand(n_samples, 2) - 0.5)] # Compare given classifiers under given settings xx, yy = np.meshgrid(np.linspace(-7, 7, 150), np.linspace(-7, 7, 150)) plt.figure(figsize=(len(anomaly_algorithms) * 2 + 3, 12.5)) plt.subplots_adjust(left=.02, right=.98, bottom=.001, top=.96, wspace=.05, hspace=.01) plot_num = 1 rng = np.random.RandomState(42) for i_dataset, X in enumerate(datasets): # Add outliers X = np.concatenate([X, rng.uniform(low=-6, high=6, size=(n_outliers, 2))], axis=0) for name, algorithm in anomaly_algorithms: t0 = time.time() algorithm.fit(X) t1 = time.time() plt.subplot(len(datasets), len(anomaly_algorithms), plot_num) if i_dataset == 0: plt.title(name, size=18) # fit the data and tag outliers if name == "Local Outlier Factor": y_pred = algorithm.fit_predict(X) else: y_pred = algorithm.fit(X).predict(X) # plot the levels lines and the points if name != "Local Outlier Factor": # LOF does not implement predict Z = algorithm.predict(np.c_[xx.ravel(), yy.ravel()]) Z = Z.reshape(xx.shape) plt.contour(xx, yy, Z, levels=[0], linewidths=2, colors='black') colors = np.array(['#377eb8', '#ff7f00']) plt.scatter(X[:, 0], X[:, 1], s=10, color=colors[(y_pred + 1) // 2]) plt.xlim(-7, 7) plt.ylim(-7, 7) plt.xticks(()) plt.yticks(()) plt.text(.99, .01, ('%.2fs' % (t1 - t0)).lstrip('0'), transform=plt.gca().transAxes, size=15, horizontalalignment='right') plot_num += 1 plt.show()
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關鍵? 在循環(huán)神經(jīng)網(wǎng)絡(RNN)家族中,長短期記憶網(wǎng)絡(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認 ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預測分析中的應用:從數(shù)據(jù)查詢到趨勢預判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準 ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領域中,準確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認證作為國內(nèi)權威的數(shù)據(jù)分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應對策略? 長短期記憶網(wǎng)絡(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學方法在市場調(diào)研數(shù)據(jù)中的深度應用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準確性的基礎 ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03