本文已参与「新人创作礼」活动,一起开启掘金创作之路
文章为博主学习Coursera上的Machine Learning课程的笔记,来记录自己的学习过程,欢迎大家一起学习交流 个人博客连接: JMX的个人博客
02:Linear Regression
仍然以房价预测作为示例,具体示例仍需见课程内容。 符号含义:
- m 为数据集的大小
- x's为输入数据
- y's为对应的目标输出结果
- (x,y)为所有训练数据
- (xi, yi)为具体第i行数据,第i个训练数据
假设函数h(x),以一元线性回归为例:
Linear regression - implementation(损失函数cost function)
计算由不同θ 取值带来的不同损失函数值,本质上是一个最小化问题:使下式取值最小 即可以看成下述式子:
这个损失函数是均方误差,适用于多类回归问题,当然也可以有其他的损失函数。
梯度下降算法(Gradient descent algorithm)
目的: 使损失函数J最小
工作方式
- 从随机初始化开始
- 对θ 随机赋值,可以为任何值
- 每次一点点改变θ,使J(θ)减小
- 每次沿着梯度下降最大的方向
- 重复上述操作直到达到局部最小值
- 从哪里开始的可能决定你到达哪个局部最优解
一个更正规的定义: 做下述操作直到收敛:
符号解释:
- := 表示赋值 NB a = b 是一个正确的断言
- α (alpha)
学习率,控制参数更新的步长
- 如果学习率过大,可能无法得到最优解,误差会增大
- 如果学习率过小,那么达到最优解需要非常多步,耗费很长时间
注: 参数的更新必须同步即需要一个中间变量保存之前的值,原因是二者的式子中包含了对方,一方的更新会导致第二方式子内值的变化。
当我们达到局部最优解时:
- 后面部分的梯度为0
- 各参数值就保持不变了
使用梯度下降的线性回归算法
- 将梯度下降算法应用到最小化损失函数J(θ)上
按照求导公式可以推出:
注:因为线性回归是一个凸函数,是一个碗形的图,所以会趋于局部最优解
- 现在的这种梯度下降算法又叫Batch Gradient Descent 原因是每一次都遍历了整个数据集,后面会提到取数据集中的部分进行的Gradient Descent
- 线性回归也有正规方程求解,但其中矩阵运算当数据集过大时不宜使用,这时就可以使用梯度下降
数值求解的正规方程法
- 直接通过数值求解来避免繁琐的迭代过程,从数学上求解出min(J(θ)) 正规方程的优缺点: 优点: 1.不需要学习率这个参数 2.对某些问题可以很快的解决 缺点: 会很复杂
面对数据量很大的时候
这个时候就需要将数据向量化利用线性代数中矩阵运算来完成计算