OneVersusAllTrainer 类

定义

用于 IEstimator<TTransformer> 训练使用指定二进制分类器的一对多类分类器。

public sealed class OneVersusAllTrainer : Microsoft.ML.Trainers.MetaMulticlassTrainer<Microsoft.ML.Data.MulticlassPredictionTransformer<Microsoft.ML.Trainers.OneVersusAllModelParameters>,Microsoft.ML.Trainers.OneVersusAllModelParameters>
type OneVersusAllTrainer = class
    inherit MetaMulticlassTrainer<MulticlassPredictionTransformer<OneVersusAllModelParameters>, OneVersusAllModelParameters>
Public NotInheritable Class OneVersusAllTrainer
Inherits MetaMulticlassTrainer(Of MulticlassPredictionTransformer(Of OneVersusAllModelParameters), OneVersusAllModelParameters)
继承

注解

若要创建此训练程序,请使用 OneVersusAll

输入和输出列

输入标签列数据必须是 类型,特征列必须是已知大小的向量 Single

该训练程序输出以下列:

输出列名称 列类型 Description
Score Single 的向量 所有类的分数。 较高的值表示属于关联类的概率较高。 如果 i-th 元素具有最大值,则预测的标签索引将为 i。 请注意,i 是从零开始的索引。
PredictedLabel 类型 预测标签的索引。 如果其值为 i,则实际标签将是键值输入标签类型中的第一个类别。

训练器特征

机器学习任务 多类分类
是否需要规范化? 取决于基础二进制分类器
是否需要缓存? 是的
除 Microsoft.ML 之外所需的 NuGet None
可导出到 ONNX 是的

训练算法详细信息

在一对多(OVA)策略中,二元分类算法用于为每个类训练一个分类器,该分类器将该类与所有其他类区分开来。 然后,通过运行这些二进制分类器并选择具有最高置信度分数的预测来执行预测。 此算法可与 ML.NET 中的任何二进制分类器一起使用。 一些二进制分类器已经实现了多类问题,因此用户可以根据上下文选择任一类。 二进制分类器的 OVA 版本(如包装 a LightGbmBinaryTrainer)可能不同于 LightGbmMulticlassTrainer该版本,后者直接开发多类分类器。 请注意,即使分类器指示它不需要缓存,OneVersusAll 将始终请求缓存,因为它将执行多个传递超过数据集。 如果分类器指示数据管道受益于数据管道,此训练程序将请求规范化。

这可以让你利用自然没有多类选项的训练程序,例如,使用 FastTreeBinaryTrainer 多类问题来解决多类问题。 或者,即使训练程序具有多类选项,也可以允许 ML.NET 解决一个“更简单”的问题,但由于通常内存约束,直接使用它是不可行的。 例如,虽然多类逻辑回归是解决多类问题的一种更有原则的方法,但它要求训练程序以 L-BFGS 历史记录的形式 同时存储更多的中间状态,而不是一对一的分类模型所需的一对一。

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

属性

名称 说明
Info

用于 IEstimator<TTransformer> 训练使用指定二进制分类器的一对多类分类器。

(继承自 MetaMulticlassTrainer<TTransformer,TModel>)

方法

名称 说明
Fit(IDataView)

MulticlassPredictionTransformer<TModel>训练模型。

GetOutputSchema(SchemaShape)

获取输出列。

(继承自 MetaMulticlassTrainer<TTransformer,TModel>)

扩展方法

名称 说明
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

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

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

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

适用于

另请参阅