machine-learning
  • Welcome
  • 动手学深度学习
    • 1. 前言
    • 2. 预备知识
    • 3. 线性神经网络
    • 4. 多层感知机
    • 5. 深度学习计算
    • 6. 卷积神经网络
    • 7. 现代卷积神经网络
    • 8. 循环神经网络
    • 9. 现代循环神经网络
    • 10. 注意力机制
    • 11. 优化算法
    • 12. 计算性能
    • 13. 计算机视觉
    • 14. 自然语言处理:预训练
    • 15. 自然语言处理:应用
    • 16. 附录:深度学习工具
  • 百面机器学习
    • 1. 特征工程
    • 2. 模型评估
    • 3. 经典算法
    • 4. 降维
    • 5. 非监督学习
    • 6. 概率图模型
    • 7. 优化算法
    • 8. 采样
    • 9. 前向神经网络
    • 10. 循环神经网络
    • 11. 强化学习
    • 12. 集成学习
    • 13. 生成式对抗网络
    • 14. 人工智能的热门应用
  • 百面深度学习
    • 1. 卷积神经网络 CNN
    • 2. 循环神经网络 RNN
    • 3. 图神经网络 GNN
    • 4. 生成模型
    • 5. 生成式对抗网络 GAN
    • 6. 强化学习 RL
    • 7. 元学习
    • 8. 自动化机器学习 AutoML
    • 9. 计算机视觉 CV
    • 10. 自然语言处理 NLP
    • 11. 推荐系统
    • 12. 计算广告
    • 13. 视频处理
    • 14. 计算机听觉
    • 15. 自动驾驶
  • 统计学习方法
  • 推荐系统实践
    • 1. 推荐系统
    • 2. 特征工程
    • 3. Embedding
    • 4. 精排
    • 5. 召回
    • 6. 粗排/重排
    • 7. 多任务/多场景
    • 8. 冷启动
    • 9. 评估调试
    • 10. 自我修养
  • 深度学习推荐系统
    • 1. 推荐系统
    • 2. 进化之路
    • 3. 深度学习的应用
    • 4. Embedding
    • 5. 多角度审视
    • 6. 工程实现
    • 7. 评估方法
    • 8. 前沿实践
    • 9. 知识框架
  • 强化学习的数学原理
    • 1. 基础概念
    • 2. 贝尔曼公式
    • 3. 贝尔曼最优公式
    • 4. 值迭代与策略迭代
    • 5. 蒙特卡洛方法
    • 6. 随机近似与随机梯度下降
    • 7. 时序差分方法
    • 8. 值函数近似
    • 9. 策略梯度方法
    • 10. Actor-Critic方法
Powered by GitBook
On this page
  • 2.1 批判 “特征工程过时” 的错误论调
  • 2.2 特征提取
  • 2.3 数值特征的处理
  • 2.4 类别特征的处理
  1. 推荐系统实践

2. 特征工程

2.1 批判 “特征工程过时” 的错误论调

  • 万能函数模拟只是理论,现实存在问题:梯度消失、梯度爆炸、不同特征不均衡

    • Garbage in, garbage out.

  • 自动特征工程不是无代价的,计算复杂,耗时与候选集规模成正比

    • DIN:从用户行为序列中挖掘短期兴趣

    • SIM:挖掘长期兴趣

2.2 特征提取

  • item 特征

    • 自身属性:除了属性信息,item_id 也是重要特征

    • 类别标签:内容分析(NLP、CV),获得静态画像(一级分类、二级分类、标签),有置信度

    • 基于内容的 embedding:CNN、BERT,模型的某一层输出

    • 动态画像:后验统计数据,实际粒度 × 统计对象(e.g. 过去 1 天的平均播放时长)

      • 辩证看待:存在幸存者偏差,但影响没那么严重

      • 纵容马太效应,不利于新 item 冷启

    • user 给 item 反向打标签:消费数据,后验修正标签

  • 用户画像

    • 静态画像:人口特征、APP 列表等,对推荐算法的作用不大(老用户不需要,新用户学不到)

      • 如果新老用户共用模型,老用户样本多,主导训练,模型不重视新用户特征

      • 如果新用户单独模型,没有足够数据训练出有效模型(行为少、噪声多)

      • user_id 虽然有类似问题,但仍然非常重要,提供了用户侧最细力度的个性化信息

    • 动态画像:历史行为提取的兴趣爱好

      • 交互过的 item_id 集合(时间顺序):简单 pooling、DIN / SIM 引入 attention 机制(线上完成)

      • 离线抽取 + 在线查询:用户粒度 × 时间粒度 × item 属性 × 动作类型 × 统计对象 × 统计方法

        • e.g. 用户 A / 男性用户,过去 1 天,坦克标签,点击,次数,CTR

  • 交叉特征:DNN 交叉能力有限、手动交叉容易吸收

    • 笛卡尔积交叉:两个 field 内的 feature 两两组合

    • 内积交叉:共同标签对应分数,相乘再相加

  • 偏差特征(bias):位置偏差(position bias)、视频年龄

    • above click :只有点击 item 上方的未点击 item,才作为负样本

    • 位置喂进模型,预测时一律为 0(伪特征值)

      • 只能通过一个线性层加入模型(取值不影响排序结果)

      • 打分 logit=DNN(u,t)+wTblogit=DNN(u,t)+w^Tblogit=DNN(u,t)+wTb

2.3 数值特征的处理

  • 处理缺失值:(整体/人群的)均值/中位数、训练模型预测缺失值、如果分桶则映射到未知

  • 标准化:z-score x∗=x−μσx^*=\frac{x-\mu}{\sigma}x∗=σx−μ​,对于长尾分布先做变换(sqrt、log)压缩接近正态分布

  • 数据平滑与消偏

    • 威尔逊区间平滑 p∗=p+z22n−zp(1−p)n+z24n21+z2np^*=\frac{p+\frac{z^2}{2 n}-z \sqrt{\frac{p(1-p)}{n}+\frac{z^2}{4 n^2}}}{1+\frac{z^2}{n}}p∗=1+nz2​p+2nz2​−znp(1−p)​+4n2z2​​​:克服小样本的负面影响

    • CoEC (Click over Expected Click) CoEC=∑i=1Nci∑i=1NecpiCoEC=\frac{\sum_{i=1}^N c_i}{\sum_{i=1}^N ec_{p_i}}CoEC=∑i=1N​ecpi​​∑i=1N​ci​​:消除不同展示位置带来的偏差因素

  • 分桶离散化:等宽分桶、等频分桶、模型分桶(简单决策树,叶子结点编号)

2.4 类别特征的处理

  • 一等公民:更加契合推荐系统的特点

    • 基础是 user / item 画像,都是高位系数分类标签,个性化的 user_id / item_id 也是类别特征

    • 输入特征与目标之间鲜有线性关系,更多的是量变引起质变

    • 线上工程实现偏爱类别特征:非零存储、排零计算,提升实时性

  • 享受 VIP 服务

    • 为了增强表达能力:embedding、多特征交叉

    • 类别特征高维稀疏:Parameter Server 架构

    • 罕见特征训练不充分:FTRL 每维特征自适应调节学习率、DIN、FM

  • 映射

    • 映射表:标签特征 - 映射表 - embedding matrix - pooling

    • 特征哈希:标签特征 - hashing - embedding matrix - pooling

      • 哈希冲突可能导致混淆,但可能性不大且负面影响可控

Previous1. 推荐系统Next3. Embedding

Last updated 1 year ago