分类阶段

1.模型分类:

单一的浅层模型:lr和fm,需要特征处理

FM其实是浅层的Wide-deep模型,一阶部分相当于wide部分,二阶部分相当于deep部分

浅层模型的组合:GBDT,GBDT+LR

非线性模型(CART/RF(特征随机样本随机)/GBDT)/FM)

CART/RF(特征随机样本随机)/GBDT不适合处理高维特征例如ID,树的高度很高,而且就是记忆过去的事件。使用GBDT为顺序类特征和类别类特征编码,就变成id类特征,然后用FM为每个特征得到embedding,可以再将embedding进行拼接,拼接的结果放进lr中训练,便得到最终结果。

GBDT+LR:特征经过每一颗树处理后相当于对特征进行转换形成了新的特征,对每个叶子结点进行编码,比如落到某个叶子结点便是1, 其他叶子结点为0,将这些新的特征放进LR中进行处理。这两个模型是分开训练,首先训练树模型,得到特征后训练lr。当新的样本来时,树的参数和lr模型的参数都进行保存了,这时候来新的特征我们只需要运行这两个模型即可得到分数。优缺点:利用树的特征进行特征转换,不用手动选特征;缺点时两个模型单独训练不是联合训练,没有统一目标函数,可解释性差。

深度模型需要一个tf server用来rank,浅层模型可以直接将参数load进rank server:DSSM(使用DNN分开获取embedding然后计算cos相似度)/Deep Crossing

WDL/Youtube DNN:tf.estimator.DNNLinearCombinedClassifier

本身就是离散特征和连续特征离散化后的离散特征和离散特征的组合放入W,将连续特征放入DNN,对于本身是离散型特征做hash蓝后embedding放入dnn。

tf.feature_column.numeric_column连续性特征

tf.feature_column.categorical_column_with_hash_bucket离散性特征

tf.feature_column.bucketized_column连续性特征离散化

tf.feature_column.crossed_column交叉特征

tf.feature_column.embedding_column

a_out = h(w_wide, w_deep) = sigmoid(w_wide[x, xcross]+w_deep*a_out+b)

PNN/NFM/AFM/FFM

Deepfm

DCN

2.特征

特征数目:样本数目=1:100

用户特征:用户静态特征,年龄/地域/简单的统计特征(浏览的商品数等)

高维特征,根据用户浏览点击购买历史给用户打标签(品牌)

商品特征:商品名称/上线日期/统计特征(被购买的次数,点击率)

高维特征,被哪个年龄段喜欢

上下文:时间/地理位置等

用户和Item关系特征:点击购买记录

预处理:缺省值填充/归一化/离散化

离散特征就是one-hot

连续特征要统计一下分布,describe()函数,离散化

类别特征(id)

序数特征

数值特征

对于高维特征,类别特征等用FM来拟合,对于序数和数值可以先用GBDT来得到叶子节点值


对于embedding,相关性得分例如cos距离,比较鲁棒,直接用embedding直接输入,强依赖模型。

你可能感兴趣的:(分类阶段)