基于用户画像进行个性化推荐,从数据的角度出发的各类思考

                               


 

 之前开的坑一直没有完成,有要开新的坑了,最近在做关于个性化推荐的项目,所以想对目前的工作有个总结。现阶段的话,仍然处于熟悉数据的过程中,还没有正式的走到算法这一层。主要的原因有两点,第一:数据不是很全,关于用户、item的信息都很少,数据之间存在很大的断层情况;第二:我们部门之前没有做这一方面,所以是大家做这个属于尝试,到底能够做到哪一个步骤都是未知的。 总之,挑战真的很大。下面我将从推荐算法的模型到数据做一个简单的梳理。

一、推荐算法模型

  推荐算法有很多的相关模型,从最简单的协同过滤到矩阵分解再到基于神经网络。一个完整的推荐系统分为召回阶段和排序阶段,召回阶段常用的方法为:协同过滤、矩阵分解,排序阶段常用的方法为:FM、GBDT+LR 、FTRL+LR (Wide&Deep)、DeepFm。总的来说:

  • 矩阵分解(SVD、SVD++、TrustSVD),主要通过填充评分矩阵来进行推荐
  • 神经网络的推荐算法:进行各种特征组合、embedding来进行CTR估计

  一般来收,都是采用多路召回的方法,从众多的item中获取到用户很能会喜欢的成百个item,但是这么多的item如何有效的推送给用户,需要使用到排序阶段,排序阶段则是通过预测用户点击item的概率来进一步删选item,这一步选择出了用户最有可能点击的item。但是,排序阶段是否是每一个推荐系统都需要,还得进一步按照业务情况、活动、商品情况来进行判断,我的观点是,如果item真的很多,那确实需要进行排序,如果是想提高商品、活动的点击、曝光情况则需要进行排序。

二、数据理解

  就召回阶段来说,可以使用以下几种方法来做:

  • 基于用户画像:此时则需要大量用户的属性特征,如:用户的人口特征属性、用户的爱好特征属性、用户的爱好特征、用户的偏好特征、用户的商业属性(比如:消费能力、消费频率等),还有一些可以通过业务逻辑抽象出来可以反应一个人对于商品偏好的信息等(如购买时间),基于这些数据,我们可以对用户进行分群,后面则可以针对不同的用户进行不同的有针对性的推荐;(分群推荐)
  • 基于协同过滤、矩阵分解:

  在这种情况是模型需要的数据有:user-item-rating 、item-list 、user-list 信息,但是很多情况下,并不能够直接得到user-item-rating评分信息,大部分情况是隐式反馈的用户行为信息的;能够直接获取到的用户评分信息的场景有:电商评分、电影评分、外卖评分,除此之外大部分是无法直接得到的,就我目前所接触到的活动数据来看,推送一个活动,用户能够留下点击、分享、使用的痕迹,此时如何得到评分信息呢?只能够通过用户行为来得到一个评分信息;首先需要去定义涉及到的用户行为,其次设置每一个行为所对应的权重,最后通过所有行为的权重之和即可得到一个评分;如果用户多次进行了以上的操作我的想法是,是不是直接可以累计之类的,或者只选择最重要的行为进行打分,还木有实践,都是一些想法,有大神看见的话可以留言;对了,还有一个问题,就是当用户之前有多次的用户行为时,如何进行构造呢?我看到过有基于用户行为序列来得到模型结果;但是对于一个个性化要求没有那么高的场景应该如何选择呢? 是通过时间加权吗?时间越近用户的行为更加重要,但是如何权重设置呢? 这又是一个问题!!! 求看到的大神可以回答一下下,真的很重要😂 。

  我所接触的是基于活动的推荐,虽然数据上有很多的缺失,所以不能止步不前啊,要推动项目需求过程,我目前只能按照我所理解到的数据以及模型中要使用的数据先列出来数据需求,只能这样了;

       在梳理算法数据需求这一阶段的时候,在此之前,你已经是对于你所接触的数据有了一个大概的了解,列举出来你想要的算法的数据会帮助你很好的理解算法的整个流程以及你接触的数据。我在梳理数据时从每个算法的数据要求进行罗列,遇到没有的数据则进行可以向前后端提需求(经理说),我目前还是个刚刚入职的菜鸟。

 

  经过多方沟通,最后决定基于用户分群进行个性化推荐,所以上面提到的排序什么的用不到了,主要的思路是想通过建立用户标签库,构造用户画像,再在此基础上对各个群体的用户的信息进行分析,进而实现个性化推荐。

      要做用户画像的话,则需要构造用户标签库,这个怎么说呢?如果数据一致且完整且多,那做起来就没什么难的了,重点是,当你遇到的数据断层、不全,整个人真的会炸掉的(我目前就是这样子,社畜太难了😭),关于完整的搭建用户画像可以借鉴阿里onedata体系、华为用户画像体系等;我在这就说一说我整个过程中的感受,毕竟只是一个菜鸟,在梳理用户标签时,需要考虑以下几方面:

  • 人口特征信息: 这个不用过多解释吧,大家都懂的
  • 设备信息:用户的手机设备相关信息
  • 位置信息:用户的常住城市、城市等级、出生城市、如果是电商的话,还有默认的签收地址等(不过一般互联网才搭建用户画像体系)
  • 用户偏好信息: 体现一个用户相关爱好的标签,如:爱好的商品类型、用户喜欢商品的标签、用户喜欢的商品的价格范围
  • 会员信息:用户会员等级、用户账号总的积分、用户消耗掉的积分
  • 用户行为特征: 由于我接触到的是活动相关数据,涉及到的用户行为有:用户点击、用户抽奖、用户使用的信息,因此用户行为的设定都是依据以上来进行的;除了一些常见的指标、还可以从用户发生行为的事件出发、利用相关算法来进行用户购买水平、消费水平等的界定,如果你接触到的数据还涉及到活动的签到信息、做任务、玩游戏的数据还可以结合进行考虑;
  • 用户账号活跃情况的数据:用户参与的平次、日均参与情况、日均核销情况等

  总的来说,是深度挖掘用户、用户 和行为之间的各种信息,我目前的工作大致才到这一步,刚入职的社畜不容易啊😭  

       当然在考虑用户指标的时候,最主要的还得看自己拿到的数据以及能够获取到的数据,如果没有数据,任何东西都是白扯😂 ,而数据的话,则需要考虑是否各个表/业务线的数据一致,以下是我考虑的一些点(如果不对还请大佬指点):

  • 各个表的分区是否一致
  • 各个表之间的用户数据是否存在断层
  • 对于所有的用户行为数据,是否都可以获取到
  • 从埋点数据中,是否能够很明确的看出用户点击所对应的各类事件(活动、奖品、商品、任务、广告等)
  • 是否所有类型的数据都有落进来
  • 是否现有的表中,你想要的指标有,如果没有,确认是否这些数据可以如何得到,如果是一些弃用的数据,那真的很伤人

  大致就这些吧,其他内容下次更新,写到这个地方,我要吐血了😂😝,感觉自己还有一部分数据没有考虑到,所以我还得去研究研究😁。

  大家如果有什么比较好一点的参考资料、想法、方法希望写在评论区,让我借鉴一下下😁