个性化推荐系统

1、个性化推荐系统的推荐引擎:其实就是很简单的一个java web代码
响应达到毫秒级,为什么这么快?
(1)服务器分布式:请求经过5台ALB(负载均衡服务器),然后分发到40台BLU(响应服务器)进行处理
(2)服务器取数是到redis取,redis是基于内存的,所以取出来很快
2、个性化推荐中涉及到数据挖掘,机器学习那一块的,是指离线模型,准实时模型和在线模型:
根据用户的行为特征(浏览行为和指标):训练出模型:比如rfh模型:
客户uid|tfh|跟他拥有同样爱好的也浏览过这个offer|优先级1
客户uid|tfh|跟他拥有同样爱好的也浏览过这个offer|优先级2
训练模型,就是根据个推的点击日志,和TD的指标数据,利用Python进行训练,训练成一种.pmml文件
这种训练好的模型,就加载到redis,然后根据管理端设定的规则,将模型里面的offer推荐出去
3、实时标签
比如人对基金产品的偏好标签,是根据kafka里面该产品实时的浏览,点击,交易等数据,以及离线平台加工到redis的背景数据(历史浏览,点击等行为),根据各个行为设置的权重,根据公式求出这个基金产品对于这个人的得分,这个得分就可以看成一个标签。然后模型就可以根据这个产品的这些标签,结合历史数据,对这个产品进行评分
4、离线模型:离线模型推荐的产品就是根据协同过滤,规则关联等算法得到的,这个过程即召回。离线模型主要是推荐基金产品(买入多少基金,到期后能有多少收益…)
5、规则:如果某个客户有某个标签,就去推某条offer。这就是规则.即:if(客户满足某个条件)then(给他推某某个产品)
6、redis+mysql是内存+磁盘关系的一个映射,mysql放在磁盘,redis放在内存。web应用每次只访问redis,如果没有找到的数据,才去访问Mysql
查询先查redis没有再去查mysql,新增或修改直接操作mysql然后更新redis
7、个推推荐逻辑:
(1)offer:当请求进来后,去redis拿我们加载进去的用户画像指标。就会首先运行栏位上面的绑定的规则(比如:如果资产大于20,就推某个offer),判断这个客户是否满足规则条件,满足的话就给他推这个offer。其中规则推offer用的是drool这个算法软件
(2)模型: 当请求进来后,就会首先判断这个人绑定了什么offer(去redis里面取我们加载进去的离线模型产品),同时也会看这个栏位绑定了哪些offer,然后两者取交集
8、冷启动:客户第一次进来,我们没有它的任何id标签,用户特征等等,那我们需要给他推一些东西:从腾讯视频过来的用户,就给他推一些腾讯联名卡
9、个推在线模型训练过程:

  • 数据方面,特征分几部分:在线的用户特征(不同投资风格和风险等级的基金的浏览搜索关注定投等行为次数),
    离线的用户特征,离线的基金特征(当月基金购买金额,基金_首页_14天浏览次数,还有基金的特征:银河基金评级,三个月回报率)
  • 特征处理:进行标准化,依赖训练出来的参数(弄成配置文件),比如一些矩阵的参数之类的
  • 离线训练模型的时候,处理数据用Python或者R,hadoop上的数据用pyspark处理。
  • 机器学习实现庫用的xgboost
  • xgboost的模型二进制文件转成PMML文件,然后用PMML引擎读取,之后评分

在线特征是如何得到的?

  • kafka1存储用户的实时在线行为日志
  • sparkstreaming程序处理这些日志,并取redis里面的当天累加量和历史累加量,更新这个客户对这个产品的当天累积量,并将这个量存到redis
  • 同时将这个客户对这个产品的当天累积量和历史累加量存进kafka2,供下游系统个推使用

个推机器学习架构:

  • 先用apriori关联规则算法,协同过滤算法召回给用户推荐的几个候选产品
  • 给用户推什么解决之后,就需要解决先推哪个的问题,也就是需要一个排序模型,在线模型CTR,就是这样一个排序模型

10、推荐系统:先通过协同过滤,关联规则等算法召回得到候选集,然后利用xgboost等算法构建ctr预估模型,对候选集进行排序

你可能感兴趣的:(个性化推荐系统)