天天看点

机器学习如何度量相似性 Cosine

夹角余弦(Cosine)

   几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异。

(1)在二维空间中向量A(x1,y1)与向量B(x2,y2)的夹角余弦公式:

机器学习如何度量相似性 Cosine

(2) 两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n)的夹角余弦。类似的,对于两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n),可以使用类似于夹角余弦的概念来衡量它们间的相似程度。

机器学习如何度量相似性 Cosine

  即:

机器学习如何度量相似性 Cosine

       夹角余弦取值范围为[-1,1]。夹角余弦越大表示两个向量的夹角越小,夹角余弦越小表示两向量的夹角越大。当两个向量的方向重合时夹角余弦取最大值1,当两个向量的方向完全相反夹角余弦取最小值-1。

       夹角余弦的具体应用可以参阅参考文献[吴军. 数学之美 系列 12 - 余弦定理和新闻的分类.]。

(3)Matlab计算夹角余弦

例子:计算(1,0)、( 1,1.732)、( -1,0)两两间的夹角余弦

X = [1 0 ; 1 1.732 ; -1 0]

D = 1- pdist(X, 'cosine')  % Matlab中的pdist(X, 'cosine')得到的是1减夹角余弦的值

结果:

D =

    0.5000   -1.0000   -0.5000

pdist的函数的详解,见博客点击打开链接

                   这里我们还要用到一个函数 squareform,把行向量,变为举证D ,其中D(i,j)  D(j,i)代表 i 和j 的相似度/距离。

上源码

clear
>> X = [1 0 ; 1 1.732 ; -1 0]

X =

    1.0000         0
    1.0000    1.7320
   -1.0000         0

>> D = 1- pdist(X, 'cosine')

D =

    0.5000   -1.0000   -0.5000

>> squareform(D)

ans =

         0    0.5000   -1.0000
    0.5000         0   -0.5000
   -1.0000   -0.5000         0
           

参考文章:点击打开链接      

继续阅读