回归分析之我见
1.概述
本文主要是介绍回归方面的知识,属于监督性学习。方法的核心思想:从离散的统计数据中得到模型,然后将模型用于预测或者分类(数据可以是多维)。
2.问题的引入
假设我们收集到了一组房屋销售数据如下:
根据上表,我们可以构建一个二维视图:X轴是房屋面积,Y轴是房屋售价,如下:
问题:如果有个人想买一个在已知数据中没有的房子?我们怎么得到房子的售价呢?
我们可以用一条曲线去尽量准的拟合已知数据,然后对于新的输入,我们可以在曲线上将中找到对应的值返回。如果用一条直线去拟合,可能如下图:
(绿色点就是我们要预测的点)
首先给出一些概念和常用的符号:
训练集:X,我们需要输入的数据,也是已知的数据,如上表中数据。
输出数据:Y,回归或者分类等结果。
拟合函数(假设H或者模型):一般写做y=h(x)。
训练数据的条目数:一条训练数据是由一对输入数据和输出数据组成的输入。
数据维度:n (数据的特征数目,Features)
注:回归模型能够解决特征多维的数据。
3学习过程
如下图:
4线性回归
线性回归假设特征和结果满足线性关系,线性关系的表达能力非常强大,每个特征对结果的影响强弱可以由其前面
的参数体现,而且每个特征变量可以先映射到一个函数,然后再参与线性计算。这样就可以表达特征与结果之间的非线性关系。
Example:
我们用x1,x2,x3.....xn描述feature里面的分量,比如x1 = 房屋面积,x2 = 卧室个数等等,我们可以做出一个估计函数:
θ用来调整feature中每个分量的影响力。我们不妨另x0 = 1,我们就可以用向量乘积的形式表示上式了:
接下来我们需要对θ进行评价,因此我们需要对h函数进行评估,这个函数称为Loss Function or error Function,描述h函数好不好的程度,我们称之为J函数,我们可以写一个如下的LF:
J(θ):用对x(i)的估计值与真实值y(i)差的平方和作为LF,1/2是为了后面求导计算方便。
如何调整θ以使得J(θ)取得最小值?最小二乘(min square)和梯度下降。
5梯度下降
在选定线性回归模型后,只需要确定参数θ,就可以将模型用来预测。然而θ需要在J(θ)最小情况下才能确定。因此问题归结为求极小值问题,使用梯度下降法。梯度下降法最大的问题是求得有可能是局部极小值或全局极小值,这与初始点的选取有关。
梯度下降法是如下流程:
1)首先对θ赋值,这个值可以是随机的,也可以让θ是一个全零的向量。
2)改变θ的值,使得j(θ)按梯度下降的方向进行减少。
3)当快达到局部最小值的时候,梯度会越来越小,最后趋近于0。
4)当J(θ)不在改变的时候,我们就可以说算法收敛了,迭代结束。
梯度方向由j(θ)对θ的偏导数确定,由于求的是极小值,因此梯度方向是偏导数的方向。
结果为:
迭代跟新的方式:
1批梯度下降:也就是对全部的训练数据求得误差后再对θ进行更新
缺点:每次需要扫描全部数据集进行求和,当训练集特别大,比如m = 200000效率很低。
2增量(随机)梯度下降:每扫描一步都要对θ进行更新。(更适合训练集特别大的时候)
前一种方法能够不断收敛,后一种方法结果可能不断在收敛处徘徊,但结果都是学习到每个feature的参数。
一般来说,梯度下降法收敛速度还是比较慢的。
6Normal Equations (正规方程组)
前面说了如何用梯度下降来解线性回归问题
其实对于线性回归,也可以不用这种迭代最优的方式来求解
因为其实可以通过normal equations直接算出θ,即具有解析解
首先对于训练集,可以写成下面的向量形式
可以看到经过一系列的推导,J(θ)有了新的表达形式
那么J(θ)的梯度,即求导,可以得到
而J(θ)最小时,一定是梯度为0时,即可以推出normal equations
所以使J(θ)最小的θ的值可以直接求出,