關於ML.NET v0.7的發佈說明

咱們很高興宣佈推出ML.NET 0.7--面向.NET開發人員的最新版本的跨平臺和開源機器學習框架(ML.NET 0.1發佈於// Build 2018)。此版本側重於爲基於推薦的ML任務提供更好的支持,實現異常檢測,加強機器學習管道的可定製性,支持在x86應用程序中使用ML.NET等。ios

本文提供了有關ML.NET 0.7版本中如下主題的詳細信息:git

  • 使用Matrix Factorization加強對推薦任務的支持
  • 啓用異常檢測方案 - 檢測異常度
  • 改進了ML管道的可定製性
  • x86支持
  • NimbusML - ML.NET的實驗性Python綁定

使用Matrix Factorization加強對推薦任務的支持

 

推薦系統能夠爲目錄,歌曲,電影等中的產品生成推薦列表。咱們經過添加矩陣分解(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組件在兩種類型的數據上檢測到這些異常:框架

  • 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應用程序中輕鬆使用的模型。(有關詳細信息,請參見此處)。

相關文章
相關標籤/搜索