SdcaNonCalibratedBinaryTrainer 类

定义

用于 IEstimator<TTransformer> 使用随机双坐标上升方法训练二元逻辑回归分类模型。

public sealed class SdcaNonCalibratedBinaryTrainer : Microsoft.ML.Trainers.SdcaBinaryTrainerBase<Microsoft.ML.Trainers.LinearBinaryModelParameters>
type SdcaNonCalibratedBinaryTrainer = class
    inherit SdcaBinaryTrainerBase<LinearBinaryModelParameters>
Public NotInheritable Class SdcaNonCalibratedBinaryTrainer
Inherits SdcaBinaryTrainerBase(Of LinearBinaryModelParameters)
继承

注解

若要创建此训练器,请使用 SdcaNonCalibratedSdcaNonCalibrated (选项)

输入和输出列

输入标签列数据必须为 Boolean。 输入特征列数据必须是已知大小的向量 Single。 该训练程序输出以下列:

输出列名称 列名称 说明
Score Single 模型计算的未绑定分数。
PredictedLabel Boolean 预测的标签,基于分数符号。 负分数映射到 false,正分数映射到 true

训练器特征

机器学习任务 二元分类
是否需要规范化?
是否需要缓存?
除 Microsoft.ML 以外,还需要 NuGet
可导出到 ONNX

训练算法详细信息

此训练器基于随机双坐标升 (SDCA) 方法,这是用于凸目标函数的最先进的优化技术。 可以缩放该算法,因为它是 KDD 最佳论文中所述的流式训练算法。

收敛是通过在单独的线程中定期强制实现原始变量和双变量之间的同步来承销的。 还提供了多种损失函数选项,例如 铰链损失逻辑损失。 根据使用的损失,训练的模型可以是 支持向量机逻辑回归。 SDCA 方法结合了多个最佳属性,例如,能够执行流式处理学习 (,而不将整个数据集拟合到内存) ,从而获得合理的结果,例如,对整个数据集进行一些扫描 (,请参阅 本文 中的试验) ,并在稀疏数据集中花费零的计算。

请注意,SDCA 是一种随机和流式处理优化算法。 结果取决于训练数据的顺序,因为停止容忍度不够紧。 在强凸优化中,最佳解决方案是唯一的,因此每个人都最终到达同一位置。 即使在非强凸起的情况下,你也会从运行到运行中获得同样良好的解决方案。 对于可重现的结果,建议将“Shuffle”设置为 False,将“NumThreads”设置为 1。

此类使用 经验风险最小化 (,即 ERM) 来制定基于收集的数据构建的优化问题。 请注意,经验风险通常通过对所收集的数据点的模型预测应用损失函数来测量。 例如,如果训练数据不包含足够的数据点 (,若要在 $n$维空间中训练线性模型,则至少需要 $n$ 数据点) ,可能会发生 过度拟 合,以便 ERM 生成的模型擅长描述训练数据,但可能无法预测未见事件的正确结果。 正则化 是一种常见技术,通过惩罚通常由模型参数的 规范函数) 测量的量级 (来缓解此类现象。 此训练器支持 弹性网络正则化,从而惩罚 L1 规范 (LASSO) 的线性组合,即 $||\textbf{w}_c ||_1$和 L2 规范 (岭) ,$||\textbf{w}_c ||_2^2$ $c=1,\dots,m$的正则化。 L1-norm 和 L2 规范正则化具有不同的效果和用途,在某些方面是互补的。

与实现的优化算法一起,L1 规范正则化可以增加模型权重的稀疏性,$\textbf{w}_1,\dots,\textbf{w}_m$。 对于高维数据集和稀疏数据集,如果用户仔细选择 L1 规范的系数,则可以通过模型实现良好的预测质量,该模型只有少数非零权重 (,例如,1% 的总模型权重) 而不会影响其预测能力。 相比之下,L2 规范无法增加训练模型的稀疏性,但仍可以通过避免较大的参数值来防止过度拟合。 有时,使用 L2 规范会导致更好的预测质量,因此用户可能仍希望尝试它并微调 L1 规范和 L2 规范的系数。 请注意,从概念上讲,使用 L1 规范意味着所有模型参数的分布都是 Laplace 分布 ,而 L2 规范表示高 斯分布

积极的正则化 (,即将大型系数分配给 L1 规范或 L2 规范正则化术语,) 可以通过排除模型中的重要变量来损害预测容量。 例如,非常大的 L1 规范系数可能会强制所有参数为零,并导致微不足道的模型。 因此,在实践中,选择正确的正则化系数非常重要。

有关详细信息,请参阅:

有关用法示例的链接,请查看“另请参阅”部分。

字段

FeatureColumn

训练器期望的功能列。

(继承自 TrainerEstimatorBase<TTransformer,TModel>)
LabelColumn

训练器期望的标签列。 可以 null,指示标签不用于训练。

(继承自 TrainerEstimatorBase<TTransformer,TModel>)
WeightColumn

训练器期望的权重列。 可以 null,指示权重不用于训练。

(继承自 TrainerEstimatorBase<TTransformer,TModel>)

属性

Info

用于 IEstimator<TTransformer> 使用随机双坐标上升方法训练二元逻辑回归分类模型。

(继承自 SdcaBinaryTrainerBase<TModelParameters>)

方法

Fit(IDataView)

火车并返回一个 ITransformer

(继承自 TrainerEstimatorBase<TTransformer,TModel>)
GetOutputSchema(SchemaShape)

用于 IEstimator<TTransformer> 使用随机双坐标上升方法训练二元逻辑回归分类模型。

(继承自 TrainerEstimatorBase<TTransformer,TModel>)

扩展方法

AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

将“缓存检查点”追加到估算器链。 这将确保根据缓存的数据训练下游估算器。 在执行多个数据传递的训练器之前,拥有缓存检查点会很有帮助。

WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>)

给定估算器后,返回一个包装对象,该对象将调用委托一次 Fit(IDataView) 。 估算器通常必须返回有关适合的内容的信息,这就是为什么 Fit(IDataView) 该方法返回特定类型化对象的原因,而不仅仅是常规 ITransformer对象。 但是,同时, IEstimator<TTransformer> 通常形成为包含许多对象的管道,因此,我们可能需要通过 EstimatorChain<TLastTransformer> 估算器链生成一个估算器链,以便将转换器埋在此链中的某个位置。 对于该方案,我们可以通过此方法附加一个委托,该委托将在调用拟合后调用。

适用于

另请参阅