某电商网站大数据大赛的任务是根据用户4个月在电商网站的行为日志,建立用户的品牌喜好。

评估的指标

  • 准确率: 当然预测的品牌的准确率越高越好
  • 召回率: 检测给用户推荐的商品的实际购买率

算法

  • 协同过滤推荐Collaborative filtering:分析用户兴趣,在用户群中找到指定的用户的相似用户,综合这些相似的用户对某一信息的评价,形成系统对该指定用户对于此信息的喜好预测。

    • item-based CF : 基于物品的协同过滤,通过用户对于不用物品的评分来评测物品之间的相似性,基于物品之间的相似性做出推荐。
    • user-based CF : 基于用户的协同过滤,通过不同用户对物品的评分来评测用户之间的相似性,基于用户之间的相似性做出推荐。
  • 数据挖掘算法:主要是在现有数据上进行基于各种算法的计算,从而起到预测的效果,从而实现一些高级别的数据分析的需求。

    • K-means
    • 逻辑回归
    • 随机森林
    • 统计学习SVM
    • 分类Native Bayes
  • 这里主要是要注意文件与Map的相互转换,为了方便推荐商品,一般把数据表设计为键值对是最好的,所以如果源文件为CSV或者普通的SQL语句,最好是放到一个非关系数据库中(比如Redis之类)的对于key-value支持性非常好的数据库中,当然也可以在代码中直接应用Map映射。

  • 其实感觉在实际操作中比较简单的模型就是用户在浏览一件商品之后,会推荐同类的商品,而且可以通过分析用户的购物车中的商品,来得到一些近似推荐,还有实时推荐可以根据用户最近的cookie的商品信息来推荐。

  • 当用户购买了一件商品之后,隔一个月可以再推荐同类商品(购买即推荐模型),但是这种模型还是有着它自身的很多弊端,比如用户会因为看到更好更便宜的商品而降低用户体验,当然如果对于一些常买类的商品比如衣服,装饰物,礼物等这个模型无疑是很简单有效的。

  • 对于购买即推荐的弊端还可以使用其它算法来弥补。比如前三个月购买,后一个月只有点击。 即是前三个月购买的商品,后一个月还点击查看的用户购买商品的可能性就比较大了,这样可以更加精确的推荐到用户所想购买的东西。

  • 对于点击多次的商品即推荐,设置一个阀值,当用户对这样商品的操作达到了初定的阀值时便推荐,用户购买的几率就会增大。

  • 基于时间权重模型,因为推荐算法的种类太多,交集太多,所以我们需要对于已定的推荐也有一个排序,所以我们使用时间权重来对于用户最近的点击,购买,收藏,购物车行为进行权重计算,比如初定各个操作的去啊是那种,如点击0.5,购买2,等通过公式

    delta∗(days/dayGranularity+1)∗dayWeightdeltadaysdayGranularity1dayWeight

    ,其中delta表示4种行为初始的权重,days表示该行为发生的日期离当前时间的跨度,dayGranularity表示时间粒度,即每隔多少天之后,权重会提高,dayWeight表示每隔dayGranularity 天后权重提升的比例。