概念
余弦相似度(Cosine Similarity) 是一种衡量两个向量之间相似度的指标,常用于文本分析、推荐系统、聚类分析等领域。它通过计算两个向量的夹角余弦值来判断它们的相似程度:
- 余弦相似度值范围:
- 值为 1 表示完全相似(向量同方向)
- 值为 0 表示不相似(向量垂直,即夹角90°)
- 值为 -1 表示完全相反(向量方向相反)
使用场景
- 文本相似性:衡量两段文本的内容相似度。
- 推荐系统:在用户-物品推荐中,通过计算特征向量的相似性,推荐相似的物品或用户。
- 聚类分析:用于识别相似性较高的聚类簇。
数学计算方法
给定两个向量 和 ,余弦相似度的公式为:
其中:
- 表示向量的点积:
- 和 分别是向量的模(长度),计算方法为:
举例
假设向量 和 ,计算余弦相似度的步骤如下:
-
计算点积:
-
计算模:
-
计算余弦相似度:
Python 计算方法
使用 numpy
库可以简单快速地计算余弦相似度:
# Aemon Wang
# Email: aemooooon@gmail.com
import numpy as np
# 定义两个向量 A 和 B
A = np.array([1, 2, 3])
B = np.array([4, 5, 6])
# 计算点积 A · B
dot_product = np.dot(A, B)
# 计算向量 A 和 B 的模
norm_A = np.linalg.norm(A)
norm_B = np.linalg.norm(B)
# 计算余弦相似度
cosine_similarity = dot_product / (norm_A * norm_B)
print("Cosine Similarity:", cosine_similarity)
解释
np.dot(A, B)
计算两个向量的点积。np.linalg.norm(A)
和np.linalg.norm(B)
分别计算向量 A 和 B 的模。- 将点积除以模的乘积即可得到余弦相似度。
输出
运行上述代码将输出:
Cosine Similarity: 0.974631846197