異常檢測旨在從數據中發(fā)現(xiàn)與預期行為不符的模式。決策者必須能發(fā)現(xiàn)異常,并在需要時提前采取應對措施。以油氣行業(yè)為例,深水鉆機和各類設備必須由數百種傳感器密切監(jiān)控,并以不同頻率和格式傳輸各種類型的測量結果。然而傳統(tǒng)軟件平臺很難對其進行分析或可視化,而任何由于未能檢測到異常情況導致深水鉆井平臺不能按照預期工作的問題都會造成巨大的經濟損失。
企業(yè)需要諸如Azure IoT、Azure Stream Analytics、Azure Data Explorer以及機器學習等新技術來攝取和處理數據,并將其轉換為戰(zhàn)略性的商業(yè)智能,借此改善探索和生產,提高制造效率,保障人員和環(huán)境安全。這些托管服務還可以幫助客戶大幅縮短軟件開發(fā)時間,加快產品上市速度,提供成本效益,實現(xiàn)更高的可用性和可擴展性。
雖然Azure平臺提供了豐富的異常檢測能力,客戶可以選擇最能滿足自己需求的服務,但很多客戶在實踐運用中依然會產生一些問題,例如每種解決方案最適合哪些用例。下文將揭示這些問題的答案,但首先需要明確一些定義:
時序(Time series)是什么?時序是按照時間順序索引在一起的一系列數據點。在油氣行業(yè),大部分設備或傳感器讀數都是這種按照連續(xù)時點或深度點獲取的數據。
疊加時序的分解又是什么?分解(Decomposition)是指將一個時序拆分為類似下圖所示多個組件的操作。
時序預測和異常檢測
異常檢測是指找出與大部分數據集存在顯著不同觀測值的過程。
這是一個利用Azure Data Explorer進行異常檢測的范例
紅線是原始時序。
藍線是基準(季節(jié)+趨勢)組件。
紫色點是原始時序基礎上的異常點。
為了檢測異常,可以使用Azure Stream Analytics或Azure Data Explorer進行實時分析并檢測,如下圖所示。
Azure Stream Analytics是一種面向關鍵業(yè)務工作負載設計的,簡單易用的實時分析服務。我們只需點擊幾次鼠標即可構建出端到端的Serverless流處理管道,使用SQL在幾分鐘內從零開始將其投入生產應用,或使用自定義代碼對其進行擴展并通過內置的機器學習能力將其用于其他高級場景。
https://azure.microsoft.com/en-us/services/stream-analytics/
Azure Data Explorer是一個快速、完全托管的數據分析服務,可用于對來自應用程序、網站、IoT設備等來源的海量數據流進行近乎實時的分析。我們可以提出問題,并以迭代的方式即時探索數據,借此改善產品,改進客戶體驗,監(jiān)控設備,促進運維,從數據中快速發(fā)現(xiàn)模式、異常和趨勢。
https://azure.microsoft.com/en-us/services/data-explorer/
選擇Azure Stream Analytics還是Azure Data Explorer?
用例
Stream Analytics適用于持續(xù)的或流式的實時分析,它提供的聚合函數可支持跳轉(Hopping)、滑動(Sliding)、翻轉(Tumbling)或會話(Session)窗口。但如果你希望用JavaScript或C#之外的語言編寫自己的UDF或UDA,或如果你的解決方案位于多種云或本地環(huán)境中,那么它可能并不適合你。
Data Explorer適用于按需或交互式近實時分析,針對海量數據流進行數據探索,季節(jié)性分解,即席工作,儀表板,以及從近實時數據或歷史數據進行根本原因分析。如果需要將分析能力部署在邊緣,那么它并不適合你。
預測
我們可以通過設置讓Stream Analytics作業(yè)與Azure Machine Learning Studio集成。
https://docs.microsoft.com/zh-cn/azure/stream-analytics/stream-analytics-machine-learning-integration-tutorial
Data Explorer提供了根據相同分解模型預測時序的原生功能。這樣的預測能力適合很多場景,例如預防式維護、資源規(guī)劃等。
季節(jié)性
Stream Analytics不能支持季節(jié)性,對滑動窗口大小的支持也較為有限。
Data Explorer則提供了在時序內自動檢測周期的功能,或者我們可以將其用于驗證某個指標應具備特定的不同周期(前提是我們知道這些周期的存在)。
分解
Stream Analytics不支持分解。
Data Explorer可以獲取一系列時序并自動將每個時序分解為季節(jié)性、趨勢、殘存以及基線組件。
篩選和分析
Stream Analytics可以檢測峰谷或變化點。
Data Explorer提供的分析能力可以從一系列時序中找出異常點,并能在檢測到異常后進行根本原因分析(RCA)。
篩選
Stream Analytics提供了可包含參考數據、慢速移動或靜態(tài)數據的篩選器。
Data Explorer則提供了兩種常規(guī)功能:
有限沖激響應(Finite impulse response,F(xiàn)IR),可用于移動平均線、分化和形狀匹配。
無限沖激響應(Infinite impulse response,IIR),可用于指數平滑和累積總和。
異常檢測
Stream Analytics提供了下列檢測:
峰谷(臨時異常)
變動點(持久異常,例如水平或趨勢的變化)
Data Explorer提供了下列檢測:
基于增強型季節(jié)性分解模型的峰谷(支持自動化季節(jié)性檢測,以及訓練數據中異?,F(xiàn)象的健壯性)。
分段線性回歸的變動點(水平偏移、趨勢變化)。
通過KQL內聯(lián)Python/R插件實現(xiàn)與借助Python或R實現(xiàn)的其他模型的擴展性。
下一步?
總的來說,Azure Data Analytics能夠為每種類型的工作負載提供最適合的技術。新增的實時分析架構(參閱上文示意圖)可供我們?yōu)槊款惞ぷ髫撦d使用最適合的技術進行流式分析或時序分析,包括進行異常檢測。下列資源可以幫你進一步了解這些功能:
如果還未進行,請通過這個GitHub代碼庫了解Azure Stream Analytics異常檢測。
https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/stream-analytics/stream-analytics-machine-learning-anomaly-detection.md
通過這個GitHub代碼庫了解Azure Data Explorer異常檢測和預測以及Azure Data Explorer時序分析。
https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/data-explorer/anomaly-detection.md
https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/data-explorer/time-series-analysis.md
Azure Stream Analytics異常檢測概述。
https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-machine-learning-anomaly-detection
Azure Data Explorer異常檢測和預測概述。
https://docs.microsoft.com/en-us/azure/data-explorer/anomaly-detection
https://docs.microsoft.com/en-us/azure/data-explorer/anomaly-detection
Azure Data Explorer時序分析文檔和這篇博客文章。
https://docs.microsoft.com/en-us/azure/data-explorer/time-series-analysis
https://azure.microsoft.com/en-us/blog/time-series-analysis-in-azure-data-explorer/
Kusto查詢語言文檔和時序分析
https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/machine-learning-and-tsa