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

该训练程序输出以下列:

输出列名称 列名称 描述
Score Single 的向量 所有类的分数。 值越高意味着落入相关类的概率越高。 如果第 i 个元素具有最大值,则预测的标签索引为 i。 请注意,i 是从零开始的索引。
PredictedLabel key 类型 预测标签的索引。 如果其值为 i,则实际标签为键值输入标签类型中的第 i 个类别。

训练器特征

机器学习任务 多类分类
规范化是否需要? 取决于基础二进制分类器
是否需要缓存?
除 Microsoft.ML 外所需的 NuGet
可导出到 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> 估算器链生成一系列估算器,以便我们要获取转换器的估算器被埋在此链中的某个位置。 对于这种情况,我们可以通过此方法附加调用一次将调用的委托。

适用于

另请参阅