人工智能项目——推荐系统实战(一)

本文详细探讨了推荐系统的核心概念、与信息过滤和搜索的区别,以及在Web项目中的应用。重点介绍了推荐算法(如协同过滤、基于内容的推荐),数据处理技术(如Lambda架构和分层架构),以及解决冷启动问题的方法。同时涵盖了常用的评估指标和优化策略。
摘要由CSDN通过智能技术生成
  • 推荐系统

    • 概念

      • 信息过滤系统 解决信息过载 用户需求不明确的问题
      • 利用一定的规则给物品推序 展示给需求不明确的用户
    • 推荐 搜索区别

      • 推荐个性化较强,用户被动接受,希望能够提供持续服务
      • 搜索个性化弱,用户主动搜索,快速满足用户需求
    • 推荐和web项目区别

      • web 构建稳定的信息流通通道
      • 推荐 信息过滤系统
      • 推荐 结果是概率问题
      • web 对结果有明确预期
  • 推荐系统的架构

    • 系统要素

      • UI与UE(前端界面)
      • 数据(Lambda架构)
      • 业务知识
      • 算法
    • 整体架构

      • 大数据Lanbda架构

        • 解决实时计算(数据相对比较小,可以快速反应)和离线计算(数据量太多需要一定时间才能完成)共同提供服务的问题
        • 离线/实时计算优劣
          • 离线:处理数据量大,延迟大
          • 实时:响应快,处理的数据量小
        • 涉及技术
          • 分层架构
            • 批处理层(离线)
              • data不可变,可进行任何运算,可水平扩展
              • 高延迟(计算量数据量不同so延迟不同)
              • 日志收集Flume
              • 分布式存储Handoop(数据量太大一个地方存不下要分布在多个地方存储)(数据分布式处理分布在n台电脑上so也可以在n台电脑上一起处理数据加快数据处理)
              • 分布式计算Hadoop MapReduce & spark
              • 视图存储数据库
                • nosql
                • Redis/memcache
                • MySQL
            • 实时处理层(在线)
              • 流式处理,持续计算
              • 存储分析某窗口期内数据
              • 最终正确性
              • 实时数据收集 flume(日志采集系统) & kafka(消息队列)
              • 实时数据分析 spark streaming / storm / flink
            • 服务层
              • 支持随机读
              • 短时间内返回结果
              • 读取并归并批处理层和实时处理层结果
      • 推荐算法架构

        • 召回阶段(基于用户行为海选推荐内容)
          • 协同过滤算法
            • 基于用户的
            • 基于物品的
        • 排序阶段(决定最终推荐效果)
          • CTR预估(即点击率预估,根据用户点击数据估计用户是否会点击)(使用LR算法即逻辑回归算法)
            • LR算法:
        • 策略调整(根据推荐效果与商业合作等调整推荐策略)
  • 推荐模型建构

    • 流程:数据采集->特征工程->挑选算法训练模型->评估、模型上线

      • 特征工程(从数据中筛选特征)

        • 协同过滤算法(最经典的推荐算法)

          • 基本思想:物以类聚人以群分(和你喜好相同的人喜欢的东西,和你喜欢的东西相似的东西)
          • 实现步骤
            • 1.计算两两相似度然后排序,找出top_n相似的人或物
            • 2.by top_n结果生成初始推荐结果,再过滤掉用户已有记录者or明确不感兴趣者
            • 基于用户:
              • 1.给用户a找到最相似的n个用户
              • 2.n个用户消费过哪些物品
              • 3.n个用户消费过的物品中减去a消费过的=推荐结果
            • 基于物品
              • 1.给物品a找到最相似的n个物品
              • 2.找到a用户的消费记录中物品的相似物品
              • 3.从这些消费物品中减去重合的=推荐结果
          • 相似度计算方法
            • 数据分类:实数值(物品评分)、布尔值(是否点击是否收藏)
            • 计算方法:\\\\(数据是连续数值则较适合余弦和皮尔逊)\\\\(数据是0、1布尔值适合用杰卡德相似度)
              • 余弦相似度(只考虑夹角不考虑向量长度)(算向量夹角的余弦值)
              • 皮尔逊相关系数(对余弦相似度的优化)(对向量的每个分量做中心化再求余弦相似度)
              • 杰卡德相似度(交集除以并集)
          • 代码实现(后续作品ing)
          • 基于模型的算法
            • 用户-物品矩阵较稀疏时,直接取物品向量 用户向量计算相似度不太靠谱
            • 基于模型的算法可以解决用户-物品矩阵较稀疏的问题
            • 矩阵分解
              • m x n的矩阵可以拆分为m x k和k x n的矩阵(前提:k<<m且k<<n)
                • 把大矩阵拆分为两个小的 用户矩阵 物品矩阵
                • 大矩阵 约等于 用户矩阵 × 物品矩阵
                • 用aks 交替最小二乘法来优化损失
                • 算出优化后的物品矩阵 取出物品向量
                • 算出优化后的用户矩阵 取出用户向量
                • 用户向量点乘物品向量 得最终评分预测
  • 推荐系统评估

    • 隐式反馈&显式反馈

    • 常用指标

      •  
        • 准确性
          • 理论角度
            • 评分预测(把用户数据划分训练集测试集用RMSE MAE算)
            • topn推荐(召回率 精准率)
          • 业务角度

    • 评估方法

      • 问卷:成本高,影响用户体验
      • 离线评估:仅能评估少数指标,只能在用户看到过的候选集上做评估且有偏差,速度快不影响用户体验
      • 在线评估:灰度评估&A/B测试50%全量上线
      • 实践:离线评估和在线评估结合,定期问卷调查
  • 推荐系统冷启动问题

    • 概念(本质是推荐系统依赖历史数据预测用户偏好)
      • 用户冷启动:how为新用户做个性化推荐

        • 1.收集用户特征(基本信息填写,权限获取)
        • 2.引导用户填写兴趣
        • 3.使用其它站点的行为数据
        • 4.新老用户推荐差异
          • 新:热门推荐;老:长尾推荐
          • explore explot力度
          • 使用单独的特征和模型评估
        • 综上即:打标签(尽量收集用户信息构建用户画像)、据标签聚类,用已有用户的行为做推荐、基于流行度
      • 物品冷启动:how将新物品推荐给用户

        • 给物品打标签构建物品画像、物品聚类基于已有相似物品做基于内容的推荐
      • 系统冷启动:用户冷启动+物品冷启动

        • 若应用缺乏用户行为数据,做基于内容的推荐
          • 基于内容的推荐:
            • 给物品打标签
              • 系统自己提取(如业务数据库)
              • 用户填写(如淘宝搜索关键词)
              • 中文分词 利用算法计算词的权重(词出现频率高则权重大之类)
                • 计算词权重的算法有:tf-idf(term frequency词频idf逆文档率)(如1000篇文有20篇出现了python,那其逆文档率就是1000/20后以取以10为底的对数值)、textrank
            • 利用标签的文字 转换成词向量
              • 用向量表示语义,若两词向量相似度高则认为语义相近
            • 利用词向量 构建物品的向量
              • 一个物品有n个关键词,每个关键词对应一个词向量
              • 求和(权重*词向量)/n
              • 利用n个关键词的词向量获取物品向量
            • 通过物品向量计算相似度
              • 皮尔逊相关系数 计算物品相似度
        • 随用户行为积累,做协同过滤
        • 最后基于内容和协同过滤的结果都算出来,加权求和得结果
          • 比较 (a)基于内容的推荐&(b)基于物品的协同过滤
            • contend_base:词向量->物品向量->计算相似度
            • item_based cf:user-item martrlx->物品向量->相似度
            • 物品向量构建过程不同
              • a:by文本(物品描述信息,系统填标签,用户填标签)(物品本身)
              • b:by用户评分矩阵数据得到(用户行为)
  • 推荐算法

    • Model-Based CF(基于模型的协同过滤算法)

      • 基于K最近邻的协同过滤推荐
      • 基于回归模型的协同过滤推荐
        • 基准预测Baseline
          • 偏置:用户或物品普遍高于或低于平均值的差值
          • 用基准预测来预测评分的步骤:

          • 求解用户偏置与物品偏置的问题可转换为损失优化的过程(找到与已知评分拟合的最好的用户偏差和物品偏差并避免过拟合)
      • 基于矩阵分解的协同过滤推荐
    • 梯度下降算法:一种用于找到函数局部最小值的优化算法

      • 随机梯度下降
        • 在推荐系统中主要用于最小化损失函数,从而实现模型参数的优化
          • 解决数据稀疏性问题:通过优化损失函数,有效地学习用户-项目之间的相似度,从而减少数据稀疏性对推荐系统性能的影响。
          • 解决冷启动问题:通过在新用户或新项目上进行软最大化,从而为其提供更准确的推荐。
          • 优化推荐系统的评估指标:通过优化不同的损失函数实现对推荐系统的性能评估。
      • 代码实现(后续作品ing)
  • 26
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值