林轩田机器学习基石课程个人笔记-第八讲_林轩田机器学习第八讲笔记-程序员宅基地

技术标签: 林轩田机器学习基石课程  

之前学习的演算法都是建立在理想的数据上的,也就是我们的数据没有所谓的噪声,在无噪声的数据上算法是可行的,那么在实际中数据通常是很杂乱的,会有很多的噪声存在,那么在这些数据中,我们的算法是否还可行呢?

上一讲学习了VC维的相关知识,我们知道如果我们有一个dvc,数据足够的多,并且可以得到足够小的Ein,那么就认为学习是可行的。接下来来学习在有噪声的数据中,我们的学习是怎么样的呢?
在这里插入图片描述

Noise and Probabilistic Target

在数据中有噪声后,我们的学习流程图如下
在这里插入图片描述
那么噪声是怎么存在的呢?例如在之前的二分类问题中,总会有某些点无法分类正确,那么它们就是数据中存在的噪声。
在这里插入图片描述
再比如在提到的信用卡的例子中,在数据的采集中,由于人为的原因,会导致数据输入的错误;又比如数据没有太多的错误,但是在审批时可能会驳回本应该可以得到审批的用户,这样的决策也是噪声;或是对于同一客户,不同的工作人员也可能做出不同的决策,这也是噪声……总之在实际的应用场景中,噪声是无法避免的。
在这里插入图片描述
这就提出一个问题,之前学习的VC bound在有噪声的数据中能否正常的工作呢?之前我们想知道一个瓶子中的某种颜色的弹珠是怎么做的呢?采用的方法时抽样,通过多次抽样计算每次抽样中弹珠的比例来猜测整个瓶子中的比例,根据统计学的知识,在数据足够的情况下,我们就可以说抽样的比例就是整体样本中的比例。
在这里插入图片描述

没有噪声的数据我们称之为deterministic,数据满足某种分布,我们的假设得出的结果要么满足f(x)=h(x),要么就不等于。但是在有噪声的数据中,就不是这么个情况了,也就是说在某个x处不在是确定的分布了,而是满足某种概率分布P(y|x).
在这里插入图片描述

经过相关的证明我们可以得到:在x和y满足如下的分布,也就是x,y满足某种联合概率分布时,VC bound仍然是可行的。
在这里插入图片描述
这里将P(y|x)称之为Target Distribution,它告诉我们最好的选择是什么,同时伴随着多少noise,即可以写成P(y|x)≈ideal mini-target + noise。比如如下的例子中,在某个x下,o的概率为0.7,×的概率为0.3,那么我们就可以说ideal mini-target为o,浮动的噪声的水平也就是0.3。其实,没有noise的数据仍然可以看成“特殊”的概率分布,即概率仅是1和0。
在这里插入图片描述
在这种情况下,学习的目标就变成在在x的输入上,预测最理想的概率分布P(y|x)。
在这里插入图片描述
学习的流程图就变成了这样
在这里插入图片描述

Error Measure

在之前的学习中,我们希望学习到一个g使它可以很好的接近数据中隐含的f。
在这里插入图片描述
那么如何来衡量模型的错误呢?之前我们通过数据学习到一个模型后,在未知的数据集上对每一个数据,通过如下的公式来计算Eout(g)。我们介绍的g对错误的衡量有三个特性:
• outofsample:样本外的未知数据
• pointwise:对每个数据点x进行测试
• classification:看prediction与target是否一致
在这里插入图片描述
比如在二分类问题中,结果就是对或不对,也就是常说的0/1 error。
在这里插入图片描述
因此在实际中一般使用如下的公式计算Eout(g),将err称之为PointWise error。它实际上就是对数据集的每个点计算错误并计算平均, Ein和Eout的pointwise error的表达式为:
在这里插入图片描述

下面介绍两种常用的pointwise error,为了方便我们引入下面的记号
在这里插入图片描述

