没有免费午餐定理(No Free Lunch Theorem)

article/2025/10/13 5:14:14

当我们拿到数据之后,构建机器学习算法的第一步应当是:观察数据,总结规律。

       目前由于大数据和深度学习的发展,很多人会认为,只要收集足够多的数据,从网上的开源算法模型中随便找一个,直接将数据丢到模型中去训练,就可以获得很好的结果。这样的观点在大多数情况下都是不正确的。我们需要对数据有一个感性的认识,如果我们对数据没有感性的认识,我们就很难设计出好的算法,也很难估计算法可能达到的性能极限。

       对于不同的机器学习任务,我们怎么样去选择一个更好的机器学习算法呢?

没有免费午餐定理(No Free Lunch Theorem)

       1995年,Wolpert和Macerday提出了没有免费午餐定理。该定理的大致内容概括为:任何一个预测函数,如果在一些训练样本上表现好,那么必然在另一些训练样本上表现不好。如果不对数据在特征空间的先验分布有一定的假设,那么表现好与表现不好的情况一样多。因此,没有任何情况下都最好的机器学习算法。

       通俗地说,没有免费午餐(No Free Lunch, NFL)定理证明了任何模型在所有问题上的性能都是相同的,其总误差和模型本身是没有关系的。也就是每种问题出现的概率是均等的,每个模型用于解决所有问题时,其平均意义上的性能是一样的。

        所有模型在等概率出现的问题上都有同样的性能,这件事可以从两个角度来理解:

       一是从模型的角度来看,如果单独拿出一个特定的模型来观察的话,这个模型必然会在解决某些问题时误差较小,而在解决另一些问题时误差较大

       二是从问题的角度来看,如果单独拿出一个特定的问题来观察的话,必然有某些模型在解决这些问题时具有较高的精度,而另一些模型的精度就没那么理想了。

       举个例子来说,如果把不同模型看成一个班级里的不同学生,不同问题看成考试时的不同科目,NFL 定理说的就是在这个班里,所有学生期末考试的总成绩都是一样的,既然总成绩一样,每一科的平均分自然也是一样的。这一方面说明了每个学生都有偏科,数学好的语文差,语文好的数学差,如果数学语文都好,那么英语肯定更差;另一方面也说明了每个科目的试题都有明显的区分度,数学有高分也有低分,语文有高分也有低分,不会出现哪一科上大家都是 90 分或者大家都是 30 分的情形。

       NFL 定理最重要的指导意义在于先验知识的使用,也就是具体问题具体分析。机器学习的目标不是放之四海而皆准的通用模型,而是关于特定问题有针对性的解决方案。因此在模型的学习过程中,一定要关注问题本身的特点,也就是关于问题的先验知识。这就像学习数学有学习数学的方法,这套方法用来学习语文未必会有良好的效果,但它只要能够解决数学的问题就已经很有价值了。脱离问题的实际情况谈论模型优劣是没有意义的,只有让模型的特点和问题的特征相匹配,模型才能发挥最大的作用。

       在周志华的《机器学习》也就是通常所说的西瓜书中有这样一个例子:

       图中的黑点代表训练集。如果采用两种不同的算法,他们有着不同的归纳偏好,或者说训练策略,可能会训练出 A 和 B 两个模型(即假设),那么对于第一张图中的测试数据集(白点),显然 A 比 B 拟合得更好,即 A 的泛化能力更强;而对于第二张图则相反,B 在测试数据集上表现更出色。

       即便左边的图中的数据点的平滑分布似乎是一个更”常见“,更”合理“的现实问题,但很遗憾这只是你的一厢情愿。从数学上讲左右两张图所描述的问题,它们的地位是一样的,出现的可能也是一样,并不存在谁比谁更常见更符合现实。

       ”没有免费的午餐“定理正是要告诉我们,没有什么算法是适用于所有的现实问题的,任何两个算法,以及它们训练出来的模型,在所有的现实问题的集合面前是无优劣的,它们的性能的数学期望值是一样的。对于不同的现实问题,要选择相应的算法来解决。


http://chatgpt.dhexx.cn/article/bR4Mlrxs.shtml

相关文章

[TIST 2022] No Free Lunch Theorem for Security and Utility in Federated Learning

联邦学习中的安全性和实用性没有免费午餐定理 No Free Lunch Theorem for Security and Utility in Federated Learning 目录 摘要简介2 相关文献2.1 隐私测量2.2 联邦学习2.2.1 FL 中的威胁模型。2.2.2 FL 中的保护机制。 2.3 隐私-实用权衡 3 一般设置和框架3.1 符号3.2 一般…

Andriod中如何新建lunch项

Andriod编译过程一般为: 1.source build/envsetup.sh //加载命令,在项目根目录下(~/purple/code/a/A_code20211126/sdm660)目录 备注:在envsetup.sh里将执行vendor和device目录及各自子目录下所有的vendorsetup.sh&a…

VS中创建自定义控件

第一步:创建一个ASP.NET WEB应用程序 第二步:在同一个解决方案中创建一个服务控件项目 2.1 再次创建一个asp.net web应用程序。如图: 2.2 然后在这个项目下创建一个Web窗体服务器控件 第三步:编辑为我想要的控件 在这个我这个…

C#自定义控件的设计与调用

在C#下建立自己的控件库,需用到自定义控件的设计与调用。 一、自定义控件的设计 自定义控件,步骤如下: 1.点击文件->新建项目->选择Windows控件库2.编辑控件3.点击生成-&#xff1…

树形控件

一.分析过程 1.今天就来说说树形控件,什么是树形控件呢?树形控件在Windows系统中是很常见的,例如资源管理器左侧的窗口中就有用来显示目录的树形视图。 树形视图中以分层结构显示数据,每层的缩进不同,层次越…

