首页 > 代码库 > 机器学习算法Review之回归

机器学习算法Review之回归

回归

 

1)多元线性回归

 

1)模型建立

多元线性回归讨论的的是变量y与非随机变量x1……xm之间的关系,假设他们具有线性关系,于是有模型:

y =b0 + b1x1 + …… + bmxm+ e

这里的e~N0a2),b0,……,bna2都是未知数。上式矩阵表达式为:

y =xb + e

对于一组样本(x00……x0my0)……(xn0……xnmyn)观测值,这时对每个观测值有:

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)

其中CjjC=(xTx)-1主对角线上第j+1个元素。对于给定的显著性水平,计算出Tj的值,查表判断是接受还是拒绝H0

2.回归方程的显著性检验

回归方程的显著性检验,就是关于H0b0=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)稳健回归

在最小二乘法拟合线性回归模型时,我们假定了eii=1,,,,,n)是独立同分布的正太随机变量,在这些假定下讨论了参数估计的优良性质,但在客观实际中,这种假设是很难完全满足的。由于上述问题的存在,往往使最小二乘法得到的拟合结果与实际模型相差很大,这样就很自然的提出:能否构造一种参数估计方法,当实际模型与理论模型相差较小时,其性能变化也较小,对假设条件不敏感,这类方法被称为稳健方法。下面简单介绍一些M估计方法。

M估计是最大似然估计的简称。假设eii=1,,,,,n)独立同分布,则线性回归模型

Y = Xb +

的参数bM估计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用于回归(目标属性为连续)的情况进行简单介绍。

 

1CART回归树构建

1.目标预测

假设(x1,y1)(x2,y2),……,(xc,yc)是叶子节点l的所有样例,l的类标可以记作:

y~ = (1/c) Σci=0 yi

叶子节点中因变量的样例平均值。

2.分裂标准

分裂标准选取可以使树的误差平方和S最小的属性,S表达式如下:

S = Σcleaves(T)Σic(yi-mc)2

其中mc = (1/nc) Σic yi(叶子节点c的预测值)。

3.基本回归树构建的算法步骤

①从包含所有样例的节点开始,计算mcS

②选取可以使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” 博客,谢绝转载!

机器学习算法Review之回归