博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ML.NET Cookbook:(16)什么是规范化?为什么我需要关心?
阅读量:4034 次
发布时间:2019-05-24

本文共 1539 字,大约阅读时间需要 5 分钟。

在ML.NET中,我们公开了许多参数和非参数算法[1]

通常,参数学习器对训练数据持有一定的假设,如果不满足这些假设,训练就会受到极大的阻碍(有时甚至完全不可能)。

最常见的假设是

  • 所有特征的值大致相同;

  • 特征值不太大,也不太小。

违反上述第一个假设会导致学习器训练一个次优模型(甚至是一个完全无用的模型)。违反第二个假设会导致算术错误累积,这通常会完全中断训练过程。

一般来说,如果您使用参数化学习器,您需要确保您的训练数据正确缩放

ML.NET提供了几种内置的缩放算法或“规范化器”:

  • MinMax 规范化器:对于每个特征,我们学习它的最小值和最大值,然后线性地重新缩放它,使值在-1和1之间。

  • 均值-方差规范化器:对于每个特征,计算均值和方差,然后将其线性重缩放为零均值、单位方差。

  • CDF 规范化器:对于每个特征,计算均值和方差,然后将每个值x替换为Cdf(x),其中Cdf是具有这些均值和方差的正态分布的累积密度函数。

  • 装箱规范化器:将特征值离散化为“N”个桶,然后用桶的索引替换每个值,除以“N-1”。

这些规范化器都有不同的属性和权衡,但如果您要用一个来代替另一个,那也没什么大不了的。只需确保在训练线性模型或其他参数化模型时使用规格化器。

ML.NET规范化器的一个重要参数称为fixZero。如果fixZero为true,则零输入始终映射到零输出。在处理稀疏数据时,这一点非常重要:如果不保留零,则会将所有稀疏数据转换为密集数据,这通常是个坏主意。

将规范化器直接包含在ML.NET学习管道中是一种很好的做法:这样可以确保规范化

  • 只是训练数据,而不是你的测试数据,

  • 正确应用于所有新传入的数据,而无需在预测时进行额外的预处理。

下面是演示学习管道规范化的代码片段。它使用Iris数据集:

//Iris类的数据模型 private class IrisInputAllFeatures{    [ColumnName("Label"), LoadColumn(4)]    public string IgnoredLabel { get; set; }    [LoadColumn(0, 3)]    public float Features { get; set; }}// 加载训练数据。var trainData = mlContext.Data.LoadFromTextFile
(dataPath,    // 默认分隔符是tab,但数据集使用逗号。    separatorChar: ',');// 对原始特征应用MinMax规范化。var pipeline =    mlContext.Transforms.NormalizeMinMax("MinMaxNormalized", "Features");// 让我们训练规范化器管道,然后将其应用于相同的数据。var normalizedData = pipeline.Fit(trainData).Transform(trainData);// 检查结果数据集的一列。var minMaxValues = normalizedData.GetColumn
(normalizedData.Schema["MinMaxNormalized"]).ToArray();

欢迎关注我的个人公众号”My IO“参考资料

[1]

参数和非参数算法: https://machinelearningmastery.com/parametric-and-nonparametric-machine-learning-algorithms/

转载地址:http://wlydi.baihongyu.com/

你可能感兴趣的文章
[Leetcode BY python ]190. Reverse Bits
查看>>
Android下调用收发短信邮件等(转载)
查看>>
Android中电池信息(Battery information)的取得
查看>>
SVN客户端命令详解
查看>>
Android/Linux 内存监视
查看>>
Linux系统信息查看
查看>>
用find命令查找最近修改过的文件
查看>>
Android2.1消息应用(Messaging)源码学习笔记
查看>>
Phone双模修改涉及文件列表
查看>>
android UI小知识点
查看>>
Android之TelephonyManager类的方法详解
查看>>
android raw读取超过1M文件的方法
查看>>
ubuntu下SVN服务器安装配置
查看>>
MPMoviePlayerViewController和MPMoviePlayerController的使用
查看>>
CocoaPods实践之制作篇
查看>>
[Mac]Mac 操作系统 常见技巧
查看>>
苹果Swift编程语言入门教程【中文版】
查看>>
捕鱼忍者(ninja fishing)之游戏指南+游戏攻略+游戏体验
查看>>
iphone开发基础之objective-c学习
查看>>
iphone开发之SDK研究(待续)
查看>>