SdcaLogisticRegressionBinaryTrainer 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
用于 IEstimator<TTransformer> 使用随机双坐标上升方法训练二元逻辑回归分类模型。 训练的模型 经过校准 ,可以通过将线性函数的输出值馈送给 a PlattCalibrator来生成概率。
public sealed class SdcaLogisticRegressionBinaryTrainer : Microsoft.ML.Trainers.SdcaBinaryTrainerBase<Microsoft.ML.Calibrators.CalibratedModelParametersBase<Microsoft.ML.Trainers.LinearBinaryModelParameters,Microsoft.ML.Calibrators.PlattCalibrator>>
type SdcaLogisticRegressionBinaryTrainer = class
inherit SdcaBinaryTrainerBase<CalibratedModelParametersBase<LinearBinaryModelParameters, PlattCalibrator>>
Public NotInheritable Class SdcaLogisticRegressionBinaryTrainer
Inherits SdcaBinaryTrainerBase(Of CalibratedModelParametersBase(Of LinearBinaryModelParameters, PlattCalibrator))
- 继承
-
SdcaTrainerBase<SdcaBinaryTrainerBase<TModelParameters>.BinaryOptionsBase,BinaryPredictionTransformer<TModelParameters>,TModelParameters>SdcaLogisticRegressionBinaryTrainer
注解
若要创建此训练程序,请使用 SdcaLogisticRegression 或 SdcaLogisticRegression (Options) 。
输入和输出列
输入标签列数据必须为 Boolean。 输入特征列数据必须是已知大小的向量 Single。
该训练程序输出以下列:
输出列名称 | 列名称 | 说明 | |
---|---|---|---|
Score |
Single | 模型计算的未绑定分数。 | |
PredictedLabel |
Boolean | 预测的标签,基于分数符号。 负分数映射到 false ,正分数映射到 true 。 |
|
Probability |
Single | 通过校准具有 true 作为标签的分数来计算的概率。 概率值在 [0, 1] 范围内。 |
训练器特征
机器学习任务 | 二元分类 |
规范化是否需要? | 是 |
是否需要缓存? | 否 |
除 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-norm 正则化具有不同的效果,并且在某些方面具有互补性。
与实现的优化算法一起,L1 规范正则化可以增加模型权重的稀疏性 $\textbf{w}_1,\dots,\textbf{w}_m$。 对于高维和稀疏数据集,如果用户仔细选择 L1-norm 的系数,则可以通过模型实现良好的预测质量,该模型只有少数非零权重 (,例如,1% 的总模型权重) 不影响其预测能力。 相比之下,L2 规范不能增加训练模型的稀疏性,但仍可以通过避免较大的参数值来防止过度拟合。 有时,使用 L2 规范会导致更好的预测质量,因此用户可能仍希望尝试并微调 L1 规范和 L2 规范的系数。 请注意,从概念上讲,使用 L1 规范意味着所有模型参数的分布是 Laplace 分布 ,而 L2 规范表示 它们的高斯分布 。
主动正则化 (,即将大型系数分配给 L1-norm 或 L2 规范正则化术语) 可以通过从模型中排除重要变量来损害预测能力。 例如,非常大的 L1 规范系数可能会强制所有参数为零,并导致微不足道的模型。 因此,在实践中选择正确的正则化系数非常重要。
有关详细信息,请参阅:
有关用法示例的链接,请查看“另请参阅”部分。
字段
FeatureColumn |
训练程序期望的功能列。 (继承自 TrainerEstimatorBase<TTransformer,TModel>) |
LabelColumn |
训练程序期望的标签列。 可以是 |
WeightColumn |
训练器期望的权重列。 可以 |
属性
Info |
用于 IEstimator<TTransformer> 使用随机双坐标上升方法训练二元逻辑回归分类模型。 训练的模型 经过校准 ,可以通过将线性函数的输出值馈送给 a PlattCalibrator来生成概率。 (继承自 SdcaBinaryTrainerBase<TModelParameters>) |
方法
Fit(IDataView) |
火车并返回一个 ITransformer。 (继承自 TrainerEstimatorBase<TTransformer,TModel>) |
GetOutputSchema(SchemaShape) |
用于 IEstimator<TTransformer> 使用随机双坐标上升方法训练二元逻辑回归分类模型。 训练的模型 经过校准 ,可以通过将线性函数的输出值馈送给 a PlattCalibrator来生成概率。 (继承自 TrainerEstimatorBase<TTransformer,TModel>) |
扩展方法
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
将“缓存检查点”追加到估算器链。 这将确保针对缓存的数据训练下游估算器。 在执行多个数据传递的训练器之前,拥有缓存检查点会很有帮助。 |
WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
给定估算器后,返回将调用委托的 Fit(IDataView) 包装对象。 估算器通常必须返回有关拟合情况的信息,这就是为什么 Fit(IDataView) 该方法返回特定类型化对象的原因,而不仅仅是常规 ITransformer对象。 但是,同时, IEstimator<TTransformer> 通常形成为包含许多对象的管道,因此,我们可能需要通过 EstimatorChain<TLastTransformer> 估算器链生成一系列估算器,以便我们要获取转换器的估算器被埋在此链中的某个位置。 对于这种情况,我们可以通过此方法附加调用一次将调用的委托。 |
适用于
另请参阅
- SdcaLogisticRegression(BinaryClassificationCatalog+BinaryClassificationTrainers, String, String, String, Nullable<Single>, Nullable<Single>, Nullable<Int32>)
- SdcaLogisticRegression(BinaryClassificationCatalog+BinaryClassificationTrainers, SdcaLogisticRegressionBinaryTrainer+Options)
- SdcaLogisticRegressionBinaryTrainer.Options