推荐系统实战-出租公寓项目3-相似性推荐

什么是相似性?

比较两个事物的相似性。一般通过计算事物的特征之间的距离,如果距离小,那么相似度大;如果距离大,那么相似度小。比如两种水果,将从颜色,大小,维生素含量等特征进行比较相似性。

具体到 公寓信息上,就是比较所有的数据特征之间的差距。

相似性推荐用在什么地方?

太多了,电影相关影片

推荐系统实战-出租公寓项目3-相似性推荐_第1张图片

相关职位招聘信息的推荐

推荐系统实战-出租公寓项目3-相似性推荐_第2张图片

那如何计算事物之间的相似性呢?

计算的方法有很多,
1. 欧氏距离
2. 曼哈顿距离
3. 切比雪夫距离
4. 闵可夫斯基距离
5. 标准化欧氏距离
6. 马氏距离
7. 夹角余弦
8. 汉明距离
9. 杰卡德距离 & 杰卡德相似系数
10. 相关系数 & 相关距离
11. 信息熵
12. 皮尔逊相关系数 

计算公寓信息相似度使用 ‘夹角余弦’算法来计算。公式如下

代码如下

为什么要做相似性推荐?

一是因为冷启动没有用户的数据,只有公寓信息的数据,二是为了‘链接终止’这种情况发生。

什么时候会出现‘链接终止’?举个例子:

推荐系统实战-出租公寓项目3-相似性推荐_第3张图片

在这一页中没有指几其它同类信息的链接了,如果想看其它的职位招聘信息,我只能返回上一页,或者离开本页。

正常应该是这样的

推荐系统实战-出租公寓项目3-相似性推荐_第4张图片

想看其它的职位招聘信息,只要点击相似职位下面的链接即可。

相似性推荐也可以说是最简单的推荐方式。

相似性推荐实现

有N个公寓信息,做相似性推荐,要生成一个N*N的矩阵,产品两两相交计算相似性。取当前公寓信息相似性最高的前m(本项目是5)个产品推荐。

推荐系统实战-出租公寓项目3-相似性推荐_第5张图片

4000多个公寓信息,相似性计算5分钟左右。相似性信息推荐长度是20,这个根据项目类型,自由设定。

公寓相似性推荐数据保存,格式,

{公寓ID1:相似性推荐信息列表1,

公寓ID2:相似性推荐信息列表2,

公寓ID3:相似性推荐信息列表3,......}

显示公寓ID=1的相似性推荐,只需要输入ID即可

推荐系统实战-出租公寓项目3-相似性推荐_第6张图片

只取ID,不要相似值

推荐系统实战-出租公寓项目3-相似性推荐_第7张图片

有了ID列表,再从数据库中取出相关信息,就OK了。

相似性计算比较费时,尤其是N特别大的时候,计算一次就把计算结果保存下来,保存到什么地方无所谓,文件,mysql,mongodb,redis,hbase都可以。

我以保存成文件为例,写代码。

推荐系统实战-出租公寓项目3-相似性推荐_第8张图片

好了,这样就可以反复的使用了,不过最好的方法,还是保存到数据系统中,上线的项目基本上都是保存到数据库中。

到现在为止,公寓信息详情的界面已经出来了,而且所有公寓信息都有了相似性推荐,接下来就是收集用户的反馈数据,为做下一步 个性化推荐,千人千面做准备。

你可能感兴趣的:(推荐系统实战,推荐系统,相似性计算)