像前言部分说的一样,我们是通过数据所承担的角色来区分统计建模、经典机器学习和现代机器学习。
在统计建模里面,数据引导我们去选择随机模型,来形成对不同问题概率的抽象表达,例如假设、预测和预报,我们关心的是模型,模型值钱。
在经典机器学习里,数据驱动的是对分析技术的选择,如何最佳地执行即将任务,这是数据训练算法。在现代机器学习里,数据驱动基于神经网络算法的系统,去学习具体任务,系统可以自动判定数据常量规则。在训练神经网络数据的过程中,系统逐渐学习到执行任务,就像某人所说:“是数据在做编程。” 所以, 数据对机器学习是非常重要的,数据很值钱。训练或者说算法的迭代更新需要大量的优质的数据,这也是为什么现在很多的云计算公司现在纷纷在世界各地抢建数据中心的原因,阿里巴巴今年在东南亚就扩建了三个数据中心,微软计划在中国扩建数据中心,百家号晚安瓦尔登湖有篇文章-“中国的云计算和数字经济”是关于这个的,感兴趣的读者可以去看看。
所以统计建模,就是给了数据,建立模型,再对将来进行预测。那么如果现在有两组数据, x和y, 想找到x和y之间的相关的关系,最简单的模型就是线性的模型,也就是线性回归(linear regression 或者说 regression line)。
先来看看一元的线性回归 (Single variable linear regression analysis)
一元线性回归是分析只有一个自变量(自变量x和因变量y)线性相关关系的方法。一个指标的数值往往受许多因素影响,若其中只有一个因素是主要的,起决定性作用,则可用一元线性回归进行预测分析。
回归这一术语最早来源于生物遗传学,由弗朗西斯·高尔顿(Francis Galton)引入,这个人是个天才。3岁时会签名,4岁能写诗,5岁时能背诵并理解苏格兰叙事诗《马米翁》,6岁时,已精熟荷马史诗中的《伊利亚特》和《奥德赛》,7岁能欣赏莎士比亚名著,并按自己的方法对昆虫、矿物标本进行分类。他学术研究兴趣广泛,包括人类学、地理、数学、力学、气象学、心理学、统计学等方面。另外,他是达尔文(提出进化论)的表弟。感兴趣的读者可以自己再找找资料。
回归的定义:回归分析是研究某一变量(自变量)与另一个或多个变量之间的依存关系,用解释变量的已知值或固定值来估计或预测因变量的总体平均值 ,简单的说就是,y=kx+b, 其中k是未知的系数,b是截距。
最经典的一元回归例子是是高尔顿提出的,在已知父亲身高的情况下,儿子的身高的平均变化如何。换句话说,就是已知父亲身高来预测儿子的平均身高。(这个例子,高尔顿当时的兴趣不是线性回归,而是在于寻找为什么人群的总体身高分布趋向稳定)
--------------------------------------------------------------------------------------------------------
No. 1 2 3 4 5 6 7 8 9 10
--------------------------------------------------------------------------------------------------------
Height of fathers(x) 60 62 64 65 66 67 68 70 72 74
Height of sons (y) 63.6 65.5 66 65.6 66.9 67.1 67.4 63.3 70.1 70
---------------------------------------------------------------------------------------------------------
这里的x是父亲的身高,y是儿子的身高。我们要找y=kx+b中的k和b。目的:已知父亲的身高x,利用这个线性的模型可以预测儿子的身高y。
计算斜率和截距
我们先要计算x,y的均值和方差。上面的身高的数据集里,均值E(x)66.8, E(y)=6.55, 方差var(x)=19.0667, var(y)=5.25, 标准差s_x=4.336, ,s_y=2.29,r=0.62。
我们得到回归方程的斜率是k=r*s_y/s_x=0.3257, 截距是b=E(y)-k*E(x)=44.7933, 拟合结果见下图左边的是身高的例子。
第二个是交通事故的例子,x是每个州的人口,y是交通事故发生的次数。用上面相同的方法来计算斜率和截距,右边的图是拟合的结果。

在这里,高斯严格证明了这样计算的斜率和截距决定的直线可以让拟合(fitting)的均方误差(MSE,mean square error)的值最小。这个证明我们之后会给出来。
接下来是要看看拟合的残差,也就是通常我们说的线性回归模型的残差检验。
我们首先要做几个假定。
1 线性假定:X与Y之间的关系是线性的
2 独立性假定:对于一个特定的x,它所对应的残差与其它x所对应的残差相互独立
3 正态假定:残差服从期望为0的一个正态分布
4 同方差假定:对于所有的x,残差的方差都是相同的
残差检验的基本步骤
1 线性关系的检验 看残差图:横轴自变量,纵轴残差
2 独立性假定检验 跟上面一样画个残差图,如果图上显示的带有曲线的味道,那就非独立。
3 正态性假定检验 看QQ图
4 同方差假定检验 画散点图,如果不是水平线上,那就是异方差
在做线性回归分析残差检验中,两个图最重要,残差图和QQ图。目的就是测量是否满足线性回归模型的假定。
下面是身高例子的残差图和QQ图:

接下来是回归的显著性检验。
回归系数显著性检验(significant test of regression coefficients)是对于线性回归模型y=b0+b_1x_1 +…+b_px_p(i=1.….n),检验一个或几个回归系数组成的系数向量b对于响应变量是否有显著影响的方法。
回归方程的检验用F检验,回归系数的检验用t检验。
建立回归方程之后,回归的效果如何呢?因变量和自变量之间是否确实存在线性关系呢?这需要我们进行统计检验才能加以肯定或者否定。
我们定义总的里离差平方和为s_yy=U+Q=sum(y_i-E(y))^2=sum(y_i-hat(y))^2+sum(hat(y)-y_i)^2,其中第一项U是回归平方和,是自变量的变化引起的因变量的波动,自由度是m;第二项Q是剩余平方和,是试验误差和其他因素引起的,自由度是n-m-1.总的离差平方和的自由度是n-1.
如果观测值给定了,总的离差平方和是确定的,U+Q确定了,U大Q小,U小Q大,所以两者都可以用来衡量回归的效果。
复相关系数也可以用来检验总的回归的效果,R=U/s_yy=(s_yy-Q)/s_yy.
要检验y和x是否有线性关系,就要检验假设H0:系数k=0是否成立。如果成立,那么x,y没有线性关系,否则有。用F统计量,F=U/m/(Q/(n-m-1)),这是两个方差之比,服从自由度m,n-m-1的F分布。在给定检验水平下,P(F<=F_\alpha)=1-\alpha, 对于给定的置信度\alpha,F分布表可以查F_\alpha的值。利用F检验对回归方程进行显著性检验的方法为方差分析。
回归系数的检验t检验针对的是多元线性回归。
F检验是看回归方程中全部自变量的总体回归效果,但是总体的回归效果不能说明每个自变量对因变量都是重要的。检验每个自变量是否显著就是要检验假设,H0:k_i=0 (i=1....m)是否成立。
统计量t=b_i/\sqrt(c_ii)/(\sqrt(Q/(n-m-1)), 也可以用F检验。
上面我们在讲的是一元的线性回归,下面我们来讲讲多元的线性回归。