降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中。在原始的高维空间中,包含冗余信息以及噪声信息,在实际应用中例如图像识别中会造成误差,降低准确率;而通过降维,可以减少信息的冗余、提高识别等的精度,还可以寻求数据内部的本质结构特征。
降维的目的
- 特征选择:选择重要的特征子集,删除其余特征;
- 特征提取:由原始特征形成的较少的新特征。
降维的作用:
- 降低时间的复杂度和空间复杂度
- 节省了提取不必要特征的开销
- 去掉数据集中夹杂的噪音
- 较简单的模型在小数据集上有更强的鲁棒性
- 当数据能有较少的特征进行解释,我们可以更好地解释数据
- 实现数据的可视化
降维的本质:
学习一个映射函数f:X到Y。(X是原始数据点的表达,目前最多的是用向量来表示,Y是数据点映射后的低维向量表达。)f可能是:显示的、隐式的、线性的、非线性的。
主成分分析(PCA)是另一种常用的数据降维方法,它属于无监督学习算法,即在算法训练时,我们不需要知道样本对应的类别。
在映射函数f:X到Y中,我们希望样本点在每一维上的投影点尽可能分散。这种分散程度可以用方差来度量。我们希望降维后的各字段都不存在相关性,而协方差正是用来度量两个随机变量相关性的参数,协方差为0的两个随机变量称为不相关。至此我们得到了PCA的目标:将一组n维向量降为k维(0<k<n),其目标是选择k个单位正交基,使得原始数据在变换到这组基上后,各字段两两协方差为0,而各字段的方差尽可能大。
PCA算法步骤总结如下:
将原始样本数据按列排成矩阵。
将的每一行(代表一个属性字段)进行0均值化处理。
求出协方差矩阵的特征值及对应的特征向量。
将特征向量对应特征值从大到小按列排列,取前列组成矩阵
。
即为降维后的数据。
import pandas as pd
f = r'C:\Users\Machine Learning\wine.txt'
df_wine = pd.read_csv(f, encoding='ANSI', header=None)
print(df_wine.head())
0 1 2 3 4 5 6 7 8 9 10 11 12 \
0 1 14.23 1.71 2.43 15.6 127 2.80 3.06 0.28 2.29 5.64 1.04 3.92
1 1 13.20 1.78 2.14 11.2 100 2.65 2.76 0.26 1.28 4.38 1.05 3.40
2 1 13.16 2.36 2.67 18.6 101 2.80 3.24 0.30 2.81 5.68 1.03 3.17
3 1