除了协同过滤算法,还有隐语义模型(LFM)应用得也比较多,它基于用户行为对物品进行自动聚类,从而将物品按照多个维度,多个粒度分门别类。然后根据用户喜欢的物品类别进行推荐。这种基于机器学习的方法在很多指标上优于协同过滤,但性能上不太给力,一般可以先通过其他算法得出推荐列表,再由 LFM进行优化。
利用用户标签数据
我们知道很多网站在处理物品条目的时候会通过用户自己标注的标签来进行分类,比如网页书签Delicious,博客的标签云,豆瓣书影音的标签。这些标签本身就是用户对物品的一种聚类,以此作为推荐系统的依据还是很有效的。关于标签的推荐,一种是根据用户打标签的行为为其推荐物品,还有一种是在用户给物品打标签的时候为其推荐合适的标签。根据标签推荐物品的基本思想就是找到用户常用的一些标签,然后找到具有这些标签的热门物品,将其推荐给用户。这里要注意两个问题,一个是要保证新颖性和多样性,可以用TF-IDF方法来降低热门物品的权重;另一个则是需要清除某些同义重复标签和没有意义的标签。在用户打标签时为其推荐标签也是相当重要的,一方面能方便用户输入标签,一方面能提高标签质量,减少冗余。典型的应用场景就是用豆瓣标记书影音。这里的思想就是将当前物品上最热门的标签和用户自己最常用的标签综合在一起推荐给用户。其实豆瓣就是这么做的,它在用户标记物品的时候,给用户推荐的标签就分为「我的标签」和「常用标签」两类,而在「我的标签」里也考虑了物品的因素。
利用上下文信息
此处所谓的上下文,是指用户所处的时间,地点,心情等。这些因素对于推荐也是至关重要的,比如听歌的心情,商品的季节性等等。这里主要以时间为例说说,在很多新闻资讯类网站中,时效性是很重要的一点,你要推荐一篇一年前的新闻给用户,估计会被骂死。在这种推荐中就需要加入时间衰减因子,对于越久之前的物品,赋予越小的权重。同样的思想也可以用在基于用户行为的推荐中,这里有很多可以优化的地方。对于ItemCF来说,同一用户在间隔很短的时间内喜欢的不同物品可以给予更高的相似度,而在找相似物品时也可以着重考虑用户最近喜欢的物品;对于UserCF,如果两个用户同时喜欢了相同的物品,那么可以给予这两个用户更高的相似度,而在推荐物品时,也可着重推荐口味相近的用户最近喜欢的物品。我们可以给相似度和用户的行为赋予一定权重,时间间隔越久权重越低,经过这种改进的「协同过滤算法」往往能得到用户更满意的结果。
利用社交网络数据
如今以Facebook,Twitter为首的社交网络大行其道,而其中的海量数据也是一大宝库。实验证明,由于信任的作用,来自好友的推荐往往能获取更高的点击率,鉴于此,亚马逊就利用了Facebook的信息给用户推荐好友喜欢的商品。此种推荐类似于UserCF,只是寻找用户之间的关系时除了兴趣相似度以外还得考虑熟悉度(如共同好友个数),这样一来,你的闺蜜们和基友们喜欢的物品很可能就会被推荐给你。在社交网络内部也有许多推荐算法的应用。其中最重要的当属好友推荐,可依据的数据有很多:人口统计学属性(例如人人的找同学),共同兴趣(如 Twitter中转发的信息),好友关系(共同好友数量,N度人脉)。另外还有信息流(Timeline)推荐,这其中以Facebook的 EdgeRank为代表,大致思想就是:如果一个会话(Feed)被你熟悉的好友最近产生过重要的行为,它在信息流的排序中就会有比较高的权重。另外,基于社交网络兴趣图谱和社会图谱的精准广告投放也是推荐系统的关键应用,它决定着社交网站的变现能力。