NG——线性回归

单变量线性回归

以房价为例:

  • x为输入样本,包含房子的多项信息,如面积,楼层等。此处讨论的为单变量线性回归,则样本中只包含一条信息,假设为面积
  • m表示输入样本的数量
  • h(x)为假设函数,即用来预测房子的价格的函数。根据输入的样本x,预测出房子的价格。最初的假设函数选择简单的一次函数,为 h ( x ) = θ 0 + θ 1 x h(x)=θ_0+θ_1x h(x)=θ0+θ1x
  • y为当前输入的样本x的实际房价
  • x i x^i xi表示第i个样本,这里表示某一房子的面积, y i y^i yi表示其对应的实际房价, h ( x i ) h(x^i) h(xi)为对应的预测的房价

θ 0 , θ 1 θ_0,θ_1 θ0,θ1为参数,我们需要找到合适的 θ 0 , θ 1 θ_0,θ_1 θ0,θ1,使得我们的预测结果更为准确,换言之就是使 h ( x i ) − y i h(x^i)-y^i h(xi)yi的值尽可能的接近0。不难想到,我们需要求出合适的 θ 0 , θ 1 θ_0,θ_1 θ0,θ1,使 1 2 m ∑ 1 m ( h ( x i ) − y i ) 2 \frac1{2m}\sum_1^m(h(x^i)-y^i)^2 2m11m(h(xi)yi)2尽可能小(差的平方和最小)。我们将此称之为代价函数(误差函数),记作J( θ 0 , θ 1 θ_0,θ_1 θ0,θ1)= 1 2 m ∑ i = 1 m ( h ( x i ) − y i ) 2 \frac1{2m}\sum_{i=1}^m(h(x^i)-y^i)^2 2m1i=1m(h(xi)yi)2在这里,我们要求出 θ 0 , θ 1 θ_0,θ_1 θ0,θ1,可以使用梯度下降算法。


梯度下降算法:首先给定 θ 0 , θ 1 θ_0,θ_1 θ0,θ1初始值,一般都取为0。显然,此时的J( θ 0 , θ 1 θ_0,θ_1 θ0,θ1)未取到最小值。因此,改变 θ 0 , θ 1 θ_0,θ_1 θ0,θ1的值,使得J( θ 0 , θ 1 θ_0,θ_1 θ0,θ1)的值不断变化,直到取到最小值或局部最小值。此处,我们直接给出梯度下降算法中θ的更新公式: θ j = θ j − α ∂ J ( θ 0 , θ 1 ) ∂ θ j θ_j=θ_j-α\frac{\partial J(θ_0,θ_1)}{\partial θ_j} θj=θjαθjJ(θ0,θ1)(j=0,1),此处的α称为学习率,这个参数决定了 θ 0 , θ 1 θ_0,θ_1 θ0θ1改变的快慢(这个公式在NG的视频里已经讲得很清楚了,在这边写下来也比较麻烦,就不赘述了)。需要注意的是, θ 0 , θ 1 θ_0,θ_1 θ0,θ1这两个参数在更新时要同步更新,即取临时参数

  • temp0= θ 0 − α ∂ J ( θ 0 , θ 1 ) ∂ θ j θ_0-α\frac{\partial J(θ_0,θ_1)}{\partial θ_j} θ0αθjJ(θ0,θ1)
  • temp1= θ 1 − α ∂ J ( θ 0 , θ 1 ) ∂ θ j θ_1-α\frac{\partial J(θ_0,θ_1)}{\partial θ_j} θ1αθjJ(θ0,θ1)
  • θ 0 = t e m p 0 θ_0=temp0 θ0=temp0
  • θ 1 = t e m p 1 θ_1=temp1 θ1=temp1

将J( θ 0 , θ 1 θ_0,θ_1 θ0,θ1)= 1 2 m ∑ i = 1 m ( h ( x i ) − y i ) 2 \frac1{2m}\sum_{i=1}^m(h(x^i)-y^i)^2 2m1i=1m(h(xi)yi)2 h ( x i ) = θ 0 + θ 1 x i h(x_i)=θ_0+θ_1x_i h(xi)=θ0+θ1xi带入上式,求出偏导数,则

  • θ 0 = θ 0 θ_0=θ_0 θ0=θ0 1 m ∑ i = 1 m ( θ 0 + θ 1 x i − y i ) ∗ x 0 ( x 0 = 1 ) \frac1m\sum_{i=1}^m(θ_0+θ_1x_i-y^i)*x_0(x_0=1) m1i=1m(θ0+θ1xiyi)x0(x0=1)
  • θ 1 = θ 1 θ_1=θ_1 θ1=θ1 1 m ∑ i = 1 m ( θ 0 + θ 1 x i − y i ) ∗ x i \frac1m\sum_{i=1}^m(θ_0+θ_1x_i-y^i)*x_i m1i=1m(θ0+θ1xiyi)xi


