当前位置: 首页 > 科技观察

打破“维数诅咒”,机器学习是降维的好方法

时间:2023-03-18 12:21:30 科技观察

本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。在使用机器学习的时候,你是不是经常为不相关的特征太多,模型表现不好而烦恼?事实上,降维是机器学习中解决这个问题的一个很好的方法。知名科技博主BenDickson对此进行了讨论,并在TechTalks上发表了一篇博文《机器学习:什么是降维》。本文的编译得到了BenDickson本人的授权。他指出,机器学习算法因其在具有许多特征的数据集中查找相关信息的能力而变得流行,例如具有数十行的表格或具有数百万像素的图像。云计算的突破,可以帮助用户不受后台计算能力的限制,运行大规模的机器学习模型。但是,添加的每个新功能都会增加复杂性,并使机器学习算法难以使用。数据科学家通常使用降维,这是一组用于从机器学习模型中删除过多或不相关特征的技术。降维可以降低机器学习的成本,有时还有助于用更简单的模型解决复杂的问题。下面我们来看看他的文章。维数灾难机器学习模型可以将特征映射到结果。例如,假设你想创建一个模型来预测一个月的降雨量:你有一个数据集,其中包含在不同月份从不同城市收集的各种信息,包括温度、湿度、城市人口、交通、城市举办的活动演唱会次数、风速、风向、气压、购买的公交车票数量和降雨量。显然,并非所有这些信息都与降雨预报有关。有些特征可能与目标变量无关。例如,人口和购买的公交车票数量不会影响降雨量。其他特征可能与目标变量相关,但与它没有因果关系。例如,户外音乐会的数量可能与降雨量相关,但它并不是降雨量的一个很好的预测指标。在其他情况下,例如碳排放量,特征和目标变量之间可能存在联系,但影响可以忽略不计。在这个例子中,很明显哪些特征是有价值的,哪些不是。在其他问题中,过多的特征可能不明显,需要进一步的数据分析。但为什么要费心去除额外的维度呢?因为当你有太多的特征时,你还需要一个更复杂的模型,这意味着你需要更多的训练数据和更多的计算能力来将模型训练到一个可以接受的水平。由于机器学习不理解因果关系,即使没有因果关系,模型也会尝试将数据集中的任何特征映射到目标变量,这可能会导致模型错误。另一方面,减少特征数量可以使机器学习模型更简单、更有效,并且对数据的要求更低。由许多特征引起的问题通常被称为“维数灾难”,而且它们不仅限于表格数据。考虑一个对图像进行分类的机器学习模型。如果您的数据集包含100x100像素的图像,每个像素一个,则问题空间有10,000个特征。然而,即使在图像分类问题中,一些特征也有些矫枉过正,可以删除。降维识别并删除会损害机器学习模型性能或无助于其准确性的特征。有几种降维技术,每一种都有有用的范围。特征选择一种基本且有效的降维方法是“特征选择”,即识别和选择与目标变量最相关的特征子集。在处理表格数据时,特征选择非常有效,因为其中的每一列都代表一种特定的信息。在进行特征选择时,数据科学家会做两件事:保留与目标变量高度相关的特征,以及对数据集方差贡献最大的特征。Python的Scikit-learn库开发了许多函数来分析、可视化和选择正确的特征来实现机器学习模型。例如,数据科学家可以使用散点图和热图来可视化不同特征的协方差。如果两个特征高度相关,那么它们将对目标变量产生相似的影响,因此可以删除其中一个特征而不会对模型产生负面影响。这些工具还可以帮助可视化特征和分析目标变量之间的关联,从而帮助去除不影响目标变量的变量。例如,您可能会发现数据集中25个特征中的7个占目标变量的95%。所以能够去除18个特征使得机器学习模型更简单,而不会对模型的准确性产生太大影响。投影技术有时,您无法删除个别特征,但这并不意味着您无法简化您的机器学习模型。一个很好的方法是投影技术,也称为“特征提取”,它可以通过将几个特征压缩到低维空间来简化模型。用于表示投影技术的一个常见示例是“瑞士卷”。这是一组围绕3D焦点旋转的数据点,该数据集具有三个特征。每个点(目标变量)的值是根据它沿着卷曲路径到瑞士卷中心的距离来测量的。在下图中,红点离中心更近,黄点离滚动方向更远。创建一个将瑞士卷点的特征映射到它们的值的机器学习模型非常困难,需要一个具有许多参数的复杂模型。然而,通过引入降维技术,这些点可以被投影到一个可以通过简单的机器学习模型学习的低维空间中。有多种投影技术。在上面的例子中,我们使用了“局部线性嵌入(LLE)”的方法,这是一种降低问题空间维度同时保留分隔数据点值的关键元素的算法。使用LLE处理我们的数据时,结果如下图所示,就像展开的瑞士卷。您可以看到每种颜色的点都在一起。因此,问题仍然可以简化为单个特征,并用最简单的机器学习算法(线性回归)建模。虽然此示例是假设的,但如果将要素投影到较低维空间,您经常会遇到可以简化的问题。例如,“主成分分析”(PCA)是一种流行的降维算法,在简化机器学习问题方面有许多有用的应用。在优秀的《用Python进行机器学习(Hands-on Machine Learning with Python)》中,数据科学家AurelienGeron展示了如何使用PCA将MNIST数据集从784个特征(28×28像素)减少到150个特征,同时保留95%的方差。这种程度的降维对人工神经网络的训练和运行成本有特别大的影响。关于投影技术有几个注意事项需要考虑:一旦开发出投影技术,您必须首先将新数据点转换到低维空间,然后再通过机器学习模型运行它们。但如果这个预处理步骤的成本太大而最终模型的收益太小,则可能不值得。第二个问题是,转换后的数据点可能不直接代表它们的原始特征,将它们转换回原始空间可能很麻烦,在某些情况下不切实际,因此这会使模型的推论难以解释。机器学习工具箱中降维的简要总结。太多的特征会降低机器学习模型的效率,但去除太多的特征也不好。数据科学家可以将降维作为工具箱来生成良好的机器学习模型,但与任何其他工具一样,使用降维时也存在很多问题,需要注意的地方也很多。作者简介BenDickson,知名科技博主、软件工程师,TechTalks创始人。