回归

本文介绍了回归分析中的几种重要模型:线性回归、局部加权线性回归、岭回归、Lasso回归以及弹性网络。线性回归通过最小二乘法确定回归系数,而岭回归引入L2正则化处理多重共线性问题。Lasso回归利用L1正则化实现特征选择,弹性网络结合了L1和L2正则化,适用于特征众多的情况。
  • 线性回归

线性回归的方法为最小二乘法。用Y=X.Tw表示拟合结果,其中X.T表示X的转置,w为回归系数。其损失函数为残差的平方和:

为了求损失函数的极小值,对w求偏导,并另偏导=0,得到回归系数的计算公式:

  • 局部加权线性回归

局部加权回归为待测点附近的每个点赋予一定的权重,回归系数w可以表为:

其中W为权重,是一个对角矩阵。类似于核函数,选择高斯核函数权重可计算为:

与测试点距离越近,其权重就会越大。k为一个参数,k越大,W中对角线上的非0点就越多,反之,非0点只集中在测试点xi附近。所以,k越大越容易欠拟合,而k越小,越容易过拟合。其phython代码如下:

def lwlr4Vec (textPoint, xArr, yArr, k = 1.0):
	xMat = mat(xArr); yMat = mat(yArr).T
	N = shape(xMat)[0]
	W = mat(eye(N))
	for i in range(N):
		diff = textPoint - xMat[i]
		W[i,i] = exp(diff * diff.T / (-2.0 * k ** 2))
	xtx = xMat.T * W * xMat
	if(linalg.det(xtx) == 0):
		print "Wrong!"
		return
	return textPoint * (xtx.I * xMat.T * W * yMat)
  • 岭回归(Ridge)

最小二乘法是一种无偏差估计,对训练数据集中的实例其预测近似误差很小,但当①矩阵X中的存在多重共线性(即某几个特征具有线性相关),②X中特征数大于样本数(使不能列满秩),会导致|X.TX|趋近于0,使其逆矩阵的对角元很大,造成矩阵不稳定。所以,岭回归为它的损失函数加一项L2正则项作为惩罚函数,将回归系数拉低:

其中t为lambda的函数,lambda越大t越小。通过对损失函数求偏导,再另偏导=0,可得:


可以理解为,lambda的引入使求逆的项非奇异,同时限制w的大小,减小不重要的参数,称之为缩减。

lanmda很小,对X.TX的约束不够;lambda较大时,回归系数会被拉低,降低多重共线性的影响。但lambda太大会使所有回归系数趋近于0,导致欠拟合。岭回归不可以筛选特征,所有不能提出相关性强的特征。

  • Lasso回归

lasso回归同样为有偏估计,可以筛选数据,擅长处理共线性数据。它的损失函数为最小二乘的损失函数后加一个L1正则项;

L1正则项的加入会使一些wj=0,达到筛选特征的目的。但lasso回归的损失函数中有绝对值运算,导致不可以对它求偏导,使用二次规划法计算又非常复杂。所以可以用前向逐步回归来得到与lasso回归类似的效果:

def fStepWise (xArr, yArr, eps = 0.01, num = 100):
    xMat = mat(xArr); yMat = mat(yArr).T
    yMat = yMat - mean(yMat, 0)
    xMat = regularize(xMat)
    k = shape(xMat)[1]
    WMat = zeros((num, k))
    wOrig = zeros((k,1)) ; wTest = wOrig. copy(); wBest = wOrig.copy()
    for i in range(num):
        print wOrig.T 
        minError = inf
        for j in range(k):
            for sign in [-1, 1]:
                wTest = wOrig.copy()
                wTest[j] += eps * sign
                rssE = rss(yMat.A, (xMat * wTest).A)
                if(rssE < minError):
                    minError = rssE; wBest = wTest
        wOrig = wBest.copy(); WMat[i, :] = wBest.T
    return WMat

在求解前首先要对数据进行标准化处理,使它们均值为0,方差为1:(每一维特征值-该维的平均值)/该维的方差

  • 弹性回归(ElasticNet)

对损失函数引入L1正则和L2正则的混合项:


当特征非常多,甚至大于样本数量时,引入正则项可以免于过拟合,减小一些特征的权重,但会保留所有特征。模型太复杂会导致方差大,引入正则项可以降低复杂度(通过减小一些特征的权重),减小预测方差,但同时引入了偏差。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值