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<InspectedRow>(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构造器中提供元数据支持,比如被编码为元数据的评估指标可以通过代码解析出来,由此能够使用任何工具进行可视化。

ML.NET 0.9特性简介的更多相关文章

  1. ML.NET 0.8特性简介

    本周.NET生态圈内的更新源源不断,除了.NET Core 2.2,ASP.NET Core 2.2和Entity Framework Core 2.2之外,ML.NET 0.8也一并登上舞台. 新的 ...

  2. ML.NET 0.10特性简介

    IDataView被单独作为一个类库包 IDataView组件为表格式数据提供了非常高效的处理方式,尤其是用于机器学习和高级分析应用.它被设计为可以高效地处理高维数据和大型数据集.并且也适合处理属于更 ...

  3. JDK5.0新特性 (Day_07)

      JDK5.0新特性   目录 静态导入 自动装箱/拆箱 for-each循环 可变参数 枚举 JDK 5.0 新特性简介 JDK 5.0 的一个重要主题就是通过新增一些特性来简化开发,这些特性包括 ...

  4. JDK5.0新特性1

    目录 静态导入 自动装箱/拆箱 for-each循环 可变参数 枚举 JDK 5.0 新特性简介 JDK 5.0 的一个重要主题就是通过新增一些特性来简化开发,这些特性包括: 静态导入 自动装箱/拆箱 ...

  5. 返璞归真 asp.net mvc (13) - asp.net mvc 5.0 新特性

    [索引页][源码下载] 返璞归真 asp.net mvc (13) - asp.net mvc 5.0 新特性 作者:webabcd 介绍asp.net mvc 之 asp.net mvc 5.0 新 ...

  6. c# 6.0新特性(一)

    写在前面 接近年底了,基本上没什么活了,就学点新东西,就想着了解下c# 6.0的新特性.在code project上看到了一篇不错的文章,就准备翻译一下,顺便照着学习学习.废话不多说,直奔主题. 原文 ...

  7. Hadoop3.0新特性介绍,比Spark快10倍的Hadoop3.0新特性

    Hadoop3.0新特性介绍,比Spark快10倍的Hadoop3.0新特性 Apache hadoop 项目组最新消息,hadoop3.x以后将会调整方案架构,将Mapreduce 基于内存+io+ ...

  8. C# Winform开发框架企业版V4.0新特性

    企业版V4.0 - 新特性 C/S系统开发框架-企业版 V4.0 (Enterprise Edition) 简介: http://www.csframework.com/cs-framework-4. ...

  9. ES6新特性简介

    ES6新特性简介 环境安装 npm install -g babel npm install -g babel-node //提供基于node的REPL环境 //创建 .babelrc 文件 {&qu ...

随机推荐

  1. android编码学习

    虽然以下博客有点老,但很清晰,有不明白的基础知识,可以来这里找找. 2015年最新Android基础入门教程目录(完结版) 1. 环境配置 Android stodio gradle配置踩过的坑 An ...

  2. 调试 lvgl 的一个例子

    发现一个新的 vector graphic 的库,用 C 写的,效果丰富,接口简单,而且是 MIT License,所以想试一试.因为它支持 framebuffer,所以,在 linux 上先走一个. ...

  3. 第二天学习笔记:(MDN HTML学习、web安全策略与常见攻击、语义化)

    一:Web入门 1:web文件命名 在文件名中应使用连字符(-).搜索引擎把连字符当作一个词的分隔符, 但不会以这种方式处理下划线. 养成在文件夹和文件名中使用小写,并且使用短横线而不是空格来分隔的习 ...

  4. eureka服务注册发现流程和核心参数

    参数1:eureka.instance.lease-renewal-interval-in-seconds 参数2:eureka.instance.lease-expiration-duration- ...

  5. __NSArrayI __NSArray0 __NSSingleObjectArrayI __NSPlaceholderArray __NSArrayM

    如果你的 全局 可变数组 前面  用了  copy修饰,那么 调用   arr addObjectsFromArray: 的时候 就 会崩溃,而且提示你  是  [__NSArray0 addObje ...

  6. Android 隐藏系统状态栏

    通常的做法是这样的: private static boolean isStatusbarVisible(Activity activity) { int uiOptions = activity.g ...

  7. Java之Servlet

    Servlet规范了JavaWeb项目的结构Servlet的规范约束了服务器如何来实现Servlet规范,如何解析JavaWeb项目的结构. Java就是通过接口来约束 Servlet规范的jar就在 ...

  8. web字体分析

    一.衬线字体与非衬线字体 衬线体(serif)和无衬线体(sans-serif)的分类起源于英文字体界. 衬线体(serif)-Georgia-Times 「衬线」指的是字形笔画在首位的装饰和笔画的粗 ...

  9. puppeteer新手遇到的坑

    puppeteer安装以及遇到的坑 1. 环境和安装 Puppeteer 至少需要 Node v6.4.0,如要使用 async / await,只有 Node v7.6.0 或更高版本才支持. no ...

  10. ubuntu 18.04 配置 rc.local

    ubuntu 18.04 配置 rc.local:https://blog.csdn.net/a912952381/article/details/81205095 Ubuntu /etc/rc.lo ...