Coursera Machine Learning 学习笔记(二)Linear Regression

文章为博主学习Coursera上的Machine Learning课程的笔记,来记录自己的学习过程,欢迎大家一起学习交流
个人博客连接: JMX的个人博客

02:Linear Regression

仍然以房价预测作为示例,具体示例仍需见课程内容。
符号含义:

  1. m 为数据集的大小
  2. x’s为输入数据
  3. y’s为对应的目标输出结果
  4. (x,y)为所有训练数据
  5. (xi, yi)为具体第i行数据,第i个训练数据

假设函数h(x),以一元线性回归为例:
假设函数
θ 0 : 截 距 θ 1 : 梯 度 \theta_0:截距 \theta_1:梯度 θ0θ1

Linear regression - implementation(损失函数cost function)

计算由不同θ 取值带来的不同损失函数值,本质上是一个最小化问题:使下式取值最小
M i n i m i z e : ( h θ ( x ) − y ) 2 Minimize :(h_\theta(x)-y)^2 Minimize(hθ(x)y)2
即可以看成下述式子:
J ( θ 0 , θ 1 ) = 1 2 m ∑ 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta_0,\theta_1) = \frac 1 {2m}\sum_1^m(h_\theta(x^{(i)})-y^{(i)})^2 J(θ0,θ1)=2m11m(hθ(x(i))y(i))2

1 m 是 求 平 均 1 2 m 是 为 了 数 学 计 算 方 便 \frac1 m 是求平均\frac1 {2m}是为了数学计算方便 m12m1便
这个损失函数是均方误差,适用于多类回归问题,当然也可以有其他的损失函数。

梯度下降算法(Gradient descent algorithm)

目的: 使损失函数J最小

工作方式
  • 从随机初始化开始
  1. 对θ 随机赋值,可以为任何值
  2. 每次一点点改变θ,使J(θ)减小
  • 每次沿着梯度下降最大的方向
  • 重复上述操作直到达到局部最小值
  • 从哪里开始的可能决定你到达哪个局部最优解
    Coursera Machine Learning 学习笔记(二)Linear Regression_第1张图片
    一个更正规的定义:
    做下述操作直到收敛:
    参数更新
    符号解释:
  1. :=
    表示赋值
    NB a = b 是一个正确的断言
  2. α (alpha)
    学习率,控制参数更新的步长
    1. 如果学习率过大,可能无法得到最优解,误差会增大
    2. 如果学习率过小,那么达到最优解需要非常多步,耗费很长时间

注: 参数的更新必须同步即需要一个中间变量保存之前的值,原因是二者的式子中包含了对方,一方的更新会导致第二方式子内值的变化。
Coursera Machine Learning 学习笔记(二)Linear Regression_第2张图片
当我们达到局部最优解时:

  1. 后面部分的梯度为0
  2. 各参数值就保持不变了
使用梯度下降的线性回归算法
  • 将梯度下降算法应用到最小化损失函数J(θ)上

∂ ∂ θ j = 1 2 m ∑ 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 = ∂ ∂ θ j 1 2 m ∑ 1 m ( θ 0 + θ 1 x ( i ) − y ( i ) ) 2 \frac{\partial} {\partial\theta_j}=\frac 1 {2m}\sum_1^m(h_\theta(x^{(i)})-y^{(i)})^2=\frac{\partial} {\partial\theta_j}\frac 1 {2m}\sum_1^m(\theta_0+\theta_1x^{(i)}-y^{(i)})^2 θj=2m11m(hθ(x(i))y(i))2=θj2m11m(θ0+θ1x(i)y(i))2
按照求导公式可以推出:
j = 0 : ∂ ∂ θ 0 J ( θ 0 , θ 1 ) = 1 m ∑ 1 m ( h θ ( x ( i ) ) − y ( i ) ) j=0:\frac{\partial} {\partial\theta_0}J(\theta_0,\theta_1)=\frac1 m\sum_1^m(h_\theta(x^{(i)})-y^{(i)}) j=0:θ0J(θ0,θ1)=m11m(hθ(x(i))y(i))
j = 1 : ∂ ∂ θ 1 J ( θ 0 , θ 1 ) = 1 m ∑ 1 m ( h θ ( x ( i ) ) − y ( i ) ) ∗ x ( i ) j=1:\frac{\partial} {\partial\theta_1}J(\theta_0,\theta_1)=\frac1 m\sum_1^m(h_\theta(x^{(i)})-y^{(i)})*x^{(i)} j=1:θ1J(θ0,θ1)=m11m(hθ(x(i))y(i))x(i)

注:因为线性回归是一个凸函数,是一个碗形的图,所以会趋于局部最优解

  • 现在的这种梯度下降算法又叫Batch Gradient Descent 原因是每一次都遍历了整个数据集,后面会提到取数据集中的部分进行的Gradient Descent
  • 线性回归也有正规方程求解,但其中矩阵运算当数据集过大时不宜使用,这时就可以使用梯度下降
数值求解的正规方程法
  • 直接通过数值求解来避免繁琐的迭代过程,从数学上求解出min(J(θ))
    正规方程的优缺点:
    优点:
    1.不需要学习率这个参数
    2.对某些问题可以很快的解决
    缺点:
    会很复杂
面对数据量很大的时候

这个时候就需要将数据向量化利用线性代数中矩阵运算来完成计算

你可能感兴趣的:(Coursera Machine Learning 学习笔记(二)Linear Regression)