WPF基本控件简介

默认可见的基本控件有 1、Border 设置控件画边框,2、Button 按钮 3、Calendar 日历 4、Canvas 画布控件 5、Checkbox 复选框 6、Combobox 下拉列表框 7、ContentControl 内容控件 8、DataGrid 显示表格数据 9、DataPicker 日期选择控件,带日历 10、Dock…

labview自定义控件

创建自定义输入控件、显示控件和自定义类型 目录 LabVIEW 2011帮助 版本日期:June 2011 产品编号:371361H-0118 查看产品信息 下载帮助(仅限Windows) 自定义输入控件和显示控件是对现有前面板对象集的扩展。用户可创建外观与内置L…

Excel 2010 VBA 入门 124 日期选择控件

目录 码 DTPicker控件 DTPicker控件的时间和日期的切换 DTPicker控件的日期输入方式 DTPicker控件的Value属性与Change事件 使用DTPicker控件实现日期选择并赋值给单元格 注册DTPicker控件 在Excel中,经常需要输入日期。为保证输入正确,可以通过一…

vue日期控件

<el-form-item label"有效期限" ><el-col :span"6"><el-form-item><el-date-pickertype"date"placeholder"选择日期"value-format"yyyy-MM-dd 00:00:00"v-model"effectiveStartTime":picker…

QT 布局,控件自适应大小 自动缩放 自动布局

目录 前言 1. 先来说简单的布局控件自适应 说明我们实现了自动布局&#xff1b; 3.通过代码设置控件自动缩放重写resizeEvent 4. 源码&#xff1a;https://upload.csdn.net/creation/uploadResources/86620882 前言 QT版本&#xff1a;Qt5.12.3(msvc2017_64) 有时&#xf…

WindowsFormsHost控件

WPF和WinForms是两个不同的UI框架&#xff0c;都是由Microsoft创建的。 WPF是WinForms的一个更现代的替代品&#xff0c;WinForms是第一个.NET UI框架。 为了在两者之间轻松过渡&#xff0c;Microsoft确保WinForms控件仍然可以在WPF应用程序中使用。 这是通过WindowsFormsHost完…

C#添加第三方控件

C#添加第三方控件 第三方控件操作步骤 在项目开发时&#xff0c;C#自带的控件可能无法满足项目需求&#xff0c;需要引入第三方控件&#xff0c;本文主要介绍在VS2019上如何导入第三方控件。 第三方控件 第三方控件指自定义的控件或者用户控件&#xff0c;它们继承自.NET类库…

qt自定义控件

文章目录 前言一、自定义控件需要的准备二、自定义控件步骤1.创建自定义插件2.添加带ui的类&#xff0c;删当前生成的.h和.cpp&#xff0c;重新添加qt带ui的类。3.编辑自定义控件数据4.使用和运行 总结 前言 如何自定义控件 一、自定义控件需要的准备 QT大多数采用MSVC编译&a…

C#自定义控件VS用户控件

C#自定义控件VS用户控件 1、C#中自定义控件VS用户控件大比拼2、为自定义控件&#xff08;或类&#xff09;的方法属性添加注解2.1、Description&#xff1a;在属性窗口中添加属性及属性说明2.2、Browsable2.3、EditorBrowsable2.4、Category2.5、ToolboxBitmap2.6、DefaultEven…

C# 自定义控件

一 自定义控件 1 自定义控件的三种方式&#xff1a; 1&#xff09;复合控件&#xff1a;将标准控件组合起来 class YourControl:UserControl{}2) 扩展控件&#xff1a;继承于标准控件 class YourControl:Button{}3) 自定义控件&#xff1a;完全地自定义一个控件 class You…

C#窗体控件简介

C#窗体控件简介-选项卡控件 在Windows 应用程序中&#xff0c;选项卡用于将相关的控件集中在一起&#xff0c;放在一个页面中用以显示多种综合信息。选项卡控件通常用于显示多个选项卡&#xff0c;其中每个选项卡均可包含图片和其他控件。选项卡相当于多窗体控件&#xff0c;可…

QStackedWidget 控件

一、简介 1、QStackedWidget 控件相当于一个容器&#xff0c;提供一个空间来存放一系列的控件&#xff0c;并且每次只能有一个控件是可见的&#xff0c;即被设置为当前的控件。 2、常用接口函数&#xff1a; addWidget&#xff1a;向容器中添加控件setCurrentWidget&#xf…

测试会遇到的控件

我们测试一个软件&#xff0c;不管是C/S系统还是B/S系统&#xff0c;都会遇到各种各样的控件。控件是构成应用程序交互界面的基本元素&#xff0c;知己知彼&#xff0c;百战不殆&#xff0c;测试它们就要首先了解它们的特性。这里&#xff0c;我对常见的控件做一个汇总。希望大…

11. Windows应用程序常用控件

Windows应用程序常用控件 1 控件概述1.1 控件的分类及作用1.2 控件的命名规范1.2 控件的相关操作2.1 添加控件2.2 对齐控件2.3 锁定控件2.4 删除控件 3 文本类控件3.1 标签控件&#xff08;Label控件&#xff09;3.2 按钮控件&#xff08;button控件&#xff09;3.3 文本框控件…

第五章 Windows基础控件

一、 控件&#xff08;类&#xff09; 1&#xff0c;常用的控件分类及作用&#xff1a; 2&#xff0c;控件的基本操作&#xff1a; 1&#xff09;添加、删除控件&#xff1b; 2&#xff09;对齐控件。 注意&#xff1a;选择的第一个控件是主控键&#xff0c;其他的控件都与其对…