到场:Panda作家:Gonzalo Ferreiro Volpi

板滞进修根底:相似度和间隔器量终究是什么

相似度器量和间隔器量通通板滞进修范畴都好坏常根底的看法,数据科学家 Gonzalo Ferreiro Volpi 即日通过粗浅易懂的引荐系统示例先容了这些看法以及它们的盘算方法。

引荐系统中,我们常常道到「相似度器量」这一看法。为什么?因为引荐系统中,基于实质的过滤算法和协同过滤算法都运用了某种特定的相似度器量来确定两个用户或商品的向量之间的相等程度。以是总的来说,相似度器量不光仅是向量之间的间隔。

注:我的所有义务都可我的 GitHub 页面查看:https://github.com/gonzaferreiro,此中当然也包罗本文实质的代码库以及相关引荐系统的更众实质。

恣意类型的算法中,最常睹的相似度器量是向量之间夹角的余弦,即余弦相似度。设 A 为用户的影戏评分 A 列外,B 为用户的影戏评分 B 列外,那么它们之间的相似度可以如许盘算:

从数学上看,余弦相似度权衡的是投射到一个众维空间中的两个向量之间的夹角的余弦。当众维空间中绘制余弦相似度时,余弦相似度表示的是每个向量的偏向联系(角度),而非幅度。假如你念要幅度,则应盘算欧几里德间隔。

余弦相似度很有优势,因为即使两个相似的文献因为大小而欧几里德间隔上相距甚远(比如文档中呈现许众次的某个词或众次观看过同一部影戏的某用户),它们之间也可以具有更小的夹角。夹角越小,则相似度越高。

如下例所示,来自 www.machinelearningplus.com

 

上图统计了 sachin、dhoni、cricket 这三个词所示的三个文档中的呈现次数。据此,我们可以绘出这三个向量的图,从而轻松地看出权衡这些文档的余弦和欧几里德间隔的差别:

 

按照定义,常规余弦相似度反又厮偏向的差别,而不是位置的差别。于是,运用余弦相似度目标无法思索到用户评分如许的差别。调解后余弦相似度可以缓解这一题目,精细做法是从每对配合评分的配对减去各自用户的平均评分,其定义如下:

我们看看下面这个来自 Stack Overflow 的例子,这能更好地标明余弦相似度和调解过的余弦相似度之间的差别:

假设一位用户为两部影戏区分给出了 0~5 的评分。

直观而言,我们可以看到用户 b 和 c 的咀嚼临近,而 a 则颇为差别。但常规的余弦相似度却给出了不相同的结果。如许的案例中,盘算调解后余弦相似度能让我们更好地舆解用户之间的临近程度。

趁便一提,上一篇相关引荐系统的作品中,我们给出了以下用于盘算调解后余弦相似度的函数:

fromscipyimportspatial
defadjusted_cos_distance_matrix(size,matrix,row_column):
distances=np.zeros((size,size))
ifrow_column==0:
M_u=matrix.mean(axis=1)
m_sub=matrix-M_u[:,None]
ifrow_column==1:
M_u=matrix.T.mean(axis=1)
m_sub=matrix.T-M_u[:,None]
forfirstinrange(0,size):
forsecinrange(0,size):
distance=spatial.distance.cosine(m_sub[first],m_sub[sec])
distances[first,sec]=distance
returndistances

运用这个函数的方法十分简单,只需输入:

  1. matrix:这便是用户之间的评分或看法等你权衡的东西或你的营业商品的原始矩阵。

  2. row_columns:假如你权衡的是列之间的间隔,则设为 1;假如你权衡的是行之间的间隔,则设为 0;

  3. size:所得矩阵的所需大小。也便是说,当寻找用户或商品相似度时,这便是用户或商品的数目。以是假如有 500 个差别用户,则间隔矩阵的大小就为 500×500。

下面给出了一个参考示例:

  • user_similarity = adjusted_cos_distance_matrix(n_users,data_matrix,0)

  • item_similarity = adjusted_cos_distance_matrix(n_items,data_matrix,1)

着末,我们简明回忆少许可用引荐系统中盘算相似度的其它方法,但也可用于板滞进修中其它任何基于间隔的算法:

1. 欧几里德间隔:假如绘制 n 维空间中,相似的项取决于互相之间的临近程度。

2. 皮尔森相关性或相关相似度:告诉了我们两个项之间的相关程度。相关性越高,则相似度越高。

