机器学习中验证两个算法之间是否存在显著差距的t-test检验
同一主题的简单分析版本,建议查看:
机器学习领域中假设检验的使用
本文内容为在上文基础上进一步分析版本。
相关:
t检验,亦称student t检验(Student's t test),主要用于样本含量较小(例如n < 30),总体标准差σ未知的正态分布。 t检验是用t分布理论来推论差异发生的概率,从而比较两个平均数的差异是否显著。
t检验是一种常用的统计方法,主要用于比较两组数据的平均值是否存在显著差异。
t-test的使用场景非常广泛,只要涉及到需要比较两组数据平均值差异的情况,都可以考虑使用t-test进行分析。
在机器学习实践中,我们可能会尝试不同的算法或模型来解决同一个问题。t检验可以帮助我们比较这些算法或模型在性能上的差异,从而选择出最优的模型。
总之,t检验在机器学习领域是一种有用的统计工具,它可以帮助我们更好地理解数据,优化模型,并做出更明智的决策。
为什么使用t-test检验,或者说为什么使用t分布统计量,也或者说高斯分布/正太分布之间的关系,等等,这些统计学的问题,包括相关统计假设的数学定理及其推导,说实话,自己也不会,大学学的就是标准的人教版教材,告诉的也就是用这个东西来作统计就是,至于具体原因以及背后的深刻数学原理这里也无法讨论,但是说一个自己的一个简单理解的小例子:
投掷一枚硬币,正反面出现的概率均为0.5,那么连续投掷10000次,最后出现正面次数为0、1、2、3,......97、98、99、100的概率其实就是服从一个正太分布的,关于二项式分布与正太分布之间的数学推导这里也就不介绍了,这里举这个例子要说明的是在日常的发生事件的统计模型建立时使用状态分布的有效性及其背后有相关数学理论支撑。
如果在统计建模时我们的样本量较小(样本量小于30时),那么该模型更趋向于t分布而不是正太分布,因此在日常统计建模检验时我们常使用t分布而不是正太分布。大致可以这么理解,一个分布是正太分布,但是对这个分布抽样较少的样本,那么由于样本量较少,因此抽取的样本更符合t分布而不是正太分布。
t检验可分为单总体检验和双总体检验,以及配对样本检验。
t检验用于比较两个均值是否存在显著差异。具体来说:
- 单样本t检验:用于检测一个样本的均值是否与某个已知的总体均值有显著差异。
- 独立样本t检验:用于比较两个独立样本之间的均值差异。
- 配对样本t检验:用于比较同一对象在不同条件下的均值差异(如治疗前后)。
在使用t检验时都是将两个分布的差异不显著设置为\(H_0\)假设,因为我们是需要根据\(H_0\)假设进行统计建模的,而只有假设差异不显著才能符合这里的t分布统计模型,然后再根据抽样数据和统计模型判断是否可以否定\(H_0\)假设,\(H_0\)假设就是假设\(u_{抽样样本}-u_{总体分布}\)差异不显著,或者说\(H_0\)假设就是假设由\(u_{抽样样本}-u_{总体分布}\)所构建的统计量\(t\)是符合t分布,于是才有后面的依据统计模型进行的假设检验。
在使用t检验判断两个总体分布均值差异是否显著时需要假设两样本总体方差相同,因为t检验要求两总体分布方差相同,当然这里也只是假设二者相同。
在使用t检验对样本抽样均值和总体均值差异显著判断时要求总体方差未知,否则就可以利用 Z 检验(也叫U检验,就是正态检验)
要知道统计学理论和计算机领域的机器学习一样都是建立在假设之上的,也就是说在预先设置假设后才在这些假设之上构建的后面的理论。这里使用t检验时对两总体分布均值差异显著性判断时就是假设两总体方差相同的。
声明:下面的公式来源一文详解t检验。
- 抽样样本与目标总体分布之间均值差异性判断构建的统计量:

- 两个抽样样本均值差异性判断,\(H_0\)假设这两个抽样样本来自于均值相同的两个总体分布:

- 配对样本均值检验,来自某总体分布的抽样样本X在某因素影响下对应改变为另一种样本抽样Y,如:同一受试对象的自身前后对照(如检验癌症患者术前、术后的某种指标的差异)


t检验在机器学习领域中的应用
在机器学习领域,我们针对某个问题可以构建几个不同的算法或模型,往往为了判断哪两个算法更优我们会使用t检验。我们假设由两个算法A、B,每个算法均进行24次重复实验,即24次trial,我们可以根据重复实验的结果计算出A、B算法的实验结果的均值,从而我们可以构建t统计量:


这个例子中\(n_1=24\),\(n_2=24\),抽样样本方差\(s_1\)和\(s_2\)可以通过A、B算法的重复实验中获得,同样可以在A、B算法的重复实验中分别获得抽样样本均值,在这里则是使用双侧的\(t(0.025, 46)\),即\(n=n_1+n_2-2=24+24-2=46\)。
问题示例:(一个实例的单总体t检验对t检验)
判断一个抽样样本(下例子中样本数为35)是否与某总体分布具有统计学意义?
零假设,由于统计量中主要计算部分为\(u_0-u_1\)或者是\(u_{抽样样本}-u_{总体分布}\),因此\(H_0\)事件假设就是假设这个抽样样本源自于该总体分布;而且我们知道抽样样本的均值和方差,并且知道目标总体分布的均值(不知道总体方差),我们的目标是判断这个样本抽样与总体分布之间的差异是否显著,因此我们知道如果\(H_0\)假设假定成立,即假定抽样样本与总统分布差异不显著或者说抽样样本来自于目标总体分布,那么我们可以得到t分布的统计量\(t=\frac{u_{抽样样本}-u_{总体分布}}{\frac{s}{\sqrt{n}}}\),其中,\(s\)为抽样样本方差,\(n\)为抽样样本数;由于我们的\(H_0\)假设是抽样样本和总体分布的差异不显著,也就是说这种差异性可能是抽样样本均值大于总体分布均值有可能是抽样样本均值小于总体分布均值,那么也就意味着我们需要考虑的不仅是\(u_{抽样样本}-u_{总体分布}\)还需要考虑\(u_{总体分布}-u_{抽样样本}\),即\(t=|\frac{u_{抽样样本}-u_{总体分布}}{\frac{s}{\sqrt{n}}}|\),也就是说下面例子是t分布的双侧检验,一般认为小概率事件是发生概率小于0.05的,即5%,那么由于是双侧检验,因此单侧检验的小概率为0.05/2=0.025,也就是说当\(t=|\frac{u_{抽样样本}-u_{总体分布}}{\frac{s}{\sqrt{n}}}| \geq t(34, 0.025)=2.032\)时则该\(H_0\)事件的发生概率为小概率,由于小概率事件在统计学上认为不可能发生,于是否定\(H_0\)事件发生,于是否定样本抽样来自于目标总体分布,也就是说抽样样本与总体分布在统计学上差异显著;与之相反,如果\(t=|\frac{u_{抽样样本}-u_{总体分布}}{\frac{s}{\sqrt{n}}}| \leq t(34, 0.025)=2.032\),那么就说明该\(H_0\)事件的发生概率不为小概率,于是我们无法否定\(H_0\)假设,也就是说我们无法否定样本抽样来自于目标总体分布,或者说抽样样本与总体分布在统计学上差异不显著,这里需要注意的是按照统计学理论来说我们只是无法依据现有抽样数据否定样本抽样来自于总体分布,重点是无法否定并不等于认同,无法否定抽样来自于总体分布不等于承认样本抽样来自于目标总体分布。
由于\(u_{抽样样本}\)可能大于\(u_{总体分布}\),也可能\(u_{抽样样本}\)小于\(u_{总体分布}\),从而知道这个例子是t检验的双侧检验,小概率事件为0.05概率,双侧检验(由于存在两种可能性,不清楚每一种可能的发生概率的差异,于是两种可能等概率,于是单一一种可能的小概率为0.025)的小概率为单侧发生概率小于0.025。
当,\(t=\frac{u_{抽样样本}-u_{总体分布}}{\frac{s}{\sqrt{n}}} \geq t(34, 0.025)=2.032\)或\(t=\frac{u_{抽样样本}-u_{总体分布}}{\frac{s}{\sqrt{n}}} \leq t(34, -0.025)=2.032\)时,我们认为之前的\(H_0\)假设为小概率假设,于是可以否认\(H_0\)假设,即不接受\(H_0\)假设。


个人github博客地址:
https://devilmaycry812839668.github.io/
机器学习中验证两个算法之间是否存在显著差距的t-test检验的更多相关文章
- JS 从一个字符串中截取两个字符串之间的字符串
/************************************************* 函数说明:从一个字符串中截取 两个字符串之间的字符串 参数说明:src_str 原串, start ...
- [转]ASP.NET MVC中的两个Action之间值的传递--TempData
本文转自:ASP.NET MVC中的两个Action之间值的传递--TempData 一. ASP.NET MVC中的TempData 在ASP.NET MVC框架的ControllerBase中存在 ...
- java中计算两个日期之间天数的程序设计。
//用java编写出一个以下方法计算两个日期之间天数的程序设计. import java.util.regex.Matcher; import java.util.regex.Pattern; pub ...
- Ios中比较两个日期之间的时间差距
1.比较两个日期之间的时间差距 // 1.日历对象(标识:时区相关的标识) NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIde ...
- ASP.NET MVC中的两个Action之间值的传递--TempData
一. ASP.NET MVC中的TempData 在ASP.NET MVC框架的ControllerBase中存在一个叫做TempData的Property,它的类型为TempDataDictiona ...
- 机器学习中几种优化算法的比较(SGD、Momentum、RMSProp、Adam)
有关各种优化算法的详细算法流程和公式可以参考[这篇blog],讲解比较清晰,这里说一下自己对他们之间关系的理解. BGD 与 SGD 首先,最简单的 BGD 以整个训练集的梯度和作为更新方向,缺点是速 ...
- 代码管理_Git中获取两个标签之间的变更代码行数
操作步骤: 1.先进入git的服务器,定位到 repositories 目录 2.再定位到具体的项目目录(登录bitbucket查看项目属性可以看到项目的存放目录),如下图: 3.浏览项目的标签,命令 ...
- WPF中实现两个窗口之间传值
在使用WPF的时候,我们经常会用到窗体之间传值,下面示例主窗口传值到子窗口,子窗口传值到主窗口的方法. 一.主窗口向子窗口传值 主窗口向子窗口传值主要方法就是在子窗口建立一个接收主窗口值的变量,然后实 ...
- 在excel中如何计算两个时间之间的差[转]
因为时间是由序列号所代表的,用户可以用较晚的时间减去较早的时间以得到间隔.例如,单元格A3含有5:30,单元格B3含有14:00,下面的公式返回8:30(间隔8小时30分). =B3-A3 然而,如果 ...
- EF Core中如何正确地设置两张表之间的关联关系
数据库 假设现在我们在SQL Server数据库中有下面两张表: Person表,代表的是一个人: CREATE TABLE [dbo].[Person]( ,) NOT NULL, ) NULL, ...
随机推荐
- 017.Kubernetes二进制集群扩容worker
一 前置准备 1.1 互信配置 为了更方便远程分发文件和执行命令,本实验配置master节点到其它节点的 ssh 信任关系. 1 [root@master01 ~]# ssh-copy-id -i ~ ...
- Linux入门的基础知识点,有这篇就够了(持续更新)
很多粉丝给一口君留言,想要学习Linux资料,其实关注一口君的公众号,后台回复 1024 ,就有很多非常不错的电子书,但是有一个问题,很多粉丝是初学者,而这一大堆电子书,估计随便一本,还没看完就基本上 ...
- 微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)
这个接口只能获得一些非敏感信息,例如用户昵称,用户头像,经过用户授权允许获取的情况下即可获得用户信息,至于openid这些,需要调取wx.login来获取. index.wxml <!-- 当已 ...
- sublime text _正则表达式01
概述 sublime 常用正则表达式 预备工作:打开sublime之后,ctrl+h,点选使用正则表达式. (\S+) :匹配所有符号外的字符 用到的地方: 小明 小黄 小红 (构造批量插入sql语句 ...
- 一文快速上手-Vue CLI脚手架
目录 安装Vue CLI Vue CLI新建项目 vue.js 3 项目目录结构 项目的运行和打包 vue.config.js文件解析 安装Vue CLI (1) 全局安装Vue CLI 方式一(推荐 ...
- 外挂级OCR神器:免费文档解析、表格识别、手写识别、古籍识别、PDF转Word
TextIn Tools是一款免费的在线OCR工具,支持快速准确的文字和表格识别,手写.古籍识别,提供PDF转Markdown大模型辅助工具,同时支持PDF.WORD.EXCEL.JPG.PPT等各类 ...
- EF Core – Unit of Work, DbContext, Transaction 概念解释
前言 踩了一个坑, 下面是 2 个 scope 的调用, 第 1 和 3 是一个 Audit log filter action, 第 2 个是 controller. // open tran // ...
- SimpleAISearch:C# + DuckDuckGo 实现简单的AI搜索
最近AI搜索很火爆,有Perplexity.秘塔AI.MindSearch.Perplexica.memfree.khoj等等. 在使用大语言模型的过程中,或许你也遇到了这种局限,就是无法获取网上最新 ...
- Flutter 这一年:2022 亮点时刻
回看 2022,展望 Flutter Forward 2022 年,我们非常兴奋的看到 Flutter 社区持续发展壮大,也因此让更多人体验到了令人难以置信的体验.每天有超过 1000 款使用 Flu ...
- 1 月 25 日见|Flutter Forward 活动日程表正式发布!
2023 年 1 月 25 日 (正月初四),我们将在肯尼亚首都内罗毕举办 Flutter Forward 大会,并同时开启线上直播.本次活动将展示最新的 Flutter 技术更新,包括一个主题演讲以 ...