一种是之前的0/1 error,只关注对错与否,通常用在分类问题中,比如之前的感知机算法;另一种是平方误差,它表示了预测值与真实值的距离,通常用在回归算法中,比如后面学到的线性回归等。
在这里插入图片描述
了解了常用的error后,需要明白它是如何的指导演算法的学习的呢?
在这里插入图片描述
通过条件概率和error来共同得到最理想的f(x)。
在这里插入图片描述
0/1 error和squared error的Ideal Mini Target计算方法不一样。例如下面这个例子,分别用0/1 error和squared error来估计最理想的mini target是多少。0/1 error中的mini target是取P(y|x)最大的那个类,而squared error中的mini target是取所有类的加权平方和。
在这里插入图片描述
在知道了上面的错误衡量后,我们可以使用error measure来指导演算法,使得到的g更加接近目标的f。学习流程图变成了如下
在这里插入图片描述
比如在常见的指纹识别中,根据f的值来决定是否识别成功。
在这里插入图片描述
error常见的有两种,false accept和false reject,false accept表示不该接受的却错误的接受了;false reject表示错误的接受,即把闯入者当成了合法的用户。
在这里插入图片描述
这理论上把这两种错误的代价看成是一样的了,发生的不同的错误对于结果的影响是相同的。但是实际中,却不是这样。比如在超市营销中,如果某个用户没有优惠但是系统错误的给了优惠,那么结果可能就是超市减少点盈利,不会有太大的影响,所以我们可以将false accept的代价值记为1;而如果某用户本应该有优惠但没有改,那么用户就不开心了,再一传十十传百,将会对超市的营收造成很大的影响,故将false reject的代价记为10。
在这里插入图片描述
在其他的实际应用中,我们可以根据不同的应用场景对于不同的错误设置不同的代价值。
在这里插入图片描述
在应用中,机器学习演算法A的cost function error估计有多种方法,真实的err一般难以计算,常用的方法可以采用plausible或者friendly,根据具体情况而定。plausible是指采用一种可以是用户满意的方式控制噪声的存在,比如尽可能最小化flipping noise或者是认为噪声是满足高斯分布的。另一种是采用一种“友好的方法”,可以被演算法很好的使用。
在这里插入图片描述
将误差衡量加入到学习中后,学习的流程图就变成了如下的形式:我们的目标 变成了err,而且err_hat也成为了演算法中的关键的部分。
在这里插入图片描述

实际上,机器学习的Cost Function即来自于这些error,也就是算法里面的迭代的目标函数,通过优化使得Error(Ein)不断变小。
通常使用的是最小化有权重的分类中,我们通过最小化带权重的Ein(h)来达到学习的目标。在PLA中,主要是线性可分的就不太关注err。但是在pocket算法中,如果想要使用误差衡量,我们就需要调整一下
在这里插入图片描述
比如在之前的数据中,代价值如图所示,在引入误差衡量后,代价均为1,但是我们可以将对应的数据复制1000次,来达到相同的效果。
在这里插入图片描述
在cost function中,false accept和false reject赋予不同的权重,在演算法中体现。对不同权重的错误惩罚,可以选用virtual copying的方法。
在这里插入图片描述

最后总结一下,通过这一将我们知道,即使数据集中含有噪声,VC Dimension仍然是成立的,我们的学习也是可行的。也了解了两种常用的误差衡量,同时也要明白,需要根据实际的场景设置不同的代价值。最后介绍了如何在pocket算法中经过调整来引入误差衡量。
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Forlogen/article/details/86738266

智能推荐

等待唤醒机制----线程池----lambda表达式_wait_for lamba 表达式-程序员宅基地

1、等待唤醒机制1.1线程间通信概念:多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同。比如:线程A用来生成包子的,线程B用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动作,一个是生产,一个是消费,那么线程A与线程B之间就存在线程通信问题。1.2等待唤醒机制什么是等待唤醒机制这是多个线程间的一种协作机制。谈到线程我们经常想到的是线程间的竞争(race),比如去..._wait_for lamba 表达式

Ngrinder脚本开发各细节锦集-各种函数方法(groovy)-程序员宅基地

转载:https://www.cnblogs.com/xidianzxm/p/11602120.htmlNgrinder脚本开发各细节锦集(groovy)Ngrinder脚本开发各细节锦集(groovy)1、生成随机字符串(import org.apache.commons.lang.RandomStringUtils) 数字:RandomStringUtils.randomNumeric(length); 字母:RandomStringUtils.randomAlphabe

Sublime Text 2中,通过自定义Snippets,实现代码自动补全-程序员宅基地

昨天在搞定了Sublime Text 2之后,发现了一个极其严重的问题。以前在windows上开发,IDE经常会自动补全代码,比如<%= link_to xxxxxx %>,要是自己一个一个输入<, %, =, %, >,这样开发效率无比低,所以,在转到了Sublime Text 2阵营之后,对于这个问题,头疼不已,好在昨晚花了时间去找了解决方案。其实对于这个问题,解决...

Golang-Web(连接Mysql)_golang 最简单webapi连接数据库查询-程序员宅基地

一.驱动包简介 驱动包:任何编程语言想要连接数据库必须由数据库生产厂商提供了统一数据库调用而开发的内容 Golang的MySQL驱动包可以在github中下载到 http://github.com/go-sql-driver/mysql二.go get go get命令可以远程下载指定内容,支持git github要求下载内容必须通过git客户端,所以当直接使用go get命令后会提示错误 在命令行中运行命令 需要注意的是:前提已经安装好git_golang 最简单webapi连接数据库查询

