- 深度学习初学者指南
- (智)巴勃罗·里瓦斯
- 1651字
- 2021-12-01 13:58:53
3.6.2 无监督技术
无监督技术是最流行的降维方法,因为它们不需要使用关于标签的先验信息。我们从PCA的内核化方法版本开始,然后转向面向更大数据集的操作方法。
1.核PCA
这种PCA算法的变体使用核方法估计距离、方差和其他参数来确定数据的主要成分(Schölkopf,B.et al.,1997)。与常规的PCA相比,核PCA可能需要更多的时间来生成解决方案,但它比传统的PCA更值得使用。
scikit-learn关于KernelPCA类的使用方法如下:
再一次,我们使用二维空间作为新的降维后空间,并使用'linear'作为内核。其他比较流行的内核包括:
·径向基函数内核的'rbf'
·多项式内核'poly'
就我个人而言,总的来说我喜欢'rbf'内核,因为它更强大、更健壮。但通常需要花费宝贵的时间来确定参数γ的最佳取值,即径向基函数的钟形宽度。如果有时间,可以尝试'rbf'并试验参数gamma。
使用核PCA的计算结果如图3.9所示。该图再次显示了KPCA算法导出空间中左下角阴性类(表示无心脏病,值为0)的聚类排列。阳性分类(表示有心脏病,值≥1)倾向于向上的数据聚集。
图3.9 使用核PCA将维度从13缩小到2
与图3.8相比,LDA算法产生了更好的具有数据可分离性的数据空间。然而,尽管现在已知实际的目标类型,KPCA还是做得很好。现在,LDA和KPCA可能不会把时间花在规模较小的数据集上,如果我们拥有很多的数据,那么该怎么办呢?接下来我们将讨论一些相关的选择。
2.大数据集
前述例子可以很好地处理中等规模的数据集。然而,当处理规模非常大的数据集时,即数据集拥有很多维度或样本时,一些算法可能不能发挥其最佳功能。在最坏的情况下,这些算法将无法拿出解决方案。接下来的两种无监督算法是通过使用称为批处理训练的技术来设计的,可以很好地用于处理大型数据集。这种技术是众所周知的,并已成功应用于机器学习(Hinton,G.E.,2012)。
批处理训练的主要思想是将数据集划分为多个规模较小(迷你)的批次,每个批次为寻找问题求解的全局解决方案获得部分进展。
3.稀疏PCA
首先考察在scikit-learn中可用的PCA稀疏编码版本MiniBatchSparsePCA。该算法的主要目标是获得满足稀疏性约束子空间的最佳变换。
稀疏性是矩阵(或向量)的一种性质,稀疏性矩阵(或向量)中的大部分元素为零。稀疏的反义词是稠密。我们喜欢深度学习中的稀疏性,因为需要做很多关于张量(向量)的乘法运算,如果其中的一些元素是零,就不必执行与这些元素相关的乘法运算,从而节省时间并优化速度。
可以按照下面的步骤处理MNIST数据集以减少其维数,因为它有784个维数和70 000个样本。规模已经足够大了,更大规模的数据集也可以使用这个算法:
1)首先重新加载数据,为稀疏PCA编码做准备:
2)然后进行如下降维:
这里,MiniBatchSparsePCA()构造函数接受如下三个参数:
·n_components,出于可视化目的,将其设置为2。
·batch_size决定算法一次使用多少个样本。我们将其设置为50,但是更大的数字可能会使算法的计算速度变慢。
·normalize_components是对数据进行中心化预处理,即使其具有零均值和单位方差。建议每次都这样做,特别是如果你处理的是图像等高度相关的数据。
采用稀疏PCA变换的MNIST数据集得到的结果如图3.10所示。
如你所见,类别之间的分界线并不完全清楚。虽然有一些确定的数字簇,但由于类别之间存在一定的重叠,这似乎不是一个简单的任务。部分原因是许多数字看起来很像。算法将数字1和7聚集在一起(左边上和下)或3和8(中间和向上)是有道理的。
图3.10 利用稀疏PCA将MNIST数据集降维到二维
下面让我们使用另一个流行和有用的算法,它叫作字典学习。
4.字典学习
字典学习是名为字典的变换基向量的学习过程,可以轻松地扩展到大规模的数据集(Mairal,J.et al.,2009)。
这种规模的数据集是基于PCA的算法无法处理的,尽管PCA的算法仍然很强大,最近在2019年国际机器学习大会上获得了最具时间价值奖。
可在scikit-learn通过MiniBatchDictionaryLearning类使用字典学习算法。我们可以这样做:
构造函数MiniBatchDictionaryLearning()接受与MiniBatchSparsePCA()类似的参数,具有相同的含义。使用字典算法降维后的空间效果如图3.11所示。
图3.11 字典学习将MNIST数据降为二维
我们可以看到,即使有明确定义的集群,类别之间仍然有很多的重叠情况。如果使用二维数据作为分类器模型的输入,可能会产生较差的分类效果。但是,这并不意味着这个算法一定是不好的。这可能意味着,二维空间可能不是最终维度的最佳选择。继续阅读学习更多的知识吧。