特征降维和特征选择


特征表示学习

传统模式识别
1.特征表示
2.机器学习算法
预处理
特征归一化
特征提取算法
SIFT特征,HOG特征
降低类内离散度,增加类间离散度
特征降维
连续过程
特征选择
离散过程

SIFT特征 – 尺度不变特征变换

算法分为四个步骤

  1. 在尺度空间找一些极值点
  2. 找一些关键点(梯度比较大)的localization
  3. 估计特征的方向(将旋转了的特征旋转回去,类似于做一种图像配准)
  4. 对关键点做描述,用一个 d d d维特征矢量

为什么需要做数据降维

  1. 为了可视化数据
  2. 维数比较低的时候,过拟合的风险比较小,有更好的泛化性
  3. 加速算法学习过程

线性降维

  • 将数据从高维空间投影到低维空间
  • 通过一个线性投影矩阵 U U U来实现
  • 不同的线性降维算法就是通过不同的准则去学习U。不同的准则在于我们想要刻画数据的什么性质。比如PCA算法是想刻画数据的主成分。ICA是刻画数据的独立成分。
特征降维
线性特征降维
非线性特征降维
最大主成分
独立成分
最大可分性

PCA算法

  • 希望保留数据方差最大的方向
  • 第一个PC:具有最大方差的方向
  • 第二个PC:具有第二大方差的方向,但是第2个PC要正交于第一个PC。后面每一个PC都会与前面的PC正交。

算法步骤

  1. 给定一组数据,首先计算数据的均值
  2. 然后计算原始数据的协方差矩阵: S = 1 N ∑ n = 1 N ( x n − x ˉ ) ( x n − x ˉ ) T S = \frac{1}{N}\sum_{n=1}^{N}(x_n-\bar{x})(x_n- \bar x)^T S=N1n=1N(xnxˉ)(xnxˉ)T
  3. D × D D \times D D×D维的协方差矩阵 S S S做特征值分解,得到 k k k个最大的特征值及其对应的特征向量作为主成分且进行特征向量的正交化
  4. 将正交化的向量排列得到 U = R D × K U = R^{D \times K} U=RD×K维投影矩阵
  5. 对于一个新样本,计算降维后的样本特征向量: y i = U T x i y_i = U^T x_i yi=UTxi
PCA:重构
  • k k k个主成分将原始数据重构出来

  • x ~ n = ∑ i = 1 K ( x n ⊤ u i ) u i = ∑ i = 1 K z n i u i \tilde{\mathbf{x}}_{n}=\sum_{i=1}^{K}\left(\mathbf{x}_{n}^{\top} \mathbf{u}_{i}\right) \mathbf{u}_{i}=\sum_{i=1}^{K} z_{n i} \mathbf{u}_{i} x~n=i=1K(xnui)ui=i=1Kzniui

当特征维数过高的时候怎么处理
  • N < < D N << D N<<D
  • 不去直接计算协方差矩阵 S = 1 N X X T ∈ R D × D S=\frac{1}{N}XX^T \in R^{D \times D} S=N1XXTRD×D的特征值和特征向量,而是去计算 B = 1 N X T X ∈ R N × N B = \frac{1}{N}X^TX \in R^{N \times N} B=N1XTXRN×N的特征值和特征向量。
  • 然后利用公式 u i = 1 ( N λ i ) 2 X v i u_i = \frac{1}{(N \lambda_i)^2}Xv_i ui=(Nλi)21Xvi将我们需要的特征向量恢复出来。
PCA:最小重构误差

在这里插入图片描述

  • PCA是所有线性投影中重构误差最小。

CCA:典型相关分析

  • CCA是要找到两组变量之间的线性关系。
  • CCA要找到两组基,每一个变量有一组基,两组基是为了让两组变量投影到最相关的空间。
  • 这里的两组变量指的是同一个物体的两种不同的描述,这两组描述是相关的。但是这两组特征在原始空间可能看不出相关性,一定要变化之后才能找到相关性。
  • CCA算法也是通过矩阵的特征值分解实现的。

算法步骤

  1. 分别求出第一组变量和第二组变量的协方差矩阵。

