热门标签 | HotTags
当前位置:  开发笔记 > 开放平台 > 正文

Day3周志华《机器学习》读书笔记之模型选择

微信公众号关注:脑机接口研习社追踪脑机接口最新发展资讯系列文章目录Day1当脑机接口遇上机器学习:周志华《机器学习》读书笔记之绪论Day2周志华《机器学习》读书笔记之模型评估文章目



在这里插入图片描述


微信公众号关注:脑机接口研习社
追踪脑机接口最新发展资讯



系列文章目录

Day1 当脑机接口遇上机器学习:周志华《机器学习》读书笔记之绪论

Day2 周志华《机器学习》读书笔记之模型评估




文章目录


  • 系列文章目录
  • 前言
  • Day 3
  • 一、比较检验
    • 1. 二项分布和二项检验
    • 2. t检验(t-test)
    • 3. 交叉验证t检验
    • 4. McNemar检验
    • 5. Friedman检验

  • 二、 偏差和方差
  • 三、思考:如何与脑机接口结合




前言

脑机接口研习社将推出一系列文章,每篇文章将分成两个部分的内容,第一部分是记录小编读书过程的学习笔记第二部分是思考每个章节的内容可以如何应用在脑机接口领域。

周志华老师的《机器学习》(西瓜书)是机器学习领域的经典入门教材之一,但这不仅仅只是一本入门书。书的原话:“就算是领域内的专家来看这本书,依旧是会有所收获的,因此这本书是需要精读的,一遍肯定是不够的”。

公众号每周更新两个章节的内容,大家可以和我们一起读书打卡~


Day 3
一、比较检验

Day2我们学习了“留出法、交叉检验法、自助法”三种实验评估方法,它们是用来划分S/T的方法;错误率和精度、查准率和查全率、ROC和AUG是三种性能度量,是标准衡量的几项指标。

关于Day2的学习内容可点击以下链接,进行回顾:

Day2 周志华《机器学习》读书笔记之模型评估

学习器可以等价于算法。

对学习器的性能进行比较的方法是:先使用某种实验评估方法,测得学习器的某个性能度量结果,然后对这些结果进行比较。

如何比较呢?可以使用统计假设检验(hypothesis test)的方法:若在测试集上观察到学习器A比B好,则A的泛化性能是否在统计意义上优于B,以及这个结论的把握有多大。

机器学习性能比较的几种方法:
性能度量选择错误率这项指标,实验评估方法选择留出法或交叉验证法。


1. 二项分布和二项检验

适用于对单个学习器进行检验,并且仅做了一次留出法。

在包含m个样本的测试集上,泛化错误率为E的学习器被测得测试错误率为E’的概率是:
在这里插入图片描述

这个概率符合二项分布(binomial)。

二项检验(binomialtest):

“二项检验”是“假设检验”中的一种情况:我们知道一个分布服从二项分布,但是不知道这个分布的参数p(正样本出现的概率)。我们手里有一批服从这个分布的样本,我们可以根据这批样本对这个参数的取值范围做一个假设,并设定一个置信度阈值,如果这个假设的可信度超过这个置信度阈值,我们就认为这个假设成立,否则认为不成立。

书中的二项分布的未知参数是模型的真实泛化误差,

做出的假设是:E<=0.3(E是真实泛化误差,0.3是人为指定的)

检验的标准是:假设的置信度设定的置信度阈值 (术语是“显著性水平”,可以理解为条件“是否明显错误的判断标准”,所以可以理解为“非明显错误的判断标准”,即,“可信任的标准”,我称为“置信度阈值”。通常取一个较小的数值,如0.1,0.05,0.01,0.005等)

书中的假设检验的思路是:根据检验标准(即置信度阈值),推断参数可信任的候选区间,如果设定的条件在可信任的候选区间内,则认为条件成立,否则不成立。

Note:
用python如何来进行二项检验:
例如:某地某一时期内出生35名婴儿,其中女性19名(定Sex=0),男性16名(定Sex=1)。问这个地方出生婴儿的性别比例与通常的男女性比例(总体概率约为0.5)是否不同?数据如表10-2所示。
原问题见:https://www.cnblogs.com/downmoon/archive/2012/03/26/2417668.html

