机器学习——线性回归
1.代价函数(cost function)1.1 代价函数图像上图两个坐标表示参数θ0\theta_0θ0和θ1\theta_1θ1,它们是动态变化的。通常使用contour figure(等高线线)来描述上面的3D图像:在右图的等高线中,每个圆圈上面的点的值是一致的。当前红色点处于参数$\theta_0 = 800, \theta_1 = -0.15$对应于左图的直线,但这时候的...
文章目录
1.代价函数(cost function)
1.1 代价函数图像
上图两个坐标表示参数 θ 0 \theta_0 θ0和 θ 1 \theta_1 θ1,它们是动态变化的。
通常使用contour figure(等高线线)来描述上面的3D图像:
在右图的等高线中,每个圆圈上面的点的值是一致的。当前红色点处于参数 θ 0 = 800 , θ 1 = − 0.15 \theta_0 = 800, \theta_1 = -0.15 θ0=800,θ1=−0.15对应于左图的直线,但这时候的直线没有很好拟合数据。
2.gradient descent(梯度下降)
- 微积分:calculus
- 导数:derivatives
- 收敛:converge
- 不收敛:diverge
梯度下降更新公式:
θ j : = θ j − α ∂ J ( θ 0 , θ 1 ) ∂ θ j , ( f o r j = 0 a n d = 1 ) \theta_j := \theta_j-\alpha \frac{\partial J(\theta_0, \theta_1)}{\partial \theta_j}, (for ~ j = 0~and~= 1) θj:=θj−α∂θj∂J(θ0,θ1),(for j=0 and =1)
上面两个参数需要同步更新,也就是说在一次迭代中,这两个参数是同时更新的。假设首先需要更新参数 θ 1 \theta_1 θ1,其cost function为:
θ 1 : = θ 1 − α ∂ J ( θ 1 ) ∂ θ 1 ( 2 − 1 ) \theta_1 := \theta_1-\alpha \frac{\partial J(\theta_1)}{\partial \theta_1}~~~~~(2-1) θ1:=θ1−α∂θ1∂J(θ1) (2−1)
同时其cost function的函数图像为:
2.1 正导数:positive derivative
当利用公式(2-1)可以求得导数为positive number,则 θ 1 \theta_1 θ1会偏向于向最小值移动。
2.2 负导数:negative derivatvie
同样的,求得的导数会出现negative number,则使得更新之后的 θ 1 \theta_1 θ1也会偏向于最小值。
2.3 线性回归的梯度下降(gradient descent of linear regression )
在线性回归中,通常使用square error(平方误差)来计算代价函数:
h θ ( x ( i ) ) = θ 0 + θ 1 x ( i ) h_{\theta}(x^{(i)}) = \theta_0 + \theta_1 x^{(i)} hθ(x(i))=θ0+θ1x(i)
J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 ( 2 − 2 ) J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} (h_{\theta}(x^{(i)}) - y^{(i)})^2 ~~~~~(2-2) J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2 (2−2)
公式中 y ( i ) y^{(i)} y(i)代表真实样本的值, h θ j ( x ( i ) ) h_{\theta_j}(x^{(i)}) hθj(x(i))则代表线性回归模型的预测值。 m m m为data set中的样本数。
- 为什么要在分子上加上2呢?这是因为在求解partial derivative(偏导数)中可以化简出比较简便的形式。
最后可以分别求得两个参数的partial derivative:
j = 0 : ∂ ∂ θ 0 J ( θ ) = ∂ ∂ θ 0 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) j=0:\frac{\partial}{\partial \theta_0} J(\theta) = \frac{\partial}{\partial \theta_0} \frac{1}{2m} \sum_{i=1}^{m} (h_{\theta}(x^{(i)}) - y^{(i)})^2 = \frac{1}{m} \sum_{i=1}^{m} (h_{\theta}(x^{(i)}) - y^{(i)}) j=0:∂θ0∂J(θ)=∂θ0∂2m1i=1∑m(hθ(x(i))−y(i))2=m1i=1∑m(hθ(x(i))−y(i))
j = 1 : ∂ ∂ θ 1 J ( θ ) = ∂ ∂ θ 1 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ∗ x ( i ) j=1:\frac{\partial}{\partial \theta_1} J(\theta) = \frac{\partial}{\partial \theta_1} \frac{1}{2m} \sum_{i=1}^{m} (h_{\theta}(x^{(i)}) - y^{(i)})^2 = \frac{1}{m} \sum_{i=1}^{m} (h_{\theta}(x^{(i)}) - y^{(i)}) * x^{(i)} j=1:∂θ1∂J(θ)=∂θ1∂2m1i=1∑m(hθ(x(i))−y(i))2=m1i=1∑m(hθ(x(i))−y(i))∗x(i)
- Batch:每完成一次梯度更新,则默认为完成了一个batch。在batch里面,梯度更新会计算所有的 m m m个样本。
3.矩阵的介绍
- 单位(identity)矩阵: I I I(对角矩阵都为1)
- 转置矩阵
- 矩阵的逆(matrix inverse):
A A − 1 = A − 1 A = I AA^{-1} = A^{-1}A = I AA−1=A−1A=I
其中矩阵 A A A的维度为 m × m m \times m m×m,它必定是一个方阵。如果一个矩阵没有逆矩阵,则称为奇异矩阵(Singular matrix),元素为0的矩阵就是一个奇异矩阵。
4.多元线性回归和其梯度下降
4.1 多元线性回归
之间已经简要叙述过简单的线性回归模型,其公式为:
h θ ( x ( i ) ) = θ 0 + θ 1 x ( i ) h_{\theta}(x^{(i)}) = \theta_0 + \theta_1 x^{(i)} hθ(x(i))=θ0+θ1x(i)
为了引出多元线性回归模型,引入一个预测房价的问题,其具体的特征如下:
在上面的房价预测问题中,共有4个特征:size,房间数量,楼层,使用年限,需要预测的是:价格。
- n n n:共有n个特征
- x ( i ) x^{(i)} x(i):表示在数据集中的第 i i i个样本
- x j ( i ) x^{(i)}_j xj(i):表示在第 i i i个样本中,第 j j j个特征。
最后可以列出多元线性回归模型:
h θ ( x ) = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n = θ T x h_{\theta}(x) = \theta_0 x_0 + \theta_1 x_1 + \theta_2 x_2 + \dots + \theta_n x_n \\ = \theta^{T}x hθ(x)=θ0x0+θ1x1+θ2x2+⋯+θnxn=θTx
其中, θ \theta θ和 x x x都为一维向量,同时 x 0 = 1 x_0=1 x0=1。
4.2 多元线性回归的梯度下降
在2.3节中已经简单介绍了线性回归的梯度下降,那么多元线性回归的梯度下降也是一样的,在一次迭代的过程当中,需要更新所有的参数 θ \theta θ:
θ j = θ j − α ∂ ∂ θ j J ( θ 0 , . . . , θ n ) \theta_j = \theta_j - \alpha \frac{\partial}{\partial \theta_j} J(\theta_0,...,\theta_n) θj=θj−α∂θj∂J(θ0,...,θn)
具体的,上述公式中的偏导数可以化简为:
θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x j ( i ) ) − y ( i ) ) x j ( i ) \theta_j := \theta_j - \alpha \frac{1}{m} \sum^{m}_{i=1} (h_{\theta}(x^{(i)}_j) - y^{(i)}) x^{(i)}_j θj:=θj−αm1i=1∑m(hθ(xj(i))−y(i))xj(i)
4.3 多元线性回归的梯度下降——特征缩放
在原始的算法当中,不同特征之间的取值范围不同,会造成gradient descent时收敛过慢。例如,假设存在两个特征:房子的面积和房子的年龄。房子面积 x 1 x_1 x1的取值范围在**(1-2000),而房子年龄 x 2 x_2 x2的取值范围为(1-10)**。这两个特征对应的参数为: θ 1 , θ 2 \theta_1,\theta_2 θ1,θ2。它们的代价函数contour图像如下:
可以看出 θ 1 \theta_1 θ1的取值范围会比 θ 2 \theta_2 θ2要小,这是因为只要改变一点点的 θ 1 \theta_1 θ1,则代价函数 J ( θ ) J(\theta) J(θ)会影响比较大,所以它的取值会比较小。
这时候如果利用梯度下降算法,它会收敛速度比较慢。而如果把这两个特征进行缩放,缩放到0-1之间,这时候图像会变成:
此时收敛速度加快,能够更快找到全局最优点。缩放特征有两种比较常见的方法:
-
最大最小归一化:
x ( i ) = x ( i ) − m i n m a x − m i n x^{(i)} = \frac{x^{(i)}- min}{max-min} x(i)=max−minx(i)−min
首先找出该特征所有值的最大值和最小值,然后按照公式对每个特征值进行缩放。 -
Z-score标准化:
x ( i ) = x ( i ) − μ σ x^{(i)} = \frac{x^{(i)}- \mu}{\sigma} x(i)=σx(i)−μ
其中 μ \mu μ为均值, σ \sigma σ为方差
4.4 多项式回归
有些数据不能简单用多元线性回归来进行拟合,这时候可以利用多项式回归来进行拟合。
具体的,polynomial regression可以拟合下图:
可以用下面公式表示
θ 0 + θ 1 x + θ 2 x 2 + θ 3 x 3 \theta_0 + \theta_1x + \theta_2 x^2 + \theta_3 x^3 θ0+θ1x+θ2x2+θ3x3
也即是说可以用cubic model(三次模型)来拟合曲线,同时作为多项式回归方程。
更多推荐
所有评论(0)