SchoolofInformationandMathematics回归学习2of36内容概要1、线性回归2、多元线性回归3、代价函数4、多项式回归5、逻辑回归6、岭(Ridige)回归7、Lasso回归8、ElasticNet回归3of36回归学习回归属于有监督学习中的一种方法。该方法的核心思想是从连续型统计数据中得到数学模型,然后将该数学模型用于预测或者分类。该方法处理的数据可以是多维的。回归是由达尔文的表兄弟FrancisGalton发明的。Galton于1877年完成了第一次回归预测,目的是根据上一代豌豆的种子(双亲)的尺寸来预测下一代豌豆种子(孩子)的尺寸(身高)。Galton在大量对象上应用了回归分析,甚至包括人的身高。他得到的结论是:如果双亲的高度比平均高度高,他们的子女也倾向于平均身高但尚不及双亲,这里就可以表述为:孩子的身高向着平均身高回归。Galton在多项研究上都注意到了这一点,并将此研究方法称为回归。4of36线性回归介绍例子假如你刚刚搬到学校,需要知道在你学校周围的房价,设计一个数据回归程序。距离学校的距离卧室数目房租2.30km116005.06km220004.33km221001.09km11500…1.50km1?2.70km1.5?5of36例子假如你刚刚搬到学校,需要知道在你学校周围的房价,设计一个数据回归程序。距离房租1.0/距离房间房租线性回归介绍6of36回归学习问题引入面积(m^2)销售价钱(万元)12325015032087160102220……假设有一个房屋销售的数据如下:如果来了一个新的面积,假设在销售价钱的记录中没有的,怎么处理?解决方法:用一条曲线去尽量准的拟合这些数据,然后如果有新的输入过来,我们可以在将曲线上这个点对应的值返回。如果用一条直线去拟合,可能是下面的样子:7of36回归学习常用概念和符号:房屋销售记录表:训练集(trainingset)或者训练数据(trainingdata),是我们流程中的输入数据,一般称为x房屋销售价钱:输出数据,一般称为y拟合的函数(或者称为假设或者模型):一般写做y=h(x)训练数据的条目数(#trainingset),:一条训练数据是由一对输入数据和输出数据组成的输入数据的维度n(特征的个数,#features)这个例子的特征是两维的,结果是一维的。然而回归方法能够解决特征多维,结果是一维多离散值或一维连续值的问题。8of36回归学习学习过程首先给出一个输入数据,算法通过一系列的过程得到一个估计的函数,这个函数有能力对没有见过的新数据给出一个新的估计,也被称为构建一个模型。就如同上面的线性回归函数。一个典型的机器学习的过程9of36回归学习线性回归(Linearregression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析.线性回归属于监督学习,因此方法和监督学习应该是一样的,先给定一个训练集,根据这个训练集学习出一个线性函数,然后测试这个函数训练的好不好(即此函数是否足够拟合训练集数据),挑选出最好的函数(costfunction最小)即可.10of36线性回归注意:(1)因为是线性回归,所以学习到的函数为线性函数,即直线函数(2)因为是单变量,因此只有一个x;单变量线性回归模型:X:feature,h(x):hypothesis;问题:线性函数拟合的好不好?11of36简单线性回归(SimpleLinearRegression)1很多做决定的过程通常是根据两个或者多个变量之间的关系2回归分析(regressionanalysis):用来建立方程模拟两个或者多个变量之间如何关联3被预测的变量叫做:因变量(dependentvariable),y,输出(output)4被用来进行预测的变量叫做:自变量(independentvariable),x,输入(input)12of36正向线性关系13of36负向线性关系:14of36无关系:15of36估计的简单线性回归方程ŷ=b0+b1x这个方程叫做估计线性方程(estimatedregressionline)其中,b0是估计线性方程的纵截距,b1是估计线性方程的斜率,ŷ是在自变量x等于一个给定值的时候,y的估计值。使用场景:一般来说,只要觉得数据有线性关系,首先选择LinearRegression类。如果发现拟合或者预测的不好,再考虑用其他的线性回归库。如果是学习线性回归,推荐先从这个类开始第一步的研究。16of36线性回归分析流程:17of36关于偏差ε的假定1、ε是一个随机的变量,均值为02、ε的方差(variance)对于所有的自变量x是一样的3、ε的值是独立的4、ε满足正态分布18of36简单线性回归模型举例汽车卖家做电视广告数量与卖出的汽车数量:19of36如何画出适合简单线性回归模型的最佳回归线?20of36使sumofsquares最小计算过程21of36预测假设有一周广告数量为6,预测的汽车销售量是多少?x_given=6Y_hat=5*6+10=4022of36多元线性回归1.与简单线性回归区别(simplelinearregression):多个自变量(x)2.多元回归模型y=β0+β1x1+β2x2+…+βpxp+ε其中:β0,β1,β2…βp是参数值,ε是误差值3.多元回归方程E(y)=β0+β1x1+β2x2+…+βpxp4.估计多元回归方程y_hat=b0+b1x1+b2x2+…+bpxp一个样本用来计算β0,β1,β2…βp的点估计b0,b1,b2,…,bp23of365.估计流程(与简单线性回归类似)24of366.估计方法使sumofsquares最小运算与简单线性回归类似,涉及到线性代数和矩阵代数的运算25of367.例子一家快递公司送货:X1:运输里程X2:运输次数Y:总运输时间Time=b0+b1*Miles+b2*DeliveriesTime=-0.869+0.0611Miles+0.923Deliveries26of36线性回归——代价函数代价函数(有的地方也叫损失函数,LossFunction)在机器学习中的每一种算法中都很重要,因为训练模型的过程就是优化代价函数的过程,代价函数对每个参数的偏导数就是梯度下降中提到的梯度,防止过拟合时添加的正则化项也是加在代价函数后面的。一个好的代价函数需要满足两个最基本的要求:能够评价模型的准确性,对参数θ可微。27of36假设有训练样本(x,y),模型为h,参数为θ。h(θ)=θTx(θT表示θ的转置)。(1)概况来讲,任何能够衡量模型预测出来的值h(θ)与真实值y之间的差异的函数都可以叫做代价函数C(θ),如果有多个样本,则可以将所有代价函数的取值求均值,记做J(θ)。(2)首先确定模型h,然后训练模型的参数θ。训练参数的过程就是不断改变θ,从而得到更小的J(θ)的过程。理想情况下,当我们取到代价函数J的最小值时,就得到了最优的参数θ,记为:当J(θ)=0,表示模型完美的拟合了观察的数据,没有任何误差。28of36(3)在优化参数θ的过程中,最常用的方法是梯度下降,这里的梯度就是代价函数J(θ)对θ1,θ2,...,θn的偏导数。通过以上内容,可以总结得出以下关于代价函数的性质:对于每种算法来说,代价函数不是唯一的;代价函数是参数θ的函数;总的代价函数J(θ)可以用来评价模型的好坏,代价函数越小说明模型和参数越符合训练样本(x,y);J(θ)是一个标量;选择代价函数时,最好挑选对参数θ可微的函数(全微分存在,偏导数一定存在)29of36线性回归代价函数(CostFunction):对假设的函数进行评价,costfunction越小的函数,说明拟合训练数据拟合的越好;30of36线性回归在线性回归中,最常用的代价函数(CostFunction)是均方误差(Meansquarederror),具体形式为::其中:表示向量x中的第i个元素;表示向量y中的第i个元素;用参数θ和x预测出来的y值;m为训练集的数量;例:给定数据集(1,1)、(2,2)、(3,3)则x=[1;2;3],y=[1;2;3](此处的语法为Octave语言的语法,表示3*1的矩阵)如果我们预测theta0=0,theta1=1,则h(x)=x,则costfunction:J(0,1)=1/(2*3)*[(h(1)-1)^2+(h(2)-2)^2+(h(3)-3)^2]=0;如果我们预测theta0=0,theta1=0.5,则h(x)=0.5x,则costfunction:J(0,0.5)=1/(2*3)*[(h(1)-1)^2+(h(2)-2)^2+(h(3)-3)^2]=0.58;31of36代价函数与参数代价函数与参数总的代价函数J是h(θ)和y的函数,即J=f(h(θ),y)。又因为y都是训练样本中给定的,h(θ)由θ决定,所以,最终还是模型参数θ的改变导致了J的改变。对于不同的θ,对应不同的预测值h(θ),也就对应着不同的代价函数J的取值。变化过程为:θ引起了h(θ)的改变,进而改变了J(θ)的取值。32of36为了更直观的看到参数对代价函数的影响,举个简单的例子:有训练样本{(0,0),(1,1),(2,2),(4,4)},即4对训练样本,每个样本对中第1个数表示x的值,第2个数表示y的值。这几个点很明显都是y=x这条直线上的点。如下图:图:不同参数可以拟合出不同的直线代价函数与参数33of36常数项为0,所以可以取θ0=0,然后取不同的θ1,可以得到不同的拟合直线。当θ1=0时,拟合的直线是y=0,即蓝色线段,此时距离样本点最远,代价函数的值(误差)也最大;当θ1=1时,拟合的直线是y=x,即绿色线段,此时拟合的直线经过每一个样本点,代价函数的值为0。代价函数与参数34of36通过下图可以查看随着θ1的变化,J(θ)的变化情况,当θ1=1时,代价函数J(θ)取到最小值。因为线性回归模型的代价函数(均方误差)的性质非常好,因此也可以直接使用代数的方法,求J(θ)的一阶导数为0的点,就可以直接求出最优的θ值(正规方程法)。图:代价函数J(θ)随参数的变化而变化代价函数与参数35of36代价函数与参数下图可以看做是代价函数J(θ)与参数θ做出的图,曲面上的一个点(θ0,θ1,J(θ)),有无数条切线,在这些切线中与x-y平面(底面,相当于θ0,θ1)夹角最大的那条切线就是该点梯度的方向,沿该方向移动,会产生最大的高度变化(相对于z轴,这里的z轴相当于代价函数J(θ))。36of36线性回归一般情况:()inxR001n()nhxxxXθ求解:最小二乘法是一个直接的数学求解公式,不过它要求X是列满秩的,梯度下降法最小二乘损失函数37of36线性回归GradientDescent(梯度下降)找出costfunction函数的最小值;梯度下降原理:将函数比作一座山,我们站在某个山坡上,往四周看,从哪个方向向下走一小步,能够下降的最快;方法:(1)先确定向下一步的步伐大小,我们称为Learningrate;(2)任意给定一个初始值:;(3)确定一个向下的方向,并向下走预先规定的步伐,并更新;(4)当下降的高度小于某个定义的值,则停止下降;38of36线性回归梯度下降算法:特点:(1)初始点不同,获得的最小值也不同,因此梯度下降求得的只是局部最小值;(2)越接近最小值时,下降速度越慢;39of36线性回归梯度下降算法:问题:如果初始值就在localminimum的位置,则会如何变化?答:因为已经在localminimum位置,所以derivative肯定是0,因此不会变化;如果取到一个正确的值,则costfunction应该越来越小;问题:怎么取值?答:随时观察值,如果costfunction变小了,则ok,反之,则再取一个更小的值;从上面的图可以看出:初始点不同,获得的最小值也不同,因此梯度下降求得的只是局部