林轩田机器学习基石 - 学习笔记4 - 机器学习的可行性

本文深入探讨了机器学习的可行性,首先介绍了No Free Lunch定理,指出没有一个学习算法能在所有领域产生最优结果。随后,文章引入概率论,利用Hoeffding不等式建立了训练误差与泛化误差之间的联系,证明了在一定条件下,机器学习是可行的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 Learning is Impossible

首先,考虑这样一个例子,如下图所示,有3个label为-1的九宫格和3个label为+1的九宫格。根据这6个样本,提取相应label下的特征,预测右边九宫格是属于-1还是+1?结果是,如果依据对称性,我们会把它归为+1;如果依据九宫格左上角是否是黑色,我们会把它归为-1。除此之外,还有根据其它不同特征进行分类,得到不同结果的情况。而且,这些分类结果貌似都是正确合理的,因为对于6个训练样本来说,我们选择的模型都有很好的分类效果。

在这里插入图片描述

再来看一个比较数学化的二分类例子,输入特征 x x x 是二进制的、三维的,对应有8种输入,其中训练样本D有5个。那么,根据训练样本对应的输出 y y y,假设有8个 h y p o t h e s i s hypothesis hypothesis,这8个 h y p o t h e s i s hypothesis hypothesis D D D上,对5个训练样本的分类效果效果都完全正确。但是在另外3个测试数据上,不同的 h y p o t h e s i s hypothesis hypothesis表现有好有坏。在已知数据 D D D上, g ≈ f g\approx f gf;但是在 D D D以外的未知数据上, g ≈ f g\approx f gf不一定成立。而机器学习目的,恰恰是希望我们选择的模型能在未知数据上的预测与真实结果是一致的,而不是在已知的数据集 D D D上寻求最佳效果。

在这里插入图片描述

这个例子告诉我们,我们想要在 D D D以外的数据中更接近目标函数似乎是做不到的,只能保证对 D D D有很好的分类结果。机器学习的这种特性被称为没有免费午餐(No Free Lunch)定理。NFL定理表明没有一个学习算法可以在任何领域总是产生最准确的学习器。不管采用何种学习算法,至少存在一个目标函数,能够使得随机猜测算法是更好的算法。平常所说的一个学习算法比另一个算法更“优越”,效果更好,只是针对特定的问题,特定的先验信息,数据的分布,训练样本的数目,代价或奖励函数等。从这个例子来看,NFL说明了无法保证一个机器学习算法在D以外的数据集上一定能分类或预测正确,除非加上一些假设条件,我们以后会介绍。

二 Probability to the Rescue

从上一节得出的结论是:在训练集 D D D以外的样本上,机器学习的模型是很难,似乎做不到正确预测或分类的。那是否有一些工具或者方法能够对未知的目标函数 f f f做一些推论,让我们的机器学习模型能够变得有用呢?

如果有一个装有很多(数量很大数不过来)橙色球和绿色球的罐子,我们能不能推断橙色球的比例 u u u?统计学上的做法是,从罐子中随机取出 N N N个球,作为样本,计算这 N N N个球中橙色球的比例 v v v,那么就估计出罐子中橙色球的比例约为 v v v

在这里插入图片描述

在这里插入图片描述

三 Connection to Learning

下面,我们将罐子的内容对应到机器学习的概念上来。机器学习中 h y p o t h e s i s hypothesis hypothesis与目标函数相等的可能性,类比于罐子中橙色球的概率问题;罐子里的一颗颗弹珠类比于机器学习样本空间的x;橙色的弹珠类比于 h ( x ) h(x) h(x) f f f不相等;绿色的弹珠类比于 h ( x ) h(x) h(x) f f f相等;从罐子中抽取的 N N N个球类比于机器学习的训练样本 D D D,且这两种抽样的样本与总体样本之间都是独立同分布的。所以呢,如果样本 N N N够大,且是独立同分布的,那么,从样本中 h ( x ) ≠ f ( x ) h(x)\neq f(x) h(x)̸=f(x)的概率就能推导在抽样样本外的所有样本中 h ( x ) ≠ f ( x ) h(x)\neq f(x) h(x)̸=f(x)的概率是多少。
在这里插入图片描述
映射中最关键的点是讲抽样中橙球的概率理解为样本数据集 D D D h ( x ) h(x) h(x)错误的概率,以此推算出在所有数据上 h ( x ) h(x) h(x)错误的概率,这也是机器学习能够工作的本质,即我们为啥在采样数据上得到了一个假设,就可以推到全局呢?因为两者的错误率是PAC的,只要我们保证前者小,后者也就小了。

