本文介绍了DeepFM算法相关内容。
简介
DeepFM将深度学习模型(DNN)和因子分解机(FM)模型结合,同时支持学习低阶显式特征组合和高阶隐式特征组合,不需要人工做特征工程,常用于推荐系统或广告系统。
输入通常有以下两类特征:
类别特征(Categorical Feature):字符串类型。如性别(男/女)或物品类型(服饰、玩具、电子等)。
数值特征(Numrical Feature):整型或浮点型。如用户活跃度或商品价格等。
输出通常是0~1之间的浮点数,表示取值为1的概率。可以用于排序,也可以用于二分类。
使用场景
DeepFM通常用于分类或排序场景。在人工构建的特征但不能直接反映结果的场景上效果更好。在各种各样的推荐场景中,低阶特征组合或者高阶的特征组合都会对用户最终的行为产生影响。但人为可能无法明确特征组合,DeepFM可以自动学习这些组合。
例如:在个性化商品推荐场景中,通常需要做点击预估模型。使用用户过往的行为(点击、曝光未点击、购买等)作为训练数据,来预测用户点击或购买的概率。如果用户过往行为较多,且不能直接反映出在未来某时刻的点击或购买情况。DeepFM会对用户行为进行组合,同时将一些稀疏特征转化为高维的稠密特征。
参数说明
下表中的参数为创建模型CREATE MODEL
语法中model_parameter
参数的取值,您可以根据当前需求选择对应的参数。
参数 | 说明 |
metrics | 评估模型的指标参数。取值如下:
|
loss | 学习任务及对应的学习目标。取值如下:
|
optimizer | 优化器。取值如下:
|
validation_split | 交叉验证数据比例。默认值为0.2。 |
epochs | 迭代次数。默认6次。 |
batch_size | batch长度,batch越短越容易过拟合。默认64。 |
task | 任务类型。取值如下:
|
示例
创建模型与离线训练
/*polar4ai*/CREATE MODEL airline_deepfm WITH
(model_class = 'deepfm',
x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length',
y_cols='Delay',model_parameter=(epochs=6))
AS (SELECT * FROM db4ai.airlines);
模型评估
/*polar4ai*/SELECT Airline FROM EVALUATE(MODEL airline_deepfm,
SELECT * FROM db4ai.airlines LIMIT 20) WITH
(x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length',y_cols='Delay',metrics='acc');
模型预测
/*polar4ai*/SELECT Airline FROM PREDICT(MODEL airline_deepfm,
SELECT * FROM db4ai.airlines limit 20) WITH
(x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length');