线性回归原理和实践--《机器学习实战》笔记

回归与分类的区别

和分类问题一样,回归问题也是预测目标值的过程。回归与分类不同点在于,前者预测连续型变量,后者预测离散型变量。

线性回归

  • 结果易于理解
  • 对非线性的数据拟合不好
  • 适用于数值型和标称型数据

线性回归步骤

  1. 将标称型数据编码为二值数据(one-Hot编码)
  2. 训练算法得到回归系数
  3. 利用 R2 评价模型
  4. 使用回归系数预测数据

回归系数

对于给定的训练数据集 x 如何训练得到回归系数 w 呢?常用的是采用平方误差最小原则,也就是:

mini=1N(yixTiw)2

用矩阵表示可以表示为 (yXw)T(yXw) 。对 w 求导,有 XT(YXw) ,关于标量与向量求导内容可参考。令导数为零有:

w^=(XTX)1XTY

w 的帽子符号代表估计的最优解。由于包含 X1 项,因此这个方程只有 X 存在逆矩阵时才能使用。当矩阵为奇异矩阵时(特征数量多于样本数),可以采用后面介绍的岭回归。我的 github里有简单线性回归的python代码。

局部加权线性回归

简单线性回归容易出现欠拟合的现象,也就是说模型对一些线性关系不是很好的训练集误差较大,因此有人提出局部加权线性回归的方法。该算法给待预测点附近的每个点赋予一定权重,距离越近权重越大。加权之后再进行普通线性回归。因此,这种算法每预测一次都需要选择预测点附近的数据子集。因此 w 的形式如下:

w^=(XTWX)1XTWy

其中 W 是一个矩阵,代表每个点的权重。
一般我们可以采用高斯核(与SVM中的核函数意义相近)来表示每个点的权重:
Wi,i=exp(|x(i)x|2σ2)

这样得到的 W 权重矩阵只有对角元素,且权重大小与数据点距离待测量点距离成反比,最大权重为1,最小权重趋向于0,我们可以通过调整 σ 参数来决定附近点的权重大小, σ 越小则附近点权重越大,也就是说权重随距离衰减得越快。下图可以看出不同 σ (图中为k,我习惯使用 σ 表示高斯核的参数)对数据点权重的影响。 σ 越小,越容易过拟合,因此需要调参确定k的取值。
线性回归原理和实践--《机器学习实战》笔记_第1张图片

局部加权回归的优缺点
  • 缺点:每次进行预测时,算法都需要用到整个数据集,因此占用了很多空间和时间
  • 优点 : 能够解决简单线性回归欠拟合的缺点,通过调参也可以缓解过拟合的情况

缩减方法

前面说到,如果 XTX 是奇异矩阵,也就是说数据特征比样本数多的话,就无法进行求逆操作。为了解决这个问题,必须缩减数据,因此统计学家引入了岭回归的概念。

岭回归

岭回归实际上就是在 XTX 上加了个 λI ,这样就能把非满秩矩阵转化为满秩矩阵进而求逆,由于矩阵 λI 只有对角线元素不为0,因此和山岭类似,故称之为岭回归。因此岭回归的回归系数方程为:

w^=(XTX+λI)1XTy

岭回归可以用于处理特征数量多于样本数的回归问题,还能引入估计偏差(引入罚项),进而有更好的泛化能力。
需要注意的是,由于岭回归引入了 λ 单位矩阵,因此需要对特征进行标准化处理,使得每个特征具有相同的重要性。一般做法为所有特征减去均值并除以特征方差。

lasso

岭回归相当于给回归系数 w 增加了一个平方惩罚项:

min(i=1N(yixTiw)2+λj=1mw2j)

根据拉格朗日乘子法可知,岭回归相当于给普通线性回归增加了一个约束,可以等价于:
w^=argsmin(i=1N(yixTiw)2)

subject to.j=1mw2jλ

从这种约束表达形式来看,我们也能更好的理解为什么岭回归要对数据进行标准化处理,如果不进行标准化,那么有可能个别特征的回归系数就会很大,导致别的特征回归系数很小。而lasso方法就是将约束条件改为
j=1m|wj|λ

虽然形式只是平方项变为绝对值,但是却大大增加了计算的复杂度,lasso约束在 λ 很小时,会让一些系数更趋于0(岭回归还需要平方),因此能够让人更好的理解数据。但是由于复杂度原因,我们一般可以采用一种效果接近,但是计算简单的算法–前向逐步回归。

前向逐步回归

前向逐步回归是一种迭代贪心算法,每一步都尽可能减小误差。具体算法步骤如下所示

  • 数据标准化使数据满足0均值,单位方差
  • 迭代一定次数,在每次迭代过程中:
    1. 设置当前最小误差lowestError为正无穷
    2. 对每个特征:
      • 增大或缩小:
        1. 改变一个系数得到新的权重 W
        2. 计算权重 W 的平方误差
        3. 若小于最小误差,则设最小误差为当前误差,设置 Wbest 为当前 W
      • W 设置为新的 Wbest

采用前向迭代回归可以帮助对模型的理解,可以找出重要的特征。

缩减方法(岭回归或前向迭代回归)能够增强模型泛化能力,同时也带来了一定得偏差。在偏差(bias)与方差(variance)的平衡中,可以通过交叉验证等方法选择最优模型。

你可能感兴趣的:(算法学习,机器学习)