机器学习算法Review之回归
回归
1)多元线性回归
(1)模型建立
多元线性回归讨论的的是变量y与非随机变量x1……xm之间的关系,假设他们具有线性关系,于是有模型:
y =b0 + b1x1 + …… + bmxm+ e
这里的e~N(0,a2),b0,……,bn,a2都是未知数。上式矩阵表达式为:
y =xb + e
对于一组样本(x00……x0m,y0)……(xn0……xnm,yn)观测值,这时对每个观测值有:
yi = b0 + b1xi1 + …… + bmxim+ ei (i=0,……n)
(2)模型求解
模型求解过程就是完成对回归模型的未知参数的估计,常常采用最小二乘法,即寻找b的估计b~满足下面的条件:
Σni=1(yi-Σmj=0xijb~j)2 = minΣni=1(yi-Σmj=0xijbj)2
或写成矩阵表达式:
||y-xb~||2= min||y-xb||2
解得b的估计为:
b~=(xTx)-1xTy
a2的估计为:
a~2=(1/(n-m-1))[yTy-b~T(xTy)]
(3)回归系数及回归方程的显著性检验
1.回归系数的显著性检验
所谓回归系数的显著性检验,就是检验假设H0:bj=0<-->H1:bj!=0(j=1,……,m)。在H0成立的条件下,有:
Tj= b~j/(Cjja~)^(1/2) ~ t(n-m-1)
其中Cjj是C=(xTx)-1主对角线上第j+1个元素。对于给定的显著性水平,计算出Tj的值,查表判断是接受还是拒绝H0。
2.回归方程的显著性检验
回归方程的显著性检验,就是关于H0:b0=b1=……=bm=0<-->H1:至少有一个bj!=0(j=1,……,m)的检验问题。在H0成立有:
F = (QB(n-m-1))/(QAm) ~ F(m, n-m-1)
其中QA=Σni=1(yi-y~i)2为剩余平方和,QB=Σni=1(y~i-(1/n)Σni=1yi)2为回归平方和。对于给定的显著性水平,计算出F的值,查表判断是接受还是拒绝H0。
(4)最优回归方程的选择
最优回归方程的选择的一般原则是,寻求一线性回归方程其包含所有对y有显著作用的回归变量,剔除不显著的回归变量,以估计的标准误差a~最小者为最优。一般采用下面几种方法。
1.穷举法
对所有回归变量的可能组合,求出关于y的线性回归方程,从中选出最优者。
2.“只进不出”法
这一方法是根据经验,选定一个回归变量,然后逐个引入其他回归变量,其优点是计算量小,缺点是可能将最优方程遗漏。
3.“只出不进”法
这一方法是先引入所有变量,然后逐一淘汰,选出估计的标准误差a~最小者,优点是计算量小,缺点是可能将最优方程遗漏。
4.“有进有出”,逐步回归法
这一方法的基本思想是,对于全部回归变量,按照其对y的影响程度的大小,及Tj统计量的数值大小,从大到小逐次引入到线性回归方程,没引入一个回归变量后,均对回归系数进行检验,一旦发现作用不显著的回归变量,就加以剔除,如此往复,直到无法进入新的自变量为止。这种方法比穷举法计算量少许多,比“只进不出”和“只出不进”方法不会遗漏最优方程。
(5)稳健回归
在最小二乘法拟合线性回归模型时,我们假定了ei(i=1,,,,,n)是独立同分布的正太随机变量,在这些假定下讨论了参数估计的优良性质,但在客观实际中,这种假设是很难完全满足的。由于上述问题的存在,往往使最小二乘法得到的拟合结果与实际模型相差很大,这样就很自然的提出:能否构造一种参数估计方法,当实际模型与理论模型相差较小时,其性能变化也较小,对假设条件不敏感,这类方法被称为稳健方法。下面简单介绍一些M估计方法。
M估计是最大似然估计的简称。假设ei(i=1,,,,,n)独立同分布,则线性回归模型
Y = Xb +
的参数b的M估计b~由下式给出
Σni=1β(yi-Σmj=0xijb~j)2= minΣni=1β(yi-Σmj=0xijbj)2
或
Σni=1π(yi-Σmj=0xijb~j)xik= 0, k=0, 1,……, m。
这里β和π是适当选取的实数,一般β是对称的凸函数,或者是正半轴上非降的偶函数;而π是有界的奇函数,如果β是可导的凸函数,取π=β‘,则上述两种定义是等价的。上述方程中的参数求解只能用迭代法求解。
(6)预测
有了回归方程,直接将测试数据带入回归方程,即可得到预测结果。
Pros: Easy to interpret results,computationally inexpensive
Cons: Poorly models nonlinear data
Works with: Numeric values, nominal values
2)基于树形结构的回归(CART)
在前一篇blog中简单的介绍了CART用于分类的情况,其分裂过程与一般的决策树算法类似,只不过选择分裂属性的标准为Gini标准。这里再对CART用于回归(目标属性为连续)的情况进行简单介绍。
(1)CART回归树构建
1.目标预测
假设(x1,y1),(x2,y2),……,(xc,yc)是叶子节点l的所有样例,l的类标可以记作:
y~ = (1/c) Σci=0 yi
叶子节点中因变量的样例平均值。
2.分裂标准
分裂标准选取可以使树的误差平方和S最小的属性,S表达式如下:
S = Σc∈leaves(T)Σi∈c(yi-mc)2
其中mc = (1/nc) Σi∈c yi(叶子节点c的预测值)。
3.基本回归树构建的算法步骤
①从包含所有样例的节点开始,计算mc和S。
②选取可以使S减少最多的属性进行分裂。如果S的减少量小于阈值Δ,或者节点样例个数小于q,或者条件属性有相同的值,停止。(先剪枝)
③否则,在新的节点进行步骤①。
4.连续属性分裂算法
对一个连续待分裂属性列进行排序,并剔除重复出现的那些数字;然后选择相邻两个数值的平均值作为二分阈值,对该属性列进行分裂,计算出相应的S值;然后选择使该属性分裂S最小的二分阈值作为该待分裂属性列的阈值。对所有的连续属性列重复上述步骤,然后选择S最小值对应的属性作为当前节点的分裂属性。这种属性分裂算法不是最优的还有很多其它的改进算法,这里不一一赘述。
5.过拟合问题
在步骤3中实际上已经给出了一个先剪枝的算法,其缺点是明显的,阈值的选取是一个问题。更好的剪枝算法是后剪枝算法(其缺点是计算量大),常用的有最小期望误判成本(ECM)和最小描述长度(DML)算法。下面给出一个后剪枝算法描述,它根据测试数据及的误差大小来决定是否合并叶子节点:
Split the test data for the given tree:
If the eithersplit is a tree: call prune on that split
Calculate theerror associated with merging two leaf nodes
Calculate theerror without merging
If mergingresults in lower error then merge the leaf nodes
(2)模型树
如果把回归树中的叶子节点换成分段线性函数,那么就变成了模型树,在叶子节点中我们用一个线性回归模型,来拟合叶子节点的部分数据,用该模型对到达叶子节点的数据进行预测,这样就避免了均值所带来的误判。
Pros: Fits complex, nonlinear data
Cons: Difficult to interpret results
Works with: Numeric values, nominal values
本文出自 “Remys” 博客,谢绝转载!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。