STM32F407读取ADS1115数据_stm32 ads1115_Karon_R的博客-程序员宅基地

ADS1115器件地址为1001000,可得发送器件地址,发送时同时给出读/写信号,如0x90(写)或0x91(读)。配置寄存器(D0~D15):AIN3配置寄存器0xF983:1111 1001 1000 0011AIN2配置寄存器0xE983:1110 1001 1000 0011AIN1配置寄存器0xD983:1101 1001 1000 0011ADS1115的实际电压 = (寄存器转换结果值/ 2^15 ) * FSI2C软件模拟子程序void Write_AD_AIN1()_stm32 ads1115

解决Echarts+antV组件Tabs的警告:Can‘t get DOM width or height._echarts隐藏之后宽高塌陷can't get dom width or height. plea_LeeTikPaak19的博客-程序员宅基地

问题描述不同标签页下进行切换时,会导致echart图的切换,当切换时标签页中的echart图会缩在一起,如下图所示:原因antV中该组件不能刷新视图重新执行render,也即不会触发echarts图的初始化销毁等阶段,这几个tab中的echarts是同时加载的。解决useState声明一个变量a并把它绑定antv的组件Tabs属性activeKey,并且添加onchange方法,方法里setState改变该变量a,触发render触发echarts图的初始化销毁等阶段..._echarts隐藏之后宽高塌陷can't get dom width or height. please check dom.clien

随便推点

友情链接对于网站来说有什么作用?-程序员宅基地

广州seo教程:友情链接对于网站来说有什么作用?几乎每个网站都有友情链接这一模块的存在,友情链接即是在你的网站上面放上别人网站的一条链接,那么友情链接的具体作用对于seo新手教程来说也是不错的知识点。一、提升网站曝光度说白了就像是两人见面互相交换名片一样。比如用户搜索关键词seo新手教程到了你的站点进行浏览,然后用户发现在你的友情链接上有一个seo进阶教程的链接,那么可能用户浏览完你的站点后...

永磁同步电机pmsm二阶全局快速终端滑模控制matlab模型 自己做的永磁同步电机gftsmc控制_二阶系统怎么用快速终端滑膜控制-程序员宅基地

但是转存的过程中,有些模块会转存失败,需要从新转存版本的simulnik里的library里找到同样的模块,把转存失败的替换掉。1.该模型是基于2021的simulink搭建,如果版本不一致,可以转存为需要的版本。优点在于电机参数修改后,修改相应的定义块就可以,简单粗暴方便。永磁同步电机pmsm二阶全局快速终端滑模控制matlab模型。还有pi控制的,也是一样,参数修改简单粗暴。自己做的永磁同步电机gftsmc控制。有连续型的,也有离散型的。_二阶系统怎么用快速终端滑膜控制

android 蓝牙SPP协议通信-程序员宅基地


 准备1.蓝牙串行端口基于SPP协议(Serial Port Profile),能在蓝牙设备之间创建串口进行数据传输 2.SPP的UUID:00001101-0000-1000-8000-00805F9B34FB 3.Android手机一般以客户端的角色主动连接SPP协议设备连接流程1.检测蓝牙状态 若蓝牙未打开,则打开蓝牙~bluetoothAdapte...

ABI and ISA-程序员宅基地

ABI定义了如何使用ISA。ISA定义了机器码的使用规则。http://www.delorie.com/gnu/docs/gmp/gmp_6.htmlABI and ISA ABI (Application Binary Interface) refers to the calling conventions between functions, meaning what register..._isa和abi的关系

Numpy|创建数组的多种方法_创建numpy数组的方法_写python的鑫哥的博客-程序员宅基地

本文是该专栏的第17篇,后面会持续分享python的数据分析知识,记得关注。使用numpy创建数组的方法有很多,你知道的有哪些呢?笔者下面将几种创建数组的方法进行了统一整理,废话不多说,直接往下一起探讨吧!_创建numpy数组的方法

奇舞javaScript 常用设计模式和组件化开发 -笔记-程序员宅基地

写在设计模式之前思考我们为什么要设计/抽象, 它的本质是什么javaScript 有什么特点, 什么样的设计模式适合这门语言了解‘逻辑‘背后的信息 满足什么需求?解决什么问题?变化会有多频繁?有什么痛点? Design Balance模式1 :Behavior从交互需求出发设计一组“动作行为“在主体对象上应用和扩展这些行为为什么这门做?图片预览//html