不同相关性度量方法的线上效果对比与分析

from: http://blog.sina.com.cn/s/blog_4b59de07010166z9.html

--

我们知道,对于个性化推荐来说,最核心、重要的算法是相关性度量算法。相关性从网站对象来分,可以针对商品、用户、旺铺、资讯、类目等等,从计算方式看可以分为文本相关性计算和行为相关性计算,具体的实现方法有很多种,最常用的方法有余弦夹角(Cosine)方法、杰卡德(Jaccard)方法等。

Google对新闻的相似性计算采用的是余弦夹角,CBU的个性化推荐以往也主要采用此方法。从9月份开始,CBU个性化推荐团队实现了杰卡德计算方法计算文本相关性和行为相关性,并且分别在线上做了算法效果测试。本文基于测试结果,进行了对比及一些分析比较。

中国造不出自己的航母(别说不知道辽宁号是几十年前的前苏联废弃不要的),据说有一个原因是造不好蒸汽弹射器。因为这个东西,需要机械、材料学、空气动力学研究人员做无数实验。这种费力不讨好,既发不了论文的事情又搞不到钱的长期行为,中国大陆基本没人愿意干的。

所以希望此文起到抛砖引玉的作用,勾起大家研究尝试基础方法,不断探索思考,并将结果分享给大家,从而共同提高、少走弯路。

一,线上应用中Jaccard方法与Cosine方法的CTR

1、行为相关性的度量比较

通过前段时间在CBU 1688.COM网站上的多个场景的线上测试,我们发现:CTR指标上,针对行为相关性计算的Jaccard的推荐精准度比Cosine方法要高的多

将两种方法的算法结果,直接放到线上应用的三个应用场景,通过跟踪不同算法结果的实际的CTR(曝光点击率),详细数据如下:

 

场景

推荐策略

CTRJaccard VS Cosine

收藏offer成功后的提示页面

相关商品的推荐普通商品

提升21%

进货单页面的相关商品推荐

相关商品推荐普通商品

提升9%

阿里巴巴每日焦点-热卖tab

猜你喜欢推荐P4P商品

提升12%


简要分析:

(1)    如果是完全以相关性推荐为主题的页面,比如“收藏offer成功后的提示页面”,Jaccard方法对应的CTR提升最大;

(2)     提升达到9%的进货单页面,该页面的核心价值是促进加入进货单的商品进入交易付款环节,并不是推荐,因此在推荐场景布置上有很大局限;

(3)     提升达到12%的阿里巴巴每日焦点-热卖,虽然整个页面的主题就是推荐,但是毕竟推荐的是P4P商品,因为P4P商品覆盖率不是很高,行为相关性粘稠度肯定不如普通商品,所以覆盖率也没有达到20%

 

2、文本相关性的度量比较

    同样,在文本相关性计算中,分别使用CosineJaccard,再将算法结果在线上做测试。线上场景是1688的资讯画报推荐。数据显示,两者的CTR基本一致。

    不过,Jaccard方法在hadoop上的分布式计算,其计算效率上比Cosine有一定的优势。

 

二,对Jaccard方法与Cosine方法的理解

1、余弦定理相似性度量

在相关性计算中的Cosine方法,即余弦相似度方法,是用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。

学过向量代数的人都知道,向量实际上是多维空间中有方向的线段。如果两个向量的方向一致,即夹角接近零,那么这两个向量就相近。而要确定两个向量方向是否一致,这就要用到余弦定理计算向量的夹角了。

余弦定理对我们每个人都不陌生,它描述了三角形中任何一个夹角和三个边的关系,换句话说,给定三角形的三条边,我们可以用余弦定理求出三角形各个角的角度。假定三角形的三条边为 a, b  c,对应的三个角为A, B  C,那么角 A 的余弦。

      不同相关性度量方法的线上效果对比与分析


   如果我们将三角形的两边 b  c 看成是两个向量,那么上述公式等价于:

