标签:des style blog http color io os 使用 ar
由于最近在学习standford大学 Andrew Ng 大牛的机器学习视频,所以想对所学的方法做一个总结,后面所要讲到的算法主要是视频里面学到的机器学习领域常用的算法。在文中我们所要学的的算法主要有Linear Regression(线性回归),gradient descent(梯度下降法),normal equations(正规方程组),Locally weighted linear regression(局部加权线性回归), Logistic regression 和Newton method(牛顿法)。由于开始研究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了。
接下来我们来学习Logistic Regression, Logistic Regressio不同于Linear Regression,它是一种非线性的回归。下面我们来讨论起实现过程。在Linear Regression中,我们的预测函数:
在Logistic Regression中,我们定义预测函数:
称之为Logistic function 或者 sigmoid function 其图像如下所示:
由图可知,g(z)函数的值域为0~1之间,这样我们就可以吧g(z)函数表示为一种概率,通过求此概率的最大值来预测output。于是我们引入了概率论里面的最大似然函数 。
由上式分析可知,给定theta,以x为input,output y 的概率为
由于此时我们要求的不是目标函数的最小值而是最大值,所以此方法称之为gradient ascend(梯度上升法),这样我们就找到了给定input的输出概率最大的output。由于实际中我们经常碰到的是二分类问题,而Logistic Regression回归函数是一条non-linear的曲线,所以我们可以将其映射到0和1上。
这就是Logistic Regression的基本原理,利用梯度上升法求似然函数的最大概率,从而求出最佳的output。由于引入了非线性函数sigmoid函数,所以最终回归的是一条non-linear的线。
最后我们来谈一谈Newton method,Newton method是一种收敛速度比梯度上升法更快的算法,是一种用来求解无约束最优化问题的常用方法。首先我们看下面的一组图像:
给定函数 ,由第二幅图可知初始化的theta为4.5,怎样通过较少的迭代次数求得 的点呢,方法如图所示,求解当前点theta所在点的切线,找出切线与x轴的交点更新theta的值。具体的数学思想如下公式:
如果我们用代替似然函数 的导数 ,则可以找出 =0点theta值,从而可以找出的极大值点。则上面的函数可写成:
其中 称为Hession矩阵:
这样通过不断的更新我们就可以找到使似然函数最大的theta值了,这就是牛顿法的思想。
机器学习第一课
标签:des style blog http color io os 使用 ar
原文地址:http://www.cnblogs.com/txg198955/p/3999859.html