岭回归

对于样本数据的特征比数据样本点还多的数据我们就没有办法使用标准线性回归和局部加权线性回归来计算,因为没有办法对矩阵求逆。所以这一小节我们引入岭回归来处理这种数据,当然岭回归也可以处理普通的数据。回归系数的计算公式:
在这个公式中我们加入了一项: 进而就可以对矩阵求逆, 是用户指定的值,
是一个单位矩阵,通过引入该项可以减少不重要的参数。了解了公式我们就来分析一下代码:
def ridgeRegres(xMat,yMat,lam=0.2):
    xTx = xMat.T*xMat
    denom = xTx + eye(shape(xMat)[1])*lam
    if linalg.det(denom) == 0.0:
        print "This matrix is singular, cannot do inverse"
        return
    ws = denom.I * (xMat.T*yMat)
    return ws
    
def ridgeTest(xArr,yArr):
    xMat = mat(xArr); yMat=mat(yArr).T
    yMean = mean(yMat,0)
    yMat = yMat - yMean    
    #regularize X's
    xMeans = mean(xMat,0)   
    xVar = var(xMat,0)      
    xMat = (xMat - xMeans)/xVar
    numTestPts = 30
    wMat = zeros((numTestPts,shape(xMat)[1]))
    for i in range(numTestPts):
        ws = ridgeRegres(xMat,yMat,exp(i-10))
        wMat[i,:]=ws.T
    return wMat

第一个函数用于计算回归系数,就是上面公式的实现,输入参数分别为训练数据集和标签数据集。以及lam值,如果用户不指定就会默认为0.2.接下来分析第二个函数,首先为了能够岭回归和缩减技术首先要对特征做标准化处理。使每维的特征具有同等重要性。接下来要进行30次调用上面的函数求解回归系数,当然我们也可以自己定义调用次数。最后返回所有的回归系数,我们就可以在这些回归系数中挑选最好的。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值