背景
前提知识(线性代数、概率论)
- 特征值与特征向量
- 对称矩阵对角化、非负定矩阵
- 正交矩阵,矩阵的转置与逆
- 正交变换
- 协方差矩阵
引言
问题提出
在实际生活中,我们往往会用很多指标(又称属性、特征、因素)来尽可能的描述我们所要分析的对象,在数学上我们利用向量 X = ( x 1 , x 2 , . . . , x n ) X=(x_1,x_2,...,x_n) X=(x1,x2,...,xn)来表示拥有 n n n个特征的对象。假设我们要预测明天某只股票是跌还是涨,我们收集了这只股票一年内每一天的指标,比如当天开盘价、收盘价、前N天最高价、前N天最低价、前N天平均价、当天全国平均气温、当天全国人口出生数、当天全国人口死亡数等等一系列指标(为了说明问题,我这里举了一些影响不大的因素)。当然我们知道在这些指标中对研究对象的影响是不一样的,比如像平均气温、人口出生数与死亡数对股票涨跌影响弱,像开盘价与收盘价对股票涨跌影响强。所以我们能不能通过某种算法使得用更少的指标去描述股票涨跌这个现象,以便我们能够便利地进行数据处理?
问题解决
上文我们了解了每一个指标对股票涨跌的影响是不一样的,那我们能不能通过剔除掉那些对股票影响弱的指标来达到缩减指标的目的呢?答案是不能的,因为在我们收集指标时往往有些指标是比较“鸡肋”的:留下的话,感觉对股票涨跌影响不是很大,徒增数据处理压力;剔除掉,想想对股票的涨跌还是有一定的影响的。主成分分析正是很好的解决了这种问题,我们可以通过对这些指标一些线性组合 y i = a 1 i x 1 + a 2 i x 2 + . . . + a n i x n , 其 中 i = 1 , 2 , . . . , m y_i=a_{1i}x_1+a_{2i}x_2+...+a_{ni}x_n,其中i=1,2,...,m yi=a1ix1+a2ix2+...+anixn,其中i=1,2,...,m, m ≤ n m\leq n m≤n。最终我们就可以通过向量 Y = ( y 1 , y 2 , . . . , y m ) Y=(y_1,y_2,...,y_m) Y=(y1,y2,...,ym)这m个指标来描述股票涨跌这个现象,所以我们可知,主成分分析主要解决的问题就是求解组合后的指标 y i y_i yi,也就是求解 ( a 1 i , a 2 i , . . . , a n i ) 这 些 组 合 系 数 , 其 中 i = 1 , 2 , . . . , m (a_{1i},a_{2i},...,a_{ni})这些组合系数,其中i=1,2,...,m (a1i,a2i,...,ani)这些组合系数,其中i=1,2,...,m。
特征空间
在引言中我们知道股票涨跌现象可以用向量
X
=
(
x
1
,
x
2
,
.
.
.
,
x
n
)
X=(x_1,x_2,...,x_n)
X=(x1,x2,...,xn)来描述,这也构成了我们研究对象的特征空间。比如,下图就是一个n=2的特征空间:
这时,由
X
1
X_1
X1和
X
2
X_2
X2的两个坐标轴构成了一个二维特征空间
P
1
P_1
P1。图上的黑点代表我们收集的样本,通过特征
X
1
X_1
X1和
X
2
X_2
X2表达在此图上,所以样本可以由空间
P
1
P_1
P1来描述。我们从图中可以看出
X
1
X_1
X1和
X
2
X_2
X2这两个特征对样本的描述影响程度差不多,貌似这两个特征缺一不可。
细心的同学已经发现了上图中还有 F 1 F_1 F1和 F 2 F_2 F2两个坐标轴,构成了另一个二维特征空间 P 2 P_2 P2,所以样本也可以由空间 P 2 P_2 P2描述。在空间 P 2 P_2 P2上,样本的 F 2 F_2 F2特征大多分布在一个比较小的范围内,有大量的样本的 F 2 F_2 F2值是相同的,不能很好的表示样本,相反 F 1 F_1 F1特征分布在一个比较大范围,大部分的y1值是不相等的,能够很好的表示样本。(这句话不好理解,可以这样想:如果只取 F 2 F_2 F2特征来描述样本发现很多样本是一样的,对样本表示的信息少,不好体现样本之间的差异;相反只取 F 1 F_1 F1特征来描述样本会发现大部分样本是不一样的,对样本表示的信息多,更好地体现样本之间的差异)。
恩~~~ 可以暂停思考一下。接下来我们取出所有样本的 F 1 F_1 F1值形成一个数列,并对其计算方差 D 1 D_1 D1,对 F 2 F_2 F2值也进行如此操作计算出 D 2 D_2 D2.我们可以通过比较 D 1 D_1 D1与 D 2 D_2 D2的大小,来决定特征 F 1 F_1 F1与 F 2 F_2 F2对样本影响程度(表示的信息)的大小,因为方差就是表示一组数据的离散程度,所以计算方差是合理的。当样本的特征空间为 n n n时,我们也可以求出 D = ( D 1 , D 2 , . . . , D n ) D=(D_1,D_2,...,D_n) D=(D1,D2,...,Dn),对其进行排序,我们取出前 m m m大的方差对应的特征来描述样本,这也是我们的主成分分析的思想。现在问题在于特征 Y = ( y 1 , y 2 , . . . , y n ) Y=(y_1,y_2,...,y_n) Y=(y1,y2,...,yn)是如何求出来的。要是求出了 Y Y Y,问题也就迎刃而解了。
旋转变换
在求解
Y
Y
Y前,我们先来介绍下旋转变换。在图中,我们可以看出,空间
P
2
P_2
P2是可以通过空间
P
1
P_1
P1旋转变换得到的,并且这种坐标变换是正交变换的。变换公式如下:
[
f
1
f
2
]
=
U
′
X
+
b
=
[
c
o
s
θ
−
s
i
n
θ
s
i
n
θ
c
o
s
θ
]
[
x
1
x
2
]
\begin{bmatrix}f_1\\f_2\\\end{bmatrix}=U' X+b=\begin{bmatrix}cos\theta&-sin\theta\\sin\theta&cos\theta\\\end{bmatrix}\begin{bmatrix}x_1\\x_2\\\end{bmatrix}
[f1f2]=U′X+b=[cosθsinθ−sinθcosθ][x1x2]
其中
U
′
=
[
c
o
s
θ
s
i
n
θ
−
s
i
n
θ
c
o
s
θ
]
U'=\begin{bmatrix}cos\theta&sin\theta\\-sin\theta&cos\theta\\\end{bmatrix}
U′=[cosθ−sinθsinθcosθ]为旋转矩阵,并且是正交矩阵,即
U
U
′
=
I
,
I
UU'=I,I
UU′=I,I称之为单位矩阵.
[
b
1
2
2
]
\begin{bmatrix}b_1\\2_2\\\end{bmatrix}
[b122]为位移矩阵。
主成分分析计算
变量假设
向量
X
=
(
x
1
,
x
2
,
.
.
.
,
x
n
)
X=(x_1,x_2,...,x_n)
X=(x1,x2,...,xn),其期望与协方差阵分别为
μ
=
E
(
X
)
,
Σ
=
D
(
X
)
\mu=E(X),\Sigma=D(X)
μ=E(X),Σ=D(X)
线性变换:
y
i
=
a
1
i
x
1
+
a
2
i
x
2
+
.
.
.
+
a
n
i
x
n
=
A
i
′
X
,
i
=
1
,
2
,
.
.
.
m
y_i=a_{1i}x_1+a_{2i}x_2+...+a_{ni}x_n=A'_iX,i=1,2,...m
yi=a1ix1+a2ix2+...+anixn=Ai′X,i=1,2,...m
矩阵变换:
Y
=
A
′
X
,
其
中
Y
=
(
y
1
,
y
2
,
.
.
.
,
y
m
)
′
,
A
=
(
A
1
,
A
2
,
.
.
.
,
A
m
)
Y=A'X,其中Y=(y_1,y_2,...,y_m)',A=(A_1,A_2,...,A_m)
Y=A′X,其中Y=(y1,y2,...,ym)′,A=(A1,A2,...,Am)
算法步骤
(1)求解向量
X
X
X的协方差
Σ
\Sigma
Σ.
(2)求解
Σ
\Sigma
Σ的特征值
λ
=
(
λ
1
,
λ
2
,
.
.
.
,
λ
m
)
,
其
中
λ
1
,
λ
2
,
.
.
.
,
λ
m
都
是
Σ
\lambda=(\lambda_1,\lambda_2,...,\lambda_m),其中\lambda_1,\lambda_2,...,\lambda_m都是\Sigma
λ=(λ1,λ2,...,λm),其中λ1,λ2,...,λm都是Σ矩阵的特征值,并且是依大至小排序。
(3)求解
λ
i
\lambda_i
λi对应的单位化特征向量
A
i
A_i
Ai.
(4)求解
Y
i
=
A
i
′
X
,
其
中
i
=
1
,
2
,
.
.
.
,
m
。
Y
i
Y_i=A'_iX,其中i=1,2,...,m。Y_i
Yi=Ai′X,其中i=1,2,...,m。Yi称为第
i
i
i主成分,其贡献率为
ϕ
k
=
λ
k
/
∑
k
=
1
m
λ
k
\phi_k=\lambda_k/{\sum_{k=1}^m\lambda_k}
ϕk=λk/∑k=1mλk,贡献率表示每个主成分对样本的表示程度,一般前几个主成分贡献率之和可以达到70%以上,故往后的主成分可以忽略。