则用python解决上述问题,可写成:
在这里插入图片描述

输出的结果是显著性水平p
在这里插入图片描述

解释:

from scipy import stats
print stats.binom_test.__doc__
Perform a test that the probability of success is p.
This is an exact, two-sided test of the null hypothesis that the probability of success in a Bernoulli experiment is `p`.
Parameters
----------
x : integer or array_like
the number of successes, or if xhas length 2, it is the
number of successes and thenumber of failures.
n : integer
the number of trials. This is ignored if x gives boththe
number of successes andfailures
p : float, optional
The hypothesized probability ofsuccess. 0 <= p <= 1.The
default value is p = 0.5
Returns
-------
p-value : float
The p-value of the hypothesistest

References
http://en.wikipedia.org/wiki/Binomial_test
https://www.cnpython.com/qa/73544>



2. t检验(t-test)

适用于对单个学习器进行检验,并且做了多次留出法或者多次交叉验证法。

假设:测试错误率均值=泛化错误率,u=E0
在这里插入图片描述

Note:
如何利用python实现t检验?

t-test普遍存在的三种应用场景:
单样本t检验
配对样本t检验
独立样本t检验

代码详见以下链接:
https://blog.csdn.net/charie411/article/details/100009024


3. 交叉验证t检验

适合比较一个数据集中的两个算法的优劣。

可根据两个算法A和B的通过交叉验证法得到的测试错误率的差值,来对“算法A与B性能相同”这个假设作t检验。

假设:学习器A和学习器B性能相同。
在这里插入图片描述

注意:用此方法的前提是测试错误率均为泛化错误率的独立采样。

但是,使用交叉验证法时,不同轮次的训练集会有一定程度的重叠。
解决方法是使用“5×2交叉验证”。


4. McNemar检验

适用于比较一个数据集里面比较2个算法。

假设:两个学习器A和B的学习性能相同。
在这里插入图片描述

Note:
如何用python进行卡方检验?

卡方检验是一种假设检验方法,用于比较两个分类变量的关联性,基本思想是比较理论频数与实际频数的吻合程度。例如,在选举调查中,选民可能按性别(男性或女性)和投票偏好(民主党,共和党或独立团体)进行分类。我们可以使用卡方检验来确定独立性,以确定性别是否与投票偏好相关。

变量A(A1,A2),B(B1,B2)独立性假设
H0:变量A与变量B之间独立no association,
H1:变量A与变量B之间存在相关性。

在独立性前提下,P(B1/A1)=P(B1/A2)=P(B1)计算理论频数,偏差(实际频数-理论频数)的平方与理论频数的加和记作卡方值。

由自由度判断卡方值大小,自由度=(行数-1)(列数-1)。如果卡方值小,则实际频数与理论频数偏差小,检验假设H0成立,否则检验假设不成立。

当卡方值≥卡方值[α]时,p≤0.05拒绝H0,接受H1;当卡方值<卡方值[α]时,p>0.05,尚没有理由拒绝H0.


参考:https://blog.csdn.net/charie411/article/details/99962293
在这里插入图片描述


例如:


参考:https://www.cnblogs.com/webRobot/p/6943562.html



5. Friedman检验

适用于在多个数据集上对多个算法进行比较,适用于算法和数据集比较多的情况,一半原始检验要求算法k>30,若k较小,则倾向于认为无显著区间。

假设:学习器A、B、C、……性能相同。

Note:
如何使用python进行F检验?

F检验又叫方差齐性检验。在两样本t检验中要用到F检验。
F检验法是英国统计学家Fisher提出的,主要通过比较两组数据的方差S^2,以确定他们的精密度是否有显著性差异。至于两组数据之间是否存在系统误差,则在进行F检验并确定它们的精密度没有显著性差异之后,再进行t 检验。


参考:https://blog.csdn.net/charie411/article/details/100009024


