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

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

使用ML.NET能夠解決哪些類型的問題?

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

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

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

POSTS

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

ML.NET以NuGet包的形式提供,能夠輕鬆安裝到新的或現有的.NET應用程序中。算法

該框架採用了用於其餘機器學習庫(如scikit-learnApache Spark MLlib)的「管道(LearningPipeline)」方法。數據經過多個階段「傳送」以產生有用的結果(例如預測)。典型的管道可能涉及apache

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

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

ML.NET機器學習管道的核心組件:架構

  • ML數據結構(例如IDataViewLearningPipeline框架

  • TextLoader(將數據從分隔文本文件加載到LearningPipeline)和 CollectionDataSource 從一組對象中加載數據集機器學習

  • 轉換(以得到正確格式的數據進行訓練):函數

    • 處理/特徵化文本: TextFeaturizer
    • 架構modifcation: ,ColumnConcatenatorColumnSelectorColumnDropper
    • 使用分類特徵:CategoricalOneHotVectorizerCategoricalHashOneHotVectorizer
    • 處理丟失的數據: MissingValueHandler
    • 過濾器:RowTakeFilterRowSkipFilterRowRangeFilter
    • 特性選擇:FeatureSelectorByCountFeatureSelectorByMutualInformation
  • 學習算法(用於訓練機器學習模型)用於各類任務:

    • 二元分類:FastTreeBinaryClassifierStochasticDualCoordinateAscentBinaryClassifierAveragedPerceptronBinaryClassifierBinaryLogisticRegressorFastForestBinaryClassifierLinearSvmBinaryClassifier,和GeneralizedAdditiveModelBinaryClassifier
    • 多類分類:StochasticDualCoordinateAscentClassifierLogisticRegressor,和NaiveBayesClassifier
    • 迴歸:FastTreeRegressorFastTreeTweedieRegressorStochasticDualCoordinateAscentRegressorOrdinaryLeastSquaresRegressorOnlineGradientDescentRegressorPoissonRegressor,和GeneralizedAdditiveModelRegressor
    • 聚類 KMeansPlusPlusClusterer
  • 評估器(檢查模型的工做狀況):

    • 對於二元分類: BinaryClassificationEvaluator
    • 對於多類分類: ClassificationEvaluator
    • 對於迴歸: RegressionEvaluator

在構建機器學習模型時,首先須要定義您但願經過數據實現的目標。以後,您能夠針對您的狀況選擇正確的機器學習任務。如下列表描述了您能夠選擇的不一樣機器學習任務以及一些常見用例。在ML.NET 0.2增長了一個 支持從一組對象中加載數據集的能力,之前這些只能從分隔的文本文件加載。另外一個補充是交叉驗證,這是一種驗證機器學習模型性能的方法。交叉驗證方法的一個有用方面是它不須要與用於建立模型的數據集分開的數據集。相反,它將屢次提供的數據劃分爲不一樣組的訓練和測試數據。ML.NET 0.2加入了一個示例代碼庫,演示瞭如何使用這個新框架,地址是https://github.com/dotnet/machinelearning-samples

二元分類

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

  • 將Twitter評論的情緒理解爲「積極」或「消極」。

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

  • 決定將電子郵件標記爲「垃圾郵件」。

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

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

多類分類

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

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

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

分類步驟設置:

INT1

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

聚類

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

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

聚類設置步驟:

INT2

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

迴歸

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

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


異常檢測(即將推出

排名(即將推出

推薦(即將推出

相關文章
相關標籤/搜索