推荐系统-DeepCrossing模型
0 整体思路
简单来说,DeepCrossing模型解决了特征工程、稀疏向量稠密化、优化目标拟合等推荐系统常见问题。
我们依次对数据进行初步分析、预处理、特征拼接、输入到带残差的MLP、最后使用逻辑回归Scoring输出概率值。
1 预处理
拿到数据,先划分为数值型和类别型两类数据:
我们拿到的数据比较清楚,I1-I13
是数值型、C1-C26
是类别型,不过有不少缺失值,可以在预处理进行填充,数值型填充0,类别型填充-1。
此外I1-I13
上,部分字段的数据大小差别甚大,可以把他们映射到对数范围,提高模型的稳定性。
最后,对类别型字段做一下类别编码。
def data_process(data_df, dense_features, sparse_features):
"""
简单处理特征,包括填充缺失值,数值处理,类别编码
param data_df: DataFrame格式的数据
param dense_features: 数值特征名称列表
param sparse_features: 类别特征名称列表
"""
data_df[dense_features] = data_df[dense_features].fillna(0.0)
for f in dense_features:
data_df[f] = data_df[f].apply(lambda x: np.log(x+1) if x > -1 else -1) # 归一化