1. 程式人生 > >一個開源的,跨平臺的.NET機器學習框架ML.NET

一個開源的,跨平臺的.NET機器學習框架ML.NET

例子 觀察 bin OS ron feature mean 參考 移動應用

微軟在Build 2018大會上推出的一款面向.NET開發人員的開源,跨平臺機器學習框架ML.NET。 ML.NET將允許.NET開發人員開發他們自己的模型,並將自定義ML集成到他們的應用程序中,而無需事先掌握開發或調整機器學習模型的專業知識。在采用通用機器學習語言(如R和Python)開發的模型,並將它們集成到用C#等語言編寫的企業應用程序中需要付出相當大的努力。ML.NET填平了機器學習專家和軟件開發者之間的差距,從而使得機器學習的平民化,即使沒有機器學習背景的人們能夠建立和運行模型。通過為.NET創建高質量的機器學習框架,微軟已經使得將機器學習轉化為企業(或通過Xamarin移動應用程序)變得更容易。這是一種使機器學習更加可用的形式。

使用ML.NET可以解決哪些類型的問題?

基於微軟內部Windows,Bing和Azure等主要微軟產品使用多年的機器學習構建的庫目前處於預覽階段,最新版本是0.2 。該框架目前支持的學習模型包括

  • K-Means聚類
  • 邏輯回歸
  • 支持向量機
  • 樸素貝葉斯
  • 隨機森林
  • 增強樹木

其他技術,如推薦引擎和異常檢測,正在開發的路線圖上。ML.NET將最終將接口暴露給其他流行的機器學習庫,如TensorFlow,CNTK和Accord.NET。最後,還會有一些工具和語言增強功能,包括Azure和GUI / Visual Studio功能中的擴展功能。

技術分享圖片

如何在應用程序中使用ML.NET?

ML.NET以NuGet包的形式提供,可以輕松安裝到新的或現有的.NET應用程序中。

該框架采用了用於其他機器學習庫(如scikit-learn和Apache Spark MLlib)的“管道(LearningPipeline)”方法。數據通過多個階段“傳送”以產生有用的結果(例如預測)。典型的管道可能涉及

  1. 加載數據
  2. 轉換數據
  3. 特征提取/工程
  4. 配置學習模型
  5. 培訓模型
  6. 使用訓練好的模型(例如獲得預測)

管道為使用機器學習模型提供了一個標準API。這使得在測試和實驗過程中更容易切換一個模型。它還將建模工作分解為定義明確的步驟,以便更容易理解現有代碼。scikit-learn庫實現了很多機器學習算法,我們可以多多參考scikit-learn :http://sklearn.apachecn.org/cn/0.19.0/index.html

在構建機器學習模型時,首先需要定義您希望通過數據實現的目標。之後,您可以針對您的情況選擇正確的機器學習任務。以下列表描述了您可以選擇的不同機器學習任務以及一些常見用例。

二元分類

二元分類屬於 監督學習,用於預測數據的一個實例屬於哪些兩個類(類別)任務。分類算法的輸入是一組標記示例,其中每個標記都是0或1的整數。二進制分類算法的輸出是一個分類器,您可以使用該分類器來預測新的未標記實例的類。二元分類場景的例子包括:

  • 將Twitter評論的情緒理解為“積極”或“消極”。

  • 診斷患者是否患有某種疾病。

  • 決定將電子郵件標記為“垃圾郵件”。

  • 如果交易日是上漲日或下跌日
  • 手寫數字識別
  • 語音識別
  • 圖像識別

有關更多信息,請參閱Wikipedia上的二元分類 文章。

多類分類

多元分類屬於 監督學習,用於預測的數據的實例的類(類別)的任務。分類算法的輸入是一組標記示例。每個標簽都是0到k-1之間的整數,其中k是類的數量。分類算法的輸出是一個分類器,您可以使用它來預測新的未標記實例的類。多類分類方案的例子包括:

  • 確定一只狗的品種為“西伯利亞雪橇犬”,“金毛獵犬”,“貴賓犬”等。
  • 將電影評論理解為“正面”,“中性”或“負面”。
  • 將酒店評論歸類為“位置”,“價格”,“清潔度”等。

有關更多信息,請參閱Wikipedia上的多類分類文章。

分類步驟設置:

技術分享圖片

  1. 首先定義問題
  2. 然後,您將以名為Features的數字屬性的形式表示您的數據。這對於已經分類的訓練數據和將來需要分類的測試數據都是這樣做的
  3. 您將獲取訓練數據並將其輸入分類算法以訓練模型
  4. 將需要分類的新實例或采取測試數據並將其傳遞給分類器進行分類

聚類

聚類屬於無監督機器學習,用於數據的一組實例為包含類似特征的簇的任務。聚類還可用於識別數據集中的關系,這些關系可能不是通過瀏覽或簡單觀察而在邏輯上得出的。聚類算法的輸入和輸出取決於所選擇的方法。您可以采用分布、質心、連通性或基於密度的方法。ML.NET目前支持使用K-Means聚類的基於質心的方法。聚類場景的例子包括:

  • 根據酒店選擇的習慣和特點了解酒店客人群體。
  • 識別客戶群和人口統計信息,以幫助構建有針對性的廣告活動。
  • 根據制造指標對庫存進行分類。
  • 根據房屋類型,價值和地理位置確定一組房屋
  • 地震震中確定危險區域
  • 使用集群將電話塔放在一個新城市中,以便所有用戶都能獲得最佳單一強度

聚類設置步驟:

技術分享圖片

  1. 你會從問題陳述開始,問題陳述是需要聚集的數據集
  2. 然後,您將使用功能在該數據集中表示點。
  3. 這裏沒有訓練這一步,不需要學習
  4. 您直接將數據提供給聚類算法以查找最終的聚類,而無需任何訓練步驟

回歸

回歸是 監督的機器學習,用於從一組相關的功能預測標簽的值。標簽可以具有任何實際價值,並且不像分類任務那樣來自有限的一組值。回歸算法對標簽對其相關特征的依賴性進行建模,以確定標簽隨著特征值的變化而如何變化。回歸算法的輸入是一組具有已知值標簽的示例。回歸算法的輸出是一個函數,您可以使用該函數來預測任何新的輸入要素集的標註值。回歸情景的例子包括:

  • 根據房屋屬性(如臥室數量,位置或大小)預測房價。
  • 根據歷史數據和當前市場趨勢預測未來股價。
  • 根據廣告預算預測產品的銷售情況。


異常檢測(即將推出

排名(即將推出

推薦(即將推出

一個開源的,跨平臺的.NET機器學習框架ML.NET