文章目录
1. 什么是数据降维?
想象这样一种场景:我们正通过电视而非现场观看体育比赛,在电视的纯平显示器上有一个足球。显示器大概包含了100万像素,而足球则是可能由一千个像素组成。在比赛中,我们更关注的是球的位置。人的大脑要想了解比赛的进展,就需要了解球在运动场中的位置。在这个过程中,人们已经将数据从一百万维降为三维。
在上述体育比赛的例子中,人们面对的原本是百万像素的数据,但是只有球的三维位置才最重要,这就被称为降维。在低维下,数据更容易进行处理。另外,其相关特征可能在数据中更明确的显示出来。
维度指的就是样本的数量或者特征的数量。一般无特别说明,指的都是特征数量。降维算法中的降维,指的就是降低特征矩阵中特征的数量。
2. 为什么要进行数据降维?
降维的目的是为了让算法运算更快,效果更好。降维可以使数据集变得更易使用,对于数据量较大的数据集,我们可以通过降维降低模型算法的计算开销,与此同时,去除掉数据集中无用的噪声数据,而且少量的特征也可能使得模型解释起来简单易懂。
3. 降维是如何实现的?
假设我们现在有一组简单的数据,包含两个特征X1和X2,三个样本数据的坐标点分别为(1,1),(2,2),(3,3)。我们可以让X1和X2分别作为两个特征向量,很轻松就可以用一个二维平面来描述这组数据。这组数据现在每个特征的均值都为2,方差则等于:
(
X
1
)
v
a
r
=
(
X
2
)
v
a
r
=
(
1
−
2
)
2
+
(
2
−
2
)
2
+
(
3
−
2
)
2
2
=
1
(X_1)_{var} = (X_2)_{var} = {(1-2)^2 +(2-2)^2+(3-2)^2\over2} = 1
(X1)var=(X2)var=2(1−2)2+(2−2)2+(3−2)2=1
每个特征的数据一模一样,因此方差也都为1,数据方差总和是2.
现在我们的目标是:只用一个特征向量来描述这组数据,即将二维数据降为一维数据,并且尽可能地保留信息量,能让数据的总方差尽量靠近2。于是我们将原本的直角坐标系逆时针旋转45度,形成了新的直接坐标系,新特征向量X1* 和 X2*。在这个新坐标系中,三个样本数据的坐标点可以表示为( 2 \sqrt2 2,0),(2 2 \sqrt2 2,0),(3 2 \sqrt2 2,0)。
可以注意到,X2* 上的数值此时都变成0,因此X2* 明显不带有任何有效信息了。此时X1*特征上的数据均值为 2 2 2\sqrt2 22,而方差则可表示成:
( X 1 ) v a r ∗ = ( 2 − 2 2 ) 2 + ( 2 2 − 2 2 ) 2 + ( 3 2 − 2 2 ) 2 2 = 2 (X_1)^*_{var} = {(\sqrt2-2\sqrt2)^2 +(2\sqrt2-2\sqrt2)^2+(3\sqrt2-2\sqrt2)^2\over2} = 2 (X1)var∗=2(2−22)2+(22−22)2+(32−22)2=2
此时,我们根据信息含量的排序,取信息含量大的一个特征,因为我们想要的一维数据。所以我们可以将X2* 删除,剩下的X1* 就代表了曾经需要两个特征来代表的三个样本点。通过旋转原有特征向量组成的坐标轴来找到新特征向量和新坐标系,我们将三个样本点的信息压缩到一条直线上,实现了二维变一维,并且尽量保留原始数据的信息。这样就实现一个简单的降维。
X1 | X2 | X1* | X2* |
---|---|---|---|
1 | 1 | 2 \sqrt2 2 | 0 |
2 | 2 | 2 2 2\sqrt2 22 | 0 |
3 | 3 | 3 2 3\sqrt2 32 | 0 |
4. sklearn中的降维算法
4.1 主成分分析PCA
第一种降维的方法成为主成分分析(Principal Cpmponent Analysis,PCA)。在PCA中,数据从原来的坐标系转换到了新的坐标系,新坐标系的选择是由数据本身决定的。第一个新坐标轴选择的是原始数据中方差最大的方向,第二个新坐标轴的选择和第一个坐标轴正交且具有最大方差的方向。该过程一直重复,重复次数为原始数据中特征的数目。我们会发现,大部分方差都包含在最前面的几个新坐标轴中。因此我们可以忽略余下的坐标轴,即对数据进行了降维处理。
4.2 因子分析FA
另一种降维技术是因子分析。在因子分析中,我们假设在观察数据的生成中有一些观察不到的隐变量。假设观察数据是这些隐变量和某些噪声的线性组合。那么隐变量的数据可能比观察数据的数目少,也就是说通过找到隐变量就可以实现数据的降维。
4.3 独立成分分析ICA
还有一种降维技术就是独立成分分析(Independent Component Analysis,ICA)。ICA假设数据是从N个数据源生成的,这一点和因子分析有些类似。假设数据为多个数据源的混合观察结果,这些数据源之间在统计上是相互独立的,而在PCA中只假设数据是不相关的。同因子分析一样,如果数据源的数目少于观察数据的数目,则可以实现降维过程。
在上述三种降维技术中,PCA的应用目前最为广泛。由于篇幅原因,我会在另一篇博客中着重讲解上面三种方法的原理以及代码实现。
5. 特征选择和数据降维有什么区别?
特征工程中有三种方式:特征提取,特征创造和特征选择.
特征选择是从已存在的特征中选取携带信息量最多的,选完之后的特征依然具有可解释性,我们依然知道这个特征在原数据的哪个位置,代表原数据上的什么含义。
降维,是将已存在的特征进行压缩,降维完毕后的特征不是原本的特征矩阵中的任何一个特征,而是通过某些方式组合起来的新特征。通常来说,在新的特征矩阵生成之前,我们无法知晓降维都建立了怎样的新特征向量,新特征矩阵生成后也不具有可读性,我们无法判断新特征矩阵的特征是从元数据的什么特征组合而来,新特征虽然带有原始数据的信息,却已经不是原数据上代表的含义了。以PCA为代表的降维算法因此是特征创造的一种。
由此可知,PCA一般不适用与探索特征和标签之间的关系的模型(如线性回归),因此无法解释的新特征和标签之前的关系不具有实际意义。在线性回归模型中,我们使用特征选择。
6. 总结
降维技术使得数据变得更易使用,并且他们往往能够去除数据中的噪声,使得其他机器学习任务更加准确。降维往往作为预处理步骤,在数据应用到其他算法之前清洗数据。有更多技术可以用于数据降维,在这些技术中,独立成分分析、因子分析和主成分分析比较流行,其中又以主成分分析应用最为广泛。
参考资料:机器学习实战
菜菜的sklearn课堂
关联文章:
数据预处理Part1——数据清洗
数据预处理Part2——数据标准化
数据预处理Part3——真值转换
数据预处理Part4——数据离散化
数据预处理Part5——样本分布不均衡
数据预处理Part6——数据抽样
数据预处理Part7——特征选择
数据预处理Part8——数据共线性