在这里插入图片描述

这里我们引入两个值 E i n ( h ) E_{in}(h) Ein(h) E o u t ( h ) E_{out}(h) Eout(h) E i n ( h ) E_{in}(h) Ein(h)表示在抽样样本中, h ( x ) h(x) h(x) y n y_n yn不相等的概率; E o u t ( h ) E_{out}(h) Eout(h)表示实际所有样本中, h ( x ) h(x) h(x) f ( x ) f(x) f(x)不相等的概率是多少。

在这里插入图片描述

在这里插入图片描述

四 Connection to Real Learning

在这里插入图片描述

在这里插入图片描述

也就是说,不同的数据集 D n D_n Dn,对于不同的 h y p o t h e s i s hypothesis hypothesis,有可能成为Bad Data。只要 D n D_n Dn在某个 h y p o t h e s i s hypothesis hypothesis上是Bad Data,那么 D n D_n Dn就是Bad Data。只有当 D n D_n Dn在所有的 h y p o t h e s i s hypothesis hypothesis上都是好的数据,才说明 D n D_n Dn不是Bad Data,可以自由选择演算法A进行建模。那么,根据Hoeffding’s inequality,Bad Data的上界可以表示为连级(union bound)的形式:

在这里插入图片描述

其中, M M M h y p o t h e s i s hypothesis hypothesis的个数, N N N是样本 D D D的数量, ϵ \epsilon ϵ是参数。该union bound表明,当 M M M有限,且 N N N足够大的时候,Bad Data出现的概率就更低了,即能保证 D D D对于所有的h都有 E i n ≈ E o u t E_{in}\approx E_{out} EinEout,满足PAC,演算法A的选择不受限制。那么满足这种union bound的情况,我们就可以和之前一样,选取一个合理的演算法(PLA/pocket),选择使 E i n E_{in} Ein最小的 h m h_m hm作为矩 g g g,一般能够保证 g ≈ f g\approx f gf,即有不错的泛化能力。

所以,如果hypothesis的个数M是有限的,N足够大,那么通过演算法A任意选择一个矩g,都有E_{in}\approx E_{out}Ein≈Eout成立;同时,如果找到一个矩g,使E_{in}\approx 0Ein≈0,PAC就能保证E_{out}\approx 0Eout≈0。至此,就证明了机器学习是可行的。

在这里插入图片描述

但是,如上面的学习流程图右下角所示,如果 M M M是无数个,例如之前介绍的PLA直线有无数条,是否这些推论就不成立了呢?是否机器就不能进行学习呢?这些内容和问题,我们下节课再介绍。

五 总结

本节课主要介绍了机器学习的可行性。首先引入NFL定理,说明机器学习无法找到一个矩g能够完全和目标函数 f f f一样。接着介绍了可以采用一些统计上的假设,例如 H o e f f d i n g Hoeffding Hoeffding不等式,建立 E i n E_{in} Ein E o u t E_{out} Eout的联系,证明对于某个 h h h,当 N N N足够大的时候, E i n E_{in} Ein E o u t E_{out} Eout是PAC的。最后,对于 h h h个数很多的情况,只要有 h h h个数 M M M是有限的,且 N N N足够大,就能保证 E i n ≈ E o u t E_{in}\approx E_{out} EinEout,证明机器学习是可行的。