用上述F检验只能知道:A、B、C、……的性能是否有显著差异,要想知道到底哪两个学习器之间存在显著差异,还需要用Nemenyipost-hoc test。
在这里插入图片描述


二、 偏差和方差

泛化误差=偏差+方差+噪声

偏差:度量学习算法的期望预测与真实结果的偏离程度,刻画学习算法本身的拟合能力;

方差:度量同样大小的训练集的变动所导致的学习性能的变化,刻画数据扰动所造成的影响;

噪声:表达在当前任务上任何学习算法所能达到的期望泛化误差的下界,刻画学习问题本身的难度。

所以,泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。

相关阅读:

将ROC曲线从二分类任务推广到多分类任务:Hand, D. J. and R. J. Till. (2001) A simple generalisation of the area under the ROC curve for multiple class classification problems. Machine Learning, 45(2):171-186.

综述ROC曲线的用途:Fawcett, T. (2006). An introduction to ROC analysis. Pattern Recognition Letters, 27(8): 861-874.

讨论了多个算法进行比较检验的方法:Demsar, J. (2006). Statistical comparison of classifiers over multiple data sets. Journal of Machine Learning Research, 7:1-30.


三、思考:如何与脑机接口结合

我们以最近最火的文章为例看看模型选择。

文章题目:
High-performance brain-to-text communication via handwriting

模型选择很少在文章中进行说明,因为这是研究人员在发表之前要做的工作。有一种情况除外,就是你要证明你的模型好,就跟前人已发表的模型比较。

但是这种比较结果常用AUC之类的评价标准,用不到本节所列举的统计学方法。

不过通过仔细阅读这篇nature封面文章,还是在supp.material找到了一点模型选择的蛛丝马迹。

这篇文章的主要内容是:

脑机接口(BCI)可以使失去移动或说话能力的人恢复沟通。

到目前为止,BCI研究的主要重点一直是恢复总体运动技能(gross motor skill),例如reaching和grasping或使用计算机光标进行点击输入。但是,高度灵巧的行为(dexterousbehaviors)(如手写或触摸打字)的快速序列可能会加快通信速度。

在这里,作者开发了一种皮质内BCI,它使用递归神经网络解码方法(RNN decoder),将运动皮层中神经活动的尝试手写运动解码,并将其实时转换为文本。

研究参与者的手因脊髓损伤而瘫痪,使用此BCI,其打字速度达到了每分钟90个字符,online原始精度为94.1%,offline general-purposeautocorrect后精度为99%以上。

这些打字速度超过了任何其他BCI所报告的速度,并且可以与参与者年龄段的个人的典型智能手机打字速度相媲美(每分钟115个字符)。

最后,作者从理论上考虑解释了为什么诸如笔迹之类的时间复杂的运动从根本上比点到点的运动更容易解码。此结果为BCI开辟了一种新方法,并证明了在麻痹多年后准确解码快速,灵巧运动的可行性。

这个工作的难点主要是:如何识别用户什么时候开始尝试书写字母(Amajor challenge that had to be overcome for training decoders with our data isthat we don’tknow whatcharacter T5 was writing at any given moment in time in the training data,since his hand was paralyzed.);以及数据集比较小。

作者的decoder采用RNN。为了测试与更简单的解码方法相比,RNN对于实现高性能是否必要,作者测试了简单的隐式马尔可夫模型解码器的性能(请参见下表M5)。

结果证实, RNN优于简单的HMM,特别是对于held-out blocks,其特征均值可能由于神经的非平稳性而发生了显著变化。然而,值得注意的是,当考虑到特征均值漂移时,即使是HMM解码器也可以表现得相当好,这表明神经活动本身是高度可辨别的。

作者设计HMM解码器的方式与设计用于标记句子数据的强制对齐HMM的方式相同(在labeling data那一步作者也是用的HMM),不同的是,除了不包含通过固定字符序列前进的字符状态外,每个字符都可以以相等的概率过渡到任何其他字符。作者还将每个字符内的状态转换概率调整为以下值,以提高解码性能。
在这里插入图片描述

