当前位置: 首页 > 科技观察

机器学习中的数学(一)-回归与梯度下降

时间:2023-03-17 11:18:14 科技观察

上次写了一篇关于贝叶斯概率论的文章。最近时间比较紧,coding的任务也比较重,不过还是抽空看了一些机器学习的书籍和视频,推荐两本:一个是斯坦福的机器学习公开课,可以在上面下载verycd,可惜没有翻译。不过还是可以看的。另一本是prml-patternrecognitionandmachinelearning,Bishop的一本大受欢迎的书,2008年出版,算是比较新的书。前几天打算写一个分布式计算系列,结果只写了开头,后来转而写这个系列。以后哪一方经验多,我就写哪一个系列。最近做的事情比较复杂,有的和机器学习相关,有的和数学相关,有的和分布相关。回归和梯度下降:回归在数学上给出了一组可以用曲线拟合的点。如果曲线是直线,则称为线性回归。如果曲线是二次曲线,则称为二次回归,回归有很多变体,比如局部加权回归、逻辑回归等,后面会讲到。用一个非常简单的例子来说明回归。这个例子来自很多地方,在很多开源软件中也有看到,比如weka。大概,做一个房子价值评估系统,房子的价值来自很多地方,比如面积,房间数(几个房间和大厅),位置,朝向等等。这些影响价值的变量房子被称为特征(feature),特征是机器学习中一个非常重要的概念,并且有很多论文专门讨论这件事。这里为了简单起见,假设我们的房子受到一个变量的影响,就是房子的面积。假设有一个房屋销售数据如下:面积(m^2)销售价格(万元)12325015032087160102220...这个表类似于帝都五环周边的房价.我们可以做一个图表,x轴是房子的面积。y轴是房子的售价,如下:如果有新的区域来了,假设不在售价的记录里,怎么办?我们可以用一条曲线尽可能准确地拟合数据,然后如果有新的输入,我们可以返回曲线上这一点对应的值。如果用直线拟合,可能看起来像这样:绿色的点就是我们要预测的点。首先给出一些概念和常用的符号,不同的机器学习书籍可能会有一定的差异。房屋销售记录表-训练集(trainingset)或训练数据(trainingdata),是我们过程中的输入数据,一般称为x房屋销售价格-输出数据,一般称为y拟合函数(或称为Hypothesis或模型),一般写为y=h(x)训练数据的条目数(#trainingset),一条训练数据是由一对输入数据和输出数据(特征个数,#features),n下面是一个典型的机器学习过程。首先给定一个输入数据,我们的算法会通过一系列的过程得到一个估计函数。此功能能够提供未见过的新数据。新的估计也称为建立模型。就像上面的线性回归函数一样。我们用X1,X2..Xn来描述feature中的分量,比如x1=房间面积,x2=房间朝向等,我们可以做一个估计函数:这里称θ为参数,意思是这里是调整feature中各个组成部分的影响,即房子的面积更重要还是房子的位置更重要。为了使X0=1,可以用向量的形式表示:我们的程序还需要一种机制来评估我们的θ是否更好,所以我们需要对我们制作的h函数进行评估。一般这个函数叫做损失函数(lossfunction)或者误差函数(errorfunction),描述的是h函数有多差。下面,我们称这个函数为J函数。这里我们可以作如下的误差函数:这个误差估计函数是以x(i)的估计值与真实值y(i)的差值的平方和作为误差估计函数,而前面乘1/2是为了求导时系数消失。如何调整θ使J(θ)达到最小值的方法有很多种,其中就有最小二乘法(minsquare),这是一种完全用数学来描述的方法。最小平方法的公式来源可以在很多机器学习和数学书籍中找到。这里先不说最小二乘法,只说梯度下降法。梯度下降法是按照以下过程进行的:1)首先给θ赋值,可以是随机的,也可以让θ为全零向量。2)改变θ的值,使得J(θ)在梯度下降的方向上减小。为了更清楚起见,给出下图:这是一个显示参数θ和误差函数J(θ)之间关系的图表。红色部分表示J(θ)具有相对较高的值。我们需要的是能够使J(θ)的值尽可能低。那就是深蓝色的部分。θ0、θ1表示θ向量的两个维度。上面提到的梯度下降法的第一步是给θ一个初值,假设随机给定的初值就是图上的交叉点。然后根据梯度下降的方向调整θ,使J(θ)向较低的方向变化。如图所示,当θ下降到不能继续下降时,算法结束。当然,梯度下降的最终点可能不是全局极小点,而是可能是局部极小点,可能是下面这种情况:上图是描述的局部极小点,是重新选择一个初始点得到,看来我们的算法会在很大程度上受到初始点选择的影响而陷入局部极小点。接下来,我将用一个例子来描述梯度下降的过程。对于我们的函数J(θ),求偏导数J:(如果不明白推导过程,可以复习一下微积分)下面是更新的过程,即θi会往梯度最小的方向递减.θi表示更新前的值,-后面部分表示梯度方向的下降量,α表示步长,即每次在梯度下降的方向上变化多少。值得注意的一个非常重要的点是渐变是有方向的。对于一个向量θ,每个维度分量θi可以找到一个梯度的方向,我们可以找到一个整体的方向。改变的时候,我们只要在下降最多的方向做出改变,到达一个最小点,不管是局部的还是全局的。用更简单的数学语言来描述步骤2)如下:倒三角代表梯度。这样,θi就会消失。看你用好向量和矩阵,真的会大大简化数学描述。.总结及预告:本文内容主要取自stanfordcourse第二集,希望表达清楚意思:)本系列下篇文章也将取自stanfordcourse第三集,下一次会深入讲回归,逻辑回归,牛顿法,但是这个系列不希望是stanfordcourse的notebook版,可能和stanfordcourse里面的不完全一致未来。本文为LeftNotEasy所有,发表于http://leftnoteeasy.cnblogs.com。如有转载,请注明出处。本文若未经作者同意用于商业用途,将追究法律责任。原文链接:http://www.cnblogs.com/LeftNotEasy/archive/2010/12/05/mathmatic_in_machine_learning_1_regression_and_gradient_descent.html