LbfgsLogisticRegressionBinaryTrainer 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
使用 IEstimator<TTransformer> 通过 L-BFGS 方法训练的线性逻辑回归模型预测目标。
public sealed class LbfgsLogisticRegressionBinaryTrainer : Microsoft.ML.Trainers.LbfgsTrainerBase<Microsoft.ML.Trainers.LbfgsLogisticRegressionBinaryTrainer.Options,Microsoft.ML.Data.BinaryPredictionTransformer<Microsoft.ML.Calibrators.CalibratedModelParametersBase<Microsoft.ML.Trainers.LinearBinaryModelParameters,Microsoft.ML.Calibrators.PlattCalibrator>>,Microsoft.ML.Calibrators.CalibratedModelParametersBase<Microsoft.ML.Trainers.LinearBinaryModelParameters,Microsoft.ML.Calibrators.PlattCalibrator>>
type LbfgsLogisticRegressionBinaryTrainer = class
inherit LbfgsTrainerBase<LbfgsLogisticRegressionBinaryTrainer.Options, BinaryPredictionTransformer<CalibratedModelParametersBase<LinearBinaryModelParameters, PlattCalibrator>>, CalibratedModelParametersBase<LinearBinaryModelParameters, PlattCalibrator>>
Public NotInheritable Class LbfgsLogisticRegressionBinaryTrainer
Inherits LbfgsTrainerBase(Of LbfgsLogisticRegressionBinaryTrainer.Options, BinaryPredictionTransformer(Of CalibratedModelParametersBase(Of LinearBinaryModelParameters, PlattCalibrator)), CalibratedModelParametersBase(Of LinearBinaryModelParameters, PlattCalibrator))
- 继承
注解
若要创建此训练程序,请使用 LbfgsLogisticRegression 或 LbfgsLogisticRegression(Options)。
输入和输出列
输入标签列中的数据必须是 Boolean。 输入特征列数据必须是已知大小的向量 Single。
该训练程序输出以下列:
| 输出列名称 | 列类型 | Description | |
|---|---|---|---|
Score |
Single | 模型计算的未绑定分数。 | |
PredictedLabel |
Boolean | 预测的标签,基于分数符号。 负分数映射到 false,正分数映射到 true。 |
|
Probability |
Single | 通过校准具有 true 作为标签的分数来计算的概率。 概率值在 [0, 1] 范围内。 |
训练器特征
| 机器学习任务 | 二元分类 |
| 是否需要规范化? | 是的 |
| 是否需要缓存? | 否 |
| 除 Microsoft.ML 之外所需的 NuGet | None |
| 可导出到 ONNX | 是的 |
评分函数
线性逻辑回归是线性模型的变体。 它通过 $\hat{y}\left(\textbf{x} \right) = \textbf{w}^T \textbf{x} + b = \sum_{j=1}^n + b$ 将特征向量 $\textbf{x} \in {j=1}^n w_j x_j + b$, 其中,$x_j$ 是$j$-th 特征的值,$\textbf{w}$ 的 $j$-th 元素是$j$-th 特征的系数, 和$b$ 是一个可学习的偏见。 获取真实标签的相应概率为 $\frac{1}{1 + e^{\hat{y}\left(\textbf{x} \right)}}$。
训练算法详细信息
实现的优化技术基于有限的内存 Broyden-Fletcher-Goldfarb-Shanno 方法(L-BFGS)。 L-BFGS 是一种 准牛顿方法 ,它用近似值替换了 Hessian 矩阵的昂贵计算成本,但仍享有像 牛顿方法 那样的快速收敛率,其中计算了完整的 Hessian 矩阵。 由于 L-BFGS 近似仅使用有限的历史状态来计算下一步方向,因此它特别适用于高维特征向量的问题。 历史状态数是用户指定的参数,使用较大的数字可能会导致对 Hessian 矩阵的近似值更好,但每个步骤的计算成本也更高。
正则化是一种方法,通过施加约束来补充数据,并防止通过惩罚模型通常由某些规范函数测量的量级来防止过度拟合,从而使问题更具可取性。 这可以通过选择偏差-方差权衡中的最佳复杂性来提高所学模型的通用化。 正则化的工作原理是将与系数值关联的点添加到假设的错误。 具有极端系数值的准确模型将受到更多的惩罚,但具有更保守值的不太准确的模型将受到更少的惩罚。
此学习器支持 弹性网络正则化:L1-norm(LASSO)的线性组合,$||\textbf{w} ||_1$和 L2-norm (ridge),$||\textbf{w} ||_2^2$ 正则化。 L1-norm 和 L2-norm 正则化具有不同的效果和用途,在某些方面是互补的。 使用 L1-norm 可以增加训练的 $\textbf{w}$ 的稀疏性。 使用高维数据时,它会将不相关的特征的小权重缩小到 0,因此在进行预测时,不会将任何资源用于这些不良特征。 如果使用 L1 规范正则化,则训练算法为 OWL-QN。 L2 规范正则化对于不稀疏的数据是可取的,它主要惩罚存在较大的权重。
主动正则化(即将大型系数分配给 L1-norm 或 L2 规范正则化术语)可以通过将重要变量排除在模型中来损害预测能力。 因此,应用逻辑回归时,选择正确的正则化系数非常重要。
有关使用示例的链接,请查看“另请参阅”部分。
字段
| 名称 | 说明 |
|---|---|
| FeatureColumn |
训练程序期望的功能列。 (继承自 TrainerEstimatorBase<TTransformer,TModel>) |
| LabelColumn |
训练程序期望的标签列。 可以是 |
| WeightColumn |
训练器期望的权重列。 可以 |
属性
| 名称 | 说明 |
|---|---|
| Info |
使用 IEstimator<TTransformer> 通过 L-BFGS 方法训练的线性逻辑回归模型预测目标。 (继承自 LbfgsTrainerBase<TOptions,TTransformer,TModel>) |
方法
| 名称 | 说明 |
|---|---|
| Fit(IDataView, LinearModelParameters) |
继续使用已训练LbfgsLogisticRegressionBinaryTrainer的 |
| Fit(IDataView) |
火车并返回一个 ITransformer。 (继承自 TrainerEstimatorBase<TTransformer,TModel>) |
| GetOutputSchema(SchemaShape) |
使用 IEstimator<TTransformer> 通过 L-BFGS 方法训练的线性逻辑回归模型预测目标。 (继承自 TrainerEstimatorBase<TTransformer,TModel>) |
扩展方法
| 名称 | 说明 |
|---|---|
| AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
将“缓存检查点”追加到估算器链。 这将确保根据缓存的数据训练下游估算器。 在执行多个数据传递的训练器之前,拥有缓存检查点会很有帮助。 |
| WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
给定估算器后,返回一个包装对象,该对象将调用委托一次 Fit(IDataView) 。 估算器通常必须返回有关拟合情况的信息,这就是为什么 Fit(IDataView) 该方法返回特定类型化对象的原因,而不仅仅是常规 ITransformer对象。 但是,同时, IEstimator<TTransformer> 通常形成成包含许多对象的管道,因此我们可能需要通过 EstimatorChain<TLastTransformer> 估算器链来生成一个估算器链,而我们想要获取转换器的估算器被埋在此链中的某个位置。 对于这种情况,我们可以通过此方法附加一个委托,该委托将在调用拟合后调用。 |
适用于
另请参阅
- LbfgsLogisticRegressionBinaryTrainer.Options
- LbfgsLogisticRegression(BinaryClassificationCatalog+BinaryClassificationTrainers, String, String, String, Single, Single, Single, Int32, Boolean)
- LbfgsLogisticRegression(BinaryClassificationCatalog+BinaryClassificationTrainers, LbfgsLogisticRegressionBinaryTrainer+Options)