机器学习光速入门

机器学习光速入门


有监督学习


线性回归 (梯度下降算法)

自学了一阵子的机器学习,也算是小有收获,先从最简单的线性回归开始走起 :)

话说有一天你走在大街上,路过一家房产中介,玻璃窗上标满了各类型房产的价格,你在感叹工作十年都买不起一个厕所的同时也在思考,房子的价格是由哪些因素决定的呢 ? (ps: 房子为什么那么贵呢???) 一般情况下,房子越大,价格越贵,那么可以认为房子的面积算是影响房子价格的一个因素。假设房子的价格仅由房子的面积房间的数量决定,那么房子价格的线性表达式即为:

h θ ( x ) = θ 0 + θ 1 x + θ 2 x

θ 表示各个特征的权重 ,其中 θ 0 表示截距项(常数项) , 当特征数量庞大时,我们可以用以下表达式来简化线性方程:

h θ ( x ) = i = 0 n θ i x i = θ T x

其中 n 代表特征的数量, x 0 = 1 并且右式中 θ x 为向量表达式

至此 , 我们的假设方程已经诞生了!那么问题来了,我们要如何去选择 θ 呢?
为了解决这个问题,我们定义损失函数为:

J ( θ ) = 1 2 i = 1 m ( h θ ( x ( i ) ) y ( i ) ) 2

其中 m 代表 训练样本的数量 x ( i ) 代表第 i 训练样本的特征 y ( i ) 代表第 i 训练样本的目标, 不难看出,损失函数的值越小,假设目标越接近

这时候,我们可以用梯度下降算法来找出能够最小化损失函数 θ

先介绍一下什么是梯度:

梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。                ---- 百度百科

通俗点说,梯度就是表示函数最大变化方向的向量,对于一元函数来说,梯度就是该函数的导数

那么什么是梯度下降呢?梯度下降就是说函数在当前点的超切面上沿着梯度负方向下降速率最快,那么这是为什么呢? 请看以下推导过程:

梯度下降原理推导
也就是说根据下列式子即可得到我们想要的 θ

θ j := θ j α θ j J ( θ )

那么上式中的 θ j J ( θ ) 怎么求呢?

θ j J ( θ ) = θ j 1 2 i = 1 m ( h θ ( x ( i ) ) y ( i ) ) 2

= i = 1 m 1 2 θ j ( h θ ( x ( i ) ) y ( i ) ) 2

= i = 1 m ( h θ ( x ( i ) ) y ( i ) ) 1 2 2 θ j ( j = 0 n θ j x j ( i ) y ( i ) )

= i = 1 m ( h θ ( x ( i ) ) y ( i ) ) x j ( i )

最后我们得到 批量梯度下降算法:

Repeat until convergent{

θ j := θ j α i = 1 m ( h θ ( x ( i ) ) y ( i ) ) x j ( i )

             (for every j)
}

当目标函数是凸函数时,梯度下降法的解是全局解。一般情况下,其解不保证是全局最优解。在这里,
J ( θ ) 是凸函数,所以我们可以获得全局最优解 (假设学习速率 α 足够小)

根据批量梯度下降算法每次权重迭代都需要对整个训练集进行运算 (速度慢!),所以当训练集特别大的时候我们可以考虑选择随机梯度下降算法:

Loop{
            for i=1 to m, {

θ j := θ j α ( h θ ( x ( i ) ) y ( i ) ) x j ( i )

             (for every j)
         }
}
可以看出, 随机梯度下降每次权重迭代仅需要对 单个训练样本进行运算,速度上对比 批量梯度下降要提升不少,虽然通过随机梯度下降不一定能保证 θ 收敛 (在 J ( θ ) 最小值处波动),但是基本上可以获得一个接近最小值的近似值
至此,相信大家对梯度下降算法有了初步的认识,我们下一章见

版权声明:本文为博主原创文章,欢迎大家转载,但是要注明我的文章地址。 https://blog.csdn.net/weixin_41908648/article/details/81813144

猜你喜欢

转载自blog.csdn.net/weixin_41908648/article/details/81813144
今日推荐