在评估解码器性能时,作者将语言模型应用于RNN和HMM。

因为与用于HMM的简单统一过渡模型相比,RNN本身可以学习更好地建模英语的字符过渡概率,所以使用语言模型可以补偿从而使比较更加公平。

在下面的表M5中,将RNN解码器的脱机性能(字符错误率)与隐马尔可夫模型(HMM)解码器进行了比较,两者都应用了语言模型。
在这里插入图片描述

结果表明,RNN大大优于HMM,特别是在特征均值可能已发生变化的情况下。HMM没有内置机制来适应特征均值的变化(随着时间的推移会逐渐增加基线发射速率的漂移),导致泛化为held-outblocks时的性能非常差。

这篇文章内容非常多,以后有时间的话可以做几期算法介绍。

参考链接

https://blog.csdn.net/Strive_For_Future/article/details/108461977

https://www.cnblogs.com/downmoon/archive/2012/03/26/2417668.html

https://blog.csdn.net/charie411/article/details/100009024

https://blog.csdn.net/charie411/article/details/99962293

https://www.cnblogs.com/webRobot/p/6943562.html

https://blog.csdn.net/charie411/article/details/100009024

参考文献

Willett F R, Avansino D T, Hochberg L R, et al. High-performance brain-to-text communication via imagined handwriting[J]. bioRxiv, 2020.

图源/《机器学习》、CSDN

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



推荐阅读
  • 【转】强大的矩阵奇异值分解(SVD)及其应用
    在工程实践中,经常要对大矩阵进行计算,除了使用分布式处理方法以外,就是通过理论方法,对矩阵降维。一下文章,我在 ... [详细]
  • 自动驾驶中的9种传感器融合算法
    来源丨AI修炼之路在自动驾驶汽车中,传感器融合是融合来自多个传感器数据的过程。该步骤在机器人技术中是强制性的,因为它提供了更高的可靠性、冗余性以及最终的 ... [详细]
  • 使用 Jupyter Notebook 实现 Markdown 编写与代码运行
    Jupyter Notebook 是一个开源的基于网页的应用程序,允许用户在同一文档中编写 Markdown 文本和运行多种编程语言的代码,并实时查看运行结果。 ... [详细]
  • 本文探讨了 TypeScript 中泛型的重要性和应用场景,通过多个实例详细解析了泛型如何提升代码的复用性和类型安全性。 ... [详细]
  • 专业人士如何做自媒体 ... [详细]
  • 非计算机专业的朋友如何拿下多个Offer
    大家好,我是归辰。秋招结束后,我已顺利入职,并应公子龙的邀请,分享一些秋招面试的心得体会,希望能帮助到学弟学妹们,让他们在未来的面试中更加顺利。 ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • 根据经济日报的报道,截至3月15日,包括抖音、今日头条、微信、淘宝、百度、大众点评、微博和小红书在内的多个主流App已经上线了算法关闭功能,用户可以在后台一键关闭“个性化推荐”。 ... [详细]
  • MATLAB实现Sobel边缘检测算法
    图像边缘是指图像中灰度值发生显著变化的区域。Sobel算子是一种常用的边缘检测方法,通过计算图像灰度值的梯度来检测边缘。本文介绍了Sobel算子的基本原理,并提供了基于MATLAB的实现代码。 ... [详细]
  • 拼多多的崛起之路
    随着4G通信技术的发展,互联网产品从PC端转向移动端,图像传输速度更快、更清晰,智能设备的应用提升了用户体验。移动互联网的普及为拼多多的崛起提供了时代背景。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 在2019中国国际智能产业博览会上,百度董事长兼CEO李彦宏强调,人工智能应务实推进其在各行业的应用。随后,在“ABC SUMMIT 2019百度云智峰会”上,百度展示了通过“云+AI”推动AI工业化和产业智能化的最新成果。 ... [详细]
  • 非线性门控感知器算法的实现与应用分析 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
author-avatar
DCPe-苦乐年华
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有