如今,推荐系统已经在电商平台、信息流分发平台、广告平台等等,在处理大量用户信息的时,解决信息过载问题的重要手段。推荐系统是一个较大的系统,而我立身算法角度,谈一谈我对推荐系统中推荐算法的理解与看法。
推荐系统一般来讲主要分为两个部分:召回部分和排序部分。做了三年的算法后,给我的感觉,大部分的场景其实都可以用推荐算法这两个部分来套(当然,具体问题还是可以具体分析,这里说的只是一种解决问题的套路而已,并不是说方法通用)。
推荐系统发展到现在其实已经有十多年了,这期间有较多的算法被业界精英们纷纷提出,但经过前辈们的大量的实践证明,没有一个算法可以通用的解决所有的问题,这其实也从另外一个层面说明,为什么推荐系统需要投入一个团队的人力来做这个事情。
推荐算法需要解决的问题:
1、将用户需要的商品或者信息在合适的时候推荐给到相应的用户
2、冷启动问题
3、数据稀疏问题
4、算法的稳定性
5、大数据问题
6、多样性和新颖性问题
7、长期兴趣和短期兴趣的融合
下面主要根据推荐系统的发展历程来说说推荐系统中推荐算法:
1、基于规则的方法
该方法一般是采用一些人工的先验知识,制定一些规则决定推荐给到用户商品或者广告。最常见的就是热门推荐。这种方法推荐可能一定程度上丢失个性化,因为热门推荐是全局角度来统计的。
2、基于内容的推荐方法
该方法是借助完善的用户画像,根据用户不同维度的信息来进行推荐,并且借助数据挖掘的方法,了解不同特征的用户对不同商品/广告的偏好,以此为推荐结果给到用户。
这种方法存在一个问题是用户的特征可能维度较多,而哪一个维度更重要一些是需要一定的先验知识的。
3、基于协同过滤的推荐方法
该方法通常来讲一般分为两种:UserBased CF和ItemBased CF
(1)UserBasedCF:该方法是通过用户,找到该用户相似的用户,再根据相似用户的行为,推荐给该用户
(2)ItemBasedCF:该方法是通过用户购买的商品,通过找到该商品相似的商品,将相似的商品推荐给该用户
从上面的介绍可以看出,这两种方法都需要计算相似度(用户相似度或者商品相似度),常见的相似度有Jacarrd距离,Cos距离等。该方法主要的缺点是相似度计算效率比较低。且存在冷启动问题。
4、基于模型的推荐方法
该方法是通过用户对已购买的商品的一个反馈行为得到一个评分矩阵(如:电影评分矩阵),采用矩阵分解的方法进行分解,得到一个user和item矩阵。再来计算用户对商品的偏好。
该方法优点是可以解决数据稀疏性问题,缺点是:前提是用户存在行为数据,已评价的数据。这就存在一个冷启动的问题,即新用户没有任何行为的用户如何给出推荐结果呢?
常见的矩阵分解方法有:SVD,SVD++,ALS等
5、混合推荐
一般稍微复杂推荐系统是包含召回和排序两个过程,而上面介绍的四种方法往往都是在召回的过程中。而工业界负责的推荐会加上一个精排过程。该过程主要是通过机器学习的方法进行排序。需要用到LTR方法。
即前面四种方法可以作为四路召回,最后再进行精排。
6、评价指标
说了推荐算法的一些方法,最后肯定要说一下评价指标:
(1)MAE:平均绝对误差
(2)MSE&RMSE
(3)Precision:TOPN的精确度
(4)Recall:TOPN的召回率
(5)F1:TOPN的F1指标
(6)AUC:TOPN的AUC
(7)新颖度