推荐系统的出现
随着互联网的发展,人们正处于一个信息爆炸的时代。相比于过去的信息匮乏,面对现阶段海量的信息数据,对信息的筛选和过滤成为了衡量一个系统好坏的重要指标。一个具有良好用户体验的系统,会将海量信息进行筛选、过滤,将用户最关注最感兴趣的信息展现在用户面前。这大大增加了系统工作的效率,也节省了用户筛选信息的时间。
搜索引擎的出现在一定程度上解决了信息筛选问题,但还远远不够。搜索引擎需要用户主动提供关键词来对海量信息进行筛选。当用户无法准确描述自己的需求时,搜索引擎的筛选效果将大打折扣,而用户将自己的需求和意图转化成关键词的过程本身就是一个并不轻松的过程。
在此背景下,推荐系统出现了,推荐系统的任务就是解决上述的问题,联系用户和信息,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对他感兴趣的人群中,从而实现信息提供商与用户的双赢。
推荐算法介绍
1 基于人口统计学的推荐
这是最为简单的一种推荐算法,它只是简单的根据系统用户的基本信息发现用户的相关程度,然后将相似用户喜爱的其他物品推荐给当前用户。
系统首先会根据用户的属性建模,比如用户的年龄,性别,兴趣等信息。根据这些特征计算用户间的相似度。比如系统通过计算发现用户A和C比较相似。就会把A喜欢的物品推荐给C。
2 基于内容的推荐
与上面的方法相类似,只不过这次的中心转到了物品本身。使用物品本身的相似度而不是用户的相似度。
系统首先对物品(图中举电影的例子)的属性进行建模,图中用类型作为属性。在实际应用中,只根据类型显然过于粗糙,还需要考虑演员,导演等更多信息。通过相似度计算,发现电影A和C相似度较高,因为他们都属于爱情类。系统还会发现用户A喜欢电影A,由此得出结论,用户A很可能对电影C也感兴趣。于是将电影C推荐给A。
3 协同过滤
1)基于用户的协同过滤——基于人口统计学的推荐
基于用户的协同过滤推荐机制和基于人口统计学的推荐机制都是计算用户的相似度,并基于“邻居”用户群计算推荐,但它们所不同的是如何计算用户的相似度,基 于人口统计学的机制只考虑用户本身的特征,而基于用户的协同过滤机制可是在用户的历史偏好的数据上计算用户的相似度,它的基本假设是,喜欢类似物品的用户 可能有相同或者相似的口味和偏好。
2)基于物品的协同过滤——基于内容的推荐
基于项目的协同过滤推荐和基于内容的推荐其实都是基于物品相似度预测推荐,只是相似度计算的方法不一样,前者是从用户历史的偏好推断,而后者是基于物品本身的属性特征信息。
4 混合推荐算法
以上介绍的方法是推荐领域最常见的几种方法。但是可以看出,每个方法都不是完美的。因此实际应用中,向Amazon这样的系统都是混合使用各种推荐算法,各取所长。因此我们在使用时,也可以多考虑一下什么情况下更适合使用哪种算法,来提高我们系统的效率。
三 推荐算法在音乐上的使用
音乐上主要使用协同过滤的算法,比如豆瓣网是通过你以前在豆瓣的对音乐欣赏的标签来找出与你有这相似爱好的和相似经验的豆友,并把他们喜欢的东西推荐给你。
1)ItemBased 推荐
基本思想是听了该音乐的人还听了什么歌曲,就是把每首歌当做一个向量,计算这些向量的相似度,再去取topN进行推荐。向量去的相似维度一般是音乐固有的属性,比如专辑名称,歌手,年代等等。当然计算相似度有余弦夹角、欧式距离、海明距离、皮尔逊相关系数、杰卡德相似度等,这些计算方法根据你的应用场景因地制宜,这种推荐方法也在亚马逊使用, 亚马逊购买图书后还会根据所有用户的购买历史为你推荐相似的书。
2)UserBased 推荐
基本思想是和我爱好差不多的用户,他们还听了哪些音乐,但是UserBased算法和ItemBased比起来略逊一筹,因为用户的兴趣爱好一直在改变,和我兴趣相同的用户也会不断变化,所以推荐效果并不好。
3)基于ItemBased的KNN算法
假如要预测小明对一个歌曲M的评分,根据KNN的思想,我么可以先找出K个与小明进行过评分的用户,然后用这K个用户的评分预测小明对M的评价,又或者先找出K个与M相似的,兵并且小明评价过的歌曲,然后再用这K个评分预测小明对M的评分,在这个例子中找相似用户的方法叫做User-Based KNN ,找相似物品的方法叫做ItemBased KNN,这个就好像豆瓣相似的友邻一样,根据所有用户对物品或者信息的偏好,发现与当前用户口味和偏好相似的“邻居”用户群。
4)ContentBasedd 推荐算法
Contentbased把一首音乐看成一个向量,向量的维度音乐本身的特征,如歌手、风格、地域、心情、频率等等,每个特征都有不同权重值,通过这些特征来计算音乐之间的两两相关性,做出推荐。