【推荐系统入门】推荐系统理论初探 及 豆瓣推荐应用举例分析
title: 推荐系统理论初探
date: 2018-12-20 20:32:55
tags: 推荐系统
toc: true
categories: ML
我的博客: Josonlee’s Blog
推荐系统理论
推荐系统所需的元数据
- 要推荐物品或内容的元数据,例如关键字,基因描述等;
- 系统用户的基本信息,例如性别,年龄等
- 用户对物品或者信息的偏好,根据应用本身的不同,可能包括用户对物品的评分,用户查看物品的记录,用户的购买记录等。其实这些用户的偏好信息可以分为两类:
- 显式的用户反馈:这类是用户在网站上自然浏览或者使用网站以外,显式的提供反馈信息,例如用户对物品的评分,或者对物品的评论。
- 隐式的用户反馈:这类是用户在使用网站是产生的数据,隐式的反应了用户对物品的喜好,例如用户购买了某物品,用户查看了某物品的信息等等。
基本分类
- 基于大众化的口味进行推荐
- 个性化推荐
基于系统数据的推荐
基于人口统计学的推荐(Demographic-based Recommendation)
依据系统用户的基本信息,比如说男、18~25岁、程序员,发现用户间相关度
如图,根据用户的信息会认为A、C相似,所以推荐A喜欢的物品给C
优点
- 不使用当前用户对物品的喜好历史数据,所以对于新用户来讲没有“冷启动(Cold Start)”的问题。
- 这个方法不依赖于物品本身的数据,所以这个方法在不同物品的领域都可以使用,它是领域独立的(domain-independent)。
缺点
这种基于用户的基本信息对用户进行分类的方法过于粗糙,尤其是对品味要求较高的领域,比如图书,电影和音乐等领域,无法得到很好的推荐效果。可能在一些电子商务的网站中,这个方法可以给出一些简单的推荐。另外一个局限是,这个方法可能涉及到一些与信息发现问题本身无关却比较敏感的信息,比如用户的年龄等,这些用户信息不是很好获取。
基于内容的推荐(Content-based Recommendation)
依据物品的元数据(特征、属性)发现物品间的相关性,然后基于用户以往的喜好记录,推荐给用户相似的物品
能够较精准地对用户喜好建模,进而精准推荐。但基于用户历史喜好信息,对新用户存在冷启动问题。其次,物品相似度的分析仅仅依赖于物品本身的特征,这里没有考虑人对物品的态度
基于协同过滤的推荐(Collaborative Filtering-based Recommendation)
根据用户对物品或者信息的偏好,发现物品或者内容本身的相关性,或者是发现用户的相关性
协同过滤
原理
根据用户对物品或者信息的偏好,发现物品或者内容本身的相关性,或者是发现用户的相关性,然后再基于这些关联性进行推荐
分类
- 基于用户的协同过滤
- 基于物品的协同过滤
- 基于模型的协同过滤
基于用户的协同过滤
根据所有用户对物品或者信息的偏好,发现与当前用户偏好相似的“邻居”用户群,在一般的应用中是采用K近邻聚类对用户聚类;然后,基于这 K 个邻居的历史偏好信息,为当前用户进行推荐
基于项目的协同过滤
根据所有用户对物品或者信息的偏好,发现物品和物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户
从原理上看,基于项目的协同过滤推荐和基于内容的推荐差不多,都是求解物品之间的相似度。
但区别在于前者是根据用户历史的喜好来求物品间的相似度,后者是根据物品本身属性特征信息来求得
具体点看,如图用户A、B都喜欢了物品A、C,所以推断A、C物品应该是相似的,所以就推荐给也喜欢了物品A的用户C,这就是基于项目的协同过滤推荐。另一个可能是物品A、B都具有相同特征,比如说都是Hadoop丛书、购买人数都很多,所以用户看了A就会一起推荐相似的B
基于用户和基于项目两个协同过滤算法该如何选择
基于项目的协同过滤推荐机制是 Amazon 在基于用户的机制上改良的一种策略,因为在大部分的 Web 站点中,物品的个数是远远小于用户的数量的,而且物品的个数和相似度相对比较稳定,同时基于项目的机制比基于用户的实时性更好一些。但也不是所有的场景都是这样的情况,可以设想一下在一些新闻推荐系统中,也许物品,也就是新闻的个数可能大于用户的个数,而且新闻的更新程度也有很快,所以它的形似度依然不稳定。所以,其实可以看出,推荐策略的选择其实和具体的应用场景有很大的关系
基于模型的协同过滤推荐
根据已有的用户喜好历史信息(比如收藏、点赞、想看等)作为训练样本,用于训练模型,然后基于模型计算推荐。该机制现在用的最多
- 优点
- 它不需要对物品或者用户进行严格的建模,而且不要求物品的描述是机器可理解的,所以这种方法也是领域无关的
- 能很好的支持用户发现潜在的兴趣
- 缺点
- 对于新用户、新商品不好处理(冷启动)
- 推荐的效果依赖于用户历史偏好数据的多少和准确性
- 由于以历史数据为基础,抓取和建模用户的偏好后,很难修改或者根据用户的使用演变,从而导致这个方法不够灵活
- 对些有怪癖的用户(比如女装大佬,嘿嘿嘿)不能给出准确推荐
- 可能少部分人的错误偏好会对推荐的准确度有很大的影响等等
推荐算法的融合
做过机器学习算法都知道建模后都会有一步叫做模型融合,为了提高模型预判的准确率。同样推荐系统也采用这样的策略。以下是常用的推荐机制融合的方法
- 加权的混合(Weighted Hybridization): 用线性公式(linear formula)将几种不同的推荐按照一定权重组合起来,具体权重的值需要在测试数据集上反复实验,从而达到最好的推荐效果。
- 切换的混合(Switching Hybridization):前面也讲到,其实对于不同的情况(数据量,系统运行状况,用户和物品的数目等),推荐策略可能有很大的不同,那么切换的混合方式,就是允许在不同的情况下,选择最为合适的推荐机制计算推荐。
- 分区的混合(Mixed Hybridization):采用多种推荐机制,并将不同的推荐结果分不同的区显示给用户。其实,Amazon,当当网等很多电子商务网站都是采用这样的方式,用户可以得到很全面的推荐,也更容易找到他们想要的东西。
- 分层的混合(Meta-Level Hybridization): 采用多种推荐机制,并将一个推荐机制的结果作为另一个的输入,从而综合各个推荐机制的优缺点,得到更加准确的推荐。
从豆瓣看推荐系统的应用
这应该是基于物品内容的推荐,比如说热度,点赞,收藏值
如图是一个基于物品的协同过滤推荐
这个是基于用户喜好的协同过滤推荐
豆瓣猜:个人推荐是根据你的收藏和评价自动得出的,每个人的推荐清单都不同。你的收藏和评价越多,豆瓣给你的推荐会越准确和丰富。 每天推荐的内容可能会有变化。随着豆瓣的长大,给你推荐的内容也会越来越准
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lzw2016/article/details/85140764