多元线性回归

类似的,以房价为例:

面积 卧室 楼层 房屋年龄 价格
100 2 8 20 150
120 2 14 30 200
200 3 24 25 400
  • x为输入样本,包含房子的多项信息,如面积,楼层等,此处讨论的为多变量线性回归
  • n表示的是x中房子信息的数目,即表示特征量的数目,此处n=4
  • m表示输入样本的数量
  • h(x)为假设函数,即用来预测房子的价格的函数。根据输入的样本x,预测出房子的价格。此处的假设函数应设为 h ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 + . . . + θ n x n h(x)=θ_0+θ_1x_1+θ_2x_2+θ_3x_3+...+θ_nx_n h(x)=θ0+θ1x1+θ2x2+θ3x3+...+θnxn
  • y为当前输入的样本x的实际房价
  • x ( i ) x^{(i)} x(i)表示第i个样本,此处为一个列向量,如 x ( 2 ) x^{(2)} x(2)=
    (4) [ 120 2 14 30 ] \begin{bmatrix} 120 \\ 2 \\ 14\\ 30 \end{bmatrix} \tag{4} 12021430(4)
    x j ( i ) x^{(i)}_j xj(i)表示第i个样本的第j个特征值,如 x 3 ( 2 ) x^{(2)}_3 x3(2)=14; y i y^i yi表示其对应的实际房价, h ( x i ) h(x^i) h(xi)为对应的预测的房价

为了方便表达,对于 h ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 + . . . + θ n x n h(x)=θ_0+θ_1x_1+θ_2x_2+θ_3x_3+...+θ_nx_n h(x)=θ0+θ1x1+θ2x2+θ3x3+...+θnxn,我们可认为还存在 x 0 x_0 x0=1,则 h ( x ) = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 + . . . + θ n x n h(x)=θ_0x_0+θ_1x_1+θ_2x_2+θ_3x_3+...+θ_nx_n h(x)=θ0x0+θ1x1+θ2x2+θ3x3+...+θnxn,因此, x 0 ( i ) x^{(i)}_0 x0(i)=1,即对于任意样本中, x 0 x_0 x0都为1。此时,
取X= (4) [ x 0 x 1 x 2 . . . x n ] \begin{bmatrix} x_0 \\ x_1 \\ x_2\\ .\\ .\\ .\\ x_n \end{bmatrix} \tag{4} x0x1x2...xn(4)
取θ= (4) [ θ 0 θ 1 θ 2 . . . θ n ] \begin{bmatrix} θ_0 \\ θ_1 \\ θ_2\\ .\\ .\\ .\\ θ_n \end{bmatrix} \tag{4} θ0θ1θ2...θn(4)
则h(x)= θ T X θ^TX θTX


类似的,我们可以得出h(x)= θ T X = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 + . . . + θ n x n θ^TX=θ_0x_0+θ_1x_1+θ_2x_2+θ_3x_3+...+θ_nx_n θTX=θ0x0+θ1x1+θ2x2+θ3x3+...+θnxn,代价函数J(θ)= J ( θ 0 , θ 1 . . . θ n ) J(θ_0,θ_1...θ_n) J(θ0,θ1...θn)= 1 2 m ∑ i = 1 m ( h ( x i ) − y i ) 2 \frac1{2m}\sum_{i=1}^m(h(x^i)-y^i)^2 2m1i=1m(h(xi)yi)2 θ的更新公式为 θ j = θ j − α ∂ J ( θ ) ∂ θ j = θ j − α θ_j=θ_j-α\frac{\partial J(θ)}{\partial θ_j}=θ_j-α θj=θjαθjJ(θ)=θjα 1 m ( h θ ( x i ) − y i ) ∗ x j ( i ) \frac1m(h_θ(x^i)-y^i)*x^{(i)}_j m1(hθ(xi)yi)xj(i)(同步更新)。



特征缩放

