1、回归的来源?
英国人类学家F.Galton首次在《自然遗传》一书中,提出并阐明了“相关”和“相关系数”两个概念,为相关论奠定了基础。其后,他和英国统计学家Karl Pearson对上千个家庭的身高、臂长、拃长(伸开大拇指与中指两端的最大长度)做了测量,发现:儿子身高(Y,英寸)与父亲身高(X,英寸)存在线性关系:
高个子父代的子代在成年之后的身高平均来说不是更高,而是稍矮于其父代水平,而矮个子父代的子代的平均身高不是更矮,而是稍高于其父代水平。Galton将这种 趋向于种族稳定的现象称之“回归 ”。
目前,“回归”已成为表示 变量之间某种数量依存关系 的统计学术语,并且衍生出“回归方程”“回归系数”等统计学概念。如研究糖尿病人血糖与其胰岛素水平的关系,研究儿童年龄与体重的关系等。
2、变量关系
(1) 函数关系:当自变量取值一定时,因变量取值唯一确定--确定关系
(2) 相关关系:当自变量取值一定时,因变量取值带有一定随机性,例子:一块农田的水稻产量与施肥量之间的关系---不确定关系
主要研究不确定型的函数关系,如收入与受教育程度之间的关系,等等问题。 但它们之间存在明显的相互关系(称为相关关系),又是不确定的。
3、一元线性回归
一元线性回归研究的是一个自变量与一个因变量的统计关系,如人均收入X与人均食品消费支出Y,假设X与Y的关系为Y=aX+b。
4、线性回归的学习目标
用恰当的方法,估计出参数a,b。并且使估计出来的参数具有良好的统计特征。回归问题从某种视角看,视同 参数估计 问题。
5、例子
假设有一个房屋销售的数据如下:面积(m2) 销售价钱(万元)
123 250
150 320
87 160
102 220
… …
我们可以画一个图,x轴是房屋的面积。y轴是房屋的售价:
6、回归定义
给定一个点集D,用函数去拟合这个点集,并且使得点集与拟合函数间的误差最小。如果这个函数曲线是一条直线,那就被称为线性回归。
7、建立模型
我们通常认为房屋的售价只与面积相关。实际生活中,影响房价的因素非常多,如房屋的面积、朝向、所在小区、房间的个数等。考虑更多的情况,我们用x1,x2...xn 去描述这些影响房屋售价的因素,这些影响因素在机器学习中称为特征。如x1=房间的面积,x2=房间的朝向等等。考虑两个变量,我们可以做出一个估计函数:
θ在这里称为参数,θ作用可以调整房屋售价的各种因素的作用大小。换句话说影响房屋售价的因素:到底是房屋的面积更重要还是房间朝向更重要?
用向量的方式来表示
在上式中,一旦θ确定,那么我们的直线也就确定了,我们就能够对房价进行预测了。因此我们要做的工作是 确定θ 。 θ的值可以有无数个,我们应该如何选取θ呢?
8、如何确定θ?
最小二乘法
模型估计的值和真实值总是存在误差,为了使模型尽可能的准确,我们希望估计值和真实值之间的误差尽可能小,那么模型就越准确。
由于存在多个点,通常情况下,我们采用误差平方和的形式,使之误差平方和最小
J(θ)函数称为损失函数(loss function),上述问题就转化为求J(θ)的最小值问题。如何求解J(θ)的最小值呢?
9、如何求解J(θ)的最小值?
上式中只有θ是未知数,回顾高数内容,如何求解函数的最小值。通常做法,对目标函数求导,令导数为0,求得的点,即为极值点,如果函数在定义域内是凸函数,那么极值点就是最值点。上述方法就是最小二乘法的思路。
9.1 函数求导法
9.2 矩阵解法
通过“求导=0”,可以将上述方程写成矩阵的形式,从而将问题转化为求解线性方程组问题,矩阵X必须是列满秩矩阵,否则XTX的逆就不会存在。
(1)若XTX不可逆,则方法失效。可通过|XTX|的行列式的值是否为0判断,非0表可逆。
(2)若XTX阶数过高,则需要使用梯度下降的方式计算数值解。
直接求解回归系数优缺点:
优点:求解过程易于理解,计算不复杂。
缺点:对非线性数据的拟合效果差。
9.3 梯度下降法(最速下降法)
梯度下降法是一种求解最优解的迭代算法,先给定一个初始位置,然后向下降最快的方向调整,在若干次迭代之后找到局部最小值。
求最优解方法:
1、如果优化函数存在 解析解 。例如我们求最值一般是对优化函数求导,找到导数为0的点。如果代价函数能简单求导,并且求导后为0的式子存在解析解,那么我们就可以直接得到 最优的参数 。
2、如果式子很难求导,例如函数里面存在隐含的变量或者变量相互间存在耦合,互相依赖的情况。或者求导后式子得不到解析解,或者未知参数的个数大于方程组的个数等。这时候使用 迭代算法 来一步一步找到最优解。
特别的,若优化函数是凸函数,那么就存在全局最优解,如果函数是非凸的,那么就会有很多局部最优的解,因此凸优化重要性不言而喻。
梯度下降法步骤
(1)初始化θ(随机初始化)
(2)迭代,新的θ能够使得J(θ)更小
(3)如果J(θ)能够继续减少,返回(2)
迭代公式
9.4 两种实现方式
9.41 批处理梯度下降法
批处理梯度下降法迭代过程把所有的m个样本全部带入计算,迭代一次计算量m*n2。
由于批量梯度下降法每迭代一次更新回归系数时,都要用到训练集所有的数据,如果样本数m很大,那么计算复杂度会很高,速度会很慢。针对这种不足,又引入另一种方法:随机梯度下降法。
9.42 随机梯度下降法( stochastic gradient descent )
随机梯度下降法每次迭代只带入单个样本的回归误差来更新回归系数,迭代一次计算量为n2,当样本量总数m很大时,迭代一次的速度
远远大于批量梯度下降法。
随机梯度下降法每次只带入一个样本进行计算,虽然每次迭代误差准则函数都不一定向着全局最优方向,但是整体方向是向着全局最优方向的,最终结果往往是在全局最优解的附近。
9.5 梯度下降法注意事项
主要考虑两个方面问题: 一是方向 , 二是步长 。
方向决定是否走在最优化的道路上,而步长决定了要多久才能到达最优的地方。 对于第一方面,就是求梯度,多元函数求相应变量的偏导数;对于第二方面,如果步子太少,则需要很长的时间才能达到目的地,如果步子过大,可能导致在目的地周围来回震荡,所以步长选择比较关键。
9.6 改进的随机梯度下降法
100个二维样本,每个样本都对系数调整一次,共有200*100=20000次的系数调整
从上图可以看到随机梯度下降法在迭代了200次中,三个回归系数的变化过程,其中系数X2经过50次迭代达到稳定值,系数X0和X2到100次后逐渐稳定,但还存在一些小的波动。
原因:
存在一些无法准确分类的样本点,也就是说我们的数据集并非线性可分。然而我们的优化程序并没能意识到这些不正常的样本点,还
一视同仁对待,调整系数来达到这些样本的分类误差,所以导致在每次迭代时都引发系数的剧烈波动。
改进:
(1)每次迭代调整步长alpha值。随着迭代的进行,使之alpha越来越小,从而缓解系数的高频波动。避免alpha不断减小到接近于
0,所以需约束alpha比零稍大一点的常数项。
(2)每次迭代改变样本的优化顺序。随机选取样本来更新回归系数,因为样本顺序的改变,使得每次迭代不在形成周期性。
10、衡量预测值是否正确?
衡量预测值代替真实值到底有多正确?可使用 相关系数 进行度量。
python中通过Numpy库提供了相关系数的计算方法。correoef(yEstimate,yActual)
11、相关代码
11.1 加载数据集
11.2 矩阵求解法
11.3 批量梯度下降法
11.4 随机梯度下降法
11.5 改进随机梯度下降法
11.6 训练
11.7 效果
11.8 测试