1、大家都知道岭回归的基本原理如下:

模型看着很简单,把这个矩阵求出来就行了,相对于线性回归只是多了个KI(这里lambda不好打,打字时都用K替代)
2、线性回归公式:
![]()
3、因为从线性回归升级到岭回归,所以只是2计算的基础上添加KI计算
4、因为我用了仿真软件仿真了岭回归,所以已经知道K值(仿真软件一般取0~1),代进去即可。
可是发现我手码的代码死活和仿真软件得到的值不一致
4.1 经查询后发现原来变量需要标准化,这里是和线性回归第一个不同
通过查询后特征标准化公式如下:

然后得到的是标准化系数,还需要转化为原始系数,转换公式如下:

所以按照这个方法开始重新码重新
4.2 写完运行一半发现出错了,原来

标准差=0了,因为有个常数项全部是1,所以标准差肯定为0,所以常数项不需要标准化,这又是另外一个坑
4.3 运行OK后,发现程序的输出系数和仿真的系数怎么就不一样,在这里验证/查找矩阵的一堆运算,花费了很多时间,最终确定矩阵运算是没有问题的
4.4 考虑K也在0~1间,是不是那个X^T x X是不是也需要归一化?
又在错误的方向上给X^T x X 归一化半天,结果还是不对。
4.5 原来是给K进行归一化,按照这个方式进行:

修改代码测试,这次系数终于差不多一样了!!!!
5、岭回归是从线性回归加一个简单的KI项,但是处理数据的方法实际上已经天差地别了。
线性回归可以使用矩阵直接求出原始系数,岭回归不可以,需要进行多次矩阵数学变换才行
所以还是实践出真知啊
939

被折叠的 条评论
为什么被折叠?



