推荐算法

最近更新时间:2019-08-22 20:30:27

交换最小二乘([2.0] ALS)

算法说明

ALS(alternating least squares)算法是交替最小二乘的简称。在机器学习中,ALS 特指使用交替最小二乘求解的一个协同推荐算法。它通过观察到的所有用户给商品的打分,来推断每个用户的喜好并向用户推荐适合的商品。

从广义上讲,推荐系统基于两种不同的策略:基于内容的方法和基于协同过滤的方法。Spark 中使用协同过滤的方式。协同过滤分析用户以及用户相关的产品的相关性,用以识别新的用户-产品相关性。协同过滤系统需要的唯一信息是用户过去的行为信息,例如对产品的评价信息。协同过滤是领域无关的,所以它可以方便解决基于内容方法难以解决的许多问题。

推荐系统依赖不同类型的输入数据,最方便的是高质量的显式反馈数据,它们包含用户对感兴趣商品明确的评价。例如,Netflix 收集的用户对电影评价的打分等级数据。但是显式反馈数据不一定总是找得到,因此推荐系统可以从更丰富的隐式反馈信息中推测用户的偏好。 隐式反馈类型包括购买历史、浏览历史、搜索模式甚至鼠标动作。例如,购买同一个作者许多书的用户可能喜欢这个作者。

许多研究都集中在处理显式反馈,然而在很多应用场景下,应用程序重点关注隐式反馈数据。因为可能用户不愿意评价商品或者由于系统限制我们不能收集显式反馈数据。在隐式模型中,一旦用户允许收集可用的数据,在客户端并不需要额外的显式数据。
Spark利用交换最小二乘解决矩阵分解问题分两种情况:数据集是显式反馈和数据集是隐式反馈。

训练节点

  • 输入数据路径:输入文件所在路径。
  • 输入文件类型:格式包括以下两种:
    • csv:csv 文件。
      • 输入数据包含 header 信息。
      • 输入数据分割符:主要包括逗号、空格、分号、星号等分割符。
    • parquet:列式存储格式 parquet
  • 参数
    • User 列:User 所在列,从0开始计数。
    • Item 列:Item 所在列的列号,从0开始计数。
    • Rating 列:评分所在列的列号,从0开始计数。
    • 隐变量数:矩阵变换中隐变量的个数,推荐值:10 - 200。
    • 正则系数:正则项系数,推荐值:0.01。
    • 最大迭代次数:最大迭代次数,推荐值:10 - 20。
    • 反馈方式:隐性反馈与显性反馈方式。
    • 是否使用非负的限制:是否对最小二乘法使用非负的限制。
    • 偏好行为强度的基准:专门针对隐性反馈的参数,决定了偏好行为强度的基准。

预测节点

  • 输入
    • 输入数据路径:输入文件所在路径。
    • 输入文件类型:格式包括以下两种:
      • csv:csv 文件。
        • 输入数据包含 header 信息。
        • 输入数据分割符:主要包括逗号、空格、分号、星号等分割符。
      • parquet:列式存储格式 parquet
  • 输出
    • 输出数据路径:输出文件所在路径。
    • 输出数据格式:格式包括以下两种:
      • csv:csv 文件。
        • 输入数据包含 header 信息。
        • 输入数据分割符:主要包括逗号、空格、分号、星号等分割符。
      • parquet:列式存储格式 parquet
  • 参数
    • User 列:User 所在列,从0开始计数。
    • Item 列:Item 所在列的列号,从0开始计数。

基于商品的协同过滤([2.0] ItemCF)

算法说明

根据所有用户对物品的评价,发现物品直接的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户。例如,用户 A 喜欢物品A和物品 C;用户B喜欢物品 A、B、C;用户 C 喜欢物品 A。从这些用户的历史喜好中,可以认为物品 A 和物品 C 比较类似,基于这个判断,用户 C 也可能喜欢物品 C。