在处理不同的、大量的数据时,这些数据的范围可以大不相同。为了使梯度下降的过程更快速并使预测结果尽可能准确,我们可以通过对特征值进行特征缩放(归一化),将特征值都映射到某一小区间内,如[-1,1]。例如: x 1 x_1 x1的范围是0~1000,则对 x 1 x_1 x1的缩放可以作如下处理: x 1 x_1 x1= x 1 − μ 1 m a x − m i n \frac{x_1-μ_1}{max-min} maxminx1μ1(其中 μ 1 μ_1 μ1为样本x的均值,max和min分别为样本的最大值和最小值)。


多项式回归

对于实际中的某些数据集,其实直线并不能很好的拟合这些数据。此时,这根据具体情况选择合适的模型,例如二次函数,三次函数等等。常见的处理模型: h ( x ) = θ 0 + θ 1 x h(x)=θ_0+θ_1x h(x)=θ0+θ1x h ( x ) = θ 0 + θ 1 x + θ 2 x 2 h(x)=θ_0+θ_1x+θ_2x^2 h(x)=θ0+θ1x+θ2x2 h ( x ) = θ 0 + θ 1 x + θ 2 x 2 + θ 3 x 3 h(x)=θ_0+θ_1x+θ_2x^2+θ_3x^3 h(x)=θ0+θ1x+θ2x2+θ3x3 h ( x ) = θ 0 + θ 1 x + θ 2 x h(x)=θ_0+θ_1x+θ_2\sqrt{x} h(x)=θ0+θ1x+θ2x 。在实际应用中,我们需要从合适的角度寻找特征,找到更符合数据的模型。


正规方程

在上面讲述的线性回归中,我们需要通过梯度下降,不断迭代,求出θ的值,使得代价函数J(θ)最小。在这里,我们介绍一种更简单的方法来求得θ。
首先,我们需构建一个矩阵X,称之为设计矩阵(包含了样本的所有特征值)。X= (4) [ ( x ( 1 ) ) T ( x ( 2 ) ) T . . . ( x ( m ) ) T ] \begin{bmatrix} (x^{(1)}) ^T \\ (x^{(2)}) ^T \\ .\\ .\\ .\\ (x^{(m)}) ^T \end{bmatrix} \tag{4} (x(1))T(x(2))T...(x(m))T(4)
X为m*(n+1)维矩阵。
另y= (4) [ y 0 y 1 . . . y n ] \begin{bmatrix} y^0 \\ y^1 \\ .\\ .\\ .\\ y^n \end{bmatrix} \tag{4} y0y1...yn(4)
举个具体的例子,当前数据集如下表(共有4个输入)

面积 卧室 楼层 房屋年龄 价格
100 2 8 20 150
120 2 14 30 200
200 3 24 25 400
150 2 5 12 300

为每一个样本添加 x 0 ( i ) = 1 x^{(i)}_0=1 x0(i)=1

x 0 x_0 x0 面积 卧室 楼层 房屋年龄 价格
1 100 2 8 20 150
1 120 2 14 30 200
1 200 3 24 25 400
1 150 2 5 12 300

则设计矩阵X= [ 1 , 100 , 2 , 8 , 20 1 , 120 , 2 , 14 , 30 1 , 200 , 3 , 24 , 25 1 , 150 , 2 , 5 , 12 ] \begin{bmatrix} 1,100,2,8,20\\ 1,120,2,14,30\\ 1,200,3,24,25\\ 1,150,2,5,12 \end{bmatrix} 1100282011202143012003242511502512
y= (4) [ 150 200 400 300 ] \begin{bmatrix} 150 \\ 200 \\ 400\\ 300 \end{bmatrix} \tag{4} 150200400300(4)
则θ= ( X T X ) − 1 X T y (X^TX)^{-1}X^Ty (XTX)1XTy(尚未推导),通过此公式求出的θ可使得代价函数J(θ)最小化。而且,在用正规方程时,无需对数据集进行特征缩放。


比较

对于线性回归这一特定模型,我们可以使用梯度下降法或正规方程。下面将对两者有一个简单的比较。

  • 梯度下降
    需要尝试不同的学习率α
    需要进行多次迭代
  • 正规方程
    当特征值n较大时,计算 ( X T X ) − 1 (X^TX)^{-1} (XTX)1时量级很大。

一般来说,当n<10000时,可选择正规方程;当n>10000时,选择梯度下降法。

你可能感兴趣的:(NG——线性回归)