在百度中搜索 “如何度量两个实数变量之间的相关性?” 可得到如下链接:
https://jingyan.baidu.com/article/fd8044facdc8d25030137a44.html. 可见相关性分析已经有一些成熟的方法. 本贴不考虑这些方法, 而是从我的已有知识来进行模型的构建.
令输入为 X=[xij]n×m∈Rn×m\mathbf{X} = [x_{ij}]_{n \times m} \in \mathbb{R}^{n \times m}X=[xij]n×m∈Rn×m, 输出为 Y=[y1,y2,…,yn]\mathbf{Y} = [y_1, y_2, \dots, y_n]Y=[y1,y2,…,yn], 其中 nnn 为对象数, mmm 为属性数. 将输入属性记为变量 xix_ixi (1≤i≤m1 \le i \le m1≤i≤m), 输出属性记为变量 yyy. 不失一般性, 令 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(x1,x2,…,xm)(1)y = f(x_1, x_2, \dots, x_m) \tag{1}y=f(x1,x2,…,xm)(1)
即
y^i=f(xi)=f(xi1,xi2,…,xim)(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={x1,x2,…,xm}\mathbf{A} = \{x_1, x_2, \dots, x_m\}A={x1,x2,…,xm} 在预测函数 fff 下与 yyy 的相关性定义为 ppp-范数
cor(A,y)=∥Y^−Y∥pcor(\mathbf{A}, y) = \|\hat{\mathbf{Y}} - \mathbf{Y}\|_pcor(A,y)=∥Y^−Y∥p
其中 ppp 一般取 1 或者 2. 该范数越小, 表示相关性越高.
如果只想观察单个变量 x∈Ax \in \mathbf{A}x∈A 与 yyy 的相关性, 可使用不同的预测模型.
y=ax+b(3)y = ax + b \tag{3}y=ax+b(3)
重新构建输入矩阵 X=[xij]n×2\mathbf{X} = [x_{ij}]_{n \times 2}X=[xij]n×2, 其中 xi1≡1x_{i1} \equiv 1xi1≡1, xi2x_{i2}xi2 变量 xxx 在第 iii 个对象上的值. 令权重向量为 w=[w1,w2]\mathbf{w} = [w_1, w_2]w=[w1,w2]. 利用线性回归模型易知
w=(XTX)−1XTY(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=ax2+bx+c(4)y = ax ^2 + bx + c \tag{4}y=ax2+bx+c(4)
重新构建输入矩阵 X=[xij]n×2\mathbf{X} = [x_{ij}]_{n \times 2}X=[xij]n×2, 其中 xi1≡1x_{i1} \equiv 1xi1≡1, xi2x_{i2}xi2 为变量 xxx 在第 iii 个对象上的值, xi3=xi22x_{i3} = x_{i2}^2xi3=xi22. 仍然使用线性回归模型求解 w\mathbf{w}w 并计算 Y^\hat{\mathbf{Y}}Y^.
其它假设如自然对数可按类似方法求解, 即仅需要重构 X\mathbf{X}X.
由于在线性回归的基础上可加入其它函数假设, 我将其称为 “泛化线性回归”.
如果想获得更好的拟合, 可使用多变量. 当变量比较少的情况下, 可穷举所有的组合, 然后用线性回归. 如果变量较多, 只能用启发式方法:
Step 1. 计算各变量的相关性, 并令
x′=arg minxi∈Acor({xi},y),B={x′};x' = \argmin_{x_i \in \mathbf{A}} cor(\{x_i\}, y), \mathbf{B} = \{x'\};x′=xi∈Aargmincor({xi},y),B={x′};
Step 2. 令
x′=arg minxi∈A∖Bcor(B∪{xi},y);x' = \argmin_{x_i \in \mathbf{A} \setminus \mathbf{B}} cor(\mathbf{B} \cup \{x_i\}, y);x′=xi∈A∖Bargmincor(B∪{xi},y);
Step 3. if (cor(B∪{x′},y)
B←B∪{x′}\mathbf{B} \leftarrow \mathbf{B} \cup \{x'\}B←B∪{x′};
goto Step 2;
else return B\mathbf{B}B;
说明: Step 3 的判断, 也可以要求相关性之间的差值不小于某个阈值.
咨询超哥后获得权威方法.
Pearson 相关系数定义为:
ρ(X,Y)=cov(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 表示完全相关.