机器学习实战笔记-8-回归

回归

线性回归

(mathbf{x}^{mathbf{T}})向量第一列全为1,即(x_{0} = 1),这样(x_{0}w_{0})代表的是截距,(x_{1}w_{1})是斜率:

设回归方程(y_{i}^{'} =mathbf{x}_{mathbf{i}}^{T}mathbf{omega}),则回归的评价指标:误差的平方和(sum_{i = 1}^{m}left( y_{i} - mathbf{x}_{i}^{T}mathbf{omega} ight)^{2})

写作矩阵形式:

回归方程为(mathbf{y}' = Xmathbf{omega}),其中(mathbf{y}')(m imes 1)(X)(m imes n),误差的平方和(delta = left( mathbf{y}Xmathbf{omega} ight)^{T}(mathbf{y} - Xmathbf{omega}))

(frac{partialdelta}{partialmathbf{omega}} = - X^{T}mathbf{y+}X^{T}Xmathbf{omega}mathbf{= 0}),得到回归系数为(mathbf{omega} =left( mathbf{X}^{T}mathbf{X} ight)^{- 1}mathbf{X}^{T}mathbf{y})
用相关系数corrcoef(yHat.T,yMat)可以计算得到相关系数,即拟合指标。

局部加权线性回归

使用“核”给预测点附近每个点赋予更高的权重,即(wleft( i,i ight) = expleft( frac{left| x_{i} - x ight|}{- 2k^{2}} ight))。则回归系数

[mathbf{omega}mathbf{=}left( mathbf{X}^{T}mathbf{ ext{WX}} ight)^{mathbf{- 1}}mathbf{X}^{T}mathbf{ ext{Wy}} ]

其中(mathbf{W})(wleft( i,i ight))形成的矩阵。

  • (k)越小,预测点附近的点权重越大,越看重细节。易造成过拟合。过拟合的误差(sum_{i = 1}^{m}left( y_{i} - y_{i}^{'} ight)^{2})较小。但预测新数据的效果未必越好。

  • (k)越大,预测点附近的点权重越平均,越看重整体。(k = 1)时基本与简单线性回归一样了。

缩减系数之岭回归

如果上述训练集的特征比样本点数多(n>m),输入数据的矩阵不是满秩矩阵,求逆会出现问题。作以下修正即可(其中(mathbf{I})大小为m*m):

( mathbf{omega} = left( mathbf{X}^{T}mathbf{X}mathbf{+}lambdamathbf{I} ight)^{- 1}mathbf{X}^{T}mathbf{y} )

数据获取之后,首先抽取部分用于测试,其余用于训练出参数(mathbf{omega}),训练完毕后在测试集上测试性能,选取不同的(mathbf{lambda})重复上述过程,得到使预测误差最小的(mathbf{lambda})

可知,(lambda)越小(越接近0),各系数与普通回归一样;随着(lambda)不断增大,系数全部缩减为0。取中间的值可以得到最好的预测效果。

该方法等效于 普通线性回归+约束:(sum_{k = 1}^{n}{omega_{k}^{2} leqlambda})

图、 回归系数与(lambda)的关系

  1. 缩减系数之前向逐步回归:属于贪心算法(每一步都尽可能减小误差)

算法伪代码:每次迭代更改w(中一个特征的一个小值),以得到做这样改动的最优解。

数据标准化(满足0均值和单位方差:数据减去均值后处以方差)
for 每轮迭代:
  设置最前最小误差lowestError为正无穷
  对每个特征:
    增大或缩小一个系数得到新的w
      计算新w下的误差
      如果误差Error小于lowestError:设置WBest为当前w
  将WBset设置为新的w

缩减系数的目的在于:“理解”特征对回归的作用。


关于矩阵求导:其中(mathbf{x,eta})均为列向量。

( frac{partialmathbf{eta}^{T}mathbf{x}}{partialmathbf{x}} = frac{partialmathbf{x}^{T}mathbf{eta}}{partialmathbf{x}} = mathbf{eta}() )

( frac{partialmathbf{x}^{T}mathbf{x}}{partialmathbf{x}} = 2mathbf{x}() )

( frac{partialmathbf{x}^{T}mathbf{A}mathbf{x}}{partialmathbf{x}} = frac{partialmathbf{x}^{T}mathbf{A}^{T}mathbf{x}}{partialmathbf{x}} = frac{partial(mathbf{x}^{T}mathbf{)}mathbf{A}mathbf{x}}{partialmathbf{x}}mathbf{+}frac{partialmathbf{x}^{T}mathbf{A}mathbf{(x)}}{partialmathbf{x}} = frac{partial(mathbf{x}^{T}mathbf{A}mathbf{)x}}{partialmathbf{x}}mathbf{+}frac{partialmathbf{x}^{T}mathbf{(}mathbf{A}mathbf{x)}}{partialmathbf{x}} = mathbf{A}^{T}mathbf{x} + mathbf{Ax =}left( mathbf{A}^{mathbf{T}}mathbf{+ A} ight)mathbf{x} )

原文地址:https://www.cnblogs.com/charleechan/p/11434765.html