推荐系统 --- 推荐算法 --- 混合推荐算法(一)

概述

  • 优点
    • 充分利用 用户画像、物品画像、群体数据、知识模型 四种信息源
  • 多种算法融合的难点
    • 有个算法可能只给出结果,不给分数,⽐如⽤决策树产⽣⼀些推荐结果;
    • 每种算法给出结果时如果有分数,分数的范围不⼀定⼀样,所以不能互 相⽐较,⼤家各⾃家庭背景不⼀样;
    • 即使强⾏把所有分数都归⼀化,仍然不能互相⽐较,因为产⽣的机制不 同,有的可能普遍偏⾼,有的可能普遍偏低。

并行式混合

  • 概述
    • 多种推荐算法的输出结果加以整合形成最终的输出
  • 加权式
    • 概述
      • 推荐系统对多个推荐算法的计算结果进行加权平均处理,产生出单一的推荐结果
    • 算法流程
      • 训练阶段
        • 使用相同的训练数据,针对不同的推荐算法单独训练
      • 生成候选物品阶段
        • 合并各个推荐算法的结果注意:不同推荐算法能覆盖的场景有所不同
          • CF 只能覆盖已评分的物品
          • CB 可以覆盖任何物品
      • 生成评分阶段
        • 计算权重
    • 特点
      • 优点
        • 简单,直观
        • 权重便于调整
          • 动态调整
          • 投片替代数据评分
          • 有实验分析确定最佳权重配比
      • 缺点
        • 由于受到CF的影响,CB的部分优势受到负面影响
  • 切换式
    • 概述
      • 推荐系统在不同的推荐算法中进行切换以适应当前的推荐情境
    • 算法流程
      • 训练阶段
        • 使用相同的训练数据,针对不同的推荐算法单独训练
      • 算法选择阶段
      • 生成候选物品阶段
      • 生成评分阶段
    • 特点
      • 优点
        • 对各个推荐算法的优势和劣势保持很好的敏感度
      • 缺点
        • 由于需要考虑算法所切换的依据,增加了推荐过程中的复杂度
          • 算法可达到的置信度
          • 用户游弋在网站物品信息的深浅程度
            • 当用户处在高联通度的区域(信息的浅层),首选那些约束性较弱的推荐算法
            • 当用户处在信息的深处时,系统会选择后续算法
  • 混杂式
    • 概述
      • 推荐系统同时呈现出其上多种推荐算法的推荐结果按照一定的比例输出
    • 算法流程
      • 训练阶段
        • 使用相同的训练数据,针对不同的推荐算法单独训练
      • 生成候选物品阶段
      • 生成评分阶段
    • 特点
      • 当信息冲突的时候,设定仲裁机制
        • 为各个算法设定优先级
        • 各个算法结果并列输出

整体式混合

  • 概述
    • 对主推荐算法的输入数据做了预先处理,将多种推荐算法的特性整合到一起
  • 特征组合
    • 概述
      • 推荐系统从多种推荐数据源中获取特征,将这些特征组合起来放入单一的推荐算法中
    • 算法流程
      • 训练阶段
        • 辅助推荐算法
          • 输入
            • 训练数据
          • 输出
            • 附加特征
        • 主推荐算法
          • 输入
            • 训练输出
            • 附加特征
          • 输出
            • 候选物品
      • 候选物品
        • 输入
          • 用户画像
        • 输出
          • 候选物品
      • 最终评分
        • 输入
          • 候选物品
        • 输出
          • 最终评分
  • 特征补充
    • 概述
      • 推荐系统将一个推荐算法输出的特征信息作为另一种推荐算法的输入特征信息
    • 算法流程
      • 训练阶段
        • 辅助推荐算法
          • 输入
            • 训练数据
          • 输出
            • 补充训练数据
        • 主推荐算法
          • 输入
            • 补充训练数据
          • 输出
      • 候选物品
        • 辅助推荐算法
          • 输入
            • 用户画像
          • 输出
            • 补充用户画像
        • 主推荐算法
          • 输入
            • 补充用户画像
          • 输出
            • 候选物品
      • 最终评分
        • 辅助推荐算法
          • 输入
            • 候选物品
          • 输出
            • 补充的候选物品表示
        • 主推荐算法
          • 输入
            • 补充的候选物品表示
          • 输出
            • 评分
  • 特征组合 VS 特征补充
    • 特征补充
      • 优点
        • 更容易实现,无须对主推荐算法做修改
        • 维度相对较低
          • 特征组合:包含了辅助算法的大量高维数据
          • 特征补充:只是加入了少量的特征

流水线式混合

  • 概述
    • 将推荐算法按照一定次序运行,达到对推荐结果逐步优化的目的
  • 层叠式
    • 概述
      • 推荐系统中的一种推荐算法对另一种推荐算法的推荐结果进行提炼
    • 算法流程
      • 分支主题
  • 级联式
    • 概述
      • 推荐系统将一个推荐算法学习到的模型作为另一个推荐算法的输入
    • 算法流程
      • 训练阶段
        • 辅助推荐算法
          • 输入
            • 训练数据
          • 输出
            • 习得的模型
        • 主推荐算法
          • 输入
          • 输出
      • 候选物品
        • 辅助推荐算法
          • 输入
            • 用户画像
          • 输出
            • 习得的模型
        • 主推荐算法
          • 输入
            • 习得的模型
          • 输出
            • 候选物品
      • 最终评分
        • 主推荐算法
          • 输入
            • 候选物品
          • 输出
            • 最终评分

