咱們很高興宣佈推出ML.NET 0.7--面向.NET開發人員的最新版本的跨平臺和開源機器學習框架(ML.NET 0.1發佈於// Build 2018)。此版本側重於爲基於推薦的ML任務提供更好的支持,實現異常檢測,加強機器學習管道的可定製性,支持在x86應用程序中使用ML.NET等。ios
本文提供了有關ML.NET 0.7版本中如下主題的詳細信息:git
推薦系統能夠爲目錄,歌曲,電影等中的產品生成推薦列表。咱們經過添加矩陣分解(MF)改進了對在ML.NET中建立推薦系統的支持,當您得到有關用戶如何評價目錄中項目的數據時,這是推薦的經常使用方法。例如,您可能知道用戶如何評價某些電影,並但願推薦下一部他們可能觀看的其餘電影。github
咱們將MF添加到ML.NET,由於它一般比Field-Aware Factorization Machines(咱們在ML.NET 0.3中添加)明顯更快,而且它能夠支持連續數字等級(例如1-5星)而不是布爾值的等級(「喜歡」或「不喜歡」)。即便咱們剛剛添加了MF,若是您想利用用戶分配給項目的評級以外的其餘信息(例如電影類型,電影發佈日期,用戶我的資料),您可能仍然但願使用FFM。能夠在此處找到對差別的更深刻討論。編程
MF的樣品用法可在此處找到。該示例是通用的,但您能夠想象矩陣行對應於用戶,矩陣列對應於電影,矩陣值對應於評級。因爲用戶僅對目錄的一小部分進行了評級,所以該矩陣將很是稀疏。服務器
ML.NET的MF使用LIBMF。網絡
異常檢測能夠識別異常值或事件。它用於欺詐檢測(識別可疑信用卡交易)和服務器監控(識別異常活動)等場景。架構
ML.NET 0.7支持檢測兩種類型的異常行爲:app
可使用不一樣的ML.NET組件在兩種類型的數據上檢測到這些異常:框架
IidSpikeDetector
並IidChangePointDetector
用於假定來自一個固定分佈的數據(每一個數據點獨立於先前的數據,例如每一個推文的轉發數量)。SsaSpikeDetector
並SsaChangePointDetector
用於具備季節/趨勢組件的數據(可能按時間排序,例如產品銷售)能夠在此處找到使用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
能夠在此處找到更完整的示例。
有了這個ML.NET版本,您如今能夠在x86 / 32位架構設備上訓練和使用機器學習模型(目前僅適用於Windows)。之前,ML.NET僅限於x64設備(Windows,Linux和Mac)。
請注意,某些基於外部依賴關係的組件(例如TensorFlow)在x86-Windows中不可用。
NimbusML爲ML.NET提供實驗性的Python綁定。咱們已經看到外部社區和內部團隊對使用多種編程語言的反饋。咱們但願儘量多的人可以從ML.NET中受益,並幫助團隊更輕鬆地協同工做。ML.NET不只使數據科學家可以在Python中訓練和使用機器學習模型(也能夠在scikit-learn管道中使用組件),並且還能夠經過ML.NET保存能夠在.NET應用程序中輕鬆使用的模型。(有關詳細信息,請參見此處)。