皮尔逊相关系数(Pearson Correlation Coefficient)

皮尔逊相关系数

  • 皮尔逊相关系数(Pearson Correlation Coefficient)
  • 岭回归
  • LASSO 回归

皮尔逊相关系数(Pearson Correlation Coefficient)


皮尔逊相关系数(Pearson Correlation Coefficient)通常用于度量两个变量 XX 和 YY 之间的线性相关程度,其值介于 -1 与 1 之间。其中,数值越趋近于 1 表示正相关程度越高,趋近于 0 表示线性相关度越低,趋近于 -1 则表示负相关程度越高。

Pandas 提供了直接计算相关系数的方法,从而计算出上方 10×1010×10 的希尔伯特矩阵中,数据列之间的相关性系。

import pandas as pd

pd.DataFrame(x, columns=['x%d'%i for i in range(1,11)]).corr()

最小二乘线性拟合¶
上面由希尔伯特矩阵对应的示例数据集中,假设已知的 x1x1 到 x10x10 服从线性分布:

y=w1∗x1+w2∗x2+……+w10∗x10(7)
(7)y=w1∗x1+w2∗x2+……+w10∗x10
接下来我们先使用 NumPy 随机生成 ww 参数,并得到实际对应的 yy 值。

from scipy.optimize import leastsq

x = hilbert(10) # 生成 10x10 的希尔伯特矩阵
np.random.seed(10) # 随机数种子能保证每次生成的随机数一致
w = np.random.randint(2,10,10) # 随机生成 w 系数
y_temp = np.matrix(x) * np.matrix(w).T # 计算 y 值
y = np.array(y_temp.T)[0] #将 y 值转换成 1 维行向量

print("实际参数 w: ", w)
print("实际函数值 y: ", y)

下来,我们便使用前面课程中学习到的最小二乘法对数据集进行线性拟合,并求出拟合得到的参数。

func=lambda p,x: np.dot(x, p) # 函数公式
err_func = lambda p, x, y: func(p, x)-y # 残差函数
p_init=np.random.randint(1,2,10) # 全部参数初始化为 1

parameters = leastsq(err_func, p_init, args=(x, y)) # 最小二乘法求解
print("拟合参数 w: ",parameters[0])

你会发现,实际参数 ww 和拟合参数 ww 差距非常大。这也就印证了 1.1 节中所说的普通最小二乘法的局限性。

综上所示,普通最小二乘法带来的局限性,导致许多时候都不能直接使用其进行线性回归拟合。特别是以下两种情况:

数据集的列(特征)数量 > 数据量(行数量),即 XX 不是列满秩。
数据集列(特征)数据之间存在较强的线性相关性,即模型容易出现过拟合。

岭回归

为了解决上述两种情况中出现的问题,岭回归(Ridge Regression)应运而生。岭回归可以被看作为一种改良后的最小二乘估计法,它通过向损失函数中添加 L2L2 正则项(2-范数)有效防止模型出现过拟合,且以助于解决非满秩条件下求逆困难的问题,从而提升模型的解释能力。

from sklearn.linear_model import Ridge

ridge_model = Ridge(fit_intercept=False) # 参数代表不增加截距项
ridge_model.fit(x, y)

Ridge() 模型中的 alpha 参数代表正则化强度。

LASSO 回归

当我们使用普通最小二乘法进行回归拟合时,如果特征变量间的相关性较强,则可能会导致某些 ww 系数很大,而另一些系数变成很小的负数。所以,我们通过上文中的岭回归添加 L2L2 正则项来解决这个问题。

与岭回归相似的是,LASSO 回归同样是通过添加正则项来改进普通最小二乘法,不过这里添加的是 L1L1 正则项。

最小二乘法的本质是什么?
机器学习中常常提到的正则化到底是什么意思?
机器学习中使用正则化来防止过拟合是什么原理?

你可能感兴趣的:(学习总结)