3. 均方差:于盘算用户评分之间的平均平方差。MSE 更偏重于惩办更大的过失。

然后:

此中 || 是用户 和 都评判过的商品的数目。

用户-用户以及商品-商品相似度示例

我们借帮之前先容引荐系统的作品来简明回忆一下协同过滤的义务方法:假设我喜爱《盲刺客》和《莫斯科绅士》这两本书;我的朋侪 Matias 也喜爱《盲刺客》和《莫斯科绅士》,但也还喜爱《Where the crawdads sing》。看起来我与 Matias 有相同的兴味。以是你可以会念我也会喜爱《Where the crawdads sing》,即使我还没读过它。协同过滤也恰是基于这一逻辑,只是你不光可以比较用户,也可以比较商品。

我们可视化地比较看看引荐系统的用户-用户相似度与商品-商品相似度之间的差别:

用户-用户相似度

 

商品-商品相似度

现,了解了这一点,我们用下面的示例标明阐明少许器量,我认为这分明辨清楚用户-用户以及商品-商品相似度:

用户-用户相似度详解

 

这里给出了一个用户影戏评分矩阵。为了以更加适用的方法了解这一点,我们先依据上外盘算一下用户 (A, C) 和 (B, C) 的相似度。用户 A 和 C 配合评分的影戏是 x2 和 x4,B 和 C 配合评分的影戏是 x2、x4、x5。晓得了这些新闻后,我们盘算皮尔森相关性或相关相似度:

A 和 C 之间的相关性比 B 和 C 之间的相关性大。于是,A 和 C 更相似,A 喜爱的影戏会被引荐给 C,C 喜爱的也会被引荐给 A。

商品-商品相似度详解

这里的平均商批判分(mean item rating)是给定商品的所有评分的平均(比较看看我们用户-用户过滤中看到的外格)。这里要盘算的不是用户-用户相似度,而是商品-商品相似度。要做到这一点,我们起首需求找到给这些商批判分过的用户,然后再基于这些评分来盘算这些商品之间的相似度。我们盘算一下影戏 (x1, x4) 和 (x1, x5) 之间的相似度。给影戏 x1 和 x4 评过分的用户是 A 和 B,而给影戏 x1 和 x5 评过分的用户也是 A 和 B。

x1 和 x4 的相似度大于 x1 和 x5 的相似度。基于这些相似度值,假如有任何用户搜寻影戏 x1,他们将被引荐 x4;反之亦然。

关于引荐系统的实质就到此为止了。可是,请记住相似度器量和间隔器量通通板滞进修范畴都好坏常根底的看法,了解它们对进一步的进修至关主要。

原文地址:https://medium.com/dataseries/similarity-and-distance-metrics-for-data-science-and-machine-learning-e5121b3956f8

初学统计间隔余弦相似性
2
相关数据
协同过滤技能

协同过滤(英语:Collaborative Filtering),简单来说是应用某兴味迎合、具有配合体验之群体的喜好来引荐用户感兴味的新闻,私人通过协作的机制给予新闻相当程度的回应(如评分)并记载下来以抵达过滤的目标进而帮帮别人筛选新闻,回应不必定范围于特别感兴味的,特别不感兴味新闻的记录也相当主要。协同过滤又可分为评选(rating)或者群体过滤(social filtering)。其后成为电子商务当中很主要的一环,即依据某顾客以往的置办方法以及从具有相似置办方法的顾客群的置办方法去引荐这个顾客其“可以喜爱的品项”,也便是借由社区的喜好供应私人化的新闻、商品等的引荐效劳。除了引荐除外,近年来也开展出数学运算让系统主动盘算喜好的强弱进而去芜存菁使得过滤的实质更有依据,也许不是百分之百完备准确,但因为到场了强弱的评选让这个看法的运用更为广泛,除了电子商务除外尚有新闻检索范畴、收集私人影音柜、私人书架等的运用等。

引荐系统技能

引荐系统(RS)重假如指运用协同智能(collaborative intelligence)做引荐的技能。引荐系统的两大主流类型是基于实质的引荐系统和协同过滤(Collaborative Filtering)。另外另有基于常识的引荐系统(包罗基于本体和基于案例的引荐系统)是一类特别的引荐系统,这类系统更加注重常识外征和推理。

引荐作品
暂无评论
暂无评论~