推荐系统-前期调研准备工作(一)

背景

公司电商产品,随着商品的不断丰富,用户被大量可选的商品淹没,传统方式很难直接精准呈现用户喜欢的商品,需要增加推荐服务,前期准备从常规服务开始,例如:看了又看,买了又买功能

目标

通过推荐引擎自动计算用户喜欢的商品,在指定的场景呈现给用户,提高最终订单的转化率

推荐系统的三种方式

一、基于人口的统计学推荐(Demographic-based Recommendation)

仅使用用户的基本信息,比如年龄,性别等衡量用户的相似性,建立用户画像将用户分组,将与当前用户相似的用户所偏好的物品推荐给当前用户
算法不涉及到用户对物品的历史偏好数据

  1. 初级的推荐方式,分析相似的用户来推荐商品
  2. 对用户分类较为粗糙,推荐精确度不高

二、基于内容的推荐(Content-based Recommendation)

根据推荐物品或内容的元数据,发现物品或者内容的相关性,然后基于用户以往的喜好记录,推荐给用户相似的物品

  1. 分析相似的物品来推荐
  2. 可以分析用户的个人喜好来进行推荐,相对于第一种方式更加精确
  3. 带来了冷启动问题
  4. 仅考虑了物品本身的特征,没有考虑人对物品的态度

三、基于协同过滤的推荐(Collaborative Filtering-based Recommendation)

根据用户对物品的偏好,来发现物品的相关性或者发现用户的相关性,然后再基于这些关联性进行推荐

  1. 基于用户的推荐(User-based Recommendation)
    根据所有用户对物品或者信息的偏好,发现与当前用户口味和偏好相似的“邻居”用户群,在一般的应用中是采用计算“K- 邻居”的算法;然后,基于这 K 个邻居的历史偏好信息,为当前用户进行推荐

    1. 寻找相似的用户
    2. 通过所有用户对物品的偏好->寻找相似的用户->寻找相似用户喜欢的物品->推荐给当前用户
    3. 适用应用于:猜你喜欢
  2. 基于项目的推荐(Item-based Recommendation)
    根据所有用户对物品或信息的偏好,发现物品和物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户

    1. 寻找相似的物品
    2. 通过所有用户对物品的偏好->寻找相似的物品->返回和当前物品相似的物品
    3. 适用应用于:看了又看/买了又买
  3. 基于模型的推荐(Model-based Recommendation)
    基于模型的协同过滤推荐就是基于样本的用户喜好信息,训练一个推荐模型,然后根据实时的用户喜好的信息进行预测,计算推荐

通过上述分析,决定使用基于物品的协同过滤,接下来就是确定实现方式

实现方案设计

一、整体架构
离线训练架构
由于实时推荐较为复杂,第一版采用离线推荐的方式,每日统计一次基础数据,用作训练,分为短期模型和长期模型,短期模型为近7天,长期模型为近一个月

整体流程

  1. APP 引入埋点,将用户行为数据上报到数据仓库(目前项目使用的是 ClickHouse)
  2. 每日定时任务调用 ETL 工具抽取用户浏览商品次数数据,将其写入文件
  3. 将第二步 ETL(kettle) 工具生成的文件同步给 Python 应用服务器,执行训练后将训练结果存入文件
  4. 使用 Python 提供推荐服务HTTP接口,同时返回推荐数据和埋点数据
  5. 根据埋点数据,统计 CTR 和 订单转化率,评估推荐效果
  6. 开发 AB 组件,调整推荐算法后,对比转化数据

选型分析

  1. 关于语言
    实现推荐算法比较好的语言有 Python、R、JAVA, 最终选择 Python 是因为公司目前三个语言都未使用,考虑到上手难度,资料齐全度,训练算法支持,以及提供HTTP服务的便捷性最终选择了 Python
  2. 关于机器学习库
    最终选择了 Spark MLlib 库,使用 ALS 算法实现,同时使用 pyspark 包来调用 SparkMLlib
  3. 关于 python 框架
    由于最终要提供 HTTP 服务,又只是需要提供推荐接口,所以选择了当前使用范围最广的 Flask 框架来开发

关联阅读

推荐系统-安装Python开发环境(二)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值