如何在Azure machine learning中使用異常檢測

正如Azure最新的機器學習服務所顯示的那樣,機器學習已不再僅僅是關乎視覺和語音。

微軟在機器學習上押下重注的一個關鍵部分是,這些技術需要被民主化,並且能夠轉變為相對容易理解的構建塊,以便微軟的開發人員能夠快速學習並在自己的應用程序中進行使用。

這就是Azure認知服務的用武之地。這些服務不需要用戶瞭解ResNet50深度學習神經網絡的訓練層次,也不需要了解如何使用TensorFlow或Microsoft Cognitive Toolkit (CNTK)來構建學習平臺,而僅僅只需要使用API即可。微軟已經為這些服務訓練了神經網絡,並將繼續對它們進行優化,還將真實世界的操作用來作為未來改進的基礎。與構建和運行您自己的機器學習算法的計算和存儲成本相比,它們的使用成本則相對低廉。

Azure上的機器學習工具已迅速成為了任何想要嚮應用程序添加基本人工智能的人的重要資源。需要注意的是它們的使用範圍依然是有限的,其重點放在了以下三個關鍵領域:計算機視覺、文本分析和語音識別。它們都是重要的領域,但它們也只是現代機器學習的一個有限子集而已。

Azure認知服務進入了一個新的AI領域

幸運的是,第一個探索機器學習在其他方面應用的新認知服務也在最近進入了測試階段:將異常檢測添加到了功能集中。異常檢測是一種重要的人工智能工具,用於分析在數據源正常運行特徵之外的時間序列數據。這使得它成為了一個非常靈活的工具,因為現代企業擁有大量的流數據,從金融交易到軟件日誌再到設備遙測。顯然,你不應低估使用一個API就可以在所有這些不同的數據源中工作的能力,因為它使構建適當的軟件變得更加容易了。

正常情況下,異常檢測需要足夠的時間來設置。您需要使用大量數據來對您的模型進行訓練,以確定什麼是正常操作,什麼是異常操作。這就是信用卡欺詐檢測系統是如何建立一個你的消費(以及他們所有客戶的習慣)模型,以檢測何時使用了被洩密了的卡片,並阻止任何未來的交易,將損失降到最低的。

如果要使這種類型的操作成為通用服務,就需要能夠為發送到服務的數據類型切換合適的檢測模型。這正是Azure認知服務異常檢測器所採用的方法,它能夠使用一個自適應推理引擎來選擇一個適合當前時間序列數據的檢測模型。

通過在運行時選擇算法,微軟繞過了異常檢測訓練成本中最糟糕的部分。可能它使用的算法並不完美,但是它將比使用一個通用規則引擎來處理異常檢測要好得多。還有一個額外的好處:您不必花費大量的時間來標記千兆字節的訓練數據了。

構建異常檢測應用程序

與所有Azure認知服務一樣,異常檢測器也需要一個訂閱密鑰,該密鑰可以在Azure門戶中生成,連同你的訂閱端點URL。微軟還提供了一個運行在Jupyternotebook上的演示服務,您可以使用它在使用您自己的代碼和數據之前快速試用該服務。

實際上,您將通過異步函數來向服務端發送JSON格式的數據。如果您正在處理流數據,您可以在每次更新時發送一個時間序列數據的移動窗口,並檢測序列中最後一段數據的異常情況。如果您使用它來分析批處理數據,那麼您將得到數據集中已標識的異常位置的列表,其中保存著每個數據點的布爾值數組。如果為true,則表示異常,您可以使用任何true值所對應的索引來作為您所提供的源數據數組中異常的索引。

使用時間序列數據

異常檢測器的工作原理與大多數Azure平臺服務類似,它提供了一個REST API來接收JSON格式的數據。使用C# SDK可以更容易地構建代碼來使用該服務;您也可以使用其他語言,但這樣你就需要手工來構建REST調用。

微軟對數據格式也有一些限制:數據之間的時間間隔必須是固定的,雖然系統可以接受丟失最多10%預期點的數據,但最好確保您的數據是完整的。如果要交付具有清晰模式的數據,則批處理中的數據點的數量可能會有所不同。數據集中至少需要有12個點,最多8,640個點,時間戳使用UTC格式。

您不僅限於在流數據上使用異常檢測器;如果使用時間序列數據庫來記錄數據,那麼你也可以在所有數據上以批處理的方式運行它,但這可能意味著要發送大量的數據。這種方法可以幫助識別過去可能被忽略的問題,例如發現不正常的金融交易,這些交易是出現欺詐的指標,或是可能影響整體生產力的機器的持續問題。在歷史數據上運行它可以幫助您獲得所需的信息,以便對您所使用的算法進行微調,從而使其更有可能發現您特定業務中的問題。

調整異常檢測器

關於異常檢測API需要注意的一點是:它與其他的認知服務有所不同,因為您可以調整它處理數據的方式。作為JSON請求的一部分,您可以指定數據週期的詳細信息、它的粒度以及兩個微調算法敏感性的選項。其中一個是maxAnomalyRatio,它被用來幫助識別數據點是否出現了異常。另一個則是sensitivity,幫助調整算法的邊際值;數值越低,邊緣越大,異常檢測的靈敏度則越低。

您的應用程序中可能有大量的時間序列數據,而且通常很難從中提取價值。通過添加一點機器學習,您就可以開始查看那些不符合正常模式的內容了,然後使用這些信息構建適當的響應。

這就是為什麼使用像Jupyter Notebook這樣的工具來探索結果,並在將其構建為代碼之前對檢測器進行調優是一個好主意的原因了。您首先需要查看發生了什麼異常,並且能夠將它們與需要管理的事件聯繫起來。通過使用交互式筆記本和歷史數據,您可以從中找到適當的相關性,從而幫助您設計應用程序,以使用接近實時的異常檢測來交付您可以理解的結果。這時您就可以開始使用異常檢測API來獲得真正的業務價值了。

相關推薦

推薦中...