首页 > 代码库 > 机器学习第一课
机器学习第一课
由于最近在学习standford大学 Andrew Ng 大牛的机器学习视频,所以想对所学的方法做一个总结,后面所要讲到的算法主要是视频里面学到的机器学习领域常用的算法。在文中我们所要学的的算法主要有Linear Regression(线性回归),gradient descent(梯度下降法),normal equations(正规方程组),Locally weighted linear regression(局部加权线性回归)。由于开始研究mechine learning 的知识,所以之前的JAVA和C++,ACM学习暂时告一段落,同时由于方便以后写论文的需要,文中的一些专业术语会使用英文。希望和大家多多学习,交流,祝大家“国庆节快乐~”
我们来学习线性回归。在高中的时候我们都已经接触到了Linear Regression的思想。(如下图所示)
给定一系列的点,需要我们拟合一条直线对所有点的位置进行一个预测,这种模型就称之为Linear Regression,所拟合出的直线是连续的直线。如果我们没给出一个input对应的直线上面都会给出一个output。好接下来我们的问题就来了,给我们一组数据我们怎样才能准确的拟合出这一条直线呢。最常用的方法有两个:1.gradient descent和2.rmal equations,其实这两种方法蕴含的思想是一样的,只不过normal equations是gradient descent在某些特殊情况下推导出来的一个我们直接可以用的方程组,下面我们会具体讨论。
来我们来讨论其数学模型,假定我们有一个input(x1, x2)代表两种特征。给定θ(θ1,θ2)对应的是每种特征的权值, 是我们的预测output,即:
定义cost function(损失函数)为:
式中我们可以看到, 是一个二次函数,而梯度下降法正是一种对二次函数进行迭代从而求minimum value的方法。下面我们来讲怎么用gradient descent求解cost function 的minimum value,我们给出下式:
其中 是每次迭代更新后的参数向量, 是学习率(每次迭代的步长), 指cost function对参数求偏导,由高数知识可知,偏导对应的就是梯度方向,也就是参数变化最快的方向,这样我们通过不断的迭代直至函数收敛就可以求出minimu value。如下图所示(梯度等高线):
沿着箭头方向不断的下降就可以求出最小值,值得注意的是,如果所求的cost function不是“凸函数”,有多个极值,我们可能陷入“局部最优”。而且根据数学公式的推导,梯度越往后迭代下降的越慢(怎么推导的我也没弄明白,反正大牛是这么说的)。
到此我们就几乎将gradient descent方法大概的讲清楚了,接下来我们来讲一下normal equations:
我们先给出正规方程组的形式: 也就是我们不通过迭代直接就可以求出参数向量 ,其中
接下来是视频讲义中的推导过程,这里涉及大量数学公式,直接粘贴过来:
,到此为止我们就讲最小二乘法normal equations讲完了。接下来我们简单的讲解一下Locally weighted linear regression(局部加权线性回归)。 Locally weighted linear regression是建立在Linear Regression基础上的一种非线性的线性回归的方法。其思想如下:给定一组input,我们选取每一个点的局部区域在其局部区域内利用Linear Regression求取一回归直线,组合所有局部区域求得的回归直线就是Locally weighted linear regression了。
机器学习第一课
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。