如何度量变量之间的相关性

在百度中搜索 “如何度量两个实数变量之间的相关性?” 可得到如下链接:
https://jingyan.baidu.com/article/fd8044facdc8d25030137a44.html. 可见相关性分析已经有一些成熟的方法. 本贴不考虑这些方法, 而是从我的已有知识来进行模型的构建.

1. 相关性度量

令输入为 X = [ x i j ] n × m ∈ R n × m \mathbf{X} = [x_{ij}]_{n \times m} \in \mathbb{R}^{n \times m} X=[xij]n×mRn×m, 输出为 Y = [ y 1 , y 2 , … , y n ] \mathbf{Y} = [y_1, y_2, \dots, y_n] Y=[y1,y2,,yn], 其中 n n n 为对象数, m m m 为属性数. 将输入属性记为变量 x i x_i xi ( 1 ≤ i ≤ m 1 \le i \le m 1im), 输出属性记为变量 y y y. 不失一般性, 令 Y ^ = [ y ^ 1 , y ^ 2 , … , y ^ n ] \hat{\mathbf{Y}} = [\hat{y}_1, \hat{y}_2, \dots, \hat{y}_n] Y^=[y^1,y^2,,y^n] 为根据 X \mathbf{X} X Y \mathbf{Y} Y 的预测, 预测函数可记为
y = f ( x 1 , x 2 , … , x m ) (1) y = f(x_1, x_2, \dots, x_m) \tag{1} y=f(x1,x2,,xm)(1)

y ^ i = f ( x i ) = f ( x i 1 , x i 2 , … , x i m ) (2) \hat{y}_i = f(\mathbf{x}_i) = f(x_{i1}, x_{i2}, \dots, x_{im}) \tag{2} y^i=f(xi)=f(xi1,xi2,,xim)(2)
则变量集合 A = { x 1 , x 2 , … , x m } \mathbf{A} = \{x_1, x_2, \dots, x_m\} A={x1,x2,,xm} 在预测函数 f f f 下与 y y y 的相关性定义为 p p p-范数
c o r ( A , y ) = ∥ Y ^ − Y ∥ p cor(\mathbf{A}, y) = \|\hat{\mathbf{Y}} - \mathbf{Y}\|_p cor(A,y)=Y^Yp
其中 p p p 一般取 1 或者 2. 该范数越小, 表示相关性越高.

2. 基于单变量的泛化线性回归

如果只想观察单个变量 x ∈ A x \in \mathbf{A} xA y y y 的相关性, 可使用不同的预测模型.

  • 考虑基本线性假设

y = a x + b (3) y = ax + b \tag{3} y=ax+b(3)
重新构建输入矩阵 X = [ x i j ] n × 2 \mathbf{X} = [x_{ij}]_{n \times 2} X=[xij]n×2, 其中 x i 1 ≡ 1 x_{i1} \equiv 1 xi11, x i 2 x_{i2} xi2 变量 x x x 在第 i i i 个对象上的值. 令权重向量为 w = [ w 1 , w 2 ] \mathbf{w} = [w_1, w_2] w=[w1,w2]. 利用线性回归模型易知
w = ( X T X ) − 1 X T Y (3) \mathbf{w} = (\mathbf{X}^{\mathrm{T}}\mathbf{X})^{-1}\mathbf{X}^{\mathrm{T}}\mathbf{Y} \tag{3} w=(XTX)1XTY(3)
用它来计算 Y ^ \hat{\mathbf{Y}} Y^ 即可.

  • 考虑二次曲线假设

y = a x 2 + b x + c (4) y = ax ^2 + bx + c \tag{4} y=ax2+bx+c(4)
重新构建输入矩阵 X = [ x i j ] n × 2 \mathbf{X} = [x_{ij}]_{n \times 2} X=[xij]n×2, 其中 x i 1 ≡ 1 x_{i1} \equiv 1 xi11, x i 2 x_{i2} xi2 为变量 x x x 在第 i i i 个对象上的值, x i 3 = x i 2 2 x_{i3} = x_{i2}^2 xi3=xi22. 仍然使用线性回归模型求解 w \mathbf{w} w 并计算 Y ^ \hat{\mathbf{Y}} Y^.

  • 考虑其它假设

其它假设如自然对数可按类似方法求解, 即仅需要重构 X \mathbf{X} X.
由于在线性回归的基础上可加入其它函数假设, 我将其称为 “泛化线性回归”.

  • 说明
  1. 由于仅仅是两个变量之间的相关性, 可在二维平面上画出散列点, 分析规律后选择合适的模型假设.
  2. 纯线性的最为常用, 其它方法中, 不建议考虑三次曲线等.
  3. 如果仅仅是想对变量进行排序, 用这些方法就可以了.

3. 多变量的处理

如果想获得更好的拟合, 可使用多变量. 当变量比较少的情况下, 可穷举所有的组合, 然后用线性回归. 如果变量较多, 只能用启发式方法:
Step 1. 计算各变量的相关性, 并令
x ′ = arg min ⁡ x i ∈ A c o r ( { x i } , y ) , B = { x ′ } ; x' = \argmin_{x_i \in \mathbf{A}} cor(\{x_i\}, y), \mathbf{B} = \{x'\}; x=xiAargmincor({xi},y),B={x};
Step 2. 令
x ′ = arg min ⁡ x i ∈ A ∖ B c o r ( B ∪ { x i } , y ) ; x' = \argmin_{x_i \in \mathbf{A} \setminus \mathbf{B}} cor(\mathbf{B} \cup \{x_i\}, y); x=xiABargmincor(B{xi},y);
Step 3. if ( c o r ( B ∪ { x ′ } , y ) < c o r ( B , y ) ) cor(\mathbf{B} \cup \{x'\}, y) < cor(\mathbf{B}, y)) cor(B{x},y)<cor(B,y)) then
B ← B ∪ { x ′ } \mathbf{B} \leftarrow \mathbf{B} \cup \{x'\} BB{x};
goto Step 2;
else return B \mathbf{B} B;

说明: Step 3 的判断, 也可以要求相关性之间的差值不小于某个阈值.

4. 其它

  • 可以考虑离群点移除, 以获得泛化性更佳的拟合. 可采用自步学习等方法. 这时候需要对回归方法、评价指标均作相应修改, 即仅计算离群点移除后的结果.
  • 不建议使用正则项. 有效性仅需要在训练集上验证即可, 不需要测试集.

5. 权威方法

咨询超哥后获得权威方法.
Pearson 相关系数定义为:
ρ ( X , Y ) = c o v ( X , Y ) σ X σ Y = E ( ( X − μ X ) ( Y − μ Y ) ) σ X σ Y \rho(X, Y) = \frac{cov(X, Y)}{\sigma_X \sigma_Y} = \frac{E((X - \mu_X) (Y - \mu_Y))}{\sigma_X \sigma_Y} ρ(X,Y)=σXσYcov(X,Y)=σXσYE((XμX)(YμY))
− 1 -1 1 表示完全不相关, + 1 +1 +1 表示完全相关.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值