You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点积接近0但np.corrcoef返回显著负值,求问题原因解析

问题:特征向量点积近0但相关系数非0的原因

问题现象

两个特征向量的点积接近0(结果为5.551115123125783e-17),但使用np.corrcoef计算相关系数时得到显著的负相关系数-0.16304091,预期相关系数也应为0,对此存在疑问。

代码重现

import numpy as np

eigenvectors_sorted = np.array([
    [-0.4252893 ,  0.42100611,  0.71434339,  0.36276216],
    [ 0.14612219,  0.90470509, -0.33510219, -0.21877734]
])

# 计算点积
print(np.dot(eigenvectors_sorted[0], eigenvectors_sorted[1]))
# 输出:5.551115123125783e-17

# 计算相关系数
print(np.corrcoef(eigenvectors_sorted[0], eigenvectors_sorted[1]))
# 输出:
# [[ 1.         -0.16304091]
#  [-0.16304091  1.        ]]

核心原因

点积和皮尔逊相关系数的计算逻辑完全不同:

  • 点积:衡量两个向量的正交性,公式为$\sum_{i=1}^n x_i y_i$,这里结果接近0说明原始向量在空间中正交。
  • 皮尔逊相关系数:衡量两个变量的线性相关性,计算前会先对每个向量做去均值处理,公式为$\frac{\sum_{i=1}^n (x_i-\bar{x})(y_i-\bar{y})}{\sqrt{\sum_{i=1}^n (x_i-\bar{x})2}\sqrt{\sum_{i=1}n (y_i-\bar{y})^2}}$。

验证计算

  1. 计算两个向量的均值:

    • 第一个向量均值:$\frac{-0.4252893 + 0.42100611 + 0.71434339 + 0.36276216}{4} = 0.26820559$
    • 第二个向量均值:$\frac{0.14612219 + 0.90470509 - 0.33510219 - 0.21877734}{4} = 0.1242369375$
  2. 对两个向量去均值后,计算点积约为-0.13328,再除以去均值向量的模长乘积,结果正好是-0.163左右,和np.corrcoef的输出一致。

结论

特征向量的正交性是基于原始向量的,但皮尔逊相关系数是基于去均值后的向量计算的。这两个向量本身均值不为0,去均值后存在线性相关性,因此相关系数非0。

内容的提问来源于stack exchange,提问作者Titurn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:55:18