A Tutorial on the SWEEP Operator–读书笔记

原创 2015年07月08日 14:53:35

算法原理

对线性回归的最小二乘解,涉及到求矩阵的逆(XTX)1
1.原始的矩阵求逆的方法–Gauss Jordan消去法,使用计算机来求解时,需要开辟另一个内存,存放变化时的右矩阵A1.
2.sweep算法对高斯约旦消去法的一种改进,它可以节省存储空间,不需要开辟内存单独存放右矩阵。下面使用三阶例子来说明:

(1)对于矩阵A,其扩展矩阵[A|I]
对于矩阵
(2)使用高斯约旦消去法,当左边的矩阵A变为单位矩阵时,右边就得到原来左边矩阵的逆矩阵。如果第1步变第1列为基向量,得
这里写图片描述
(3)当然,第1步不一定要变第1列为基向量,如果变第2列为基向量得
这里写图片描述

可以看到,不论变哪列都有如下结论:

1.当左矩阵A中的某些列未变成基向量时,右矩阵相应列的基向量形式不变。即左右两矩阵中基向量的总数恒为m,并构成一个单位矩阵。

2.左矩阵的第k列变成基向量后,右矩阵第k列才变成非基向量形式,并且该列除第k个元素为1/a(kk)外,其他元素与左矩阵的第k行相差一个符号。

由消去过程得知,当左矩阵的某些列一旦被变成基向量后,就不再起实际作用。为节省计算机的存储单元,左边单位矩阵的基向量不再存储,而把消去过程中右边刚要出现的非基向量放到做左矩阵刚变成基向量的那列位置上,并且这列元素与左矩阵的其他元素一样参加其后不运算。

其后各步消去也做类似处理,sweep变换公式:(设a(kk)不为零)

这里写图片描述

总结:对于传统的解方程问题,最原始的方法是高斯消去法,但是
sweep算法,与高斯算法相比,所需的内存缩小一半(忽略掉了一半的基向量),并且在线性回归模型中,可以顺带求出最小二乘解的误差和,用来评判模型的可靠性。

在线性回归中的应用

使用sweep算法不仅可以求逆矩阵,在线性回归模型

Xβ=Y
中,可以顺手把回归参数β和ESS和一起求了。
我们知道.如果XTX可逆,即X列满秩:
最小二乘估计 β=(XTX)1XTY
ESS=e22=YXβ22=YTYβTXTY
现在就把矩阵的增广形式写成如下形式,
这里写图片描述
用adjust算法将左边的列转化为基向量,sweep相当于在这个基础上交换了列(右边的单位矩阵)的顺序
这里写图片描述

这里ESS就是
这里写图片描述

此外还可以计算两组变量的偏相关系数:
这里写图片描述
右下角的矩阵就是

背景知识

1.线性回归以及最小二乘

2.矩阵基础知识

酉矩阵:正交阵在复数空间的拓展。
Hermite矩阵:对称矩阵在复数空间的拓展。
DOOLITTLE:就是LU分解,即A=LU,L下三角阵(对角线上为1),U上三角阵,应用于求解线性方程组AX=b,可将之拆分为两个容易求解的方程UX=Y,LY=b

3.广义逆矩阵跟线性回归的关系?

广义逆矩阵:
维基百科:
1.)AAgA=A
2.)AgAAg=Ag
3.)(AAg)T=AAg
4.)(AgA)T=AgA.
几类常用的广义逆矩阵:
If Agsatisfies condition (1.), it is a generalized inverse of A。—本文中的Ag1
if it satisfies conditions (1.2) it is a generalized reflexive inverse of A。—本文中的Ag2
if it satisfies all 4 conditions, then it is a Moore–Penrose pseudoinverse of A.

我们知道,对于线性回归模型:

Xβ=Y
,要估计其参数,最常用的方法就是LSE,也就是以下问题:
minβYXβ

1.如果Xβ=Y是相容的,则随便一个解都是LSE。
2.如果不相容,
定理:β是LSE的充要条件是,βXTXβ=XTY的解。
根据这个定理,上面优化问题的解可以直接写出:
- a.如果XTX可逆,即X列满秩:
- β=(XTX)1XTY

b.如果XTX有等于或者有接近于零的特征值,这时设计阵X是病态的。这是因为列向量间存在复共线性,在统计中常用的解决办法有岭回归和主成分分析PCA。

定理:这个时候最小二乘解存在,并且不是唯一的,
反证之:若β0是该模型的最小二乘解,由于XTX的核空间Ker(XTX)非空,则{β0+y|yKer(XTX)}都是最小二乘解。

这时,那么怎样求XTXβ=XTY的解呢?这时就用到了广义逆,

版权声明:本文为博主原创文章,未经博主允许不得转载。

C++读书笔记之重载双目运算符 Cplusplus overload binary operator

Overloading binary operators You overload a binary unary operator with either a nonstatic member ...

C++读书笔记之重载赋值运算符 overload assignment operator

#include #include using namespace std; class Internet { public: Internet(char *name,char ...

读书笔记《Effective C++》条款11:令operator=中处理”自我赋值“

”自我赋值“发生在对象被赋值给自己时

Effective C++读书笔记之十一:在operator=中处理“自我赋值”

Item 11:Handle assigment to self in operator =

读书笔记:Tutorial of React.JS

原文链接 React is all about modular, composable components. - In React, components should always re...

PyQt4 tutorial读书笔记(2)

Statusbar、Menus and toolbars in PyQt4英文参考:http://zetcode.com/gui/pyqt4/menusandtoolbars/ 把三者整合到一起的代...

PyQt4 tutorial读书笔记(8)-- custom widgets自定义控件

==自定义控件可以使用该工具箱提供的绘图工具。有两种基本的可能性:一个程序员可以修改或增强现有的控件或他可以从头创建一个自定义控件。Burning Widget实现代码:import sys from...

PyQt4 tutorial读书笔记(1)基础篇

PyQt4 tutorial链接:http://zetcode.com/gui/pyqt4/英文版的,看着也不难,实例举的简单易懂,很不错。简易点记录一下。1、Every PyQt4 applicat...

pyGTK_读书笔记_Tutorial Chapter 5&6_Widget Overview and Button Widget

在pyGTK中使用部件的通用步骤: 1, 利用gtk.*创建一个部件对象; 2, 将我们需要使用的signal和event关联到相应的handler; 3, 配置部件的属性; 4, 调用gtk...

C++ Primer 读书笔记 – 第七章

C++ Primer 读书笔记 – 第七章 分类: C++ pirmer 读书笔记2010-09-20 11:11 79人阅读 评论(0) 收藏 举报 读书c++编译器functi...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:A Tutorial on the SWEEP Operator–读书笔记
举报原因:
原因补充:

(最多只允许输入30个字)