首页 > 代码库 > 机器学习第一课

机器学习第一课

    由于最近在学习standford大学 Andrew Ng 大牛的机器学习视频,所以想对所学的方法做一个总结,后面所要讲到的算法主要是视频里面学到的机器学习领域常用的算法。在文中我们所要学的的算法主要有Linear Regression(线性回归),gradient descent(梯度下降法),normal equations(正规方程组),Locally weighted linear regression(局部加权线性回归), Logistic regression 和Newton method(牛顿法)。由于开始研究mechine learning 的知识,所以之前的JAVA和C++,ACM学习暂时告一段落,同时由于方便以后写论文的需要,文中的一些专业术语会使用英文。希望和大家多多学习,交流,祝大家“国庆节快乐~”

    我们来学习线性回归。在高中的时候我们都已经接触到了Linear Regression的思想。(如下图所示)

                          image

 

    给定一系列的点,需要我们拟合一条直线对所有点的位置进行一个预测,这种模型就称之为Linear Regression,所拟合出的直线是连续的直线。如果我们没给出一个input对应的直线上面都会给出一个output。好接下来我们的问题就来了,给我们一组数据我们怎样才能准确的拟合出这一条直线呢。最常用的方法有两个:1.gradient descent和2.rmal equations,其实这两种方法蕴含的思想是一样的,只不过normal equations是gradient descent在某些特殊情况下推导出来的一个我们直接可以用的方程组,下面我们会具体讨论。

    来我们来讨论其数学模型,假定我们有一个input(x1, x2)代表两种特征。给定θ(θ1,θ2)对应的是每种特征的权值,image 是我们的预测output,即:

                            image

                                    image

 

定义cost function(损失函数)为:

                                     image

    式中我们可以看到,image 是一个二次函数,而梯度下降法正是一种对二次函数进行迭代从而求minimum value的方法。下面我们来讲怎么用gradient descent求解cost function 的minimum value,我们给出下式:

                                     image

 

                                      image

                                               image

 

    其中 image 是每次迭代更新后的参数向量,image 是学习率(每次迭代的步长),image 指cost function对参数求偏导,由高数知识可知,偏导对应的就是梯度方向,也就是参数变化最快的方向,这样我们通过不断的迭代直至函数收敛就可以求出minimu value。如下图所示(梯度等高线):

                                    image

沿着箭头方向不断的下降就可以求出最小值,值得注意的是,如果所求的cost function不是“凸函数”,有多个极值,我们可能陷入“局部最优”。而且根据数学公式的推导,梯度越往后迭代下降的越慢(怎么推导的我也没弄明白,反正大牛是这么说的)。

到此我们就几乎将gradient descent方法大概的讲清楚了,接下来我们来讲一下normal equations:

    我们先给出正规方程组的形式:image  也就是我们不通过迭代直接就可以求出参数向量image ,其中

image

接下来是视频讲义中image的推导过程,这里涉及大量数学公式,直接粘贴过来:

                                         image

                                        image

                                        image

                                        image

                                                                    image

                                                   image

     到此为止我们就讲最小二乘法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中,我们的预测函数:                           

                                       image

             在Logistic Regression中,我们定义预测函数:

                                                                                                image  

                                                                                                image

            image 称之为Logistic function 或者 sigmoid function 其图像如下所示:

                                                                                              image

           由图可知,g(z)函数的值域为0~1之间,这样我们就可以吧g(z)函数表示为一种概率,通过求此概率的最大值来预测output。于是我们引入了概率论里面的最大似然函数image

                                                                                               image

                                                                                              image

 

        由上式分析可知,给定theta,以x为input,output y 的概率为image

 

                                                                                            image

                                                                                           image

                                                                                           image

            由于此时我们要求的不是目标函数的最小值而是最大值,所以此方法称之为gradient ascend(梯度上升法),这样我们就找到了给定input的输出概率最大的output。由于实际中我们经常碰到的是二分类问题,而Logistic Regression回归函数是一条non-linear的曲线,所以我们可以将其映射到0和1上。

                                                                                          image

                 这就是Logistic Regression的基本原理,利用梯度上升法求似然函数的最大概率,从而求出最佳的output。由于引入了非线性函数sigmoid函数,所以最终回归的是一条non-linear的线。

 

      最后我们来谈一谈Newton method,Newton method是一种收敛速度比梯度上升法更快的算法,是一种用来求解无约束最优化问题的常用方法。首先我们看下面的一组图像:

 

                                                              image

               给定函数image ,由第二幅图可知初始化的theta为4.5,怎样通过较少的迭代次数求得image 的点呢,方法如图所示,求解当前点theta所在点的切线,找出切线与x轴的交点更新theta的值。具体的数学思想如下公式:

                                                                                                                                           image

               如果我们用image代替似然函数image 的导数image ,则可以找出image =0点theta值,从而可以找出image的极大值点。则上面的函数可写成:

                                                                                                                                           image

                                                                                                                                          image

其中image 称为Hession矩阵:

                                                                                                                                         image

这样通过不断的更新我们就可以找到使似然函数image最大的theta值了,这就是牛顿法的思想。

 

 

 

 

 

 

 

 

 

 

 

   

 

机器学习第一课