`

机器学习算法 ---- 梯度下降法

 
阅读更多


机器学习在当今社会应用越来越广泛,如计算机视觉、机器人控制、无人机无人车技术等等,都离不开机器学习算法。而机器学习并不像学习一门语言那样简单,算法的实质是数学,有了数学的推导结果,运用什么样的语言那就因人因事而异了。

要学好机器学习,要有一定的数学功底以及能潜下心来做一些数学上的研究,而不是打开电脑就敲代码,。当然,学习的最终目的是应用,我期待能将学习到的东西运用到生活中的点点滴滴!

首先应该确立一个机器学习的体系:

机器学习包括一下四个分支(参考斯坦福大学Andrew Ng教授):

                                (1)监督学习

                                (2)非监督学习

                                (3)学习理论

                                (4)强化学习

这篇博客将介绍我所了解的监督学习内容。

 

1.什么是监督学习

简单通俗点来说就是我们通过样本数据得到了一组标准数据,输入能从这组标准答案中找到对应的输出!如果还不能理解我们来看Andrew Ng教授的一个例子:

                                 房屋面积与价格关系
                

由一组样本数据得到一条拟合的曲线,然后通过这条曲线找你所提供的房屋面积所对应的房屋价钱是多少!这条曲线就是得到的一个标准答案!!!!
 

2.学习步骤
             

3.变量声明

m:训练样本

n:特征数

X:输入变量(特征)

Y输出变量(目标变量)

xiyi):第i个训练样本

Htheta):拟合函数

J(theta):损失函数

alph:步长

 

4.监督学习之梯度下降算法

(1)批量梯度算法

假设:对象有n个特征,分别是x1、x2、···、xn

假设(当然也可以假设其他形式)拟合函数形式为:

                                   

为了使预测更为准确,损失函数定义为:          

           系数0.5是为了计算方便

           注意:这里的未知参数是theta,xi为已知的样本数据

我们对J(theta)求偏导(梯度计算要求我们这么干):

                                 

从而得到参数theta的

          

其中,alph的选取很重要。选择大了则可能跳过最值点;选择小了则可能使运行效率变低!

 

 

(2)随机梯度下降算法

批量梯度下降算法虽然能找到取最值时的参数,但是每一次迭代都需要使用到所有的样本,这样的代价就是花费大量的时间!这个大量一定是惊人的,特别是在大样本时。所以这里提出随机梯度下降算法!

和批量梯度下降算法唯一的区别是,每次只使用一次样本,即第i次迭代使用第i个样本数据

 

             

 

编程可参照博客http://blog.csdn.net/pennyliang/article/details/6998517,程序非常简单易懂,这里就不再重写了。

  • 大小: 22.7 KB
  • 大小: 86.2 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics