机器学习之 集成学习,聚类 与降维

50 阅读13分钟

集成学习

集成学习正是使用多个个体学习器来获得比每个单独学习器更好的预测性能。集成学习的作用就是将多个可以得到假设整合为单个更好的假设,其一般结构是先产生一组个体学习器,再使用某种策略将它们加以整合。每个组中的个体学习器如果属于同一类型(比如都是线性回归或者都是决策树),形成的就是同质集成;相应地,由不同类型学习器得到的集成则称为异质集成。

性能优劣不一的个体学习器放在一块儿可能产生的是更加中庸的效果,即比最差的要好,也比最好的要差。那么集成学习如何实现“1 + 1 > 2”呢?这其实是对个体学习器提出了一些要求。

一方面,个体学习器的性能要有一定的保证。如果每个个体学习器的分类精度都不高,在集成时错误的分类结果就可能占据多数,导致集成学习的效果甚至会劣于原始的个体学习器,正如俗语所言“和臭棋手下棋,越下越臭”。

另一方面,个体学习器的性能要有一定的差异,和而不同才能取得进步。多样性(diversity)是不同的个体学习器性能互补的前提,这恰与 MIMO 中分集(diversity)的说法不谋而合。

集成学习的核心问题在于在多样性和准确性间做出折中,进而产生并结合各具优势的个体学习器。

个体学习器的生成方式很大程度上取决于数据的使用策略。根据训练数据使用方法的不同,集成学习方法可以分为两类:个体学习器间存在强依赖关系因而必须串行生成的序列化方法,和个体学习器之间不存在强依赖关系因而可以同时生成的并行化方法。

典型的序列化学习算法是自适应提升方法(Adaptive Boosting)。在解决分类问题时,提升方法遵循的是循序渐进的原则。先通过改变训练数据的权重分布,训练出一系列具有粗糙规则的弱个体分类器,再基于这些弱分类器进行反复学习和组合,构造出具有精细规则的强分类器。AdaBoost 要解决两个主要问题:训练数据权重调整的策略和弱分类器结果的组合策略。

在 AdaBoost 的弱分类器组合中,每一轮得到的学习器结果都会按照一定比例叠加到前一轮的判决结果,并参与到下一轮次权重调整之后的学习器训练中。

随着训练过程的深入,弱学习器的训练重心逐渐被自行调整到的分类器错误分类的样本上,因而每一轮次的模型都会根据之前轮次模型的表现结果进行调整,这也是 AdaBoost 的名字中“自适应”的来源。

典型的并行化学习方法是随机森林方法。正所谓“独木不成林”,随机森林就是对多个决策树模型的集成。“随机”的含义体现在两方面:一是每个数据子集中的样本是在原始的训练数据集中随机抽取的,这在前文中已有论述;二是在决策树生成的过程中引入了随机的属性选择。在随机森林中,每棵决策树在选择划分属性时,首先从结点的属性集合中随机抽取出包含 k 个属性的一个子集,再在这个子集中选择最优的划分属性生成决策树。

数据使用机制的不同在泛化误差的构成上也有体现。

  • 以 Boosting 方法为代表的序列化方法使用了全体训练数据,并根据每次训练的效果不断迭代以使损失函数最小化,因而可以降低平均意义上的偏差,能够基于泛化能力较弱的学习器构建出较强的集成。
  • 以 Bagging 方法为代表的并行化方法则利用原始训练数据生成若干子集,因而受异常点的影响较小,对在每个子集上训练出的不完全相关的模型取平均也有助于平衡不同模型之间的性能,因而可以一定程度上降低方差。

聚类

聚类分析是一种无监督学习方法,其目标是学习没有分类标记的训练样本,以揭示数据的内在性质和规律。具体来说,聚类分析要将数据集划分为若干个互不相交的子集,每个子集中的元素在某种度量之下都与本子集内的元素具有更高的相似度。

分类和聚类的区别:分类是先确定类别再划分数据;聚类则是先划分数据再确定类别。

聚类分析两个核心问题:一是如何判定哪些样本属于同一“类”,二是怎么让同一类的样本“聚”在一起。

解决哪些样本属于同一“类”的问题需要对相似性进行度量。 度量相似性最简单的方法就是引入距离测度,聚类分析正是通过计算样本之间的距离来判定它们是否属于同一个“类”。根据线性代数的知识,如果每个样本都具有 N 个特征,那就可以将它们视为 N 维空间中的点,进而计算不同点之间的距离。

在聚类分析中常用的距离是“闵可夫斯基距离”

image.png

式中的 p 是个常数。当 p=2 时,闵可夫斯基距离就变成了欧式距离,也就是通常意义上的长度。