基于数据挖掘的音乐推荐系统设计与实现 需要一个代码说明,不需要论文 采用python语言,django框架,mysql数据库开发 编程环境:pycharm,mysql8.0 系统分为前台+后台模式开发 网站前台: 用户注册, 登录 搜索音乐,音乐欣赏(可以在线进行播放) 用户登陆时选择相关感兴趣的音乐风格 音乐收藏 音乐推荐算法:(重点) 本课题需要大量用户行为(如播放记录、收藏列表)、音乐特征(如音频特征、歌曲元数据)等数据 (1)根据用户之间相似性或关联性,给一个用户推荐与其相似或有关联的其他用户所感兴趣的音乐; (2)根据音乐之间的相似性或关联性,给一个用户推荐与其感兴趣的音乐相似或有关联的其他音乐。 基于用户的推荐和基于物品的推荐 其中基于用户的推荐是基于用户的相似度找出相似相似用户,然后向目标用户推荐其相似用户喜欢的东西(和你类似的人也喜欢**东西); 而基于物品的推荐是基于物品的相似度找出相似的物品做推荐(喜欢该音乐的人还喜欢了**音乐); 管理员 管理员信息管理 注册用户管理,审核 音乐爬虫(爬虫方式爬取网站音乐数据) 音乐信息管理(上传歌曲MP3,以便前台播放) 音乐收藏管理 用户 用户资料修改 我的音乐收藏 完整前后端源码,部署后可正常运行! 环境说明 开发语言:python后端 python版本:3.7 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:pycharm
MPU6050是一款广泛应用在无人机、机器人和运动设备中的六轴姿态传感器,它集成了三轴陀螺仪和三轴加速度计。这款传感器能够实时监测并提供设备的角速度和线性加速度数据,对于理解物体的动态运动状态至关重要。在Arduino平台上,通过特定的库文件可以方便地与MPU6050进行通信,获取并解析传感器数据。 `MPU6050.cpp`和`MPU6050.h`是Arduino库的关键组成部分。`MPU6050.h`是头文件,包含了定义传感器接口和函数声明。它定义了类`MPU6050`,该类包含了初始化传感器、读取数据等方法。例如,`begin()`函数用于设置传感器的工作模式和I2C地址,`getAcceleration()`和`getGyroscope()`则分别用于获取加速度和角速度数据。 在Arduino项目中,首先需要包含`MPU6050.h`头文件,然后创建`MPU6050`对象,并调用`begin()`函数初始化传感器。之后,可以通过循环调用`getAcceleration()`和`getGyroscope()`来不断更新传感器读数。为了处理这些原始数据,通常还需要进行校准和滤波,以消除噪声和漂移。 I2C通信协议是MPU6050与Arduino交互的基础,它是一种低引脚数的串行通信协议,允许多个设备共享一对数据线。Arduino板上的Wire库提供了I2C通信的底层支持,使得用户无需深入了解通信细节,就能方便地与MPU6050交互。 MPU6050传感器的数据包括加速度(X、Y、Z轴)和角速度(同样为X、Y、Z轴)。加速度数据可以用来计算物体的静态位置和动态运动,而角速度数据则能反映物体转动的速度。结合这两个数据,可以进一步计算出物体的姿态(如角度和角速度变化)。 在嵌入式开发领域,特别是使用STM32微控制器时,也可以找到类似的库来驱动MPU6050。STM32通常具有更强大的处理能力和更多的GPIO口,可以实现更复杂的控制算法。然而,基本的传感器操作流程和数据处理原理与Arduino平台相似。 在实际应用中,除了基本的传感器读取,还可能涉及到温度补偿、低功耗模式设置、DMP(数字运动处理器)功能的利用等高级特性。DMP可以帮助处理传感器数据,实现更高级的运动估计,减轻主控制器的计算负担。 MPU6050是一个强大的六轴传感器,广泛应用于各种需要实时运动追踪的项目中。通过 Arduino 或 STM32 的库文件,开发者可以轻松地与传感器交互,获取并处理数据,实现各种创新应用。博客和其他开源资源是学习和解决问题的重要途径,通过这些资源,开发者可以获得关于MPU6050的详细信息和实践指南
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值