上一节我们通过多路召回选出候选的文章集{user_id: [item1, item2, ....]},对于每个用户将每篇可能点击的文章构造成监督学习训练数据,即将dict展开得到(user1, item1),(user1, item2)等形式的样本数据。
接下来通过特征工程制作数据集的特征和标签,转成监督学习问题。
标签label
对于每个用户,N个候选文章生成N条训练样本,若用户最后一次点击的文章在候选文章中,则该条样本的标签值为1,否则为0。
特征工程
基于原始数据进行特征工程构造特征:
- 基于日志数据集获取用户最后一次点击操作和用户的历史点击
- 根据用户的历史点击表、最后召回文章列表、文章的信息表和embedding向量,基于用户的历史行为制作特征
- 制作标签,形成最后的监督学习数据集
构造特征类型:
-
用户历史行为相关特征
- 用户最后点击的N篇文章与该用户每篇召回的文章的时间差特征、字数差特征、相似性特征
- 用户最后点击的N个文章与该用户每个召回的文章相似度(最大、最小、均值)
-
用户特征
- 用户点击环境、设备特征
- 用户活跃度:根据用户点击次数、点击时间构造
- 用户点击文章时间偏好(时间段h)
- 用户点击文章主题偏好(点击过的文章主题one-hot)
- 用户点击文章字数偏好
-
文章特征
- 文章自身特征:文章主题、文章字数、创建时间、embedding
- 文章热度:文章被点击次数和点击时间反映
- 召回文章的主题是否在用户主题偏好中
训练数据负采样:
- 如果将所有的候选文章都展开成训练样本会发现正负样本比例极度不平衡的情况,此时对负样本进行下采样,一方面缓解正负样本比例问题,另一方面减小模型。
- 负采样需包则所有的用户和文章都包含在采样后的训练数据中