机器学习算法与Python实践(4)
来源:互联网 发布:知彼手机定位苹果 编辑:程序博客网 时间:2024/05/22 00:47
这一次的博客其实是接着上一次的,即对上一次博客的补充
首先,我们从缩减说起:
缩减方法
当数据的特征数高于样本数,或者特征之间高度相关时,会导致
缩减法,可以理解为对回归系数的大小施加约束后的LR,也可以看作是对一个模型增加偏差(模型预测值与数据之间的差异)的同时减少方差(模型之间的差异)。
一种缩减法是岭回归(L2),另一种是lasso法(L1),但由于计算复杂,一般用效果差不多但更容易实现的前向逐步回归法。下面针对这两种方法详细介绍。
注意在使用缩减法时,需要对特征作标准化处理,一般对于输入是,对输出是,使得每维特征具有相同的重要性。
1. 岭回归
岭回归实际上相当于有约束条件情况的最小二乘法回归,即回归系数为。惩罚的引入能够减少不重要的参数,从而更好滴理解数据。参数的选择,需要将原训练数据分成训练数据和测试数据,在训练数据上训练回归系数,然后在测试数据上测试性能,通过选取不同的来重复上述过程,最终选取使得预测误差最小的。
在进行特征选择时,一般有三种方式:
- 子集选择
- 收缩方式(Shrinkage method),又称为正则化(Regularization)。主要包括岭回归和lasso回归(后面会对此介绍)。
- 维数缩减
岭回归(Ridge Regression)是在平方误差的基础上增加正则项,如下:
通过确定
对
令其为0,可求得
关键代码如下:
### Ridge Regression ###def ridgeRegres(xMat, yMat, lam=0.2): xTx = xMat.T * xMat denom = xTx + lam*eye(shape(xMat)[1]) if linalg.det(denom) == 0.0: print "This matrix is singular, cannot do inverse" return ws = denom.I * (xMat.T*yMat) return wsdef ridgeTest(xArr, yArr): xMat = mat(xArr) xMeans = mean(xMat, 0) xVar = var(xMat, 0) xMat = (xMat-xMeans) / xVar yMat = mat(yArr).T yMean = mean(yMat, 0) yMat = yMat - yMean numTestPts = 30 wMat = zeros((numTestPts, shape(xMat)[1])) for ii in range(numTestPts): ws = ridgeRegres(xMat, yMat, exp(ii-10)) wMat[ii,:] = ws.T return wMat
逐步回归
关于逐步回归的部分在上一次已经整理过了,其代码部分放在一起使用即可(读取数据部分通用)
机器学习算法与Python实践(3) - 前向逐步回归
阅读全文
0 0
- 机器学习算法与Python实践(4)
- 机器学习算法与Python实践
- 机器学习算法与Python实践(1)
- 机器学习算法与Python实践(2)
- 机器学习算法与Python实践(3)
- 机器学习算法与Python实践(5)
- 机器学习算法与Python实践(6)
- 机器学习算法与Python实践(7)
- 机器学习算法与Python实践(8)
- 机器学习算法与Python实践(9)
- 机器学习算法与Python实践(10)
- 机器学习算法与Python实践(11)
- 机器学习算法与Python实践之支持向量机
- 机器学习算法与Python实践之支持向量机
- 机器学习算法与Python实践之支持向量机
- 机器学习算法和python实践
- Python机器学习实践与Kaggle实战
- 机器学习算法原理与编程实践
- 当字体超过时显示省略号
- Kaggle方案简介 | Understanding the Amazon from Space: 1st place
- python使用MFC创建窗口
- 思考力|《零秒思考》
- Bootstrap Search Suggest与php边输入边查询
- 机器学习算法与Python实践(4)
- 迭代法与开方求值
- Python使用Windows API创建窗口
- ImageLoder
- Python创建对话框
- python处理按钮消息
- 贝塞尔曲线扫盲
- 未处理NullReferenceException--未将对象引用设置到对象的实例
- JAVAWEB第二天 JS函数与变量