Σ 11 = 1 m − 1 ∑ i = 1 m ( x 1 ( i ) − x ˉ 1 ) ( x 1 ( i ) − x ˉ 1 ) ′ + r 1 I (  and  Σ 22 ) \begin{array}{l} \Sigma_{11}=\frac{1}{m-1} \sum_{i=1}^{m}\left(x_{1}^{(i)}-\bar{x}_{1}\right)\left(x_{1}^{(i)}-\bar{x}_{1}\right)^{\prime}+r_{1} I \quad\left(\text { and } \Sigma_{22} \right.) \\ \end{array} Σ11=m11i=1m(x1(i)xˉ1)(x1(i)xˉ1)+r1I( and Σ22

2.计算两组变量之间的协方差矩阵
Σ 12 = 1 m − 1 ∑ i = 1 m ( x 1 ( i ) − x ˉ 1 ) ( x 2 ( i ) − x ˉ 2 ) ′ \Sigma_{12}=\frac{1}{m-1} \sum_{i=1}^{m}\left(x_{1}^{(i)}-\bar{x}_{1}\right)\left(x_{2}^{(i)}-\bar{x}_{2}\right)^{\prime} Σ12=m11i=1m(x1(i)xˉ1)(x2(i)xˉ2)

  1. 对协方差矩阵做白化变换,将一个高斯分布变成一个标准高斯分布。

T ≜ Σ 11 − 1 / 2 Σ 12 Σ 22 − 1 / 2 T \triangleq \Sigma_{11}^{-1 / 2} \Sigma_{12} \Sigma_{22}^{-1 / 2} TΣ111/2Σ12Σ221/2

此时 T T T可以反映归一化之后的数据的相关性。

  1. T T T矩阵做奇异值分解:

T = U D V ′ T=U D V^{\prime} T=UDV

  1. 为了寻找最相关的子空间,就是寻找奇异值( D T D D^TD DTD的特征值)最大的基:

( Total correlation at k k k is ∑ i = 1 k D i i \sum_{i=1}^{k} D_{i i} i=1kDii

  1. U U U的前 k k k列拿出来做归一化后当作第一组变量的基 W 1 ∗ W_{1}^{*} W1,把 V V V的前 k k k列拿出来做归一化后当作第二组变量的基 W 2 ∗ W_{2}^{*} W2

The optimal projection matrices are
( W 1 ∗ , W 2 ∗ ) = ( Σ 11 − 1 / 2 U k , Σ 22 − 1 / 2 V k ) \left(W_{1}^{*}, W_{2}^{*}\right)=\left(\Sigma_{11}^{-1 / 2} U_{k}, \Sigma_{22}^{-1 / 2} V_{k}\right) (W1,W2)=(Σ111/2Uk,Σ221/2Vk)
where U k U_{k} Uk is the first k k k columns of U U U.

  1. x x x计算投影后的向量: x ′ = W 1 ∗ T x x' = W_1^{*T}x x=W1Tx。对 y y y计算投影后的向量: y ′ = W 2 ∗ T y y' = W_2^{*T}y y=W2Ty就可以将 x x x y y y投影到最相关的空间。

LDA:线性判别分析

  • LDA是有监督学习。找到类别之间可分性最好的方向。
  • LDA的假设是每个类都是高斯分布。
Fisher判别准则
  • 把两个数据都看成高斯分布,然后计算可分性,将FDR最大化。

F D R = ( μ 1 − μ 2 ) 2 σ 1 2 + σ 2 2 FDR = \frac{(\mu_1 - \mu_2)^2}{\sigma_1^2 + \sigma_2^2} FDR=σ12+σ22(μ1μ2)2

  • ( μ ~ 1 − μ ~ 2 ) 2 σ ~ 1 2 + σ ~ 2 2 \frac{(\tilde \mu_1 - \tilde \mu_2)^2}{\tilde \sigma_1^2 + \tilde\sigma_2^2} σ~12+σ~22(μ~1μ~2)2最大。

又因为: μ ~ i = w T μ i \tilde \mu_i = w^T \mu_i μ~i=wTμi
( μ 1 ~ − μ 2 ~ ) 2 = w T ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) T w ∝ w T S b w         类 间 离 散 度 σ ~ i 2 = E [ ( y − μ ~ i ) 2 ] = E [ w T ( x − μ i ) ( x − μ i ) T w ) ] = w T Σ i w        类 内 离 散 度 σ ~ 1 2 + σ ~ 2 2 ∝ w T S w w \left(\tilde{\mu_{1}}-\tilde{\mu_{2}}\right)^{2}=\mathbf{w}^{T}\left(\mu_{1}-\mu_{2}\right)\left(\mu_{1}-\mu_{2}\right)^{T} \mathbf{w} \propto \mathbf{w}^{T} S_{b} \mathbf{w} ~~~~~~~ 类间离散度\\ \left.\tilde{\sigma}_{i}^{2}=E\left[\left(y-\tilde{\mu}_{i}\right)^{2}\right]=E\left[\mathbf{w}^{T}(x-\mu_i)\left(x-\mu_{i}\right)^{T} \mathbf{w}\right)\right]=\mathbf{w}^{\mathrm{T}} \boldsymbol{\Sigma}_{\mathbf{i}} \mathbf{w} \quad ~~~~~~类内离散度 \\ \tilde{\sigma}_{1}^{2} + \tilde{\sigma}_{2}^{2} \propto \mathbf{w}^{\mathrm{T}} \boldsymbol{S_w} \mathbf{w} \quad (μ1~μ2~)2=wT(μ1μ2)(μ1μ2)TwwTSbw       σ~i2=E[(yμ~i)2]=E[wT(xμi)(xμi)Tw)]=wTΣiw      σ~12+σ~22wTSww

  • Modified Criterion for LDA:
    (Raleigh Quotient) F D R ( w ) = w T S b w w T S w w \quad F D R(\mathbf{w})=\frac{\mathbf{w}^{T} S_{b} \mathbf{w}}{\mathbf{w}^{T} S_{w} \mathbf{w}} FDR(w)=wTSwwwTSbw
