转自:http://blog.csdn.net/dsbatigol/article/details/9625211
AX=0
这是一个齐次线性方程组(一般的非齐次线性方程组AX=b其实也都可以化为齐次方程组的形式,所以比较普遍)
先要说明在非齐次方程组中,A到底有没有解析解,可以由增广矩阵来判断:
这是一个齐次线性方程组(一般的非齐次线性方程组AX=b其实也都可以化为齐次方程组的形式,所以比较普遍)
先要说明在非齐次方程组中,A到底有没有解析解,可以由增广矩阵来判断:
- r(A)<r(A | b) 方程组无解;
- r(A)=r(A | b) =n,方程组有唯一解;
- r(A)=r(A | b) <n,方程组无穷解;
- r(A)>r(A | b) 不可能,因为增广矩阵的秩大于等于系数矩阵的秩(在矩阵中加入一列,其秩只可能增大,不可能变小)。
而在齐次方程中(r(A | b) =r(A | 0)=r(A) ),根据A来分,只剩下了两种情况:
1.r(A)=未知数个数n(约束较强)
1.1.A是方阵
由克莱姆法则可知:
如果A是n*n的方阵而且r(A)=n,那么该方程组有唯一的零解。
1.2.A不是方阵,A是m×n的(m>n)
由另一个定理:齐次线性方程解空间维数 = n - r(A) 可知,该解空间维数为0, 也就是说该解空间只含有零向量。
2.r(A)<未知数个数n(约束不够)
这里A是不是方阵已经无所谓了,也没有什么法则可以用,就只分成一种情况。
由齐次线性方程组解空间维数 = n - r(A) >0,所以该齐次线性方程组有非零解,而且不唯一(自由度为 n - r(A))。
(多谢wereineky指出错误)
在我们做一些实际问题的时候,经常在 1.2(当然严格来说1.1也有可能啦)会卡住,这时实际上是没有真正的非零解析解的,因为约束太多了,没法都满足(零向量除外)。但是可以折中一下,每一个方程都满足个大概,这就要求最小二乘解。求取最小二乘解的方法一般使用SVD,即奇异值分解。
解空间维数与r(A)的关系的感性认识:
r(A)可以理解为一种约束条件的强弱的表现(约束的强弱不只是表面上的方程个数)。比如有一个方程组,每个方程都是一样的,那么其秩为1,方程的个数对约束毫无贡献。
继续看A的秩,也就是约束的个数是怎么影响解空间的维数的。
比如
x1 + x2 + x3 = 0
x1 + 2x2 + 3x3 = 0
r(A)=2,消去x1之后得到:
x2 + 2x3 = 0
x2或者x3一旦确定,其余的未知量就都随之确定了,所以自由度为1,所以解空间维数为1。
即:
如果 r(A)=c,那么c个方程一共最多可以消去c-1个未知数(比如满秩方阵,最后只留一个未知数,得到唯一解),于是得到的方程由n-(c-1)个未知数组成,该方程有 n-c个自由度,也就是说解空间的维数为 n-c。
上述过程在高斯消去法中表现:
假设消去过后的A如下:
x x x x x
0 x x x x
0 0 x x x
0 0 0 x x
0 0 0 0 0
那么最后一个非全0行的x个数为 num = n-r(A)+1,则可以看到,该行的自由度,决定了所有解的自由度(因为一旦改行确定,其他都确定了,自由区其实可以理解为用将多少变量固定,就能够确定整个矩阵),而该行的自由度=num-1=n-r(A)=齐次线性方程组解空间的维数,Bingo!
SVD与最小二乘解:
SVD:奇异值分解,是在A不为方阵时的对特征值分解的一种拓展。奇异值和特征值的重要意义相似,都是为了提取出矩阵的主要特征。
对于齐次线性方程 A*X =0;当A的秩大于列数时,就需要求解最小二乘解,在||X||=1的约束下,其最小二乘解为矩阵A'A最小特征值所对应的特征向量。
假设x为A'A的特征向量的情况下,为什么是最小的特征值对应的x能够是目标函数最小证明(多谢hukexin0000指出错误,这个约束太强,只能提供一点点感性认识,具体的证明请查阅相关教科书):
齐次线性方程组的最小二乘问题可以写成如下:
min ||Ax||
s.t ||x||=1
目标函数:||Ax|| = x'A'Ax = x'lamda x=lamda||x||=lamda,其中lamda是A'A的特征值。
于是可知,得到了A'A的最小特征值,就得到了最优值,而其最小特征值对应的特征向量就是最优解.
而对M进行SVD分解(*表示共轭转置):
求解:
求解方法有两种(matlab):
1.
2.
使用SVD分解矩阵A,[U S V] = svd(A); U 由 A*A'的特征向量组成,V 由 A'*A的特征向量组成,因此,奇异值矩阵S中最小的奇异值对应的V中的奇异向量即为最小二乘解。
对于超定方程(非齐次线性方程的一种)的最小二乘解的情况。A*X =b ;
两种方法其实是一个意思。
推荐资料:
这篇资料还是很不错的,讲述了SVD与PCA的关系,其中的推荐资料也很不错。
机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用
相关资源:
http://blog.csdn.net/zhangchaoyangsun/article/details/8470267 并行计算奇异值分解--Jacobi旋转