一元线性回归模型
“一元”就是指单个特征。
通过预测房价的问题作为例子。
将训练集中的数据用图像的形式表现出来,然后寻找一条与数据点最拟合的曲线。为了方便理解最基本的概念,假设这条曲线的函数是 hθ(x)=θ0+θ1x (一元线性回归模型)。这个函数被称为 hypothesis
。函数中 x 是房子的大小,hθ(x) 则是对应的房价。既然这个问题是个线性回归的问题,那么我们就能得到一个 cost function
:
J(θ0,θ1)=2m1i=1∑m(hθ(x(i))−y(i))2
cost function 又称为 square error function
。这个函数反映了垂直方向上假设函数上的点与数据点之间的距离的总和。
这个 cost function 的图像大致如下:
我们的目标是使这个函数的最小值,只要找到这个函数的最小值,就是找到了最优的参数 θ0 与 θ1 。怎么找?这就需要用到梯度下降算法。梯度下降算法有很多种,这里用到的是 Batch 梯度下降算法,这个梯度下降算法的特点是每次梯度下降都会遍历整个训练集,从 cost function 中的累加符号 ∑ 就可以看出这一点。Batch 梯度下降算法如下所示:
repeat until convergence{θj:=θj−α∂θj∂J(θ0,θ1)( for j=0 and j=1)}
在实际编码的时候要注意:
现在我们已经有了线性回归问题的模型以及梯度下降算法,
整理到一起就得到了:
这样,刚开始的时候随便给出一对 θ0 和 θ1 的值,就可以让梯度下降算法运作起来,它会自动的帮我们找到最优的那一对 θ0 和 θ1 。
多元线性回归模型
“多元”指的是多个特征
对于房价问题,可以多选几个特征,如:
对于该问题,可以采用下面的
hypothesis(多元线性回归模型):
hθ(x)=θ0x0+θ1x1+θ2x2+⋯+θnxn(为了方便起见新增一个特征x0,并令x0=1)
上式可简写成 hθ(x)=θTx ,
其中 x=[x0 x1 x2 ⋯ xn]T∈Rn+1,θ=[θ0 θ1 θ2 ⋯ θn]T∈Rn+1
cost function:
J(θ0,θ1,⋯,θn)=2m1i=1∑m(hθ(x(i))−y(i))2
也可写作:
J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2 ,其中 θ 为参数向量。
(多元)梯度下降算法:这也是最一般的梯度下降算法
repeat {
θj:=θj−α∂θj∂J(θ)( simultaneously update for every j=0,⋯,n)
}
将上述式子整理到一起后,有:
由此,只要在一开始随机指定所有参数 θj(j=0,⋯,n) ,梯度下降算法就会自动地为我们找到最优的参数 θj 。
对于回归问题,除了可以采用线性回归模型以外,还可以采用多项式回归模型
。对于一个二维平面来说,线性回归模型是一条直线,多项式回归模型,则可以是一条曲线,如 y=θ0+θ1x+θ2x2+θ3x3。而对于线性回归模型,当把模型的图像映射到一个平面中时,会发现仍为直线,也就是说线性回归模型的图像都是直的,不会有曲的,这也是“线性”这个词的意思。
对于特征的选择:
不一定要使用已给出的特征,比如房子的临街宽度 x1 和纵深 x2,你完全可以将这两个特征结合起来当作一个特征使用,比如使用它们的乘积(也就是面积)作为特征。
多元梯度下降算法的一些实用技巧
1. 特征缩放 Feature Scaling
将所有特征控制在相似的范围内,梯度下降算法可以收敛地更快。
比如对于预测房价的问题,有两个特征:
x1=size(0−2000feet2)
x2=number of bedrooms(1−5)
如果将 x1 的范围缩小为原来的 20001 倍,x2 的范围缩小为原来的 51 倍,梯度下降算法就可以收敛地更快。
对于范围的选择,可以是 (−1,1) 或者与之相近的范围,如 (−3,3) ,但 (−100,100) 这个范围就太大了。
Mean Normalization 均值归一化
#TODO
2. 确定梯度下降算法在正常运作的方法以及学习率的选择
#TODO
Normal Equation
梯度下降算法能够解决的问题也可以通过 normal equation
来解决。与梯度下降算法相比,normal equation 可以一次性就将最优的参数组合计算出来。
但 normal equation 也存在一些缺点,其中一点就是当训练集的样本数量很庞大时,normal equation 的表现可能就没有梯度下降算法那么好。
梯度下降算法与normal equation 的优缺点对比
Gradient Descent |
Normal Equation |
Need to choose α
|
No need to choose α
|
Need many iterations |
Don’t need to iterate |
Works well even when n is large |
需要计算 (XTX)−1, 因此当样本数量 n 很大时会运行得很慢。 |
normal equation 的具体细节如下:
公式:θ=(XTX)−1XTy