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

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

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

相关:

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. 如何在 Recovery 中启用应用

    如果因为禁用了某个应用手机无法开机,那么你需要这个方法来救命 https://xdaforums.com/t/enable-or-disable-apps-directly-from-the-file ...

  2. java如何保证一个方法只能执行一次

    我们经常会遇到一些情况需要某一个方法或者操作只执行一次,比如说配置信息加载,如果配置信息需要动态刷新,这个不在适用范围.下面列举几种方式 第一种 如果是web容器,可以使用servlet或者Liste ...

  3. 一文教你如何用C代码解析一段网络数据包?【含代码】

    本文的目的是通过随机截取的一段网络数据包,然后根据协议类型来解析出这段内存. 学习本文需要掌握的基础知识: 网络协议 C语言 Linux操作 抓包工具的使用 其中抓包工具的安装和使用见下文: < ...

  4. You are currently using minified code outside of NODE_ENV === 'production'. This means that you are running a slower development build of Redux.

    You are currently using minified code outside of NODE_ENV === 'production'. This means that you are ...

  5. 什么是电商API

    ​ 是电子商务平台提供给开发者和商家的一种技术接口,它允许第三方应用程序访问和操作平台的数据和服务.电商API的使用可以极大地提高业务效率,促进创新,并且为商家提供更多的商业机会. 以下是电商API的 ...

  6. Ubuntu APT sources.list 文件格式解释

    单行风格(传统) 传统的 sourses.list 文件使用单行风格配置,下面是两条单行风格的配置项: deb http://archive.ubuntu.com/ubuntu jammy main ...

  7. 好多kafka难题啊,看看其中的化解之道

    文末有面经共享群 前面已经分享过几篇面试了,这是一篇关于更加面向项目和技术的面经详解,第一次遇见问那么多kafka的问题,看看这个粉丝是怎么回答的. 先来看看 职位描述: 岗位职责: 负责基于 Go ...

  8. 最常用集合 - arraylist详解

    ArrayList介绍 ArrayList实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素,底层通过数组实现.除该类未实现同步外,其余跟Vector大致相同.每 ...

  9. Windos操作系统下的Zookeeper安装图文教程

    凯哥已经准备好最新版本3.9.1且已经配置好了.既获取到配置好的. 获取到凯哥准备的安装后,只需要修改一下配置.将解压包解压后,找到conf文件,里面有个zoo.cfg配置文件.如下图: 下载后con ...

  10. 【YashanDB知识库】virt虚拟内存远大于res内存问题分析

    YASDB内存占用简介 参数配置: 默认参数配置:DBMS_PARAM高级包生成配置参数 数据库内存配置,使用默认参数步骤: 1.DBMS_PARAM.OPTIMIZE(); //生成默认参数,使用总 ...