不同相关性度量方法的线上效果对比与分析

     其中分母表示两个向量 b  c 的长度,分子表示两个向量的内积。举一个具体的例子,假如新闻 X 和新闻 Y 对应向量分别是
        x1,x2,...,x64000
 
        y1,y2,...,y64000,
     那么它们夹角的余弦等于:
          不同相关性度量方法的线上效果对比与分析


     当两条新闻向量夹角的余弦等于一时,这两条新闻完全重复(用这个办法可以删除重复的网页);当夹角的余弦接近于一时,两条新闻相似,从而可以归成一类;夹角的余弦越小,两条新闻越不相关。
         


 从上图可以看出,余弦相似度用两个向量夹角的余弦值作为衡量两个个体间差异的大小,相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。

借助三维坐标系来看下欧氏距离和余弦相似度的区别:




  从图上可以看出距离度量衡量的是空间各点间的绝对距离,跟各个点所在的位置坐标(即个体特征维度的数值)直接相关;而余弦相似度衡量的是空间向量的夹角,更加的是体现在方向上的差异,而不是位置。如果保持A点的位置不变,B点朝原方向远离坐标轴原点,那么这个时候余弦相似度cosθ是保持不变的,因为夹角不变,而AB两点的距离显然在发生改变,这就是欧氏距离和余弦相似度的不同之处。

根据欧氏距离和余弦相似度各自的计算方式和衡量特征,分别适用于不同的数据分析模型:欧氏距离能够体现个体数值特征的绝对差异,所以更多的用于需要从维度的数值大小中体现差异的分析,如使用用户行为指标分析用户价值的相似度或差异;而余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感,更多的用于使用用户对内容评分来区分用户兴趣的相似度和差异,同时修正了用户间可能存在的度量标准不统一的问题(因为余弦相似度对绝对数值不敏感)。

2、杰卡德相似性度量

(1) 杰卡德相似系数

       两个集合AB的交集元素在AB的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示。

 

  杰卡德相似系数,也是衡量两个集合的相似度一种指标。

     不同相关性度量方法的线上效果对比与分析


 (2) 杰卡德相似系数与杰卡德距离的应用

       可将杰卡德相似系数用在衡量样本的相似度上。

  样本A与样本B是两个n维向量,而且所有维度的取值都是01。例如:A(0111)B(1011)。我们将样本看成是一个集合,1表示集合包含该元素,0表示集合不包含该元素。

p :样本AB都是1的维度的个数

q :样本A1,样本B0的维度的个数

r :样本A0,样本B1的维度的个数

s :样本AB都是0的维度的个数

那么样本AB的杰卡德相似系数可以表示为:

不同相关性度量方法的线上效果对比与分析  

这里p+q+r可理解为AB的并集的元素个数,而pAB的交集的元素个数。

 

(3) 杰卡德相似度算法的优劣

    显然,Jaccard没有考虑向量中潜在数值的大小,而是简单处理为01了。不过,也可以发现,Jaccard方法计算效率肯定是比较高的,毕竟只需要做集合操作。

3、调整余弦相似度算法-Adjusted Cosine Similarity

在余弦相似度的介绍中说到:余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感。因此没法衡量每个维数值的差异,会导致这样一个情况:比如用户对内容评分,5分制,XY两个用户对两个内容的评分分别为(1,2)(4,5),使用余弦相似度得出的结果是0.98,两者极为相似,但从评分上看X似乎不喜欢这2个内容,而Y比较喜欢,余弦相似度对数值的不敏感导致了结果的误差,需要修正这种不合理性,就出现了调整余弦相似度,即所有维度上的数值都减去一个均值,比如XY的评分均值都是3,那么调整后为(-2,-1)(1,2),再用余弦相似度计算,得到-0.8,相似度为负值并且差异不小,但显然更加符合现实。

那么是否可以在(用户,商品,行为数值)矩阵的基础上,使用调整余弦夹角相似度计算呢?从算法原理分析上,复杂度虽然增加了,但是应该比普通余弦夹角算法要强的。

除了调整余弦夹角,相似度度量的方法还有不少,比如 闵可夫斯基距离(Minkowski Distance)、马氏距离(Mahalanobis Distance)、汉明距离(Hamming distance)等,这些也完全可以根据资源与需要,陆续做一些算法的研究尝试。

你可能感兴趣的:(不同相关性度量方法的线上效果对比与分析)