幂迭代法求特征值和特征向量

幂迭代法求第k大的特征值和特征向量

数学表述

设矩阵A
\[
A = \left[ \begin{matrix}
X_{11}&\ldots&X_{1n} \newline
X_{21} & \ldots& X_{2n} \newline
&\vdots& \newline
X_{n1}&\ldots &X_{nn} \newline
\end{matrix} \right]
\]
求其最大特征值对应的特征向量\(b_k = [v_1,v_2,\ldots,v_n]^T\):
\[b_{k+1} = \frac{Ab_k}{||Ab_k ||}..........(1)\]

证明:见英文wiki Power_iteration

代码:

import numpy as np
def power_iteration(A, num_simulations: int):
    # Ideally choose a random vector
    # To decrease the chance that our vector
    # Is orthogonal to the eigenvector
    b_k = np.random.rand(A.shape[1])

    for _ in range(num_simulations):
        # calculate the matrix-by-vector product Ab
        b_k1 = np.dot(A, b_k)

        # calculate the norm
        b_k1_norm = np.linalg.norm(b_k1)

        # re normalize the vector
        b_k = b_k1 / b_k1_norm

    return b_k

例子

\[
A = \left[ \begin{matrix}
2&1\newline
1&2\newline
\end{matrix} \right]
\]

求其特征值:
\[
|A-\lambda I| = \left| \begin{matrix}
2-\lambda &1\newline
1 &2-\lambda\newline
\end{matrix} \right| = 3 - 4\lambda + \lambda^2
\]
求得最大特征值\(\lambda_2 = 3\),另一特征值\(\lambda_1 = 1\)
\(\lambda_2 = 3\) 时:
\[
|(A-\lambda I)V| = 0
\]

\[
(A-3I)V = \left[ \begin{array} {cccc}
-1 &1\newline
1 &-1\newline
\end{array} \right] \left[ \begin{array} {cccc}
v_1\newline
v_2\newline
\end{array} \right] = \left[ \begin{array} {cccc}
0\newline
0\newline
\end{array} \right]
\]

求得\(v_1 = v_2\),归一化后,\(V_{\lambda=3} = [0.707,0.707]^T\)

验证代码:

A = np.array([[2,1],[1,2]])
V = power_iteration(A, 100).reshape(1,-1)
V

array([[0.70710678, 0.70710678]])

求得特征向量后,特征值
\[
\lambda = VAV^T........(2)
\]
代码

lbd = np.dot(V,np.dot(A,V.T))
lbd 

array([[3.]])

扩展

求次大特征向量与特征值:
\[
B = A - \frac{\lambda}{||V||^2}V^TV ........(3)
\]

\[
b_{k+1}' = \frac{Bb_k'}{||Bb_k' ||} ...........(4)
\]

代码

B = A - lbd / np.linalg.norm(V)**2 * np.dot(V.T,V)
V_2 = power_iteration(B, 100)
lbd1 = np.dot(V_2.T,np.dot(B,V_2))
lbd1

1.0000000000000002

以此类推,我们可以得到任意第k大特征值。这在很多机器学习方法中,取前k重要特征有着重要的作用。
欢迎访问个人博客。转载请注明出处。

原文地址:https://www.cnblogs.com/fahaizhong/p/12240051.html

时间: 2024-08-29 14:44:07

幂迭代法求特征值和特征向量的相关文章

幂迭代法应用:pivotMDS--大图数据的稀疏化布局