LDA算法步骤

假设现在是多类分类问题:

  1. 首先计算所有类的类内离散度, p i p_i pi是每个类别的先验概率:

S w = ∑ i = 1 C p i Σ i S_{w}=\sum_{i=1}^{C} p_{i} \Sigma_{i} Sw=i=1CpiΣi

  1. 计算类间离散度:

S b = ∑ i , j = 1 C p i p j ( μ i − μ j ) ( μ i − μ j ) ⊤ \quad S_{b}=\sum_{i, j=1}^{C} p_{i} p_{j}\left(\mu_{i}-\mu_{j}\right)\left(\mu_{i}-\mu_{j}\right)^{\top} Sb=i,j=1Cpipj(μiμj)(μiμj)

  1. LDA降维目标准则:

max ⁡ W tr ⁡ { ( W ⊤ S w W ) − 1 ( W ⊤ S b W ) } \max _{W} \operatorname{tr}\left\{\left(W^{\top} S_{w} W\right)^{-1}\left(W^{\top} S_{b} W\right)\right\} Wmaxtr{(WSwW)1(WSbW)}

  1. 上式等价于:

max ⁡ W F D A ∈ R d × d ′ tr ⁡ ( W F D A ⊤ S b W F D A )  s.t.  W F D A ⊤ S w W F D A = I \max _{W_{\mathrm{FDA}} \in \mathbb{R}^{d \times d^{\prime}}} \operatorname{tr}\left(W_{\mathrm{FDA}}^{\top} S_{b} W_{\mathrm{FDA}}\right) \quad \text { s.t. } W_{\mathrm{FDA}}^{\top} S_{w} W_{\mathrm{FDA}}=I WFDARd×dmaxtr(WFDASbWFDA) s.t. WFDASwWFDA=I

  1. 对上面的式子做两步分解:

首先对 S w S_w Sw做白化变换:
S w = P Λ P ⊤ . W whiten  = P Λ − 1 / 2 ∈ R d × d W whiten  ⊤ S w W whiten  = I . \begin{array}{l} S_{w}=P \Lambda P^{\top} . \\ W_{\text {whiten }}=P \Lambda^{-1 / 2} \in \mathbb{R}^{d \times d} \\ W_{\text {whiten }}^{\top} S_{w} W_{\text {whiten }}=I . \end{array} Sw=PΛP.Wwhiten =PΛ1/2Rd×dWwhiten SwWwhiten =I.

做PCA降维:
W F D A = W whiten  W max ⁡ W ∈ R d × d ′ tr ⁡ ( W ⊤ W whiten  ⊤ S b W whiten  W )  s.t.  W ⊤ W = I \begin{aligned} W_{\mathrm{FDA}}=& W_{\text {whiten }} W \\ \max _{W \in \mathbb{R}^{d \times d^{\prime}}} & \operatorname{tr}\left(W^{\top} W_{\text {whiten }}^{\top} S_{b} W_{\text {whiten }} W\right) \\ & \text { s.t. } W^{\top} W=I \end{aligned} WFDA=WRd×dmaxWwhiten Wtr(WWwhiten SbWwhiten W) s.t. WW=I

LDA分步算法图解
image-20201223102118842
  1. 首先计算出所有类的类内离散度。
  2. 然后对所有类进行白化变换,得到一个圆形(标准)高斯分布。此时每个类别可以用其聚类中心来表示。
  3. 对聚类中心进行PCA降维。
  4. 总结:LDA = 白化 + PCA

ICA:独立成分分析

算法:非高斯最大化
  • y = W x = W A s y = Wx = WAs y=Wx=WAs

其中: s s s是原始信号, A A A是混淆矩阵, W W W是恢复矩阵。 x x x是观测变量。

中心极限定理:很多个独立信号之和趋近于高斯分布。所以 A s As As变得比较像高斯,通过 W W W再混淆一下,再一次调用中心极限定理, y y y更像高斯。

只有在 y y y严格与 s s s相等时,非高斯性才最大。

