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. Python数据预处理:机器学习、人工智能通用技术(1)

    Python数据预处理:机器学习.人工智能通用技术 白宁超  2018年12月24日17:28:26 摘要:大数据技术与我们日常生活越来越紧密,要做大数据,首要解决数据问题.原始数据存在大量不完整.不 ...

  2. 使用Git Subtree在多个项目中共用同一个子项目

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/8427796.html 场景一:已有一个大项目,需要把其中一部分内容独立出来作为共用子项目,被其他项目引用 一: ...

  3. DEVOPS落地实践分享

    DEVOPS落地实践分享 转载本文需注明出处:微信公众号EAWorld,违者必究. 引言: DevOps的理念已经说了很多年,其带来的价值逐渐被接受,很多企业也逐渐引入了DevOps.目前普元DevO ...

  4. Hierarchical softmax(分层softmax)简单描述.

    最近在做分布式模型实现时,使用到了这个函数. 可以说非常体验非常的好. 速度非常快,效果和softmax差不多. 我们知道softmax在求解的时候,它的时间复杂度和我们的词表总量V一样O(V),是性 ...

  5. 使用 Docker 镜像构建 GO 语言环境

    1. 安装 Docker 我当前使用的系统环境是 CentOS7 ,安装 Docker 使用的命令是 yum install docker*.至于其它系统,可以到百度查找其对应的安装方式. 2. 配置 ...

  6. Eclipse SVN clean up失败解决方法

    错误信息: 1.下载sqlite3.zip  (https://www.sqlite.org/2019/sqlite-tools-win32-x86-3270200.zip) 只需用到解压后的exe文 ...

  7. Saltstack之Scheduler

    一.引言: 在日常的运维工作中经常会遇到需要定时定点启动任务,首先会考虑到crontab,但是通过crontab的话需要每台机器下进行设置,这样统一管理的话比较复杂:通过查百度和google发现sal ...

  8. html5利用websocket完成的推送功能(tomcat)

    html5利用websocket完成的推送功能(tomcat) 利用websocket和java完成的消息推送功能,服务器用的是tomcat7.0.42,一些东西是自己琢磨的,也不知道恰不恰当,不恰当 ...

  9. python 验证码识别示例(二) 复杂验证码识别

     在这篇博文中手把手教你如何去分割验证,然后进行识别. 一:下载验证码 验证码分析,图片上有折线,验证码有数字,有英文字母大小写,分类的时候需要更多的样本,验证码的字母是彩色的,图片上有雪花等噪点,因 ...

  10. 4 Git 基础 - 撤消操作

    撤消操作 任何时候,你都有可能需要撤消刚才所做的某些操作.接下来,我们会介绍一些基本的撤消操作相关的命令.请注意,有些撤销操作是不可逆的,所以请务必谨慎小心,一旦失误,就有可能丢失部分工作成果. 修改 ...