matlab实现余弦相似度_推荐算法原理(一)余弦定理计算物品间相似度

matlab实现余弦相似度_推荐算法原理(一)余弦定理计算物品间相似度_第1张图片

大家好,我是一名内容型产品经理,决定写这系列的文章是因为想记录下在日常工作中遇到的问题和学习到的知识,分享给大家希望可以多多交流。

最近越来越多的产品都有需要用到推荐算法,例如资讯类产品需要为用户在首页信息流推荐内容,社区类产品也需要为用户推荐感兴趣的东西。然而算法有很多种,不过无论怎样,都会需要计算两个物品/内容间的相似度,然后再做进一步处理,本系列文章为大家介绍在实际生产环境中一些常用到的简单推荐算法~

1. 利用余弦定理公式计算物品间的相似度

  • 余弦相似度原理

用向量空间中的两个向量夹角的余弦值作为衡量两个个体间差异大小的度量,值越接近1,就说明夹角角度越接近0°,也就是两个向量越相似

用向量余弦公式简化为:

matlab实现余弦相似度_推荐算法原理(一)余弦定理计算物品间相似度_第2张图片

公式只是次要的哈哈哈哈,最重要的是下面的推导过程,下面为大家逐步逐步剖析公式是怎么推导过来的~

  • 推导过程

向量a,b,夹角为θ:

matlab实现余弦相似度_推荐算法原理(一)余弦定理计算物品间相似度_第3张图片

作辅助线c:

matlab实现余弦相似度_推荐算法原理(一)余弦定理计算物品间相似度_第4张图片

余弦定理求cosθ:

matlab实现余弦相似度_推荐算法原理(一)余弦定理计算物品间相似度_第5张图片

如图,将这个模型放到二维坐标下:

matlab实现余弦相似度_推荐算法原理(一)余弦定理计算物品间相似度_第6张图片

那么构建出来的三角形三条边的边长分别为(勾股定理):

matlab实现余弦相似度_推荐算法原理(一)余弦定理计算物品间相似度_第7张图片

matlab实现余弦相似度_推荐算法原理(一)余弦定理计算物品间相似度_第8张图片

把a,b,c代入余弦定理公式,计算过程如下:

matlab实现余弦相似度_推荐算法原理(一)余弦定理计算物品间相似度_第9张图片

由于:

e21ba82cf6454aa2a535a909217cd4cc.png

所以:

matlab实现余弦相似度_推荐算法原理(一)余弦定理计算物品间相似度_第10张图片

上述公式是在二维坐标中进行推导的,如果拓展到n维坐标,这个公式会写成:

matlab实现余弦相似度_推荐算法原理(一)余弦定理计算物品间相似度_第11张图片

2. 实际运用

现在假设:

A用户喜欢a,b,d

B用户喜欢b,c,e

C用户喜欢c,d

D用户喜欢b,c,d

E用户喜欢a,d

建立物品-用户的倒排表,列出每个物品都被哪些用户喜欢,其中“1”表示喜欢,“2”表示不喜欢。

注意:这里的喜欢行为可以理解成是用户在产品上触发的交互,例如点击,评论,点赞,收藏等。

matlab实现余弦相似度_推荐算法原理(一)余弦定理计算物品间相似度_第12张图片

利用前面说到的余弦定理公式计算两个物品间的相似度

例如:将物品a和b分别看作是多维空间中的两个向量,则有:a(1,0,0,0,1);b(1,1,0,1,0),所以物品a和物品b的相似度为:

matlab实现余弦相似度_推荐算法原理(一)余弦定理计算物品间相似度_第13张图片

3. 总结

至此,我们已经完成了利用余弦定理公式计算物品间的相似度。不过由于生产环境中的用户量和物品量都肯定不只有5个,当我们的数据量非常庞大时,这种计算方法就会显得非常吃力。所以我们整个推荐系统的架构不可能只由这一个算法构成,还需要诸如离线生成候选集,对候选集进行排序,规则干预,然后进行内容曝光之类的操作,不过这次的内容先到这里了,感兴趣的朋友可以在评论区留言,大家多多交流~

你可能感兴趣的:(matlab实现余弦相似度)