论文解读 首先pivotMDS是通过p个锚点,做p次单源最短路,得到一个n*p的\(d_{ij}\)矩阵.通过这样一个n*p\(d_{ij}\)计算得到一个C矩阵,\(C \in R^{n\times k}\). C矩阵计算方式: \[ \begin{equation} C_{ij} = -\frac{1}{2} (\delta_{ij}^2 - \frac{1}{n} \sum_{r=1}^{n}\delta_{rj}^2 - \frac{1}{k} \sum_{s=1}^{k}\delta_

矩阵的特征值和特征向量的雅克比算法C/C++实现

矩阵的特征值和特征向量是线性代数以及矩阵论中很重要的一个概念.在遥感领域也是经经常使用到.比方多光谱以及高光谱图像的主成分分析要求解波段间协方差矩阵或者相关系数矩阵的特征值和特征向量. 依据普通线性代数中的概念,特征值和特征向量能够用传统的方法求得,可是实际项目中一般都是用数值分析的方法来计算,这里介绍一下雅可比迭代法求解特征值和特征向量. 雅克比方法用于求实对称阵的所有特征值.特征向量. 对于实对称阵 A,必有正交阵 U.使 U TA U = D. 当中 D 是对角阵,其主对角线元 li 是

特征值、特征向量、相似矩阵,矩阵对角化的意义

1.相似矩阵 在线性代数中,相似矩阵是指存在相似关系的矩阵.设A,B为n阶矩阵,如果有n阶可逆矩阵P存在,使得P^(-1)AP=B,则称矩阵A与B相似,记为A~B 相似矩阵有以下性质: 对于 设A,B和C是任意同阶方阵,则有: (1)反身性:A~ A (2)对称性:若A~ B,则 B~ A (3)传递性:若A~ B,B~ C,则A~ C (4)若A~ B,则r(A)=r(B),|A|=|B|,tr(A)=tr(B). (5)若A~ B,且A可逆,则B也可逆,且B~ A. (6)若A~ B,则A与

雅可比算法求矩阵的特征值和特征向量

目的 求一个实对称矩阵的所有特征值和特征向量. 前置知识 对于一个实对称矩阵\(A\),必存在对角阵\(D\)和正交阵\(U\)满足\[D=U^TAU\]\(D\)的对角线元素为\(A\)的特征值,\(U\)的列向量为\(A\)的特征向量. 定义\(n\)阶旋转矩阵\[G(p,q,\theta)= \begin{bmatrix} 1 & & & & & \cdots& & & & & 0\ &\ddots &

特征值和特征向量的几何意义、计算及其性质(一个变换(或者说矩阵)的特征向量就是这样一种向量,它经过这种特定的变换后保持方向不变,只是进行长度上的伸缩而已)

  对于任意一个矩阵,不同特征值对应的特征向量线性无关. 对于实对称矩阵或埃尔米特矩阵来说,不同特征值对应的特征向量必定正交(相互垂直).   一.特征值和特征向量的几何意义 特征值和特征向量确实有很明确的几何意义,矩阵(既然讨论特征向量的问题,当然是方阵,这里不讨论广义特征向量的概念,就是一般的特征向量)乘以一个向量的结果仍是同维数的一个向量.因此,矩阵乘法对应了一个变换,把一个向量变成同维数的另一个向量. 那么变换的效果是什么呢?这当然与方阵的构造有密切的关系,比如可以取适当的二维方阵,使得

利用QR算法求解矩阵的特征值和特征向量

利用QR算法求解矩阵的特征值和特征向量 为了求解一般矩阵(不是那种幼稚到shi的2 x 2矩阵)的特征值. 根据定义的话,很可能需要求解高阶方程... 这明显是个坑...高阶方程你肿么破... 折腾了好久 1.我要求特征值和特征向量. 2.找到一种算法QR分解矩阵求解特征值 3.QR矩阵分解需要Gram-schimidt正交化分解 有一种很明显的感觉,往往在现在很难有 很系统 很深入 的学习某一个学科的某一门知识. 往往学的时候"靠,学这东西有什么用""学了这么久,也不知道怎么用,不想学" 到后

特征值与特征向量的求法

设A为n阶方阵,如果数“ ”和n维列向量x使得关系式 成立,则称 为方阵A的特征值,非零向量x称为A对应于特征值“ ”的特征向量. 详见1.3.5和1.3.6节:特征值分解问题. 例1-89  求矩阵 的特征值和特征向量 解: >>A=[-2  1  1;0  2  0;-4  1  3]; >>[V,D]=eig(A) 结果显示: V = -0.7071   -0.2425    0.3015 0          0    0.9045 -0.7071   -0.9701  

好文!特征值和特征向量的几何和物理意义 【转载东山狼的blog】

我们知道,矩阵乘法对应了一个变换,是把任意一个向量变成另一个方向或长度都大多不同的新向量.在这个变换的过程中,原向量主要发生旋转.伸缩的变化.如果矩阵对某一个向量或某些向量只发生伸缩变换,不对这些向量产生旋转的效果,那么这些向量就称为这个矩阵的特征向量,伸缩的比例就是特征值. 实际上,上述的一段话既讲了矩阵变换特征值及特征向量的几何意义(图形变换)也讲了其物理含义.物理的含义就是运动的图景:特征向量在一个矩阵的作用下作伸缩运动,伸缩的幅度由特征值确定.特征值大于1,所有属于此特征值的特征向量身形

牛顿迭代法求Logistic回归

接着上次的一篇文章:http://blog.csdn.net/acdreamers/article/details/27365941 在上次这篇文章中,对于Logistic回归问题,我们已经写出它的最大似然函数,现在来求最大似然估计.所以对似 然函数求偏导数,得到了个方程,即 由于我们只要根据这个方程解出所有的即可,但是这不是一件容易的事,还有Logistic回归求的是最大似 然估计,我们在多元函数求极值问题中也说过,导数等于零的点可能是极大值,极小值或者非极值.所以还要靠一个 叫Hessian