打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
歌单推荐次次让你惊艳,这背后的算法简洁精妙

这就是 Amazon 发明的“喜欢这个商品的人,也喜欢某某”算法。

其核心是数学中的“多维空间中两个向量夹角的余弦公式”,当初我的确是被这算法惊艳到了。

“商品推荐”系统的算法 ( Collaborative filtering ) 分两大类:

第一类,以人为本,先找到与你相似的人,然后看看他们买了什么你没有买的东西。这类算法最经典的实现就是“多维空间中两个向量夹角的余弦公式”;

第二类,以物为本,直接建立各商品之间的相似度关系矩阵。这类算法中最经典的是'斜率=1' (Slope One)。Amazon 发明了暴力简化的第二类算法,“买了这个商品的人,也买了 xxx”。

我们先来看看第一类,最大的问题是如何判断并量化两人的相似性,思路是这样的——

例子:

有 3 首歌放在那里,《最炫民族风》,《晴天》,《Hero》。

A 君,收藏了《最炫民族风》,而遇到《晴天》,《Hero》则总是跳过;

B 君,经常单曲循环《最炫民族风》,《晴天》会播放完,《Hero》则拉黑了;

C 君,拉黑了《最炫民族风》,而《晴天》《Hero》都收藏了。

我们都看出来了,A,B 二位品味接近,C 和他们很不一样。

那么问题来了,说 A,B 相似,到底有多相似,如何量化?

我们把三首歌想象成三维空间的三个维度,《最炫民族风》是 x 轴,《晴天》是 y 轴,《Hero》是 z 轴,对每首歌的喜欢程度即该维度上的坐标。

并且对喜欢程度做量化(比如:单曲循环=5, 分享=4, 收藏=3, 主动播放=2 , 听完=1, 跳过=-1 , 拉黑=-5)。

那么每个人的总体口味就是一个向量,A 君是 (3,-1,-1),B 君是 (5,1,-5),C 君是 (-5,3,3)。(抱歉我不会画立体图)

我们可以用向量夹角的余弦值来表示两个向量的相似程度, 0 度角(表示两人完全一致)的余弦是 1, 180 度角(表示两人截然相反)的余弦是 -1。

根据余弦公式,夹角余弦 = 向量点积 /(向量长度的叉积)= ( x1x2 + y1y2 + z1z2) / (√(x12 +y12+z12) ×√(x22+y22 +z22) )

可见 A 君 B 君的夹角余弦是 0.81 , A 君 C 君夹角的余弦是 -0.97 ,公式诚不欺我也。


以上是三维(三首歌)的情况,如法炮制 N 维 N 首歌的情况都是一样的。

假设我们选取一百首种子歌曲,算出了各君之间的相似值,那么当我们发现 A 君还喜欢听的《小苹果》B 君居然没听过,相信大家都知道该怎么和 B 君推荐了吧。

第一类以人为本推荐算法的好处我想已经很清楚了,那就是精准!

代价是运算量很大,而且对于新来的人(听得少,动作少),也不太好使。

所以人们又发明了第二类算法。

假设我们对新来的 D 君,只知道她喜欢最炫民族风,那么问题来了,给她推荐啥好咯?

如图,推荐《晴天》!

呵呵,第二类算法的好处大家也看出来了,简单粗暴好操作(也适合 map-reduce),可精度差了点。

所以,各家网站真正的推荐算法,是他们在综合上述两类算法的基础上,各自研制并且不断地改进调节的,外人不得而知! ^_^

(作者:邰原朗 来源:大型程序猿)





提供速度最快的全托管交易服务器




本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
线性代数精华——从正交向量到正交矩阵
相似度算法之余弦相似度
淘宝推荐系统:从千人一面到千人千面逻辑和算法(上篇) | 人人都是产品经理
人工智能需要哪些高级的数学知识?
高中数学平面向量专题求向量夹角的余弦值,先摆公式,再逐个击破
向量夹角法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服