相关文章链接:算法文章汇总
余弦距离(也称为余弦相似度): 用向量空间中两个向量夹角的余弦值 作为衡量两个个体
间差异的大小的度量。向量:多维空间中有方向的线段,如果两个向量的 方向一致,即夹角接
近零,那么这两个向量就相近 。而要确定两个向量方向是否一致,这就要用到余弦定理计算向
量的夹角。
余弦定理描述了 三角形中任何一个夹角和三个边的关系 。给定三角形的三条边,可以使用余弦定理求出三角形各个角的角度。
假定三角形的三条边为a,b和c,对应的三个角为A,B和C,如下如所示:
那么角A的余弦为:
如果将三角形的 两边b和c看成是两个向量 ,则上述公式等价于:
其中 分母表示两个向量b和c的长度,分子表示两个向量的内积 。
举一个具体的例子,假如新闻X和新闻Y对应向量分别是:
x1, x2, ..., x6400
和
y1, y2, ..., y6400
则,它们之间的余弦距离可以用它们之间夹角的余弦值来表示:
当两条新闻向量夹角余弦等于1时,这两条新闻完全重复(用这个办法可以删除爬虫所收集网页中的重复网页);当夹角的余弦值接近于1时,两条新闻相似(可以用作文本分类);夹角的余弦越小,两条新闻越不相关。
余弦距离使用两个向量夹角的余弦值作为衡量两个个体间差异的大小。 相比欧氏距离,余弦距离更加注重两个向量在方向上的差异。借助三维坐标系来看下欧氏距离和余弦距离的区别:
从上图可以看出,欧氏距离衡量的是空间各点的绝对距离,跟各个点所在的位置坐标直接相关;而余弦距离衡量的是空间向量的夹角,更加体现在方向上的差异,而不是位置。
总体来说,欧氏距离体现数值上的绝对差异,而余弦距离体现方向上的相对差异。
1)例如,统计两部剧的用户观看行为,用户A的观看向量为(0,1),用户B为(1,0);
此时二者的余弦距很大,而欧氏距离很小;
我们分析两个用户对于不同视频的偏好,更关注相对差异,显然应当使用余弦距离。
2)而当我们分析用户活跃度,以登陆次数(单位:次)和平均观看时长(单:分钟)作为特征时
余弦距离会认为(1,10)、(10,100)两个用户距离很近;
但显然这两个用户活跃度是有着极大差异的,此时我们更关注数值绝对差异,应当使用欧氏距离。
总结:在日常使用中需要注意区分,余弦距离虽然不是一个严格意义上的距离度量公式,但是形容两个特征向量之间的关系还是有很大用处的。比如人脸识别,推荐系统等。
注:其他相关文章链接由此进 -> 算法文章汇总