有这么一个有名的故事,一家超市把啤酒跟尿布放在一起之后销量惊人,调查后是发现给孩子买奶布的同时,也会给爸爸买啤酒。啤酒与奶布,这两种看起来毫不相关的东西,却发现有一定的关联性,在以前,发现物品的相关性需要一定的机缘巧合,但是在大数据时代,找到物品的相关性却是非常的简单,这也是人工智能的一个分支。
今天我们来讲一讲,常见的物品/用户相似性的评分算法。
欧几里德距离评价算法
我们不凡想象这么一个业务场景,我们常常使用的外卖或者美食点评软件,我们经常会对点过的餐或者吃过的餐厅进行评价,例如A给日料店4分,给粤菜馆5分,给西餐3分,用户B给日料店3分,给粤菜馆4.5分,给西餐厅4分,那么,这两个用户是不是相似的呢?如果有一天A用户去了一家新的餐厅,给出了高评价,那么我们时候应该运用一定的推荐算法,把它推荐给B呢?
伟大的古希腊数学家欧几里德提出,平面上两个点的距离等于横纵坐标的差的平方之和开根号。我们把这个算法应用评估两个商品是否相近当中,上述例子,A用户跟B用户最终的相似度为sqrt((4-3)^2 + (5-4.5)^2 + (3-4)^2) = 1.5, 很显然,欧几里德越小,说明越相似。
曼哈顿距离评价算法
曼哈顿距离评价算法与欧几里德距离评价算法非常的接近,曼哈顿距离是由十九世纪的赫尔曼·闵可夫斯基提出了的一种衡量两点距离的算法,曼哈顿距离的计算为每个维度的差值的绝对值之和,像上述例子种,我们使用曼哈顿距离评价算法,计算出来的结果为abs(4-3)+ abs(4-4.5) + abs(3-4) 等于2.5,很明显,曼哈顿距离评价算法计算出来的结果越小,说明两者越接近。
皮尔逊相关度评价算法
在我们的生活中常常存在这样的场景,不同的两个人,可能洗好相同,但是评分的尺度却不一样。例如两个人都是程序员,都关注了沙茶敏碎碎念,喜欢阅读程序设计类相关的书籍,A的评分标准比较低,通常都给4-5分,B的评分标准比较高,通常只给3-4分,这两个人,本应该是相似的,但使用前面欧几里德算法与曼哈顿距离算法,都会计算出来他们有一定的偏差,所以我们可能就需要用到皮尔逊相关度评价算法进行评价。
皮尔逊相关度评价算法主要是拟合一条直线,然后依赖直线的斜率来判断两者的相似程度,斜率的范围有0到1,越大表示相关性越高,越小标识相关性越低,
Tanimoto分值
有些应用场景,可能没有评分这样的算法,例如用户A购买了程序设计、算法导论、Java高级编程3本书,用户B购买了JAVA高级编程,算法导论,程序员颈椎康复训练3本书,双方都没有进行评价,那么如何计算出两者的相关度呢?
我们可以使用两者的交集去除以两者的并集,和明显越接近1表示两者越接近。
总结
今天我们就介绍这四种常用的用来评价相关度的算法,其实都非常地简单