关于Pearson相关性系数、Cosine相似度、欧式距离

作者:微调
链接:https://www.zhihu.com/question/19734616/answer/349132554
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


### 皮尔逊相关系数与余弦相似度在标准化数据上的区别及联系 当处理经过标准化的数据时,皮尔逊相关系数和余弦相似度实际上会表现出非常接近的行为。这是因为两者衡量的是不同向量间角度的关系,在特定条件下它们的结果趋于一致。 #### 定义回顾 皮尔逊相关系数测量两个随机变量线性关系强度的方向和大小[^1]: \[ \rho_{X,Y} = \frac{cov(X,Y)}{\sigma_X\sigma_Y} \] 其中 \( cov(X,Y) \) 表示协方差,\( \sigma_X \) 和 \( \sigma_Y \) 分别代表各自的标准差。 而对于已经中心化的向量(即减去均值),余弦相似度被定义为两向量夹角的余弦值: \[ cos(\theta)=\frac{{A}\cdot {B}}{|A||B|}=\frac{\sum A_i B_i}{\sqrt {\sum A_i^2 }\sqrt {\sum B_i^2 }} \] 这里假设输入已经被转换成零均值形式,则分子部分恰好等于原始数据点乘积之和;分母则是L2范数,对应着原坐标系下长度的概念。 #### 标准化的影响 一旦进行了标准化操作——即将特征缩放到具有单位方差并使平均值变为零之后,上述两种方法就变得几乎相同了。原因在于此时每个维度都被调整到了相同的尺度上,消除了由于量纲差异带来的影响。因此, - 对于已标准化的数据而言,皮尔逊相关性和余弦相似度都将忽略掉绝对数值的不同; - 这意味着二者都会聚焦于模式匹配而非具体取值水平; - 特别的,如果进一步考虑二者的数学表达式,在这种情况下,皮尔逊公式中的协方差项简化为了简单内积,而标准偏差则变成了常数1,这使得最终结果仅取决于方向而不是幅度。 ```python import numpy as np from scipy.spatial.distance import pdist, squareform def pearson_correlation(x, y): """Calculate the Pearson Correlation Coefficient.""" return np.corrcoef(x, y)[0][1] def cosine_similarity(x, y): """Calculate Cosine Similarity between two vectors""" dot_product = np.dot(x, y) norm_x = np.linalg.norm(x) norm_y = np.linalg.norm(y) return dot_product / (norm_x * norm_y) # Example usage with standardized data data = [[1., 2.], [3., 4.]] std_data = (np.array(data) - np.mean(data)) / np.std(data) print(f"Pearson's r: {pearson_correlation(std_data[:, 0], std_data[:, 1])}") print(f"Cosine sim.: {cosine_similarity(std_data[:, 0], std_data[:, 1])}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值