一、一般线性回归遇到的问题

在处理复杂的数据的回归问题时,普通的线性回归会遇到一些问题,主要表现在:

  • 预测精度:这里要处理好这样一对为题,即样本的数量和特征的数量

    • 时,最小二乘回归会有较小的方差
    • 时,容易产生过拟合
    • 时,最小二乘回归得不到有意义的结果
  • 模型的解释能力:如果模型中的特征之间有相互关系,这样会增加模型的复杂程度,并且对整个模型的解释能力并没有提高,这时,我们就要进行特征选择。

以上的这些问题,主要就是表现在模型的方差和偏差问题上,这样的关系可以通过下图说明:

(摘自:机器学习实战)

方差指的是模型之间的差异,而偏差指的是模型预测值和数据之间的差异。我们需要找到方差和偏差的折中。

二、岭回归的概念

在进行特征选择时,一般有三种方式:

  • 子集选择
  • 收缩方式(Shrinkage method),又称为正则化(Regularization)。主要包括岭回归个lasso回归。
  • 维数缩减

岭回归(Ridge Regression)是在平方误差的基础上增加正则项

,

通过确定的值可以使得在方差和偏差之间达到平衡:随着的增大,模型方差减小而偏差增大。

求导,结果为

令其为0,可求得的值:

三、实验的过程

我们去探讨一下取不同的对整个模型的影响。

MATLAB代码

主函数

  1. %% 岭回归(Ridge Regression)
  2. %导入数据
  3. data = load('abalone.txt');
  4. [m,n] = size(data);
  5. dataX = data(:,1:8);%特征
  6. dataY = data(:,9);%标签
  7. %标准化
  8. yMeans = mean(dataY);
  9. for i = 1:m
  10. yMat(i,:) = dataY(i,:)-yMeans;
  11. end
  12. xMeans = mean(dataX);
  13. xVars = var(dataX);
  14. for i = 1:m
  15. xMat(i,:) = (dataX(i,:) - xMeans)./xVars;
  16. end
  17. % 运算30次
  18. testNum = 30;
  19. weights = zeros(testNum, n-1);
  20. for i = 1:testNum
  21. w = ridgeRegression(xMat, yMat, exp(i-10));
  22. weights(i,:) = w';
  23. end
  24. % 画出随着参数lam
  25. hold on
  26. axis([-9 20 -1.0 2.5]);
  27. xlabel log(lam);
  28. ylabel weights;
  29. for i = 1:n-1
  30. x = -9:20;
  31. y(1,:) = weights(:,i)';
  32. plot(x,y);
  33. end

岭回归求回归系数的函数

    1. function [ w ] = ridgeRegression( x, y, lam )
    2. xTx = x'*x;
    3. [m,n] = size(xTx);
    4. temp = xTx + eye(m,n)*lam;
    5. if det(temp) == 0
    6. disp('This matrix is singular, cannot do inverse');
    7. end
    8. w = temp^(-1)*x'*y;
    9. end

http://blog.csdn.net/google19890102/article/details/27228279

数值计算方法的“稳定性”是指在计算过程中舍入误差是可以控制的。

对于有些矩阵,矩阵中某个元素的一个很小的变动,会引起最后计算结果误差很大,这种矩阵称为“病态矩阵”。有些时候不正确的计算方法也会使一个正常的矩阵在运算中表现出病态。对于高斯消去法来说,如果主元(即对角线上的元素)上的元素很小,在计算时就会表现出病态的特征。

回归分析中常用的最小二乘法是一种无偏估计。

当X列满秩时,有

X+表示X的广义逆(或叫伪逆)。

当X不是列满秩,或者某些列之间的线性相关性比较大时,XTX的行列式接近于0,即XTX接近于奇异,计算(XTX)-1时误差会很大。此时传统的最小二乘法缺乏稳定性与可靠性。

岭回归是对最小二乘回归的一种补充,它损失了无偏性,来换取高的数值稳定性,从而得到较高的计算精度。

当XTX的行列式接近于0时,我们将其主对角元素都加上一个数k,可以使矩阵为奇异的风险大降低。于是:

     (I是单位矩阵)

随着k的增大,B(k)中各元素bi(k)的绝对值均趋于不断变小,它们相对于正确值bi的偏差也越来越大。k趋于无穷大时,B(k)趋于0。b(k)随k的改变而变化的轨迹,就称为岭迹。实际计算中可选非常多的k值,做出一个岭迹图,看看这个图在取哪个值的时候变稳定了,那就确定k值了。

X不满足列满秩,换句话就是说样本向量之间具有高度的相关性(如果每一列是一个向量的话)。遇到列向量相关的情形,岭回归是一种处理方法,也可以用主成分分析PCA来进行降维。

http://www.cnblogs.com/zhangchaoyang 作者:Orisun

