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