这是一篇关于特征值和特征向量理解和计算的翻译文章。
原文地址:https://www.visiondummy.com/2014/03/eigenvalues-eigenvectors/
介绍
特征向量和特征值在计算机视觉和机器学习中有许多重要的应用,众所周知的例子是用于降维的 PCA(主成分分析)或用于人脸识别是特征脸,特征向量和特征值的一个有趣应用在我的另一篇有关误差椭圆的博文中提到。此外,特征值分解形成协方差矩阵几何解释的基础。在这篇文章中,我将简单的介绍这个数学概念,并且说明如何手动计算二维方形矩阵的特征值分解。
特征向量是一个特殊的向量,当在它上面应用线性变换时其方向保持不变。我们来看下面的图像,其中有三个向量被展示出来,绿色正方形表示施加到这三个向量上的线性变换。
在这种情况下变换仅仅是水平方向乘以因子 2 和垂直方向乘以因子 0.5,所以变换矩阵 $A$ 定义为:
$$ A = \left[ \begin{array} { l l } { 2 } & { 0 } \\ { 0 } & { 0.5 } \end{array} \right] $$
通过应用这个变换,向量 $\vec{v} = (x , y)$ 被缩放为 $\vec{v{\prime}}=A\vec{v} $。上图表明一些向量(以红色显示)的方向不受此线性变换的影响,这些向量被称为变换的特征向量,并且唯一的定义了方阵 $A$。这种独特的、确定性的关系正是这些向量被称为“特征向量”(Eigen 在德语意思是“特定的”)的原因。
通常,$A$ 矩阵的特征向量 $\vec{v}$ 满足下列式子:
$$ \begin{equation} A\vec{v}=\lambda\vec{v} \tag{1} \label{eq1} \end{equation}$$
其中 $\lambda$ 是所谓的“特征值”,它是一个标量值,这意味着,向量 $\vec{v}$ 上的线性变换 $A$ 完全由 $\lambda$ 定义。
我们可以重写($\ref{eq1}$)式为:
\begin{align}
\tag{2} \label{eq2}
\begin{split}
A\vec{v}-\lambda\vec{v} = 0\\
\Rightarrow\vec{v}(A-\lambda I)=0
\end{split}
\end{align}
其中 $I$ 是和矩阵 $A$ 有相同维数的单位矩阵。
此时,假定 $\vec{v}$ 不是零向量,那么等式($\ref{eq2}$)只能在 $(A-\lambda I)$ 不可逆的时候才能被定义,而如果一个方阵是不可逆的,这意味着它的行列式必须等于零,因此,要找到 $A$ 的特征向量,我们只需求解以下公式:
\begin{align}
Det(A-\lambda I)=0 \tag{3} \label{eq3}
\end{align}
在以下部分我们将通过解等式($\ref{eq3}$)来确定矩阵 $A$ 的特征向量和特征值。本例中的矩阵 $A$ 被定义为:
$$ A = \left[ \begin{matrix} { 2 } & { 3 } \\ { 2 } & { 1 } \end{matrix} \right] \tag{4} \label{eq4} $$
计算特征值
为了确定本例中的特征值,我们将等式($\ref{eq4}$)的矩阵 $A$ 代入到等式($\ref{eq3}$)中,得到:
$$ Det \left( \begin{matrix} { 2 – \lambda } & { 3 } \\ { 2 } & { 1 – \lambda } \end{matrix} \right) = 0 \tag{5} \label{eq5} $$
计算行列式:
\begin{align}
\tag{6} \label{eq6}
\begin{split}
& \quad {( 2 – \lambda ) ( 1 – \lambda ) – 6 = 0 } \\
& \Rightarrow {2 – 2 \lambda – \lambda + \lambda ^ { 2 } – 6 = 0 } \\
& \Rightarrow { \lambda ^ { 2 } – 3 \lambda – 4 = 0 }
\end{split}
\end{align}
为了解 $\lambda$ 的二次方程,我们找到判别式:
$$ D = b ^ { 2 } – 4 a c = ( – 3 ) ^ { 2 } – 4 * 1 * ( – 4 ) = 9 + 16 = 25 $$
由于判别式严格为正,这意味着对于 $\lambda$ 有两个不同的值:
\begin{align}
\tag{7} \label{eq7}
\begin{split}
\begin{array} { l }
{ \lambda _ { 1 } = \frac { – b – \sqrt { D } } { 2 a } = \frac { 3 – 5 } { 2 } = – 1 } \\
{ \lambda _ { 2 } = \frac { – b + \sqrt { D } } { 2 a } = \frac { 3 + 5 } { 2 } = 4 }
\end{array}
\end{split}
\end{align}
现在我们已经确定了两个特征值 $\lambda_1$ 和 $\lambda_2$。需要注意的是大小为 $N*N$ 的方阵总是具有 $N$ 个特征值,每一个特征值对应一个特征向量,特征值指定特征向量的大小。
计算第一个特征向量
现在,我们可以将等式($\ref{eq7}$)的特征值代入到等式($\ref{eq1}$)来确定特征向量,然后通过求解方程组得到特征向量。
我们首先对特征值 $\lambda_1$ 求解其对应的特征向量:
\begin{align}
\left[ \begin{array} { l } { 2 } & { 3 } \\ { 2 } & { 1 } \end{array} \right]
\left[ \begin{array} { l } { x _ { 11 } } \\ { x _ { 12 } } \end{array} \right]
= – 1
\left[ \begin{array} { l } { x _ { 11 } } \\ { x _ { 12 } } \end{array} \right]
\end{align}
由于这仅仅是方程组的矩阵符号,我们写出它等价形式的方程组:
\begin{align}
\tag{8} \label{eq8}
\left\{
\begin{array} { l }
{ 2 x _ { 11 } + 3 x _ { 12 } = – x _ { 11 } } \\
{ 2 x _ { 11 } + x _ { 12 } = – x _ { 12 } }
\end{array}
\right.
\end{align}
根据方程组第一个等式可以得到:
\begin{align}
\tag{9} \label{eq9}
x _ { 11 } = – x _ { 12 }
\end{align}
因为特征向量仅仅代表一个方向(相应特征值表示幅度),特征向量的所有标量倍数都是平行于该特征向量的向量,因此它们是等效的(如果我们对它做向量标准化,则它们是相等的)。为进一步求解上面的方程组,我们可以任意选择一个 $x_{11}$ 或 $x_{12}$ 的真实值,并用等式(\ref{eq9})来确定另一个。
对于这个例子,我们随意地选择 $x_{12}= 1$,进而得到 $x_{11}=-1$,因此,对应于特征值 $\lambda_1$ 的特征向量是:
\begin{align}
\tag{10} \label{eq10}
\vec{v_1} = \left[ \begin{matrix} { – 1 } \\ { 1 } \end{matrix} \right]
\end{align}
计算第二个特征向量
第二个特征向量的计算类似于第一特征向量。我们现在将 $\lambda_2 = 4$ 代入等式(\ref{eq1}),得到:
\begin{align}
\tag{11} \label{eq11}
\left[ \begin{matrix} { 2 } & { 3 } \\ { 2 } & { 1 } \end{matrix} \right]
\left[ \begin{matrix} { x _ { 21 } } \\ { x _ { 22 } } \end{matrix} \right]
= 4 * \left[ \begin{array} { l } { x _ { 21 } } \\ { x _ { 22 } } \end{array} \right]
\end{align}
写成方程组的形式,等价于:
\begin{align}
\tag{12} \label{eq12}
\left\{
\begin{array} { l }
{ 2 x _ { 21 } + 3 x _ { 22 } = 4 x _ { 21 } } \\
{ 2 x _ { 21 } + x _ { 22 } = 4 x _ { 22 } }
\end{array}
\right.
\end{align}
根据方程组第一个等式可以得到:
\begin{align}
\tag{13} \label{eq13}
x _ { 22 } = \frac { 3 } { 2 } x _ { 21 }
\end{align}
然后,我们任意地选择 $x_{21}= 2$,并找到 $x_{22}= 3$,因此,对应于特征值 $\lambda_2=4$ 的特征向量是:
\begin{align}
\tag{14}\label{eq14}
\vec{v_2} = \left[ \begin{array} { l } { 3 } \\ { 2 } \end{array} \right]
\end{align}
总结
在本文中,我们回顾了特征向量和特征值的理论概念。这些概念对于计算机视觉和机器学习中使用的许多技术都非常重要,例如通过 PCA 进行降维,或用 EigenFaces 进行脸部识别。
欢迎转载,转载请注明出处:蔓草札记 » 什么是特征值和特征向量?