热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

机器学习基石(四):概率角度分析机器学习的可行性

一、前言什么是机器学习的可行性?算法是否具备学习能力。衡量学习能力是通过在训练数据集之外的数据来进行验证。这个学习能力,也就是算法的泛化能力。在机器学

一、前言

什么是机器学习的可行性?
算法是否具备学习能力。衡量学习能力是通过在训练数据集之外的数据来进行验证。这个学习能力,也就是算法的泛化能力。在机器学习中,我们的目标是要寻找高泛化能力的模型。

二、从概率论到机器学习

构建一个弹珠罐子模型,其中装满绿色和橘色弹珠,从中抓一把个数为N的弹珠作为样本。如下图所示。

在这里插入图片描述
用数学语言来描述上图中ν\nuνμ\muμ的关系,就是著名的霍夫丁不等式(Hoeffding’s Inequality)

P[∣ν−μ∣>ϵ]≤2exp(−2ϵ2N)(1)P[|\nu-\mu| > \epsilon]\le 2 exp(-2\epsilon^2N) \tag 1P[νμ>ϵ]2exp(2ϵ2N)(1)

公式(1)说明,ν\nuνμ\muμ是否相似,与μ\muμ的具体数值无关,只与样本容量N,容忍度ϵ\epsilonϵ有关。


接下来,我们从弹珠罐子模型转到机器学习模型。

在这里插入图片描述
如上图所示的一一对应。
在罐子里,我们不知道橘色真实占据全部弹珠的比例,同样,对于某个固定的假设h(x)h(x)h(x),我们不知道是否就是目标函数f(x)f(x)f(x)

样本空间中的每一个样本点x∈X对应于bin中的每一个marble,当假设h(x)和f(x)不一样时,我们就把球漆成橘色;一样时,我们就把球漆成绿色。

从球罐中抽取的size-N marble对应到学习问题中的训练集D,采样方式均为iid采样。

球罐模型的目的是用抽样计算出的比例估计真实的比例,而学习问题中我们的目的是用样本内误差in sample error估计样本外误差out sample error。

对于某个固定的h假设,我们可以将样本内外误差做如下定义:

Eout(h)=εx→P[h(x)≠f(x)]E_{out}(h)=\varepsilon_{x\rightarrow P}[h(x)\ne f(x)]Eout(h)=εxP[h(x)=f(x)]

Ein(h)=1N∑n=1N[h(xn)≠yn]E_{in}(h)=\frac{1}{N}\sum_{n=1}^N[h(x_n)\ne y_n]Ein(h)=N1n=1N[h(xn)=yn]

其中EoutE_{out}Eout表示out-of-sample Error,整个P中犯错误的概率,样本外误差,期望损失;EinE_{in}Ein表示in-sample Error,在样本空间N中犯错误的概率,样本内误差。

现在,我们就可以使用EoutE_{out}EoutEinE_{in}Ein重写霍夫丁不等式:
P[∣Ein(h)−Eout(h)∣>ϵ]≤2exp(−2ϵ2N)(2)P[|E_{in}(h)-E_{out}(h)| > \epsilon]\le 2 exp(-2\epsilon^2N) \tag 2P[Ein(h)Eout(h)>ϵ]2exp(2ϵ2N)(2)

同样,在使用样本求出来的EinE_{in}Ein,在样本数量N足够大的情况下,也能近似表示EoutE_{out}Eout,前提是都是针对该固定的h假设。

所以在手中拿着fixed的假设h的时候,如果Ein(h)E_{in}(h)Ein(h)很小的话,根据公式(2)也可以PAC(probably approximately correct)的说明Eout(h)E_{out}(h)Eout(h)也很小。也就说明,这时候的h和f很接近。

但是,截止目前为止,我们所有推论仅仅用于验证h是否是一个好的假设。至于固定的这个hhh,我们没办法保证他一定会生成很小的Ein(h)E_{in}(h)Ein(h)

三、在假说集合中挑选h

在上一节的基础上做拓展。我们一个假说,对应一个bin,那么有很多假说时候,就表示我们有很多bin。很容易做出推断,判断某个假说是否为好的假说,就是在看Ein(hi)E_{in}(h_i)Ein(hi)是否足够小。
在这里插入图片描述

真的是这样吗?

如上图所示,在假设hMh_MhM下,我们get到全为绿色的球,说明使用该假说的话,能够达到100%的准确率。但是从上帝视角来看,该EinE_{in}EinEoutE_{out}Eout还差很多。

接下来,我们来量化分析下,在多种h假设中选取最佳h的情境,对应的数学模型。

首先,定义坏的sample。

如果这份样本使得EinE_{in}EinEoutE_{out}Eout相差很多,我们将这份sample称为 BAD sample

霍夫丁不等式告诉我们,对于某个fixed h,出现BAD sample的概率是有限的。如下图所示:
在这里插入图片描述

但是,当整个学习过程中存在选择的时候,我们往往会选择对应EinE_{in}Ein小的h,这其中就有了偏见,不再公平。

用铜板举例子:

用铜板丢正反面,一次试验(一个固定的h)的时候,五次都为正面的概率为1/32, 如果重复150次试验(150个h),那么其中出现五次正面的概率高达99%。如果我们在其中挑选最好的那个h,基本拿到5次正面的那个h的概率就是99%以上。

我们来看在很多假设h的时候,如何定义bad sample
在这里插入图片描述
只要存在h使得该sample属于bad sample,我们就将其定义为bad sample

那么在算法可以自由在h中做挑选的时候,选中的概率bad sample的概率计算方法如下:
在这里插入图片描述

综上,如果∣H∣=M|H|=MH=M,其中M有限(H假设空间的h个数有限),N足够大,那么我们总能找到h,使得Ein(h)E_{in}(h)Ein(h)最接近0,同样对应Eout(h)E_{out}(h)Eout(h)也最接近0
这说明机器学习在一定范围内是可行的,我们的确能够学到一些东西,使得算法拥有对应的泛化能力。

四、总结

在这里插入图片描述
上图中黑色实线流程,与之前机器学习流程没有差别。

虚线部分,就是本章的重点,左侧指向training examples表示产生样本的方式。右侧的x表明,用于验证算法g的数据。

同样说明,用于测试和用于训练的数据,都是来源于同一个distribution。

最后,本节面向的对象是假说集hypothesis set H中容量有限的(finited M),如果M无限多的情况怎么办(LPA中无限条的线),我们会在接下来章节重点研究解决。


推荐阅读
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 丽江客栈选择问题
    本文介绍了一道经典的算法题,题目涉及在丽江河边的n家特色客栈中选择住宿方案。两位游客希望住在色调相同的两家客栈,并在晚上选择一家最低消费不超过p元的咖啡店小聚。我们将详细探讨如何计算满足条件的住宿方案总数。 ... [详细]
  • 本教程详细介绍了如何使用 TensorFlow 2.0 构建和训练多层感知机(MLP)网络,涵盖回归和分类任务。通过具体示例和代码实现,帮助初学者快速掌握 TensorFlow 的核心概念和操作。 ... [详细]
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • 本文详细介绍了Linux系统中init进程的作用及其启动过程,解释了运行级别的概念,并提供了调整服务启动顺序的具体步骤和实例。通过了解这些内容,用户可以更好地管理系统的启动流程和服务配置。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 在 Flutter 开发过程中,开发者经常会遇到 Widget 构造函数中的可选参数 Key。对于初学者来说,理解 Key 的作用和使用场景可能是一个挑战。本文将详细探讨 Key 的概念及其应用场景,并通过实例帮助你更好地掌握这一重要工具。 ... [详细]
  • 本文介绍了一种解决二元可满足性(2-SAT)问题的方法。通过具体实例,详细解释了如何构建模型、应用算法,并提供了编程实现的细节和优化建议。 ... [详细]
  •   上一篇博客中我们说到线性回归和逻辑回归之间隐隐约约好像有什么关系,到底是什么关系呢?我们就来探讨一下吧。(这一篇数学推导占了大多数,可能看起来会略有枯燥,但这本身就是一个把之前算法 ... [详细]
  • 深入剖析 DEX 赛道:从 60 大头部项目看五大趋势
    本文通过分析 60 大头部去中心化交易平台(DEX),揭示了当前 DEX 赛道的五大发展趋势,包括市场集中度、跨链协议、AMM+NFT 结合、新公链崛起以及稳定币和衍生品交易的增长潜力。 ... [详细]
  • 数据结构入门:栈的基本概念与操作
    本文详细介绍了栈这一重要的数据结构,包括其基本概念、顺序存储结构、栈的基本操作(如入栈、出栈、清空栈和销毁栈),以及如何利用栈实现二进制到十进制的转换。通过具体代码示例,帮助读者更好地理解和应用栈的相关知识。 ... [详细]
  • 开发笔记:9.八大排序
    开发笔记:9.八大排序 ... [详细]
  • 本题探讨了在一个有向图中,如何根据特定规则将城市划分为若干个区域,使得每个区域内的城市之间能够相互到达,并且划分的区域数量最少。题目提供了时间限制和内存限制,要求在给定的城市和道路信息下,计算出最少需要划分的区域数量。 ... [详细]
  • 基于结构相似性的HOPC算法:多模态遥感影像配准方法及Matlab实现
    本文介绍了一种基于结构相似性的多模态遥感影像配准方法——HOPC算法,该算法通过相位一致性模型构建几何结构特征描述符,能够有效应对多模态影像间的非线性辐射差异。文章详细阐述了HOPC算法的原理、实验结果及其在多种遥感影像中的应用,并提供了相应的Matlab代码。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
author-avatar
刘华兰2011_423
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有