美文网首页
机器学习笔记E2.0--线性回归

机器学习笔记E2.0--线性回归

作者: EL33 | 来源:发表于2019-02-19 20:00 被阅读0次

线性回归(linner regression) 模型是机器学习内容中的提到的第一个也是最简单的模型。这里由浅入深的介绍了单变量线性回归,多变量线性回归和多项式回归。


  • 单变量线性回归
    • 模型-假设函数
    • 策略-代价函数
    • 算法-求解析解
  • 多变量线性回归
    • 正规方程法
    • 正规方程的不可逆性
  • 多项式回归、欠拟合和过拟合

(页内跳转不起效,html代码插入不了,之后解决)

单变量线性回归

线性回归模型是线性模型的一种。
线性模型的基本形式如下:
h(x)=\theta_0+\theta_1x_1+\theta_2x_2+\dots+\theta_nx_n
通常数据集的形式为:
D={\{((x_i^1,x_i^2,,,x_i^n),y_i)\}}_{i=1}^m
其中n为输入空间的维度,即特征个数,m为样本数量。

当只含有数据集只含有一个特征时,可将表达形式简化为:
D={\{((x_i,y_i)\}}_{i=1}^m , h(x)=\theta_0+\theta_1x这样的问题称为 单变量线性回归
下面我们从统计分析的三要素入手来看单变量线性回归。

模型

单变量线性回归假设数据集
D={\{(x_i,y_i)}\}_{i=1}^m
中每个y_ix_i之间存在一种线性关系,针对这种线性关系提出如下的假设函数h(x):
h(x)=\theta_0+\theta_1x

策略

假设函数确定了,接下来我们需要找出一种策略来衡量假设空间中各个假设函数的优劣。
机器学习中策略一般是某种损失函数(或叫代价函数),最优的假设函数有最小的损失,那么我们找出损失函数最小时对应的 \theta^T 就可以找出对应的假设函数。
经验误差越小往往泛化误差也会越小,自然的,我们会想到使用假设函数在整个训练集上的损失(与真实值的差距)来作为损失函数
Loss(h)=\sum_{i=1}^mL(y_i,h(x_i))
L(y_i,h(x_i)) 为假设函数和 h(x) 与真实值 y_i 之间的差距,常用的计算形式比如:

L(y_i,h(x_i))=y_i-h(x_i) ————(1)
L(y_i,h(x_i))=|y_i-h(x_i) | ————(2)
L(y_i,h(x_i))=(y_i-h(x_i))^2 ————(3)
其中(1)式容易正负抵消,(2)式中绝对值函数不是连续可导的 ,(3)式是凸函数(极小值就是最小值),在数学上可以保证能求得全局最优解。
于是对于线性回归算法,均方误差(MSE)就成了我们比较常用的损失函数。

\begin{split} J(\theta)=MSE(x,\theta)=\frac1{2m}\sum_{i=1}^m(h(x_i)-y_i)^2\\ =\frac1{2m}\sum_{i=1}^m(\theta_0+\theta_1x-y_i)^2 \end{split}

单变量线性回归

算法

明确策略以后,算法要求也明显了,我们就将一个统计分析问题转变为了求解损失函数最优解的问题, 分别对 \theta_0\theta_1 求偏导,令偏导为0即可得到 w_0w_1 的解析解:

\frac{\partial J(\theta_0,\theta_1)}{\partial \theta_0}=\frac1m\sum_{i=1}^m(\theta_1x_i-y_i)=\theta_0+\frac1m\sum_{i=1}^m(\theta_1x_i-y_i)
\frac{\partial J(\theta_0,w_1)}{\partial \theta_1}=\frac1m\sum_{i=1}^m(\theta_1x_i-y_i)x_i=\frac{\theta_1}{m}\sum_{i=1}^mx_i^2+\frac1m\sum_{i=1}^m(\theta_0-y_i)x_i
分别令 \frac{\partial J(\theta_0,\theta_1)}{\partial \theta_0}=0\frac{\partial J(\theta_0,\theta_1)}{\partial \theta_1}=0
解得:


\theta_0=\frac1m\sum_{i=1}^m(y_i-\theta_1x_1)
w_1=
所以最后将\theta_0\theta_1带回到h(x)中,得到假设函数为:


多变量线性回归

在实际生活中,样本往往具有多项特征,单变量线性回归也很好拓展到多变量线性回归。
对线性模型基本形式 h(x)=\theta_0+\theta_1x_1+\theta_2x_2+\dots+\theta_nx_n 为方便表达,为 h(x) 引入 x_1=1 ,假设函数第一项就变更为了 \theta_0x_0
采用向量形式表示为:
h(x)=\theta^Tx
其中\theta^T为参数 \theta的转置\begin{bmatrix}{\theta_0}& {\theta_1}& {\theta_2}& \dots& {\theta_n} \end{bmatrix}x\begin{bmatrix}{x_0}&{x_1}&{x_2}&\dots&{x_n}\end{bmatrix}

此时多变量的测试集 D={\{((x_i^{(1)},x_i^{(2)},\dots,x_i^{(n)}),y_i)\}}_{i=1}^m 中每个样本分别为

x^{(1)}=(1,x_1^{(1)},x_2^{(1)},\dots,x_n^{(1)})
x^{(2)}=(1,x_1^{(2)},x_2^{(2)},\dots,x_n^{(2)})
x^{(3)}=(1,x_1^{(3)},x_2^{(3)},\dots,x_n^{(3)})
\vdots
x^{(m)}=(1,x_1^{(m)},x_2^{(m)},\dots,x_n^{(m)})

说明:x_i^{(j)} 表示第 j 个样本的第 i 个特征,例如 x_2^{(3)} 就表示第三个样本的第二个特征

简化表述,对每一个有n个特征的样本,有
x^{(j)}=\begin{bmatrix}x_0^{(j)}\\x_1^{(j)}\\\vdots\\x_n^{(j)} \end{bmatrix}

正规方程法

我们构造一个设计矩阵(design matrix) X 用来表示训练集中所有样本的特征集合:
X=\begin{bmatrix}(x^{(1)})^T\\(x^{(2)})^T\\\vdots\\(x^{(m)})^T\end{bmatrix}=\begin{bmatrix}1&x_1^{(1)}&x_2^{(1)}&\dots&x_n^{(1)}\\1&x_1^{(2)}&x_2^{(2)}&\dots&x_n^{(2)}\\\vdots&\vdots&\vdots&\ddots&\vdots\\1&x_1^{(m)}&x_2^{(m)}&\dots&x_n^{(m)}\\\end{bmatrix}

相应的我们将所有测试集的结果也写成向量表示
y=\begin{bmatrix} {y_1}\\ {y_2}\\ \dots\\ {y_m} \end{bmatrix}
在多变量的情况下,损失函数为
\begin{split} J(\theta)=MSE(x,\theta) =\frac1{2m}\sum_{i=1}^m(h(x_i)-y_i)^2\\ =\frac1{2m}\sum_{i=1}^m(\theta^Tx-y_i)^2 \end{split}


<推导过程Unfinished>
按照矩阵的运算规则,将损失函数写为矩阵形式
J(\theta)=\frac{1}{2m}(\theta^t)


最终得到 \theta=(X^TX)^{-1}X^Ty(这里假设 (X^TX)^{-1} 存在),也称为 正规方程法
所以对于给定训练集的多变量线性回归问题,定义好设计矩阵和目标向量(y)后即可通过正规方程直接求解出参数 \theta
但是正规方程法也存在很严重的两个问题:

  • 矩阵 X^TX 需要可逆
  • 算法复杂度为 O(n^3) ,计算逆矩阵的复杂度,以矩阵维度的三次方增长,当特征维度过高(Andrew Ng建议超过10000)不宜再使用正规方程。

所以之后会介绍梯度下降法(Gradient Descent)。此外,对于单变量线性回归不必考虑过拟合的问题,而对于多变量线性回归问题,还需要考虑过拟合的问题,这点也会在后面说明。

正规方程的不可逆性

在使用正规方程法时,矩阵 X^TX 需要可逆,但是很多情况下可逆这个条件并不能满足,我们称那些不可逆矩阵为 奇异或退化矩阵 。对于不可逆时,我们可以使用X^TX 的伪逆来代替计算,或者人为的消除其不可逆的问题。常见的产生不可逆的情况有两种:

  1. 特征选取的问题
    当你在对特征选取时,有些特征能用其它特征表示。例如,在预测住房价格时,如果 x_1 是以英尺为尺寸规格计算的房子, x_2 是以平方米为尺寸规格计算的房子,同时,你也知道1米等于3.28英尺 ( 四舍五入到两位小数 ),这样,你的这两个特征值将始终满足约束:x_1=3.28×x_2 。 这样具有线性关系的两个特征就将导致不可逆的情况发生。对于这种情况就可以舍弃掉部分特征来解决。
  2. 样本过少或者特征过多
    第二种情况是你的样本过少或者说你的特征过多(m=< n ),这样同样会导致不可逆的情况发生。同样的这种时候可以使用删掉部分特征来解决。或者使用 正则化 的线性代数方法,这一点后面会介绍。

多项式回归、欠拟合和过拟合

线性回归并不适合所有的数据,有时我们需要曲线来更加精准的拟合我们的数据。

多项式回归

例如上面的房屋面积,很显然在加上二次方项后,函数图像能更好的拟合数据。更进一步,当房屋面积 size 足够大时,曲线反而出现了向下的趋势,这意味着房价随着房子面积的变大反而遍低了(虽然我相信大家都愿意看到这种情况),很显然不符合实际,那我们考虑再给假设函数加上一个三次方项或者将二次方项替换为开方:

  1. h_{\theta}(x) = \theta_0 + \theta_1×size + \theta_2×size^2 + \theta_3×size^3
  2. h_{\theta}(x) = \theta_0 + \theta_1×size + \theta_2×\sqrt[]{size}

因为三次方项会带来很大的值,所以优先考虑采用了开方的预测函数。

对于以上一次函数和二次函数这种不能很好拟合数据的情况我们称为 欠拟合
由以上的例子可以看出,假设函数过于简单容易出现欠拟合的问题,可以通过添加高维度的多项式解决,


经验风险与结构风险???补充,回去吃饭先


[欠拟合和过拟合的图]

相关文章

网友评论

      本文标题:机器学习笔记E2.0--线性回归

      本文链接:https://www.haomeiwen.com/subject/etffyqtx.html