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

该训练程序输出以下列:

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

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

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

训练器特征

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

Background

分解机系列是一个强大的模型组,用于监督学习问题。 它于2010年在Steffen Rendle的 因子化机器 论文中首次推出。 后来,其通用化版本之一,现场感知因子化计算机,成为最近推荐器系统和点击率预测竞赛中的重要预测模块。 有关示例,请参阅 Steffen Rendle 2012 KDD-Cup(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)} \r角度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, IDataView, FieldAwareFactorizationMachineModelParameters)

继续使用已训练和/或验证数据的训练FieldAwareFactorizationMachineTrainermodelParameters,并返回一个 FieldAwareFactorizationMachinePredictionTransformer

Fit(IDataView)

火车并返回一个 FieldAwareFactorizationMachinePredictionTransformer

GetOutputSchema(SchemaShape)

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

扩展方法

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

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

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

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

适用于

另请参阅