歡迎光臨
每天分享高質量文章

ML.NET 0.9特性簡介

ML.NET 0.9已於上週釋出,距離上次0.8版本的釋出只有一個多月,此次增加的新特性主要包括特徵貢獻計算,模型可解釋性增強,ONNX轉換對GPU的支援,Visual Studio ML.NET專案模板預覽,以及API改進。

特徵貢獻計算

特徵貢獻計算(Feature Contribution Calculation)透過決定每個特徵對模型分數的貢獻,從而顯示哪些特徵在對特別個體的資料樣本的模型預測最有影響力。

當你面臨歷史資料中有許多特徵時而又想選擇使用最重要的特徵時,特徵貢獻計算顯得十分重要。因為使用太多的特徵(尤其是包含對模型沒有影響的特徵)會減少模型的效能與準確性。因此,使用特徵貢獻計算你可以從原始特徵集中識別最有影響力的正向與負向的貢獻。

示例程式碼:

// 建立特徵貢獻計算器
// 對已有訓練模型引數的所有特徵進行計算貢獻
var featureContributionCalculator = mlContext.Model.Explainability.FeatureContributionCalculation(model.Model, model.FeatureColumn, numPositiveContributions: 11, normalize: false);
// FeatureContributionCalculatingEstimator可被用作管道中的一個步驟
// 被FeatureContributionCalculatingEstimator儲存的特徵將在FeatureContribution列中
var pipeline = mlContext.Model.Explainability.FeatureContributionCalculation(model.Model, model.FeatureColumn, numPositiveContributions: 11)
.Append(mlContext.Regression.Trainers.OrdinaryLeastSquares(featureColumn: "FeatureContributions"));

輸出結果可下:

The output of the above code is:

 Label   Score   BiggestFeature         Value   Weight   Contribution


 24.00   27.74   RoomsPerDwelling        6.58    98.55   39.95
21.60   23.85   RoomsPerDwelling        6.42    98.55   39.01
34.70   29.29   RoomsPerDwelling        7.19    98.55   43.65
33.40   27.17   RoomsPerDwelling        7.00    98.55   42.52

對於特徵選取的模型可解釋性的增強

除了特徵貢獻計算之外,排列特徵重要性(PFI)與廣義加性模型(GAM)也有加強。

  • 排列特徵重要性支援大多數學習任務:回歸,二元分類,多元分類與排序。
  • 排列特徵重要性允許你在特徵重要性分數上計算置信區間,以便可以得到更好的平均值估計。
  • 廣義加性模型支援特徵貢獻計算,以便你可以迅速看到哪些特徵驅動個體的預測。

增加對ONNX轉換的GPU支援

在ML.NET 0.9中透過整合高效能的ONNX執行時庫添加了使用啟用GPU的CUDA 10.0執行ONNX模型的功能。ONNX模型的GPU支援現在已經可以在Windows 64位系統上使用,不久之後將支援Linux與Mac系統。

新的Visual Studio ML.NET專案模板預覽

Visual Studio專案模板現在推出了支援ML.NET的預覽版本。下載地址

模板涵蓋以下場景:

  • ML.NET控制檯應用程式
  • ML.NET模型類庫

其它API的改進

簡化文字資料載入

ML.NET 0.9以前你需要顯示的標明列名:

var mlContext = new MLContext();var reader = mlContext.Data.CreateTextReader(new[] {        new TextLoader.Column("IsOver50K", DataKind.BL, 0),        new TextLoader.Column("Workclass", DataKind.TX, 1)
},hasHeader: true);var dataView = reader.Read(dataPath);

現在你可以直接使用泛型:

var mlContext = new MLContext();var dataView = mlContext.Data.ReadFromTextFile(dataPath, hasHeader: true);private class InspectedRow{
[LoadColumn(0)]    public bool IsOver50K { get; set; }
[LoadColumn(1)]    public string Workclass { get; set; }
}

獲取預測置信因子

透過Calibrator Estimators,除了在評估模型質量時可以獲得分數列之外,還可以得到置信因子。

例如,你可以獲得每個預測值的機率:

Score - 0.458968    Probability 0.4670409
Score - 0.7022135   Probability 0.3912723
Score 1.138822      Probability 0.8703266

新的鍵-值匹配估測器及轉換

新特性替換了TermLookupTransform,同時提供了指定值之間匹配的新方法。你可以指定鍵列與值列的匹配關係,但需保證兩者數量一致。

其它的改進與變化

  • 允許ML.NET在Windows Nano容器及Windows機器上執行,而無需安裝Visual C++執行時。
  • 在包含模型資訊的DataView建構式中提供元資料支援,比如被編碼為元資料的評估指標可以透過程式碼解析出來,由此能夠使用任何工具進行視覺化。

原文地址:https://www.cnblogs.com/kenwoo/p/10284906.html

贊(0)

分享創造快樂