整体算法

ICA任务

  1. 只有一个观测变量 x x x,希望学习一个 W W W矩阵,把原始信号恢复出来。

解法

  1. 对观测信号做白化变换,就是均值为0,方差为单位矩阵。
  2. 在白化之后的数据上学习 W W W矩阵去把独立成分恢复出来。
  3. 但是恢复出来的信号幅值和原始信号不一样。

非线性特征降维(流形学习)

缺点
非线性降维
核方法
流形学习
LLE
局部线性导致全局非线性
Isomap
测地距离
没法扩充到新样本
kernel PCA

非线性方法的思想是:保持局部信息

LLE:局部线性嵌入(Local Linear Embedding)

算法步骤

  1. 对于每个样本 x i x_i xi,确定 x i x_i xi的最近邻。
  2. 用邻居来重构自己,求出重构系数 W i j W_{ij} Wij

W = arg ⁡ min ⁡ W ∑ i = 1 N ∥ x i − ∑ j ∈ N i W i j x j ∥ 2  s.t.  ∀ i ∑ j W i j = 1 W=\arg \min _{W} \sum_{i=1}^{N}\left\|\mathrm{x}_{i}-\sum_{j \in \mathcal{N}_{i}} W_{i j} \mathrm{x}_{j}\right\|^{2} \quad \text { s.t. } \forall i \quad \sum_{j} W_{i j}=1 W=argWmini=1NxijNiWijxj2 s.t. ijWij=1

N i \mathcal{N}_{i} Ni are the L L L nearest neighbors of x i \mathrm{x}_{i} xi (note: should choose L ≥ K + 1 ) \left.L \geq K+1\right) LK+1)

  1. 将上式计算好的 W W W存储起来,然后目标是得到样本的低维坐标,也即让样本的低维坐标也满足如下的重构关系:

Use W W W to compute low dim. projections Z = { z 1 , … , z N } \mathbf{Z}=\left\{\mathbf{z}_{1}, \ldots, \mathbf{z}_{N}\right\} Z={z1,,zN} by solving:
Z = arg ⁡ min ⁡ Z ∑ i = 1 N ∥ z i − ∑ j ∈ N W i j z j ∥ 2  s.t.  ∀ i ∑ i = 1 N z i = 0 , 1 N Z Z ⊤ = I \mathrm{Z}=\arg \min _{\mathrm{Z}} \sum_{i=1}^{N}\left\|\mathrm{z}_{i}-\sum_{j \in \mathcal{N}} W_{i j} \mathrm{z}_{j}\right\|^{2} \quad \text { s.t. } \forall i \quad \sum_{i=1}^{N} \mathrm{z}_{i}=0, \quad \frac{1}{N} \mathrm{ZZ}^{\top}=\mathrm{I} Z=argZmini=1NzijNWijzj2 s.t. ii=1Nzi=0,N1ZZ=I

优点

  1. 非线性,刻画的流形结构很好。

缺点

  1. 对于PCA等线性投影,计算出了投影矩阵 W W W之后下次就可以直接使用。但是对于LLE,来了一个新的测试样本,需要把新的测试样本和之前的样本放在一起重新跑一遍算法。
Isomap
  1. 每一个样本都找到最近的k个邻居,把邻居关系构建成图,只有邻居之间才有边连接。
  2. 每一个点与其k近邻的点之间的距离设置为欧式距离,与其他点的距离用测地距离来计算(Dijkstra算法)。【为什么可以用欧式距离:因为朋友关系是局部的,在局部可以使用欧式距离】
  3. 最后可以构建出 N × N N \times N N×N的测地距离矩阵 D = { d i j 2 } D = \{d_{ij}^2\} D={dij2},其中每个距离都是两个点之间的测地距离。
  4. 构造出一个矩阵 G = − 1 2 H D H G = -\frac{1}{2}HDH G=21HDH,其中 G ∈ R N × N G \in R^{N \times N} GRN×N。【为什么G要这么算,相当于对测地距离矩阵图做度的归一化】
  5. 对归一化之后的矩阵 G G G做特征值分解,取最大的 k k k个特征值对应的特征向量。得到一个 N × K N \times K N×K的矩阵。
  6. 取每一行作为样本在低维空间的坐标。
  • 也有out-of-sample的问题

主题:特征选择

特征选择
怎么定义子集的最优性
从什么角度做特征选择
子集查找和特征排序
特征/子集评估
信息增益
距离度量
相关性度量
一致性度量
模型
过滤法
选完特征再学习分类器
包裹法
选特征的过程中把分类器放进来
嵌入法
RFE嵌入法
结果验证和评估
  • RFE嵌入法:消去分类器权重绝对值最小的那一个维度对应的特征。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值