微軟發布了 ML.NET 0.7,此版本側重於為基於推薦的機器學習任務提供更好的支持,主要實現了異常檢測、增強了機器學習 pipeline 的可定製性,並且支持在 x86 應用程式中使用等。
ML.NET 是一個跨平臺的機器學習框架,旨在讓 .NET 開發者更快上手機器學習,它允許 .NET 開發者開發他們自己的模型,並將自定義 ML 注入到應用程式中。
0.7 主要更新內容:
使用 Matrix Factorization 增強對推薦任務的支持
推薦系統可以為目錄、歌曲、電影等中的產品生成推薦列表,通過添加矩陣分解(Matrix Factorization,MF)改進了對在 ML.NET 中創建推薦系統的支持。MF 通常情況下比 ML.NET 0.3 中引入的 Field-Aware Factorization Machines 明顯更快,並且它可以支持連續數字等級(例如 1-5 星)而不是布爾值的等級(「喜歡」或「不喜歡」)。
啟用異常檢測方案
異常檢測用於欺詐檢測(識別可疑信用卡交易)和伺服器監控(識別異常活動)等場景。
ML.NET 0.7 支持檢測兩種類型的異常行為:
改進了 ML.NET pipeline 的可定製性
ML.NET 提供各種數據轉換(例如處理文本、圖像、分類特徵等)。但是,某些用例需要特定於應用程式的轉換,例如計算兩個文本列之間的餘弦相似度。0.7 中添加了對自定義轉換的支持,可以輕鬆地包含自定義業務邏輯。
CustomMappingEstimator 用於編寫自己的方法以處理數據並將它們帶入 ML.NET pipeline:
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; }}
支持 x86
ML.NET 此前僅限於 x64 設備,0.7 將其引入了 x86 32 位設備,不過需要注意,某些基於外部依賴項的組件(例如 TensorFlow)在 x86 中將不可用。
詳情見發布公告。