案例

  • 逻辑回归和梯度提升决策树组合
    • 概述
      • 每⼀条样本,样本内容⼀般是把⽤户、物品、场景三类特征拼接在⼀起,先经 过 N 棵 GBDT 树各⾃预测⼀下,给出⾃⼰的 0 或者 1 的预测结果
      • 这个 N 个预测结果再作为⼀个向量送⼊逻辑回归中,产⽣最终的融合预估结 果。
    • 问题
      • 特征组合
        • 两两组合导致特征维度灾难;
        • 组合后的特征不⻅见得都有效,事实上⼤部分可能⽆效;
        • 组合后的特征样本⾮常稀疏,意思就是组合容易,但是并不能在样本中 找到对应的组合出现,也就没办法在训练时更新参数。
    • 优化
      • FM 模型
        • 原理
          • 因⼦分解机模型是在 2010 年被提出来的。因为逻辑回归在做特征组合时样本 稀疏,从⽽⽆法学到很多特征组合的权重,所以因⼦分解机的提出者就想,能不能对上⾯那个公式中的 wij 做解耦,让每⼀个特征学习⼀个隐因⼦向量出来。
      • FFM 模型
        • 优化点
          • 不但认为特征和特征之间潜藏着⼀些不可告⼈的关系,还认为特征 和特征类型有着千丝万缕的关系。
  • 深宽模型(深度模型 + 线性模型)
    • 概述
      • Google 在 2016 年就发表了他们在 Google Play 应⽤商店上实践检验 过的 CTR 预估⽅法:Wide & Deep 模型,让两者⼀起为⽤户们服务,这样就 取得了良好效果。
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 混合推荐算法是一种将多个推荐算法结合起来的方法,以提升推荐系统的精度和效果。下面是一个用Python实现混合推荐算法的简单示例代码。 首先,导入所需的库和模块: ```python import random from collections import defaultdict ``` 接下来,定义一个混合推荐算法的函数,该函数接收两个参数:用户喜好和推荐算法列表。其中,用户喜好是一个字典,键为用户ID,值为用户的偏好项。推荐算法列表是一个列表,其中包含多个推荐算法的函数。 ```python def hybrid_recommendation(user_preference, algorithms): # 存储每种推荐算法给用户的推荐结果 recommendations = defaultdict(list) # 对于每个用户 for user_id, preference in user_preference.items(): # 对于每种推荐算法 for algorithm in algorithms: # 调用推荐算法函数,生成推荐结果 recommendation = algorithm(user_id, preference) # 将推荐结果添加到该算法推荐列表中 recommendations[algorithm.__name__].extend(recommendation) # 对于每种推荐算法,按照推荐结果的推荐度排序 for algorithm, recommendation_list in recommendations.items(): recommendation_list.sort(key=lambda x: x[1], reverse=True) return recommendations ``` 接下来,定义两个简单的推荐算法函数,这里假设每个推荐算法都会返回一个包含推荐项和推荐度的元组,推荐度越高表示越推荐该项。 ```python def random_recommendation(user_id, preference): # 随机生成5个推荐项 recommendations = [(random.randint(1, 100), random.random()) for _ in range(5)] return recommendations def popular_recommendation(user_id, preference): # 返回最受欢迎的5个推荐项 recommendations = [(i, random.randint(1, 100)) for i in range(1, 6)] return recommendations ``` 最后,调用混合推荐算法函数,并输出结果。 ```python user_preference = {1: ['A', 'B', 'C'], 2: ['A', 'D'], 3: ['B', 'E']} algorithms = [random_recommendation, popular_recommendation] recommendations = hybrid_recommendation(user_preference, algorithms) for algorithm, recommendation_list in recommendations.items(): print("Algorithm:", algorithm) print("Recommendations:", recommendation_list) print() ``` 这样,就完成了一个简单的混合推荐算法的Python代码实现。实际应用中,可以根据具体需求自定义其他的推荐算法,并在算法列表中添加进去。 ### 回答2: 混合推荐算法是一种结合多种推荐算法的方法,通过综合多种算法的结果进行推荐。下面是一个使用Python实现的混合推荐算法的简单示例代码: ```python # 导入所需的库 from sklearn.metrics.pairwise import cosine_similarity import numpy as np # 创建一个简单的用户-物品评分矩阵 data = np.array([[5, 5, 5, 0, 0, 0], [5, 0, 4, 0, 0, 0], [0, 3, 0, 5, 4, 0], [0, 0, 0, 2, 4, 5], [0, 0, 0, 0, 0, 5]]) # 定义基于协同过滤的推荐算法函数 def collaborative_filtering(data): similarity_matrix = cosine_similarity(data.T) # 计算物品之间的相似度 user_ratings = np.dot(data, similarity_matrix) / np.abs(similarity_matrix).sum(axis=1) # 根据用户的历史评分和相似度计算预测评分 return user_ratings # 定义基于内容的推荐算法函数 def content_based(data): item_profiles = data / np.linalg.norm(data, axis=0) # 归一化物品的特征向量 user_profiles = np.dot(data, item_profiles.T) # 计算用户对每个物品的兴趣得分 return user_profiles # 定义混合推荐算法函数 def hybrid_recommendation(data): collaborative_ratings = collaborative_filtering(data) # 基于协同过滤的推荐结果 content_based_profiles = content_based(data) # 基于内容的推荐结果 hybrid_ratings = collaborative_ratings + content_based_profiles # 将两种推荐结果相加 return hybrid_ratings # 测试推荐算法 recommendations = hybrid_recommendation(data) print(recommendations) ``` 这段代码中,我们首先定义了基于协同过滤和基于内容的推荐算法函数。然后,我们编写了一个混合推荐算法函数,其中将两种算法的结果相加得到最终的推荐结果。最后,我们调用混合推荐算法函数并打印推荐结果。这个示例只是一个简单的展示,实际使用时还需要根据具体的需求和数据做相应的调整和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值