余弦相似度算法计算方法
余弦相似度算法是机器学习和数据挖掘中常用的相似度计算方法之一,用于衡量两个向量之间的相似程度。该算法基于向量空间模型,通过计算向量之间的夹角余弦来评估相似度。
余弦相似度算法的计算方法可以分为四种:欧氏距离、曼哈顿距离、标准化欧氏距离和夹角余弦。
1. 欧氏距离(Euclidean Distance)
欧氏距离是最易于理解的一种距离计算方法,源自欧氏空间中两点间的距离公式。对于两个 n 维向量 a(x11,x12,…,x1n)和 b(x21,x22,…,x2n),欧氏距离可以计算为:
Matlab 计算欧氏距离可以使用 pdist 函数,例如:
X = [0 0 ; 1 0 ; 0 2]
D = pdist(X,'euclidean')
结果:
D = 1.0000 2.0000 2.2361
2. 曼哈顿距离(Manhattan Distance)
曼哈顿距离也称为城市街区距离(City Block distance),计算方法类似于驾驶距离。对于两个 n 维向量 a(x11,x12,…,x1n)和 b(x21,x22,…,x2n),曼哈顿距离可以计算为:
Matlab 计算曼哈顿距离可以使用 pdist 函数,例如:
X = [0 0 ; 1 0 ; 0 2]
D = pdist(X, 'cityblock')
结果:
D = 1 2 3
3. 标准化欧氏距离(Standardized Euclidean distance)
标准化欧氏距离是针对简单欧氏距离的缺点而作的一种改进方案。它将数据各维分量标准化到均值、方差相等,然后计算欧氏距离。对于两个 n 维向量 a(x11,x12,…,x1n)和 b(x21,x22,…,x2n),标准化欧氏距离可以计算为:
Matlab 计算标准化欧氏距离可以使用 pdist 函数,例如:
X = [0 0 ; 1 0 ; 0 2]
D = pdist(X, 'seuclidean',[0.5,1])
结果:
D = 2.0000 2.0000 2.8284
4. 夹角余弦(Cosine)
夹角余弦是衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异。对于两个 n 维样本点 a(x11,x12,…,x1n)和 b(x21,x22,…,x2n),夹角余弦可以计算为:
Matlab 计算夹角余弦可以使用 pdist 函数,例如:
X = [1 0 ; 1 1.732 ; -1 0]
D = 1- pdist(X, 'cosine')
夹角余弦取值范围为[-1,1],夹角余弦越大表示两个向量的夹角越小,夹角余弦越小表示两向量的夹角越大。当两个向量的方向重合时夹角余弦取最大值1,当两个向量的方向完全相反夹角余弦取最小值-1。
余弦相似度算法计算方法可以根据实际情况选择合适的距离计算方法,以便更好地衡量样本向量之间的相似度。
习题5-7求余弦函数的近似值可以使用 Taylor 展开式。Taylor 展开式是通过在某一点附近的函数值进行多项式拟合来对函数进行近似的方法。根据余弦函数的定义,余弦函数的 Taylor 展开式为:cos(x)≈1-x^2/2!+x^4/4!-x^6/6!+... 。可以根据所需要的精度和运算复杂度来选择展开的项数。