關於ML.NET v0.7的釋出說明
我們很高興宣佈推出ML.NET 0.7--面向.NET開發人員的最新版本的跨平臺和開源機器學習框架(ML.NET 0.1釋出於// Build 2018)。此版本側重於為基於推薦的ML任務提供更好的支援,實現異常檢測,增強機器學習管道的可定製性,支援在x86應用程式中使用ML.NET等。
本文提供了有關ML.NET 0.7版本中以下主題的詳細資訊:
- 使用Matrix Factorization增強對推薦任務的支援
- 啟用異常檢測方案 - 檢測異常度
- 改進了ML管道的可定製性
- x86支援
- NimbusML - ML.NET的實驗性Python繫結
使用Matrix Factorization增強對推薦任務的支援
推薦系統可以為目錄,歌曲,電影等中的產品生成推薦列表。我們通過新增矩陣分解(MF)改進了對在ML.NET中建立推薦系統的支援,當您獲得有關使用者如何評價目錄中專案的資料時,這是推薦的常用方法。例如,您可能知道使用者如何評價某些電影,並希望推薦下一部他們可能觀看的其他電影。
我們將MF新增到ML.NET,因為它通常比Field-Aware Factorization Machines(我們在ML.NET 0.3中新增)明顯更快,並且它可以支援連續數字等級(例如1-5星)而不是布林值的等級(“喜歡”或“不喜歡”)。即使我們剛剛添加了MF,如果您想利用使用者分配給專案的評級之外的其他資訊(例如電影型別,電影釋出日期,使用者個人資料),您可能仍然希望使用FFM。
MF的樣品用法可在此處找到。該示例是通用的,但您可以想象矩陣行對應於使用者,矩陣列對應於電影,矩陣值對應於評級。由於使用者僅對目錄的一小部分進行了評級,因此該矩陣將非常稀疏。
ML.NET的MF使用LIBMF。
啟用異常檢測方案 - 檢測異常事件
異常檢測可以識別異常值或事件。它用於欺詐檢測(識別可疑信用卡交易)和伺服器監控(識別異常活動)等場景。
ML.NET 0.7支援檢測兩種型別的異常行為:
- 棘波檢測:棘波歸因於輸入資料的值臨時突變。由於中斷,網路攻擊,病毒式網路內容等,這些可能是異常值。
- 變化點檢測:變化點標記資料行為中更持久的偏差的開始。
可以使用不同的ML.NET元件在兩種型別的資料上檢測到這些異常:
IidSpikeDetector
並IidChangePointDetector
用於假定來自一個固定分佈的資料(每個資料點獨立於先前的資料,例如每個推文的轉發數量)。SsaSpikeDetector
並SsaChangePointDetector
用於具有季節/趨勢元件的資料(可能按時間排序,例如產品銷售)
可以在此處找到使用ML.NET異常檢測的示例程式碼。
改進了ML.NET管道的可定製性
ML.NET提供各種資料轉換(例如處理文字,影象,分類功能等)。但是,某些用例需要特定於應用程式的轉換,例如計算兩個文字列之間的餘弦相似度。我們現在添加了對自定義轉換的支援,因此您可以輕鬆地包含自定義業務邏輯。
它CustomMappingEstimator
允許您編寫自己的方法來處理資料並將它們帶入ML.NET管道。這是管道中的樣子:
var estimator = mlContext.Transforms.CustomMapping<MyInput, MyOutput>(MyLambda.MyAction, "MyLambda") .Append(...) .Append(...)
以下是此自定義對映將執行的操作的定義。在此示例中,我們將文字標籤(“spam”或“ham”)轉換為布林標籤(true或false)。
public class MyInput { public string Label { get; set; } } public class MyOutput { public bool Label { get; set; } } public class MyLambda { [Export("MyLambda")] public ITransformer MyTransformer => ML.Transforms.CustomMappingTransformer<MyInput, MyOutput>(MyAction, "MyLambda"); [Import] public MLContext ML { get; set; } public static void MyAction(MyInput input, MyOutput output) { output.Label= input.Label == "spam" ? true : false; } }
CustomMappingEstimator
可以在此處找到更完整的示例。
除了x64之外還支援x86
有了這個ML.NET版本,您現在可以在x86 / 32位架構裝置上訓練和使用機器學習模型(目前僅適用於Windows)。以前,ML.NET僅限於x64裝置(Windows,Linux和Mac)。
請注意,某些基於外部依賴關係的元件(例如TensorFlow)在x86-Windows中不可用。
NimbusML - ML.NET的實驗性Python繫結
NimbusML為ML.NET提供實驗性的Python繫結。我們已經看到外部社群和內部團隊對使用多種程式語言的反饋。我們希望儘可能多的人能夠從ML.NET中受益,並幫助團隊更輕鬆地協同工作。ML.NET不僅使資料科學家能夠在Python中訓練和使用機器學習模型(也可以在scikit-learn管道中使用元件),而且還可以通過ML.NET儲存可以在.NET應用程式中輕鬆使用的模型。(有關詳細資訊,請參見此處)。