训练节点

  • 输入数据路径:输入文件所在路径。
  • 输入文件类型:格式包括以下两种:
    • csv:csv 文件。
      • 输入数据包含 header 信息。
      • 输入数据分割符:主要包括逗号、空格、分号、星号等分割符。
    • parquet:列式存储格式 parquet
  • 参数
    • User 列:User 所在列,从0开始计数。
    • Item 列:Item 所在列的列号,从0开始计数。
    • Rating 列:评分所在列的列号,从0开始计数。
    • 隐变量数:矩阵变换中隐变量的个数,推荐值:10 - 200。
    • 正则系数:正则项系数,推荐值:0.01。
    • 最大迭代次数:最大迭代次数,推荐值:10 - 20。
    • 反馈方式:隐性反馈与显性反馈方式。
    • 是否使用非负的限制:是否对最小二乘法使用非负的限制。
    • 偏好行为强度的基准:专门针对隐性反馈的参数,决定了偏好行为强度的基准。

预测节点

  • 输入
    • 输入数据路径:输入文件所在路径。
    • 输入文件类型:格式包括以下两种:
      • csv:csv 文件。
        • 输入数据包含 header 信息。
        • 输入数据分割符:主要包括逗号、空格、分号、星号等分割符。
      • parquet:列式存储格式 parquet
  • 输出
    • 输出数据路径:输出文件所在路径。
    • 输出数据格式:格式包括以下两种:
      • csv:csv 文件。
        • 输入数据包含 header 信息。
        • 输入数据分割符:主要包括逗号、空格、分号、星号等分割符。
      • parquet:列式存储格式 parquet
  • 参数
    • User 列:User 所在列,从0开始计数。
    • Item 列:Item 所在列的列号,从0开始计数。

基于用户的协同过滤算法([2.0] UserCF)

算法说明

基于用户的协同过滤算法先使用统计技术寻找与目标用户有相同喜好的邻居,然后根据目标用户邻居的喜好产生向目标用户的推荐。基本原理就是利用用户访问行为的相似性来推荐用户可能感兴趣的资源。假设用户 A 喜好物品 A 和 C,用户B喜欢物品 B,用户 C 喜欢物品A、C 和 D。从这些用户的历史喜好中,我们发现用户 A 和用户 C 的口味和偏好是比较类似的,同时用户 C 还喜欢物品 D,那么我们判断用户 A 也可能喜欢物品 D,从而向用户 A 推荐物品 D。

训练节点

  • 输入数据路径:输入文件所在路径。
    • 输入文件类型:格式包括以下两种:
    • csv:csv 文件。
      • 输入数据包含 header 信息。
      • 输入数据分割符:主要包括逗号、空格、分号、星号等分割符。
    • parquet:列式存储格式 parquet
    • 参数
      • User 列:User 所在列,从0开始计数。
      • Item 列:Item 所在列的列号,从0开始计数。
      • Rating 列:评分所在列的列号,从0开始计数。
      • 隐变量数:矩阵变换中隐变量的个数,推荐值:10 - 200。
      • 正则系数:正则项系数,推荐值:0.01。
      • 最大迭代次数:最大迭代次数,推荐值:10 - 20。
      • 反馈方式:隐性反馈与显性反馈方式。
      • 是否使用非负的限制:是否对最小二乘法使用非负的限制。
      • 偏好行为强度的基准:专门针对隐性反馈的参数,决定了偏好行为强度的基准。

预测节点

  • 输入
    • 输入数据路径:输入文件所在路径。
    • 输入文件类型:格式包括以下两种:
      • csv:csv 文件。
        • 输入数据包含 header 信息。
        • 输入数据分割符:主要包括逗号、空格、分号、星号等分割符。
      • parquet:列式存储格式 parquet
  • 输出
    • 输出数据路径:输出文件所在路径。
    • 输出数据格式:格式包括以下两种:
      • csv:csv 文件。
        • 输入数据包含 header 信息。
        • 输入数据分割符:主要包括逗号、空格、分号、星号等分割符。
      • parquet:列式存储格式 parquet
  • 参数
    • User 列:User 所在列,从0开始计数。
    • Item 列:Item 所在列的列号,从0开始计数。