机器学习维度灾难(二)

2024-03-16 15:18
文章标签 学习 机器 维度 灾难

本文主要是介绍机器学习维度灾难(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

机器学习维度灾难(一)转载了原作者的文章,浅显易懂,于是尝试接着翻译原文没有翻译完的,初学者水平委屈,有理解不对的和翻译错误的欢迎批评指正

原英文链接:点击打开链接

还有一篇写维度灾难的,和本文内容有相似之处点击打开链接

假设一个正方形代表二维特征空间,特征空间的平均值是这个正方形的中心,到这个中心距离为一个单位距离的样本分布在一个单位圆中。不在这个单位圆的样本相对于中心更接近正方形的边角。这些样本因为特征值差距很大(如对角的样本)而很难分类。由图9可以看出,如果样本都落在内切圆中,分类将会简单很多:


有意思的是如果我们一直增加维度,那正方形(超立方体)中的圆(超球面)的体积是如何变化的呢?超立方体的体积始终保持1^d = 1,这个d维超立方体内切超球面的体积(半径为0.5)可以用如下公式计算:


图10展示了超球面的体积是如何随着维度增加而变化的:


可以看出随着维度趋于无穷,超球面的体积趋于0,然而超立方体体积没有变化。这解释了分类问题中的维度灾难:在高纬空间中,大多数训练样本处于超立方体的边角处。上面也提到过,边角处的样本相对于位于超球面内的样本更难分类。可以从下图中看出来,下图展示了二维正方形、三维立方体、和有着2^8 = 256个角的八维的超立方体:


对于一个8维的超立方体,大约98%的数据分布在它的256个角处。因此,当特征空间维度趋于无穷大,样本到中点的最大和最小欧几里得距离的差,比上样本到中点的最小欧几里得距离趋于0:


因此,在高纬度空间,距离度量逐渐失去了度量差异性的能力。由于分类是基于这些距离度量(如欧几里得距离、马氏距离、曼哈顿距离),分类算法在低维度空间更容易实现。类似的,高斯 likelihoods(不知道肿么翻译可怜)变得平滑,重尾。因此最大likhood和最小likhood差值与最小likehood的壁纸也趋于0。


怎么避免维度灾难?

图1显示当维度很大时候,分类器的分类能力会下降。问题是“很大”是指什么,过拟合怎么避免?遗憾的是没有一个固定的法则定义在一个分类问题中应该用多少个特征。事实上,这取决于可提供的训练集大小、决策边界的复杂度、以及用的分类方法。


如果训练集可以达到理论上的无限个,那么久不存在维度灾难,我们可以用无限个维度去得到一个完美的分类器。训练集样本越少,越应该用少量的特征,如果N个训练样本足够覆盖一个一维的特征空间(区间大小为一个单位),那么 需要N^2个样本去覆盖一个同样密度的二维的特征空间,需要N^3个样本去覆盖三维的特征空间。换句话说,就是训练样本多少需要随着维度指数增长。

另外,那些精确计算非线性决策边界的分类器(如神经网络、KNN分类器、决策树)不会泛化的很好,而且容易发生过拟合。因此在用这些分类器的时候应该少用一些纬度。如果一个分类器泛化能力很好(如朴素贝叶斯,线性分类器),由于分类器本身表现能力差一些,那么纬度可以高一些。图6显示在高纬度空间用一个简单的分类器,就相当于在低纬度空间用一个复杂的分类器。



因此,过拟合在高纬度空间相对少量参数以、低纬度多参数的情况下都会发生过拟合。例如,考虑高斯密度函数,参数是它的平均值和协方差矩阵。在3D空间中,协方差矩阵是由6个不同元素(对角线上的三个方差和非对角线上的三个协方差)组成的3×3的对称矩阵,加上三个维度分布的的平均值,意味着我们需要估计9个参数,然而在2D情况中我们需要估计5个参数(两个平均值,两个方差和一个协方差)。我们可以看到随着维度增加,需要估计的参数随着维度二次增加。(原文grows quadratic with the number of dimensions.为什么是grows quadratic?)

在之前一篇文章我们看到随着需要估计的参数数量增加,参数的估计值的方差也会增加(并且如果估计偏差和训练集保持不变)。这意味着如果维度增加,随之方差增加,我们参数估计质量会下降。分类器的方差增加意味着过拟合。

另外一个有趣的问题是应该选择哪些特征。给定N个特征,我们如果选择最优的M个特征的子集满足M<N?一个方法是寻找图1中的最值。由于所有的特征组合,训练和测试分类是很棘手的,有很多方法来寻找这个最值。这些方法称为feature selection algorithms点击打开链接,经常用试探发(贪心算法,最好优先搜索法等)来确定特征的最优个数和组合。

另外一个方法是用M个特征替代N个特征,这M个特征中,每个都是原来特征的组合。为降低维度,尝试找到原始特征线性或者非线性最优组合的方法称为feature extraction methods点击打开链接。有名的产生正交的、原始特征线性组合的降维方法是PCA,PCA尝试找到一个低纬度的线性子空间,保持原始维度上大量数据的方差。然而,需要注意的是数据的大量方差不一定代表最有识别力的信息。

最后,一个非常重要的探测和避免分类训练过程中过拟合的方法是交叉验证。交叉验证方法将原始训练数据分成一个或多个训练数据子集。在分类训练中,一个子集用来测试分类结果的准确性,剩下的子集用来进行参数估计。如果分类结果在训练集合和测试集合上相差很多,那么就是产生了过拟合。很多类型的交叉验证如k折交叉验证和留一交叉验证可以用于可提供的训练数据很少的情况。

结论:

在这片文章中,我们讨论了feature selection和feature extraction的重要性,以及交叉验证,以防止维度灾难带来的过拟合。通过一个简单的栗子,我们探讨了维度灾难严重结果:过拟合。


这篇关于机器学习维度灾难(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/815864

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件