機器學習(四) 異常檢測

2021-09-23 23:54:11 字數 1981 閱讀 5261

機器學習中的異常檢測分為兩種,一種是無監督的異常檢測,另一種為有監督的異常檢測。無監督的異常檢測即在沒有標籤的情況下,演算法從一堆資料點中,挑選出其認為不正常的資料點。而有監督的異常檢測為在對訓練集提前設定好標籤的前提下,演算法對其進行劃分。

異常檢測演算法可以應用於發動機的挑選中,假設乙個廠家生產了一系列發動機,然後根據其不同的特徵值將每個發動機畫在座標圖中,使用演算法對其進行處理,從而找出異常點。異常點即有可能為出現故障的乙個。分類結果如下圖所示

異常檢測主要依靠高斯分布來實現。通過計算資料的均值以及方差來確認資料的集中區域,資料集中區域的概率高,不集中的地方概率低。高斯分布如下圖所示

其中,中間值為均值,高斯分布的胖瘦為方差。右圖可知,越靠近均值的資料的概率越高,越偏離均值的資料的概率越低。因此,通過對每乙個特徵進行高斯分布,分別求資料點在每個特徵的概率並相加,從而求該資料點的最終概率。

其公式如下所示:

均值:方差:

概率:當該點的總概率p大於某乙個閾值e時,即判斷該點為有效點,正常點。反之則不正常。

首先是均值以及方差的計算,其中x為資料集。

function [mu sigma2] = estimategaussian(x)

% useful variables

[m, n] = size(x);

% you should return these values correctly

mu = zeros(n, 1);

sigma2 = zeros(n, 1);

sum = 0;

for i = 1:n

for j = 1:m

sum = sum + x(j, i);

endmu(i, 1) = sum ./ m;

sum = 0;

endfor i = 1:n

for j = 1:m

a = ( x(j,i) - mu(i,1) ) .^ 2;

sum = sum + a;

endsigma2(i,1) = sum ./ m;

sum = 0;

end

其次是閾值e的確定,一下**中,迴圈更新e,對於每個e都計算其得分f1,得分越高證明這個e越有效。

function [bestepsilon bestf1] = selectthreshold(yval, pval)

bestepsilon = 0;

bestf1 = 0;

f1 = 0;

stepsize = (max(pval) - min(pval)) / 1000;

for epsilon = min(pval):stepsize:max(pval)

cvpredictions = (pval < epsilon);

fp = sum((cvpredictions == 0) & (yval == 1));

tp = sum((cvpredictions == 1) & (yval == 1));

fn = sum((cvpredictions == 1) & (yval == 0));

prec = tp ./ (tp + fp);

rec = tp ./ (tp + fn);

f1 = 2 .* prec .* rec ./ (prec + rec);

if f1 > bestf1

bestf1 = f1;

bestepsilon = epsilon;

endendend

最後呈現效果如下

機器學習之異常檢測

異常檢測 anomaly detection 根據輸入資料,對不符合預期模式的資料進行識別 概率密度 描述隨機變數在某個確定的取值點附近的可能性的函式 當資料維度高於一維時 同理,根據資料點概率,進行判斷,如果p x 該點為異常點 資料分布統計 plt.hist x1,bins 100 計算資料均值...

機器學習 異常值檢測

在生產生活中,由於裝置的誤差或者人為操作失當,產品難免會出現錯誤。然後檢查錯誤對人來說又是乙個十分瑣碎的事情。利用機器學習進行異常值檢測可以讓人類擺脫檢錯的煩惱。sum limits m sum limits m p x prod limits n sigma j 2 異常檢測演算法是乙個非監督學習...

機器學習 異常檢測演算法

異常檢測應用在工業檢測 賬戶行為監測等領域。問題特點 異常檢測問題,往往更多使用無監督的演算法建模,再結合標定的驗證集用於切閾值。異常檢測的兩類常用方法 本文案例 資料集 電腦開機引數,包含兩個特徵 訓練集和驗證集的圖示如 演算法教程參見吳恩達 機器學習 異常檢測。基本的假定是 資料中的每個特徵數值...