几类最主要的聚类算法:

  • 层次聚类又被称为基于连接的聚类,其核心思想源于样本应当与附近而非远离的样本具有更强的相关性。聚类的划分是在不同的距离水平上完成的,划分过程就可以用树状图来描述,这也解释了 " 层次聚类 " 这个名称的来源。层次聚类对数据集的划分既可以采用自顶向下的拆分策略,也可以采用自底向上的会聚策略,后者是更加常用的方法。会聚算法可以分为单链接算法、全链接算法和均链接算法等。

  • 原型聚类又被称为基于质心的聚类,其核心思想是每个聚类都可以用一个质心表示。

  • k 均值算法是典型的原型聚类算法,它将聚类问题转化为最优化问题。k均值算法就是利用贪心策略,通过迭代优化来近似求解最小平方和的算法。

  • 分布聚类又被称为基于概率模型的聚类,其核心思想是假定隐藏的类别是数据空间上的一个分布。聚类分析的任务原本是将数据划分到不同的聚类中,可如果我们将样本看作观察值,将潜在类别看作隐藏变量,那么就可以逆向认为数据集是由不同的聚类产生的。在这个前提下,基于概率模型的聚类分析的任务是推导出最可能产生出已有数据集的 k 个聚类,并度量这 k 个聚类产生已有数据集的似然概率。

  • 基于概率模型的聚类实质上就是进行参数估计,估计出聚类的参数集合以使似然函数最大化。期望极大算法(Expectation Maximization algorithm)是典型的基于概率模型的聚类方法。EM 算法是一种迭代算法,用于含有不可观察的隐变量的概率模型中,在这种模型下对参数做出极大似然估计,因而可以应用在聚类分析之中。EM 算法执行的过程包括“期望”和“最大化”两个步骤。将待估计分布的参数值随机初始化后,期望步骤利用初始参数来估计样本所属的类别;最大化步骤利用估计结果求取当似然函数取得极大值时,对应参数值的取值。两个步骤不断迭代,直到收敛为止。

  • 密度聚类又被称为基于密度的聚类,其核心思想是样本分布的密度能够决定聚类结构。最流行的基于密度的聚类方法是利用噪声的基于密度的空间聚类(Density-Based Spatial Clustering of Applications with Noise),简称 DBSCAN。DBSCAN 通过将距离在某一个阈值之内的点连接起来而形成聚类,但连接的对象只限于满足密度标准的点。ϵ - 邻域这一概念给出的对邻域的限制,密度的可连接性则通过密度直达关系、密度可达关系、密度相连关系等一系列标准定义,根据这些概念形成的聚类就是由密度可达关系导出的最大的密度相连样本集合。

聚类分析的一个重要应用就是用户画像。在商业应用中判别新用户的类型时,往往要先对用户进行聚类分析,再根据聚类分析的结果训练分类模型,用于用户类型的判别。聚类使用的特征通常包括人口学变量、使用场景、行为数据等。

降维

根据凡事抓主要矛盾的原则,对举足轻重的属性要给予足够的重视,无关紧要的属性则可以忽略不计,这在机器学习中就体现为降维的操作。

主成分分析是一种主要的降维方法,它利用正交变换将一组可能存在相关性的变量转换成一组线性无关的变量,这些线性无关的变量就是主成分。

  • 数据规范化:对 m 个样本的相同属性值求出算术平均数,再用原始数据减去平均数,得到规范化后的数据;
  • 协方差矩阵计算:对规范化后的新样本计算不同属性之间的协方差矩阵,如果每个样本有 n 个属性,得到的协方差矩阵就是 n 维方阵;
  • 特征值分解:求解协方差矩阵的特征值和特征向量,并将特征向量归一化为单位向量;降维处理:将特征值按照降序排序,保留其中最大的 k 个,再将其对应的 k 个特征向量分别作为列向量组成特征向量矩阵;
  • 数据投影:将减去均值后的 m×n 维数据矩阵和由 k 个特征向量组成的 n×k 维特征向量矩阵相乘,得到的 m×k 维矩阵就是原始数据的投影。

样本点在超平面上的投影尽可能分散体现出的是最大方差原理。投影后所有样本点的方差可以记作

image.png

最大方差要求的正是求解最优的 W,以使前面的方差表达式,也就是对应矩阵所有对角线元素的和最大化。经过数学处理后可以得到,使方差最大化的 W 就是由所有最大特征值的特征向量组合在一起形成的,也就是主成分分析的解。

在主成分分析中,保留的主成分的数目是由用户来确定的。一个经验方法是保留所有大于 1 的特征值,以其对应的特征向量来做坐标变换。主成分分析能够对数据进行降维处理,保留正交主成分中最重要的部分,在压缩数据的同时最大程度地保持了原有信息。

除此之外,由于主成分分析中利用的是协方差矩阵,因而只能去除线性相关关系,对更加复杂的非线性相关性就无能为力了。

主成分分析实现降维的前提是通过正交变换对不同属性进行去相关。另一种更加直观的降维方式则是直接对样本的属性做出筛选,这种降维方法就是“特征选择”。特征选择的出发点在于去除不相关的特征往往能够降低学习任务的难度,特征选择主成分分析共同构成了处理高维数据的两大主流技术。

特征选择与特征提取不同。特征提取是根据原始特征的功能来创建新特征,特征选择则是选取原始特征中的一个子集用于学习任务。

特征选择通常用于特征较多而样本较少的问题中。

根据评价方式的不同,特征选择算法主要可以分为包裹法、过滤法和嵌入法三类。

  • 包裹法使用预测模型来评价特征子集。每个新的特征子集都用来训练一个模型,并在验证数据集上进行测试,模型在验证数据集上的错误率也就是该子集的分数。包裹法计算量较大,但它的优点是能够找到适用特定模型的最佳特征子集。与包裹法不同,过滤法先对数据集进行特征选择,也就是对初始特征进行过滤,再用过滤后的特征来训练模型。
  • 过滤法的计算负荷要小于包裹法,但由于特征子集和预测模型之间并没有建立对应关系,因而其性能也会劣于包裹法。但另一方面,过滤法得到的特征子集具有更强的通用性,也有助于揭示不同特征之间的关系。许多过滤器提供的不是一个明确的最佳功能子集,而是不同特征的排名,因而过滤法可以作为包裹法的预处理步骤来使用。
  • 嵌入法结合了包裹法和过滤法的思路,将特征选择和模型训练两个过程融为一体,使学习器在训练过程中自动完成特征选择。其典型的方法是引入 L1​ 范数作为正则项的 LASSO 方法。LASSO 方法的原理在线性回归中已经做过介绍,在此不做重复。一般来说,嵌入法的计算复杂度在包裹法和过滤法之间。

极客时间《人工智能基础课》学习笔记 Day6