TIM*_*MEX 44 algorithm computer-science vector
他们的目标都是一样的:找到类似的向量.你在哪种情况下使用哪种?(任何实际例子?)
dsi*_*cha 50
Pearson相关和余弦相似性对于缩放是不变的,即将所有元素乘以非零常数.Pearson相关性对于向所有元素添加任何常量也是不变的.例如,如果你有两个向量X1和X2,并调用你的Pearson相关函数pearson()
,pearson(X1, X2) == pearson(X1, 2 * X2 + 3)
.这是一个非常重要的属性,因为你通常不关心两个向量在绝对意义上是相似的,只是它们以相同的方式变化.
Aka*_*all 28
Pearson Correlation Coefficient和Cosine Similarity之间的差异可以从他们的公式中看出:
Pearson Correlation Coefficient对于添加任何常数不变的原因是通过构造减去平均值.这也很容易看出,Pearson相关系数和余弦相似度是等价的时候X
和Y
有手段0
,所以我们可以认为Pearson相关系数为余弦相似度的贬低版本.
对于实际使用,让我们考虑两种资产的收益x
和y
:
In [275]: pylab.show()
In [276]: x = np.array([0.1, 0.2, 0.1, -0.1, 0.5])
In [277]: y = x + 0.1
Run Code Online (Sandbox Code Playgroud)
这些资产的收益具有完全相同的可变性,这是通过Pearson Correlation Coefficient(1)测量的,但它们并不完全相似,它们通过余弦相似性(0.971)来衡量.
In [281]: np.corrcoef([x, y])
Out[281]:
array([[ 1., 1.], # The off diagonal are correlations
[ 1., 1.]]) # between x and y
In [282]: from sklearn.metrics.pairwise import cosine_similarity
In [283]: cosine_similarity(x, z)
Out[283]: array([[ 0.97128586]])
Run Code Online (Sandbox Code Playgroud)