PCA
在使数据降维后得到的新数据的方差最大化,最大程度的保持原始数据的特征
以 m ∗ n m*n m∗n的数据降维到 m ∗ k m*k m∗k(n>k)为例
先求n中特征下,每种特征对应的均值:
x
ˉ
=
∑
i
=
1
n
x
i
n
\bar{x}=\frac{\sum_{i=1}^nx_i}{n}
xˉ=n∑i=1nxi
得到n个特征的平均值
然后计算协方差
协方差:
c
o
v
(
X
,
Y
)
=
∑
i
=
1
n
(
X
i
−
x
ˉ
)
(
Y
i
−
Y
ˉ
)
n
−
1
cov(X,Y)=\frac{\sum_{i=1}^n (X_i-\bar{x})(Y_i-\bar{Y})}{n-1}
cov(X,Y)=n−1∑i=1n(Xi−xˉ)(Yi−Yˉ)
得到一个n*n的斜方差矩阵
然后求协方差的特征向量和特征均值,python可以直接用函数求:
feaValue,feaVec=np.linalg.eig(covX)#covX是协方差矩阵,返回值分别是特征值和特征向量
求得的特征值由大到小的到前K项,再找取特征值对应的特征向量,得到一个n*k的矩阵,用此原始数据的矩阵乘新得到的矩阵就能的到降到K维的数据
LDA
PCA有时虽最大的保留的数据的原始特征,但有可能使容易区分的类别降维到不易区分的类别,所以有时用LDA会比PCA有效,使降维后的数据集容易分类
基本的思路是使降维的数据集同类的点的距离尽量近,而不同类的点的距离尽量远
以 n ∗ m n*m n∗m(n为特征数,m为样本的个数)(因后面的推导如果定义为m*n的话会出现我无法处理且看不懂的情况)的数据降维到 k ∗ m k*m k∗m(n>k)为例并假如原数据只有两类记为1类和2类,含有的样本数记为n1和n2
尴尬的情况:
s
2
=
∑
i
=
1
n
(
y
i
−
μ
j
2
)
(
y
i
−
μ
j
2
)
T
=
∑
i
=
1
n
(
x
i
w
−
μ
2
w
)
(
x
i
w
−
μ
2
w
)
T
=
∑
i
=
1
n
(
x
i
−
μ
2
)
w
w
T
(
x
i
−
μ
2
)
T
s_2=\sum_{i=1}^n (y_i-μ_j2)(y_i-μ_j2)^T=\sum_{i=1}^n(x_iw-μ_2w)(x_iw-μ_2w)^T=\sum_{i=1}^n(x_i-μ_2)ww^T(x_i-μ_2)^T
s2=i=1∑n(yi−μj2)(yi−μj2)T=i=1∑n(xiw−μ2w)(xiw−μ2w)T=i=1∑n(xi−μ2)wwT(xi−μ2)T
降维的公式:
y
=
w
T
x
y=w^Tx
y=wTx
降维前记为
x
x
x,降维后记为
y
y
y,w为n*k的矩阵
求每类样例的均值:
μ
1
=
∑
i
=
1
n
1
x
i
n
1
μ_1=\frac{\sum_{i=1}^{n_1} x_i}{n_1}
μ1=n1∑i=1n1xi
μ
2
=
∑
i
=
1
n
2
x
i
n
2
μ_2=\frac{\sum_{i=1}^{n2}x_i}{n_2}
μ2=n2∑i=1n2xi
得到两类的均值
降维后的每类样例的均值:
μ
j
1
=
∑
i
=
1
n
1
y
i
n
1
=
w
T
μ
1
μ_{j1}=\frac{\sum_{i=1}^{n1} y_i}{n_1}=w^Tμ_1
μj1=n1∑i=1n1yi=wTμ1
μ
j
2
=
∑
i
=
1
n
2
y
i
n
2
=
w
T
μ
2
μ_{j2}=\frac{\sum_{i=1}^{n2}y_i}{n_2}=w^Tμ_2
μj2=n2∑i=1n2yi=wTμ2
目标1:将降维后的各类样本的中心点的距离尽量远
Δ
μ
x
=
(
μ
j
1
−
μ
j
2
)
(
μ
j
1
−
μ
j
2
)
T
=
w
T
(
μ
1
−
μ
2
)
(
μ
1
−
μ
2
)
T
w
Δμ_x=(μ_{j1}-μ_{j2})(μ_{j1}-μ_{j2})^T=w^T(μ_1-μ_2)(μ_1-μ_2)^Tw
Δμx=(μj1−μj2)(μj1−μj2)T=wT(μ1−μ2)(μ1−μ2)Tw
目标2:降维后的相同类样本的数据点的距离应尽量近,即距离中心点的距离应当尽量近记为Δμ
Δ
μ
=
∑
i
=
1
n
(
y
i
−
μ
j
)
(
y
i
−
μ
j
)
T
n
Δμ=\frac{\sum_{i=1}^n (y_i-μ_j)(y_i-μ_j)^T}{n}
Δμ=n∑i=1n(yi−μj)(yi−μj)T
所以新的目标函数:
j
(
w
)
=
Δ
μ
x
s
1
2
+
s
2
2
j(w)=\frac{Δμ_x}{s_1^2+s_2^2}
j(w)=s12+s22Δμx
其中:
s
1
2
=
∑
i
=
1
n
(
y
i
−
μ
j
1
)
(
y
i
−
μ
j
1
)
T
=
∑
i
=
1
n
(
w
T
x
i
−
w
T
μ
1
)
(
w
T
x
i
−
w
T
μ
1
)
T
=
∑
i
=
1
n
w
T
(
x
i
−
μ
1
)
(
x
i
−
μ
1
)
T
w
s_1^2=\sum_{i=1}^n (y_i-μ_{j1})(y_i-μ_{j1})^T=\sum_{i=1}^n(w^Tx_i-w^Tμ_1)(w^Tx_i-w^Tμ_1)^T=\sum_{i=1}^nw^T(x_i-μ_1)(x_i-μ_1)^Tw
s12=i=1∑n(yi−μj1)(yi−μj1)T=i=1∑n(wTxi−wTμ1)(wTxi−wTμ1)T=i=1∑nwT(xi−μ1)(xi−μ1)Tw
s
2
2
=
∑
i
=
1
n
(
y
i
−
μ
j
2
)
(
y
i
−
μ
j
2
)
T
=
∑
i
=
1
n
(
w
T
x
i
−
w
T
μ
2
)
(
w
T
x
i
−
w
T
μ
2
)
T
=
∑
i
=
1
n
w
T
(
x
i
−
μ
2
)
(
x
i
−
μ
2
)
T
w
s_2^2=\sum_{i=1}^n (y_i-μ_{j2})(y_i-μ_{j2})^T=\sum_{i=1}^n(w^Tx_i-w^Tμ_2)(w^Tx_i-w^Tμ_2)^T=\sum_{i=1}^nw^T(x_i-μ_2)(x_i-μ_2)^Tw
s22=i=1∑n(yi−μj2)(yi−μj2)T=i=1∑n(wTxi−wTμ2)(wTxi−wTμ2)T=i=1∑nwT(xi−μ2)(xi−μ2)Tw
散列矩阵:
s
i
=
(
x
−
μ
i
)
(
x
−
μ
i
)
T
s_i=(x-μ_i)(x-μ_i)^T
si=(x−μi)(x−μi)T
类内散布矩阵:
s
w
=
s
1
+
s
2
s_w=s_1+s_2
sw=s1+s2
s
i
2
=
w
T
s
i
w
s_i^2=w^Ts_iw
si2=wTsiw
s
1
2
+
s
2
2
=
w
T
s
w
w
s_1^2+s_2^2=w^Ts_ww
s12+s22=wTsww
类外散布矩阵:
Δ
μ
x
=
w
T
s
B
w
Δμ_x=w^Ts_Bw
Δμx=wTsBw
所以最后的目标函数:
j
(
w
)
=
w
T
s
B
w
w
T
s
W
w
j(w)=\frac{w^Ts_Bw}{w^Ts_Ww}
j(w)=wTsWwwTsBw
因分子分母可任意取值,不妨让分母的长度为1
然后最大化目标函数
拉格朗日乘数法:
c
(
w
)
=
w
T
s
B
w
−
j
(
w
T
s
W
w
−
1
)
c(w)=w^Ts_Bw-j(w^Ts_Ww-1)
c(w)=wTsBw−j(wTsWw−1)
求导得:
s
B
w
=
j
s
W
w
s_Bw=js_Ww
sBw=jsWw
两边乘的逆得
s
W
−
1
s
B
w
=
j
w
s_W^-1s_Bw=jw
sW−1sBw=jw
此时w为的特征向量,j为特征值,利用PCA中求特征向量的方法就能求出w
LLE(局部线性嵌入)
LLE是一种非线性降维的方法,使降维后的数据较好的保持原有的流行结构
假设数据集为mn的矩阵(m为样本数,n为特征数)
将其降维为mb维的数据
目标:计算出样本点的局部重建权值矩阵w
步骤一
计算出每个样本点的k个邻近点,(这里可以使用knn算法)
步骤二
定义重构误差:
Δ
(
w
)
=
∑
i
=
1
n
∣
x
i
−
∑
j
=
1
k
w
i
j
x
j
∣
2
Δ(w)=\sum_{i=1}^n|x_i-\sum_{j=1}^kw_{ij}x_j|^2
Δ(w)=i=1∑n∣xi−j=1∑kwijxj∣2
局部协方差矩阵:
c
j
k
=
(
x
−
α
j
)
(
x
−
α
k
)
c_{jk}=(x-α_j)(x-α_k)
cjk=(x−αj)(x−αk)
得到一个k*k的方阵,其中x为一个特定的点
所以最小化并且满足
得到:
w
j
=
∑
n
=
1
k
c
j
n
−
1
∑
l
=
1
k
∑
m
=
1
k
c
l
m
−
1
w_j=\frac{\sum_{n=1}^k c_{jn}^-1}{\sum_{l=1}^k\sum_{m=1}^k c_{lm}^-1}
wj=∑l=1k∑m=1kclm−1∑n=1kcjn−1
对
w
j
w_j
wj的解释:
分母为局部协方差矩阵的所以元素的倒数的加和
分子的详细解释:
因协方差为
k
∗
k
k*k
k∗k的方阵,例如对于j为1时,
步骤三
对于样本点映射到低维空间后,应满足的映射条件:
m
i
n
j
(
y
)
=
=
∑
i
=
1
n
∣
y
i
−
∑
j
=
1
k
w
i
j
y
j
∣
2
minj(y)==\sum_{i=1}^n|y_i-\sum_{j=1}^kw_{ij}y_j|^2
minj(y)==i=1∑n∣yi−j=1∑kwijyj∣2
以上公式可以转换成为:
j
(
y
)
=
∑
i
=
1
n
∑
j
=
1
k
M
i
j
(
y
i
∗
y
j
)
j(y)=\sum_{i=1}^n\sum_{j=1}^kM_{ij}(y_i*y_j)
j(y)=i=1∑nj=1∑kMij(yi∗yj)
M
=
(
I
−
w
)
T
(
I
−
w
)
M=(I-w)^T(I-w)
M=(I−w)T(I−w) 为单位向量
和应满足的限制条件:(中心化处理),
最终得到等式
这里通过PCA中的方法求出特征值和特征向量和
然后将特征值由小到大排列,第一个特征值几乎接近为0,舍去,然后取第2到b+1的特征值对应的特征向量组成新的向量
新数据通过得到