机器学习在当今社会应用越来越广泛,如计算机视觉、机器人控制、无人机无人车技术等等,都离不开机器学习算法。而机器学习并不像学习一门语言那样简单,算法的实质是数学,有了数学的推导结果,运用什么样的语言那就因人因事而异了。
要学好机器学习,要有一定的数学功底以及能潜下心来做一些数学上的研究,而不是打开电脑就敲代码,。当然,学习的最终目的是应用,我期待能将学习到的东西运用到生活中的点点滴滴!
首先应该确立一个机器学习的体系:
机器学习包括一下四个分支(参考斯坦福大学Andrew Ng教授):
(1)监督学习
(2)非监督学习
(3)学习理论
(4)强化学习
这篇博客将介绍我所了解的监督学习内容。
1.什么是监督学习
简单通俗点来说就是我们通过样本数据得到了一组标准数据,输入能从这组标准答案中找到对应的输出!如果还不能理解我们来看Andrew Ng教授的一个例子:
房屋面积与价格关系
由一组样本数据得到一条拟合的曲线,然后通过这条曲线找你所提供的房屋面积所对应的房屋价钱是多少!这条曲线就是得到的一个标准答案!!!!
2.学习步骤
3.变量声明
m:训练样本
n:特征数
X:输入变量(特征)
Y:输出变量(目标变量)
(xi,yi):第i个训练样本
H(theta):拟合函数
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,程序非常简单易懂,这里就不再重写了。