FieldAwareFactorizationMachineTrainer 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
使用 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] 范围内。 |
若要创建此训练程序,请使用 FieldAwareFactorizationMachineFieldAwareFactorizationMachine 或 FieldAwareFactorizationMachine (选项) 。
与其他二进制分类器相比,它只能支持一个特征列,字段感知分解计算机可以使用多个特征列。 每个列都被视为某些功能的容器,此类容器称为字段。 请注意,所有特征列都必须是浮向量,但其维度可能有所不同。 将特征拆分为不同字段的动机是独立对不同分布中的特征进行建模。 例如,在在线游戏商店中,可以从用户配置文件创建的功能,以及从游戏配置文件创建的功能可以分配给两个不同的字段。
训练器特征
机器学习任务 | 二元分类 |
规范化是否需要? | 是 |
是否需要缓存? | 否 |
除 Microsoft.ML 外所需的 NuGet | 无 |
可导出到 ONNX | 否 |
背景
分解机系列是一个强大的模型组,用于监督学习问题。 它于2010年首次在斯特芬伦德尔的 因子化机器 论文中引入。 后来,其通用化版本之一,现场感知因子化计算机,成为最近推荐器系统和点击率预测竞赛的重要预测模块。 有关示例,请参阅 Steffen Rendle KDD-Cup 2012 (Track 1 和 Track 2) 、Criteo、Avazu's 和 Outbrain 在 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) |
继续使用已训练 |
GetOutputSchema(SchemaShape) |
转换器的架构传播。 如果输入架构与提供的架构类似,则返回数据的输出架构。 |
扩展方法
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
将“缓存检查点”追加到估算器链。 这将确保针对缓存的数据训练下游估算器。 在执行多个数据传递的训练器之前,拥有缓存检查点会很有帮助。 |
WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
给定估算器后,返回将调用委托的 Fit(IDataView) 包装对象。 估算器通常必须返回有关拟合情况的信息,这就是为什么 Fit(IDataView) 该方法返回特定类型化对象的原因,而不仅仅是常规 ITransformer对象。 但是,同时, IEstimator<TTransformer> 通常形成为包含许多对象的管道,因此,我们可能需要通过 EstimatorChain<TLastTransformer> 估算器链生成一系列估算器,以便我们要获取转换器的估算器被埋在此链中的某个位置。 对于这种情况,我们可以通过此方法附加调用一次将调用的委托。 |
适用于
另请参阅
- FieldAwareFactorizationMachineTrainer.Options
- FieldAwareFactorizationMachine(BinaryClassificationCatalog+BinaryClassificationTrainers, String, String, String)
- FieldAwareFactorizationMachine(BinaryClassificationCatalog+BinaryClassificationTrainers, String[], String, String)
- FieldAwareFactorizationMachine(BinaryClassificationCatalog+BinaryClassificationTrainers, FieldAwareFactorizationMachineTrainer+Options)