机器学习常用的降维方法

特征降维方法包括:Lasso,PCA,小波分析,LDA,奇异值分解SVD,拉普拉斯特征映射,SparseAutoEncoder,局部线性嵌入LLE,等距映射Isomap。

1. LASSO通过参数缩减达到降维的目的

LASSO(Least absolute shrinkage and selection operator, Tibshirani(1996)) 
该方法是一种压缩估计,通过构造一个罚函数得到一个较为精炼的模型,使得压缩一些系数,同时设定一些系数为零。因此保留了子集收缩的优点,,是一种处理具有复共线性数据的有偏估计。Lasso 的基本思想是在回归系数的绝对值之和小于一个常数的约束条件下,使残差平方和最小化,从而能够产生某些严格等于 0 的回归系数,得到可以解释的模型

2. 主成分分析PCA

PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。 
设有m条n维数据

1)将原始数据按列组成n行m列矩阵X 
2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值 
3)求出协方差矩阵C=\frac{1}{m}XX^\mathsf{T} 
4)求出协方差矩阵的特征值及对应的特征向量 
5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P 
6)Y=PX即为降维到k维后的数据

3. 小波分析

小波分析有一些变换的操作降低其他干扰可以看做是降维。

4. 线性判别LDA

线性判别式分析(Linear Discriminant Analysis),简称为LDA。也称为Fisher线性判别(Fisher Linear Discriminant,FLD),是模式识别的经典算法,在1996年由Belhumeur引入模式识别和人工智能领域。

基本思想是将高维的模式样本投影到最佳鉴别矢量空间,以达到抽取分类信息和压缩特征空间维数的效果,投影后保证模式样本在新的子空间有最大的类间距离和最小的类内距离,即模式在该空间中有最佳的可分离性。

LDA与前面介绍过的PCA都是常用的降维技术。PCA主要是从特征的协方差角度,去找到比较好的投影方式LDA更多的是考虑了标注,即希望投影后不同类别之间数据点的距离更大,同一类别的数据点更紧凑。

5. 拉普拉斯映射

拉普拉斯特征映射将处于流形上的数据,在尽量保留原数据间相似度的情况下,映射到低维下表示。

求解广义特征向量,取前几个非零最小特值对应的特向,即为原数据在低维下的表示 

6. 深度学习SparseAutoEncoder

 稀疏自编码就是用少于输入层神经元数量的隐含层神经元去学习表征输入层的特征,相当于把输入层的特征压缩了,所以是特征降维。 

7. 矩阵奇异值分解SVD

 在PCA算法中,用到了SVD,类似PCA,可以看成一类 

8. LLE局部线性嵌入

Locally linear embedding(LLE)是一种非线性降维算法,它能够使降维后的数据较好地保持原有流形结构。LLE可以说是流形学习方法最经典的工作之一。很多后续的流形学习、降维方法都与LLE有密切联系。

 LLE算法认为每一个数据点都可以由其近邻点的线性加权组合构造得到。算法的主要步骤分为三步:(1)寻找每个样本点的k个近邻点;(2)由每个样本点的近邻点计算出该样本点的局部重建权值矩阵;(3)由该样本点的局部重建权值矩阵和其近邻点计算出该样本点的输出值。具体的算法流程如图2所示:

 

 

 

 

9. Isomap等距映射

Isomap是一种非迭代的全局优化算法,通过一种原本适用于欧式空间的算法MDS,达到降维的目的。

 

转载于:https://www.cnblogs.com/zhibei/p/9326075.html

### 机器学习中的特征方法 #### 主成分分析 (PCA) 主成分分析是一种常用的无监督线性变换技术,旨在通过正交转换将一组可能存在相关性的变量转换成一组线性不相关的变量。这些新变量被称为“主成分”。PCA的目标是在尽可能减少信息丢失的情况下数据集的度。 ```python from sklearn.decomposition import PCA pca = PCA(n_components=2) X_pca = pca.fit_transform(X) ``` 这种方法利用协方差矩阵进行奇异值分解(SVD),从而找到能够最大程度解释原始数据变异的新坐标轴方向[^1]。 #### 奇异值分解 (SVD) 奇异值分解也是一种强大的矩阵因子化工具,在许多情况下被用来实现数据压缩噪声过滤的目的。与PCA相似的是,SVD同样基于寻找最佳子空间的思想;然而两者之间存在差异,特别是在处理方式技术细节上有所不同。 ```python import numpy as np U, s, Vt = np.linalg.svd(X, full_matrices=False) Sigma = np.diag(s[:2]) V_reduced = Vt.T[:, :2] X_svd = U.dot(Sigma).dot(V_reduced.T) ``` 尽管如此,这两种方法都遵循相同的总体流程—即通过某种形式的矩阵运算来提取最重要的模式或结构,并以此为基础构建新的表示形式。 #### 线性判别分析 (LDA) 不同于上述两种非监督式的手段,LDA属于一种有监督的学习策略。其核心在于优化类间分离度而非单纯的数据重构误差。具体而言,该算法试图发现那些能最好地区分各个类别成员特性的属性组合。 ```python from sklearn.discriminant_analysis import LinearDiscriminantAnalysis lda = LinearDiscriminantAnalysis(n_components=2) X_lda = lda.fit_transform(X, y) ``` 此过程涉及计算各类样本平均向量及其散布情况,进而求解最优投影方向以达到最大化的组间离散程度与最小化的组内聚集趋势之比[^3]。 #### 核主成分分析 (Kernel PCA) 当面对复杂分布的数据时,传统的线性模型往往难以捕捉潜在的空间关系。为此引入了核技巧的概念,允许我们在更高度甚至无限希尔伯特空间中执行类似的线性操作。这不仅扩展了解决方案的应用范围,还提高了灵活性表达能力。 ```python from sklearn.decomposition import KernelPCA kpca = KernelPCA(kernel='rbf', n_components=2) X_kpca = kpca.fit_transform(X) ``` 以上就是几种常见的特征技术相应的Python代码示例。每种方法都有各自的特点以及适用场景,选择合适的算法取决于实际问题的需求特性[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值