FieldAwareFactorizationMachineTrainer 类

定义

使用 IEstimator<TTransformer> 使用随机渐变方法训练的字段感知因子化计算机模型预测目标。

public sealed class FieldAwareFactorizationMachineTrainer : Microsoft.ML.IEstimator<Microsoft.ML.Trainers.FieldAwareFactorizationMachinePredictionTransformer>
type FieldAwareFactorizationMachineTrainer = class
    interface IEstimator<FieldAwareFactorizationMachinePredictionTransformer>
Public NotInheritable Class FieldAwareFactorizationMachineTrainer
Implements IEstimator(Of FieldAwareFactorizationMachinePredictionTransformer)
继承
FieldAwareFactorizationMachineTrainer
实现

注解

输入和输出列

输入标签列数据必须为 Boolean。 输入特征列数据必须是已知大小的向量 Single

该训练程序输出以下列:

输出列名称 列名称 说明
Score Single 模型计算的未绑定分数。
PredictedLabel Boolean 预测的标签,基于分数符号。 负分数映射到 false,正分数映射到 true
Probability Single 通过校准具有 true 作为标签的分数来计算的概率。 概率值在 [0, 1] 范围内。

若要创建此训练程序,请使用 FieldAwareFactorizationMachineFieldAwareFactorizationMachineFieldAwareFactorizationMachine (选项)

与其他二进制分类器相比,它只能支持一个特征列,字段感知分解计算机可以使用多个特征列。 每个列都被视为某些功能的容器,此类容器称为字段。 请注意,所有特征列都必须是浮向量,但其维度可能有所不同。 将特征拆分为不同字段的动机是独立对不同分布中的特征进行建模。 例如,在在线游戏商店中,可以从用户配置文件创建的功能,以及从游戏配置文件创建的功能可以分配给两个不同的字段。

训练器特征

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

背景

分解机系列是一个强大的模型组,用于监督学习问题。 它于2010年首次在斯特芬伦德尔的 因子化机器 论文中引入。 后来,其通用化版本之一,现场感知因子化计算机,成为最近推荐器系统和点击率预测竞赛的重要预测模块。 有关示例,请参阅 Steffen Rendle KDD-Cup 2012 (Track 1Track 2) 、Criteo、Avazu'sOutbrain 在 Kaggle 上的点击预测挑战中获胜的解决方案。

当特征结合与要预测的信号非常相关时,分解计算机尤其强大。 可以形成重要结合的功能对示例是音乐建议中的用户 ID 和音乐 ID。 如果数据集仅包含密集的数字特征,则不建议使用分解计算机,或者应执行某些特征化。

评分函数

现场感知分解机是一种评分函数,用于将特征向量从不同字段映射到标量分数。 假设所有 $m$ 特征列都串联成长特征向量 $\textbf{x} \in {\mathbb R}^n$ 和 ${\mathcal F} (j) $ 表示$j$-th 特征的字段缩进器。 相应的分数是 $\hat{y} (\textbf{x}) = \langle \textbf{w}, \textbf{x} \rangle + \sum_{j = 1}^n \sum_{j' = j + 1}^n \langle \textbf{v}_{j, {\mathcal F} (j') }, \textbf{v}_{j', {\mathcal F} (j) } \rangle x_j x_{j'}$,其中 $\langle \cdot \cdot \rangle$ 是内部产品运算符, $\textbf{w} \in {\mathbb R}^n$ 存储线性系数,而 $\textbf{v}_{j, f}\in {\mathbb R}^k$ 是 $j$-th 功能在 $f$-th 字段的延迟空间中的表示形式。 请注意,$k$ 是用户指定的潜伏维度。

预测的标签是 $\hat{y}$的符号。 如果 $\hat{y} > 0$,则此模型预测为 true。 否则,它会预测 false。

有关现场感知因子化计算机的系统简介,请参阅 此白皮书

训练算法详细信息

实现的 FieldAwareFactorizationMachineTrainer 算法基于 随机渐变方法。 此 联机文档中的算法 3 中介绍了算法详细信息。 最小化损失函数是 逻辑损失,因此训练的模型可以被视为非线性逻辑回归。

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

方法

Fit(IDataView)

火车并返回一个 FieldAwareFactorizationMachinePredictionTransformer

Fit(IDataView, IDataView, FieldAwareFactorizationMachineModelParameters)

继续使用已训练modelParameters和/或验证数据的训练FieldAwareFactorizationMachineTrainer,并返回 aFieldAwareFactorizationMachinePredictionTransformer

GetOutputSchema(SchemaShape)

转换器的架构传播。 如果输入架构与提供的架构类似,则返回数据的输出架构。

扩展方法

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

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

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

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

适用于

另请参阅