变量之间的相关性度量
程序员文章站
2022-07-13 08:54:29
...
1. 相关系数
称为Correlation coefficient,又称皮尔逊相关系数,衡量了两个变量的线性相关程度。定义变量与的协方差:
随机变量与的相关系数:
相关系数有如下的性质:
1.,越大,标明线性相关程度越高,当,表示为不相关。
2.的充要条件是,存在常数使得 ,即和一定存在线性关系。
3.线性相关和独立的关系:
- 当和相互独立时,,因此,此时和一定不相关。
- 当和不相关,和不一定相互独立。因为不相关针对线性关系来说的,相关独立是就一般关系来说的。
1.1相关矩阵
相关系数针对两个随机变量,相关矩阵是对相关系数在个随机变量的扩展:,
2.向量的相似度
当前最常用的衡量向量相似度的是余弦相似度,或者是两者的点积。设两个向量,,点积也成为了内积(inner product),
- 余弦相似度衡量了两个向量的夹角,,值越大,标明两个向量夹角越小,相似度越高。
- 点积,。点积反映了夹角以及向量的长度因素,在余弦相似度的基础上,两个向量的模越大,相关性越大。点积被用在capsule network时的参数更新计算。
2.1 Gram矩阵
点积运算可以被扩展到3D的feature map,论文:A Gift from Knowledge Distillation:
Fast Optimization, Network Minimization and Transfer Learning中采用Gram矩阵来tranfer的teacher的解过程的流动。
设,,是spatial维度,为channel维度,Gram矩阵。
得到的Gram矩阵相当于抓住了特征图与之间的channel-wise相关度。
实现代码:
import torch
def GramMatrix(A, B):
"""
Argument:
A -- matrix of shape (batch_size, n_C,n_H, n_W)
Returns:
GA -- Gram matrix of A, of shape (n_C, n_C)
"""
A_batch_size, A_n_C, A_n_H, A_n_W = A.size()
B_batch_size, B_n_C, B_n_H, B_n_W = B.size()
A = A.view(A_batch_size, A_n_C, -1)
B = B.view(B_batch_size, B_n_C, -1)
GA = torch.bmm(A, B.transpose(1, 2))
return GA
x = torch.randn(2, 3, 4, 4)
y = torch.randn(2, 5, 4, 4)
print(GramMatrix(x,y).size()) # torch.Size([2, 3, 5])
推荐阅读
-
JavaScript变量类型以及变量之间的转换你了解吗
-
JavaScript变量类型以及变量之间的转换你了解吗
-
探究Python多进程编程下线程之间变量的共享问题
-
Python 计算多个特征之间的相关性
-
ML之FE:利用FE特征工程(分析两两数值型特征之间的相关性)对AllstateClaimsSeverity(Kaggle2016竞赛)数据集实现索赔成本值的回归预测
-
变量之间的相关性度量
-
【20210803】【数据分析】评价两个向量之间的相关性指标
-
两个变量的相关性- - - 协方差与皮尔逊基相关系数
-
php和javascript之间变量的传递实现代码
-
html javascript jsp之间变量值的互相读取