岭回归(Ridge Regression)的更多相关文章

  1. Jordan Lecture Note-4: Linear & Ridge Regression

    Linear & Ridge Regression 对于$n$个数据$\{(x_1,y_1),(x_2,y_2),\cdots,(x_n,y_n)\},x_i\in\mathbb{R}^d,y ...

  2. L1,L2范数和正则化 到lasso ridge regression

    一.范数 L1.L2这种在机器学习方面叫做正则化,统计学领域的人喊她惩罚项,数学界会喊她范数. L0范数  表示向量xx中非零元素的个数. L1范数  表示向量中非零元素的绝对值之和. L2范数  表 ...

  3. 在线场景感知:图像稀疏表示—ScSPM和LLC总结(以及lasso族、岭回归)

    前言: 场景感知其实不分三维场景和二维场景,可以使用通用的方法,不同之处在于数据的形式,以及导致前期特征提取及后期在线场景分割过程.场景感知即是场景语义分析问题,即分析场景中物体的特征组合与相应场景的 ...

  4. Ridge Regression(岭回归)

    Ridge Regression岭回归 数值计算方法的"稳定性"是指在计算过程中舍入误差是可以控制的. 对于有些矩阵,矩阵中某个元素的一个很小的变动,会引起最后计算结果误差很大,这 ...

  5. scikit-learn中的岭回归(Ridge Regression)与Lasso回归

    一.岭回归模型 岭回归其实就是在普通最小二乘法回归(ordinary least squares regression)的基础上,加入了正则化参数λ. 二.如何调用 class sklearn.lin ...

  6. 机器学习:模型泛化(岭回归:Ridge Regression)

    一.基础理解 模型正则化(Regularization) # 有多种操作方差,岭回归只是其中一种方式: 功能:通过限制超参数大小,解决过拟合或者模型含有的巨大的方差误差的问题: 影响拟合曲线的两个因子 ...

  7. 线性回归——lasso回归和岭回归(ridge regression)

    目录 线性回归--最小二乘 Lasso回归和岭回归 为什么 lasso 更容易使部分权重变为 0 而 ridge 不行? References 线性回归很简单,用线性函数拟合数据,用 mean squ ...

  8. Sklearn库例子3:分类——岭回归分类(Ridge Regression )例子

    为了解决数据的特征比样本点还多的情况,统计学家引入了岭回归. 岭回归通过施加一个惩罚系数的大小解决了一些普通最小二乘的问题.回归系数最大限度地减少了一个惩罚的误差平方和. 这里是一个复杂的参数,用来控 ...

  9. 机器学习方法:回归(二):稀疏与正则约束ridge regression,Lasso

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. "机器学习方法"系列,我本着开放与共享(open and share)的精神撰写,目的是 ...

随机推荐

  1. C程序设计语言习题(3-3)

    编写函数expand(s1,s2), 将字符串s1中类似于a-z一类的速记符号在字符串s2中扩展为等价的完整列表abc……xyz.该函数可以处理大小写字母和数字,并可以处理a-b-c.a-z0-9与a ...

  2. WCF之HTTPS传输WebConfig配置

    <system.serviceModel> <client> <endpoint address="https://evitest.1010bao.com:88 ...

  3. mongodb的学习笔记一(集合和文档的增删改查)

    1数据库的增删改查 一.增加一个数据库: use blog-----切换到指定的数据库,如果数据库不存在,则自动创建该数据库(新建的数据库,如果没有存储对应的集合,是不会显示出来的) 二.删除一个数据 ...

  4. CONVERT(varchar(10), getdate(), 120 )中数字参数用法

    这是一个mssql数据库的函数,Convert函数的作用,是进行数据类型的转换.而您所问的这个convert(char(20),openDate,120)则是对日期字段,进行格式化转换成字符格式的函数 ...

  5. PAT-GPLT L1-039 - 古风排版 - [字符串输入输出]

    题目链接:https://www.patest.cn/contests/gplt/L1-039 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standar ...

  6. Oracle管理监控之如何对数据库进行监控检查

    oracle自动工作负载库(AWR):采集与性能相关的统计数据,并从统计的数据中导出性能量度,以跟踪数据库潜在的问题. 如何生成oracle数据库的自动负载库报告. 手工生成一份oracle数据库的快 ...

  7. 使用Maven导出项目依赖的jar包

    步骤1.进入项目目录(有pom.xml的目录) 2.创建存放导出jar依赖包的目录 3.地址栏输入cmd,回车 4.输入导出命令,回车mvn dependency:copy-dependencies  ...

  8. pro 图层 叹号

    同事遇到问题,后来他自己探索解决了~~大致记录如下 pro1.4中打开mxd,部分图层前显示叹号.根据arcmap的经验,点击叹号去修复,结果显示 不支持类型数据. 后解决办法:新建pro 的proj ...

  9. JMeter(十)-正则表达式关联

    jmeter中,接口自动化的关键在于参数关联.比如需要登录的接口,如何调用登录口令?一个增删改查的闭环,如何将接口参数上下传递?下面就以实际的例子来仔细说一说 1:登录接口 这里有一个实际的登录接口, ...

  10. mysql union出错: "Every derived table must have its own alias"

    SELECT count(*) from (SELECT province_code as area_id, count(*) from t_cas_rural_selected GROUP BY p ...