摘要:亞馬遜提出的deepar演算法基於seq2seq模型對單維時間序列進行建模、**,基於**結果對時間序列中的異常點進行識別,但這種方法不適用於多維度的時間序列建模。在利用iot+ai對現實世界中的物理裝置進行異常檢測的過程中,乙個裝置的運轉/健康狀態往往是由一系列指標共同決定的,指標之間並非相互獨立的關係。本文吸收deepar演算法的概率建模思想,以電機裝置為例,提出乙個對多維度指標進行異常檢測的神經網路演算法。
主要原理:
1、使用編碼器將多維度時間序列編碼為乙個語義向量,編碼器可以是乙個lstm網路或者卷積網路;
2、解碼器(乙個mlp)對該向量進行解碼,將其對映為兩個引數,分別是:當前時刻多維指標的均值向量和協方差矩陣,這兩個引數表徵了乙個多維高斯分布;
3、概率層攝取高斯分布的引數,計算當前時刻裝置狀態的概率密度的負對數,通常認為異常狀態所對應的概率密度值應遠小於正常狀態,因此通過為該輸出設定閾值,即可用於異常檢測;
4、訓練過程,只需最小化模型輸出即可;
通過輸出多維高斯分布的均值向量和協方差矩陣對裝置狀態的概率密度進行刻畫,面臨的乙個數學問題是,協方差矩陣必須為對稱正定矩陣,如果直接通過mlp將語義向量對映為乙個方陣,則無法滿足對稱正定約束,也無法訓練。
解決這個問題的方法為cholesky分解,對稱正定矩陣總是可以分解為乙個對角線元素全為正的上/下三角矩陣及其轉置的乘積,反之也成立。
因此,我們在解碼器層,不直接輸出協方差矩陣,而是輸出precision矩陣(協方差矩陣的逆)的cholesky分解,並保證cholesky分解的對角線元素大於0即可(softplus),進一步可計算得到precision矩陣。
我們仍然使用乙個mlp(cov_net)將輸入對映為乙個方陣,但是只用其上三角部分,並對對角線部分作softplus轉換,保證其非負性,作為precision矩陣的cholesky分解。
在概率層,協方差矩陣行列式的計算,可直接使用cholesky分解的對角線乘積的平方即可。
然後,在概率層計算真實資料的負對數似然。
最後模型的優化,只需最小化模型輸出即可,通過自定義以下損失函式,訓練時將truth設定為0即可達到優化的目的。
與deepar演算法的比較:
1、deepar針對單維度時間序列進行建模,本演算法針對多維序列進行建模;
2、deepar是乙個seq2seq模型,本演算法也是encoder-decoder架構,但是只對單點進行建模;
3、deepar輸出時間序列的**值,本演算法輸出的是資料的負對數似然,即本演算法將deepar中概率計算過程從loss拿到了概率層;
4、異常檢測方式:deepar使用ancestral sampling重複多次取樣,通過計算取樣值的上下百分位數作為異常檢測的邊界,這樣的方法存在兩個問題:誤差累積和計算量大;針對多維資料,無法採用這樣的方式,因為多維空間要比一維空間稀疏得多,要想用一系列取樣值來表徵乙個多維分布,樣本量必須充分大,這在計算上是不可行的,因此本演算法採用單步**方式,避免了取樣帶來的問題。
5、deepar向前**時間序列的未來值,本演算法在給定序列值的前提下計算其「合理性」;
6、deepar要求序列未來時刻的協變數是必須是可預知的,本演算法無此要求。
以下為將本演算法應用於實時電機異常檢測的整體過程。
總體流程:
詳細過程:
原理:
其中,z代表要建模的目標變數,x代表協變數,下標代表時刻。
主要步驟如下:
對實時電機狀態資料流進行特徵提取,如三相電流和、day of week、hour of day等;
特徵提取後,對電機狀態資料流進行快取,獲得長度為k的電機狀態時序資料,時序資料中既包含了電機的當前時刻狀態,也包含了電機的歷史狀態資料;
將電機狀態時序資料劃分為目標變數序列zt-k: t和協變數序列xt-k: t。目標變數指要對其進行建模的變數,表徵了電機的健康狀態,可以包括電機溫度、電機震動、鏈條震動、三相電流等;協變數表示電機當前所處的工作模式等非指示電機健康狀態的變數,可以包括r位置值、day of week、hour of day等;
將序列資料轉換為待**的目標資料zt和上下文序列資料;
編碼器基於一維卷積神經網路,將待檢測的當前時刻電機狀態的上下文序列資料編碼為乙個一維向量encoded;
解碼器包含兩個全連線神經網路,分別負責將編碼器的輸出encoded解碼為乙個概率分布的位置引數和形狀引數,對本文而言,使用多維高斯分布對電機狀態進行建模,解碼器的輸出為多維高斯分布的均值向量miu和協方差矩陣covariance;
概率層以解碼器的輸出作為概率分布引數,建立當前時刻電機狀態的多維高斯概率分布gaussian;
計算電機當前時刻目標變數實際值的概率密度的負對數p;
概率層輸出的概率密度p和閾值t比較,超出閾值則判定為異常,否則判定為正常;
原理框圖如下,其中各個變數的含義為:
x:協變數
z:目標變數,也即要進行概率建模的變數
t:當前時刻
k:序列長度
encoded:對序列的編碼
miu:高斯分布的均值向量
covariance:高斯分布的協方差矩陣
gaussian:高斯分布表示的概率層
p:目標變數概率密度的負對數
基於pandas的時間序列處理方法
importpandasaspd importnumpyasnp 生成時間序列 rng pd.date range 2016 1 1 periods 20,freq d time pd.series np.random.rand 20 index rng print time 過濾資料 time.t...
基於python的異方差檢驗 講講異方差的檢驗
我們前面講了異方差,也講了怎麼用圖示法來判斷是否有異方差,這一篇來講講怎麼用統計的方法來判斷有沒有異方差。關於檢驗異方差的統計方法有很多,我們這一節只講比較普遍且比較常用的white test 懷特檢驗 假設現在我們做了如下的回歸方程 如果要用懷特檢驗檢驗上述方程有沒有異方差,主要分以下幾個步驟 1...
概率論中的建模思想
概念 樣本空間 隨機試驗e的所有基本結果組成的集合稱為樣本空間。隨機事件 隨機試驗e中的樣本空間的子集稱為e的隨機事件,簡稱為事件。基本事件 由乙個樣本點組成的單點集,稱為基本事件。以上概念是概率論中基本的概念。1 發現問題 隨機事件中有些是直接用數量來標識的,有的則不是用數量來標識的。要想更深入地...