同一主题的简单分析版本,建议查看:

机器学习领域中假设检验的使用

本文内容为在上文基础上进一步分析版本。

相关:

t检验

t检验应用条件

t检验(t-test)

t-test终极指南

一文详解t检验

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检验

  1. 抽样样本与目标总体分布之间均值差异性判断构建的统计量:

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

  1. 配对样本均值检验,来自某总体分布的抽样样本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检验的更多相关文章

  1. JS 从一个字符串中截取两个字符串之间的字符串

    /************************************************* 函数说明:从一个字符串中截取 两个字符串之间的字符串 参数说明:src_str 原串, start ...

  2. [转]ASP.NET MVC中的两个Action之间值的传递--TempData

    本文转自:ASP.NET MVC中的两个Action之间值的传递--TempData 一. ASP.NET MVC中的TempData 在ASP.NET MVC框架的ControllerBase中存在 ...

  3. java中计算两个日期之间天数的程序设计。

    //用java编写出一个以下方法计算两个日期之间天数的程序设计. import java.util.regex.Matcher; import java.util.regex.Pattern; pub ...

  4. Ios中比较两个日期之间的时间差距

    1.比较两个日期之间的时间差距 // 1.日历对象(标识:时区相关的标识) NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIde ...

  5. ASP.NET MVC中的两个Action之间值的传递--TempData

    一. ASP.NET MVC中的TempData 在ASP.NET MVC框架的ControllerBase中存在一个叫做TempData的Property,它的类型为TempDataDictiona ...

  6. 机器学习中几种优化算法的比较(SGD、Momentum、RMSProp、Adam)

    有关各种优化算法的详细算法流程和公式可以参考[这篇blog],讲解比较清晰,这里说一下自己对他们之间关系的理解. BGD 与 SGD 首先,最简单的 BGD 以整个训练集的梯度和作为更新方向,缺点是速 ...

  7. 代码管理_Git中获取两个标签之间的变更代码行数

    操作步骤: 1.先进入git的服务器,定位到 repositories 目录 2.再定位到具体的项目目录(登录bitbucket查看项目属性可以看到项目的存放目录),如下图: 3.浏览项目的标签,命令 ...

  8. WPF中实现两个窗口之间传值

    在使用WPF的时候,我们经常会用到窗体之间传值,下面示例主窗口传值到子窗口,子窗口传值到主窗口的方法. 一.主窗口向子窗口传值 主窗口向子窗口传值主要方法就是在子窗口建立一个接收主窗口值的变量,然后实 ...

  9. 在excel中如何计算两个时间之间的差[转]

    因为时间是由序列号所代表的,用户可以用较晚的时间减去较早的时间以得到间隔.例如,单元格A3含有5:30,单元格B3含有14:00,下面的公式返回8:30(间隔8小时30分). =B3-A3 然而,如果 ...

  10. EF Core中如何正确地设置两张表之间的关联关系

    数据库 假设现在我们在SQL Server数据库中有下面两张表: Person表,代表的是一个人: CREATE TABLE [dbo].[Person]( ,) NOT NULL, ) NULL, ...

随机推荐

  1. Problem - 616C - Codeforces

    Problem - 616C - Codeforces C. The Labyrinth 如果是直接对\(*\)去跑dfs或者bfs的话无疑是会超时的 既然如此,那我们可以去对 \(.\) 跑搜索,将 ...

  2. posix是什么都不知道,还好意思说你懂Linux?

    Linux开发者越来越多,但是仍然有很多人整不明白POSIX是什么.本文就带着大家来了解一下到底什么是POSIX,了解他的历史和重要性. 一.什么是posix? 1. 概念 POSIX:可移植操作系统 ...

  3. 树上启发式合并——dsu on tree

    参考文章: 树上启发式合并 [dsu on tree]树上启发式合并总结 树上启发式合并の详解 启发式合并 启发式算法是什么呢? 启发式算法是基于人类的经验和直观感觉,对一些算法的优化. 举个例子,最 ...

  4. Linux 更新 TeX Live

    更新 TeX Live 假设你的旧版 TeX Live 版本号为 2023,新版 TeX Live 版本号为 2024.你需要在下面的命令中相应地更改实际版本号.TeX Live 版本可以通过 tlm ...

  5. 使用 SSH 转义代码来控制连接

    OpenSSH 最常被忽视的一个非常有用的功能是能够从连接内部控制会话的某些方面.通过使用 SSH 转义代码,我们能够在会话内部与本地 SSH 软件进行交互. 强制从客户端断开连接(如何退出卡住或冻结 ...

  6. 【YashanDB知识库】生成迁移报告失败,"报错未知类型错误异常:"

    [标题]YMP迁移 [问题分类]迁移报告 [关键字]迁移报告.未知类型错误异常 [问题描述]下载迁移报告时报错"未知类型错误异常:",一长串英文 日志报错: [问题原因分析]jav ...

  7. bug记录|NON-STATIC METHOD CANNOT BE REFERENCED FROM A STATIC CONTEXT

    bug记录|NON-STATIC METHOD CANNOT BE REFERENCED FROM A STATIC CONTEXT   问题:原因:静态方法无法调用自己定义的非静态方法 解决方案:1 ...

  8. webpack 5.88.2

    原理 webpack的运行过程大致可以分为以下几个步骤:webpack的运行过程实际上就是等待上一个钩子结束调用下一个钩子的过程 初始化:webpack接收命令行参数或配置文件,创建一个Compile ...

  9. C++ STL map/multimap容器

    map/multimap容器 Map的特性是,所有元素都会根据元素的键值自动排序.Map所有的元素都是pair,同时拥有实值和键值,pair的第一个元素被视为键值,第二个元素被视为实值,map不允许两 ...

  10. Tabby,一款老外都在用的 SSH工具,竟然还支持网页操作

    会编程的蜗牛 主要分享java编程,也会涉及其他方向的技术分享. 1篇原创内容 公众号 序言各位好啊,我是会编程的蜗牛,作为java开发者,或者说编程人员,程序员的我们,Linux服务器总是我们一个绕 ...