怎么用Q-Q图验证数据集的分布
样本数据集在构建机器学习模型的过程中具有重要的作用,样本数据集包括训练集、验证集、测试集,其中训练集和验证集的作用是对学习模型进行参数择优,测试集是测试该模型的泛化能力。
正负样本数据集符合独立同分布是构建机器学习模型的前提,从概率角度分析,样本数据独立同分布是正负样本数据是从某一特定的数据分布随机抽取得到的,且正负样本的分布是不一样的。举例来说,若我们用非洲的西瓜作为训练集,然后用中国的西瓜作为测试集,则数据集可能不满足同分布这一前提;抛硬币是最简单的独立同分布;用较专业的学术用语来举例,若训练数据集符合正态分布,测试集符合均匀分布,那么数据集不满足独立同分布这一前提。
本文用Q-Q可以分析不同数据集是否为同一分布,且可以用Q-Q图来验证数据集是否符合正态分布。
一、累积分布函数与分位数
累计分布函数(CDF,Cumulative Distribution Function),顾名思义,是概率累计的过程。对某一变量X取值为x,则x的累计分布函数是所有小于x值的概率相加,公式如下:
分位数(quantile)的概念与累计分布函数类似,也是一种概率累计过程,如第一四分位数是累积分布概率达到0.25时所对应的变量值,第二四分位数是累计分布概率达到0.5时多对应的值,第三四分位数是累计分布概率达到0.75时对应的值,公式如下:
α代表累计概率,分位数为Zα:
P(X<=Zα) = α ;
二、Q-Q图定义
Q-Q是一种散点图,横坐标为某一样本的分位数,纵坐标为另一样本的分位数,横坐标与纵坐标组成的散点图代表同一个累计概率所对应的分位数。若散点图在直线y=x附近分布,则这两个样本是同等分布;若横坐标样本为标准正态分布且散点图是在直线y=x附近分布,则纵坐标样本符合正态分布,且直线斜率代表样本标准差,截距代表样本均值。
如上图左上角图为某一数据的累计概率分布函数,右上角为标准正态分布的累计概率分布函数,对上述两图取同一个累计概率值对应的分位数,绘制散点图,由图可知,数据符合正态分布,斜率和截距分别代表数据的标准差和均值。
QQ图中正态分布直线的推导:
若数据x是正态分布的,那么f(x)是一个正态分布的概率密度函数,根据正态分布的特性,数据x对应的标准正态分布函数的概率密度函数:
y =f((x-m)/std),其中m为样本均值,std为样本标准差
横坐标的数据分布是标准正态分布,概率密度函数为f(n),由QQ图定义可知两者是一一对应的,因此有:
(x-m)/std = n ;
即:x = n*std + m;
所以直线的斜率代表标准差,截距代表均值。
三、构建普通QQ图
普通QQ图用于评估两个数据集的分布的相似程度,如上节所说的,若散点图在直线y=x附近,则两个数据集的分布类似。普通QQ图与正态QQ图的不同点在于普通QQ图的横坐标是未知数据集的分位数,正态QQ图的横坐标是标准正态分布的分位数,其他步骤都一样。
由上图可知,散点图没有接近一条直线,因此数据集1和数据集2来自不同的分布集。
上图是本人所从事项目数据的普通QQ图,散点图接近一条直线,因此可以认为数据集是来自同一分布。
参考:https://blog.csdn.net/hzwwpgmwy/article/details/79178485
怎么用Q-Q图验证数据集的分布的更多相关文章
- seaborn教程3——数据集的分布可视化
原文转载:https://segmentfault.com/a/1190000015006667 Seaborn学习大纲 seaborn的学习内容主要包含以下几个部分: 风格管理 绘图风格设置 颜色风 ...
- [LeetCode] Graph Valid Tree 图验证树
Given n nodes labeled from 0 to n - 1 and a list of undirected edges (each edge is a pair of nodes), ...
- Ruby 里的 %Q, %q, %W, %w, %x, %r, %s, %i (译)转
原文地址 转自 %Q 用于替代双引号的字符串. 当你需要在字符串里放入很多引号时候, 可以直接用下面方法而不需要在引号前逐个添加反斜杠 (\") >> %Q(Joe said: ...
- ruby 中%Q %q %W %w %x %r %s的用法
%Q 用于替代双引号的字符串. 当你需要在字符串里放入很多引号时候, 可以直接用下面方法而不需要在引号前逐个添加反斜杠 (\") >> %Q(Joe said: "Fr ...
- [Swift]LeetCode261.图验证树 $ Graph Valid Tree
Given n nodes labeled from 0 to n - 1 and a list of undirected edges (each edge is a pair of nodes), ...
- [Ruby]转载: 关于ruby中 %Q, %q, %W, %w, %x, %r, %s 的用法
单引号内的内容,ruby会原样输出 双引号内的内容,ruby会解析 我们看个简单的例子,针对字符串 #{foo}test 我们分别用单引号核双引号操作 '#{foo}test' ...
- C# 实现list=list.OrderBy(q=>q.字段名).ToList(); 按多个字段排序
//倒序 list.OrderByDescending(i => i.a).ThenByDescending(i => i.b); //顺序 list.OrderBy(i => i. ...
- 利用火焰图分析ceph pg分布
前言 性能优化大神Brendan Gregg发明了火焰图来定位性能问题,通过图表就可以发现问题出在哪里,通过svg矢量图来查看性能卡在哪个点,哪个操作占用的资源最多 在查看了原始数据后,这个分析的原理 ...
- Q-Q图
来自:https://mp.weixin.qq.com/s/_UTKNcOgKQcCogk2C2tsQQ 正负样本数据集符合独立同分布是构建机器学习模型的前提,从概率的角度分析,样本数据独立同分布是正 ...
随机推荐
- 分布式id生成
2016年08月09日 14:15:21 yuanyuanispeak 阅读数:318 编辑 一.需求缘起 几乎所有的业务系统,都有生成一个记录标识的需求,例如: (1)消息标识:message-id ...
- c# 获取网络流量
public class ip_helper{enum Constants {MAX_INTERFACE_NAME_LEN=256, MAXLEN_PHYSADDR=8,MAXLEN_IFDESCR= ...
- jquery mobile 移动web(2)
button 按钮 data-role="button" 将超链接变成button. 具有icon 图标的button 组件. 提供了18常用的图标 data-icon =&quo ...
- Easyui多个下拉框联动效果
好久没写前端了,以前在做多级联动的时候,用的是easyui的tree结构,但是需要一次性全部加载,不是按需加载,性能不好,退而求其之,用多个下拉框做 eayui的combobox 有onSelect ...
- php第二节(变量、常量)
<?php /** * 类型转换 * 自动转换 数据在运算过程中自动转换 * 空字符串 false * "0" false * null false * 0 false * ...
- c++ 数字和字符串的相互转换
需要包含头文件<sstream> 字符串转化为int #include<stdio.h> #include<string.h> #include<iostre ...
- 2018 Wannafly summer camp Day2--New Game!
New Game! 描述 题目描述: Eagle Jump公司正在开发一款新的游戏.泷本一二三作为其员工,获得了提前试玩的机会.现在她正在试图通过一个迷宫. 这个迷宫有一些特点.为了方便描述,我们对这 ...
- background兼容IE9以下版本
.box { width:100%; height:80%; background: url('img/nav_bg.png') no-repeat; backgrou ...
- Docker(三):部署软件
Docker的镜像文件可以在镜像仓库中进行搜索. 部署软件目录导航: 常用命令 部署 Tomcat 部署 MySQL 部署 Oracle 常用命令 docker的常用命令如下: docker -v , ...
- djangorestframework怎么这么好用!
一年前就已经用过restframework, 当时觉得这个只是给web框架打辅助的, 他能实现的我也都实现(可能没有那么好用, 嘿嘿) 但是我有一种东西叫做效率, 时间就是金钱, 别人造好的就直接用就 ...