1. 程式人生 > >關於ML.NET v0.7的釋出說明

關於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元件在兩種型別的資料上檢測到這些異常:

  • IidSpikeDetectorIidChangePointDetector用於假定來自一個固定分佈的資料(每個資料點獨立於先前的資料,例如每個推文的轉發數量)。
  • SsaSpikeDetectorSsaChangePointDetector用於具有季節/趨勢元件的資料(可能按時間排序,例如產品銷售)

可以在此處找到使用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繫結

Python徽標

NimbusMLML.NET提供實驗性的Python繫結。我們已經看到外部社群和內部團隊對使用多種程式語言的反饋。我們希望儘可能多的人能夠從ML.NET中受益,並幫助團隊更輕鬆地協同工作。ML.NET不僅使資料科學家能夠在Python中訓練和使用機器學習模型(也可以在scikit-learn管道中使用元件),而且還可以通過ML.NET儲存可以在.NET應用程式中輕鬆使用的模型。(有關詳細資訊,請參見此處)。