几种数据降维

PCA

在使数据降维后得到的新数据的方差最大化,最大程度的保持原始数据的特征

m ∗ n m*n mn的数据降维到 m ∗ k m*k mk(n>k)为例

先求n中特征下,每种特征对应的均值:
x ˉ = ∑ i = 1 n x i n \bar{x}=\frac{\sum_{i=1}^nx_i}{n} xˉ=ni=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)=n1i=1n(Xixˉ)(YiYˉ)
得到一个n*n的斜方差矩阵
然后求协方差的特征向量和特征均值,python可以直接用函数求:

feaValue,feaVec=np.linalg.eig(covX)#covX是协方差矩阵,返回值分别是特征值和特征向量

求得的特征值由大到小的到前K项,再找取特征值对应的特征向量,得到一个n*k的矩阵,用此原始数据的矩阵乘新得到的矩阵就能的到降到K维的数据

LDA

PCA有时虽最大的保留的数据的原始特征,但有可能使容易区分的类别降维到不易区分的类别,所以有时用LDA会比PCA有效,使降维后的数据集容易分类
基本的思路是使降维的数据集同类的点的距离尽量近,而不同类的点的距离尽量远

n ∗ m n*m nm(n为特征数,m为样本的个数)(因后面的推导如果定义为m*n的话会出现我无法处理且看不懂的情况)的数据降维到 k ∗ m k*m km(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=1n(yiμj2)(yiμj2)T=i=1n(xiwμ2w)(xiwμ2w)T=i=1n(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=n1i=1n1xi
μ 2 = ∑ i = 1 n 2 x i n 2 μ_2=\frac{\sum_{i=1}^{n2}x_i}{n_2} μ2=n2i=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=n1i=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=n2i=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} Δμ=ni=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=1n(yiμj1)(yiμj1)T=i=1n(wTxiwTμ1)(wTxiwTμ1)T=i=1nwT(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=1n(yiμj2)(yiμj2)T=i=1n(wTxiwTμ2)(wTxiwTμ2)T=i=1nwT(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)=wTsBwj(wTsWw1)
求导得:
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 sW1sBw=jw
此时w为的特征向量,j为特征值,利用PCA中求特征向量的方法就能求出w

LLE(局部线性嵌入)

LLE是一种非线性降维的方法,使降维后的数据较好的保持原有的流行结构
假设数据集为mn的矩阵(m为样本数,n为特征数)
将其降维为m
b维的数据
目标:计算出样本点的局部重建权值矩阵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=1nxij=1kwijxj2
局部协方差矩阵:
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=1km=1kclm1n=1kcjn1
w j w_j wj的解释:
分母为局部协方差矩阵的所以元素的倒数的加和
分子的详细解释:
因协方差为 k ∗ k k*k kk的方阵,例如对于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=1nyij=1kwijyj2
以上公式可以转换成为:
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=1nj=1kMij(yiyj)
M = ( I − w ) T ( I − w ) M=(I-w)^T(I-w) M=(Iw)T(Iw) 为单位向量
和应满足的限制条件:(中心化处理),
最终得到等式
这里通过PCA中的方法求出特征值和特征向量和
然后将特征值由小到大排列,第一个特征值几乎接近为0,舍去,然后取第2到b+1的特征值对应的特征向量组成新的向量
新数据通过得到

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值