清華 阿里巴巴開源的週期型 Donut

2021-09-29 06:12:37 字數 1410 閱讀 3703

原始碼github

在智慧型運維領域中,由於缺少異常樣本,有監督方法的使用場景受限。因此,如何利用無監督方法對海量kpi進行異常檢測是我們在智慧型運維領域探索的方向之一。

vae跟autoencoder在網路整體結構上相似,都分為encoder和decoder模型。在autoencoder模型的思想中,我們期望能夠利用encoder模型,將我們的輸入x轉換到乙個對應的z,利用decoder模型,我們能夠將z還原為原來的x,可以把autoencoder理解為有損的壓縮與解壓。

autoencoder模型有什麼用呢?有兩個主要功能:

input

= input(shape=

(seq_len,))

encoded = dense(encoding_dim, activation=

'relu')(

input

) decoded = dense(seq_len)

(encoded)

autoencoder = model(

input

, decoded)

autoencoder 其實是增強的 pca:autoencoder 具有非線性變換單元,因此學出來的 code 可能更精煉,對 input 的表達能力更強

因為autoencoder具有降噪的功能,那它理論上也有過濾異常點的能力,因此我們可以考慮是否可以用autoencoder對原始輸入進行重構,將重構後的結果與原始輸入進行對比,在某些點上相差特別大的話,我們可以認為原始輸入在這個時間點上是乙個異常點。

然而,autoencoder模型本身沒有什麼多少正則化手段,容易過擬合,當訓練資料存在較多異常點的時候,可能模型的效果就不會特別好,而我們要做的是無監督異常檢測(要是有label的話就用有監督模型了),因此我們的場景是訓練的時候允許資料存在少量異常值的,但當異常值佔比較大的話,autoencoder可能會過擬合(學習到異常模式)

原理可參考:vae

上面介紹了vae的原理,看起來很複雜,其實最終vae也實現了跟autoencoder類似的作用,輸入乙個序列,得到乙個隱變數(從隱變數的分布中取樣得到),然後將隱變數重構成原始輸入。不同的是,vae學習到的是隱變數的分布(允許隱變數存在一定的雜訊和隨機性),因此可以具有類似正則化防止過擬合的作用。

異常檢測是一樣的,使用重構誤差來判斷異常。

理論上它只能對乙個kpi訓練單獨乙個模型,不同型別的kpi需要使用不同的模型,可以參考文章rocka,先對不同的kpi進行模板提取,然後進行聚類,對每個類訓練單獨乙個模型。

需要設定異常閾值。因為我們檢測異常是通過對比重構後的結果與原始輸入的差距,而這個差距多少就算是異常需要人為定義,然而對於大量的不同型別的kpi,我們很難去統一設定閾值,這也是採用vae模型比較大的乙個缺陷。雖然在dount**中,採用的是重構概率而不是重構誤差來判斷異常,然而重構概率也需要設定閾值才能得到比較精確的結果。

學習阿里巴巴開源專案dubbo

1.dubbo使用場景 高併發,高訪問量的移動網際網路或物聯網。京東,阿里巴巴等都在使用它。它是乙個分布式服務框架,致力於提供高效能和透明化的rpc遠端服務呼叫方案,以及soa服務治理方案.不適合大檔案的傳輸。2.支援協議 1 dubbo service 穩定,適合小資料量傳輸,大字串和檔案不適合 ...

阿里巴巴開源平台新增專案Druid

阿里巴巴開源平台新增專案druid druid是什麼?druid是乙個jdbc元件,它包括三部分 druiddriver driver,能夠提供基於filter chain模式的外掛程式體系。druiddatasource 高效可管理的資料庫連線池。sqlparser druid可以做什麼?1 可以...

Druid 與 阿里巴巴開源專案Druid

druid 單詞 於西方古羅馬的神話人物,中文常常翻譯成德魯伊。本問介紹的druid 是乙個分布式的支援實時分析的資料儲存系統 data store 美國廣告技術公司metamarkets 於2011 年建立了druid 專案,並且於2012 年晚期開源了druid 專案。druid 設計之初的想法...