参考:
https://zhuanlan.zhihu.com/p/368073953
https://blog.csdn.net/u014028070/article/details/75171108
https://www.cnblogs.com/jpld/p/14186239.html
https://cxybb.com/article/qq_23100417/119392520
https://viruspc.github.io/blog/kde.html

在训练集上运行性能良好,却在测试集上效果不佳的模型。

  • 如果此时开发集和测试集的分布相同,那么你就能清楚地明白问题所在:算法在开发集上过拟合了(overfit)。解决方案显然就是去获取更多的开发集数据。
  • 但是如果开发集和测试集服从不同的分布,解决方案就不那么明确了。此时可能存在以下一种或者多种情况:1.算法在开发集上过拟合了。2.测试集比开发集更难进行预测,尽管算法做得足够好了,却很难有进一步的提升空间。3.测试集不一定更难预测,但它与开发集性质并不相同(分布不同)。

因此在开发集上表现良好的算法不一定在测试集上也能够取得出色表现。如果是这种情况,大量针对开发集性,能的改进工作将会是徒劳的。

大部分机器学习算法都有一个前提假设:训练数据样本和位置的测试样本来自同一分布。如果测试数据的分布跟训练数据不一致,那么就会影响模型的效果。

核密度估计((kernel density estimation)

核密度估计(kernel density estimation,KDE)是在概率论中用来估计未知的密度函数,属于非参数检验方法之一,通过核密度估计图可以比较直观的看出数据样本本身的分布特征。

KDE 分布图可以用于对比训练集和测试集的分布,在matlab中利用其自带的核密度估计函数([f,xi] = ksdensity(x))可以实现。
函数:ksdensity
功能:根据给定的数据,估计概率密度分布
具体含义:计算样本向量x的概率密度估计,返回在xi点的概率密度f,此时我们使用plot(xi,f)就可以绘制出概率密度曲线。该函数,首先统计样本x在各个区间的概率(与hist有些相似),再自动选择xi,计算对应的xi点的概率密度

%by dynamic
%see also http://www.matlabsky.com
%contact me matlabsky@gmail.com%给一个随机样本
x=[randn(30,1); 5+randn(30,1)];%计算出各点的概率密度
[f,xi]=ksdensity(x);%绘制图形
subplot(211)
plot(x)
title('样本数据(Sample Data)')subplot(212)
plot(xi,f)
title('概率密度分布(PDF)')

KS检验(Kolmogorov-Smirnov)

KDE是PDF(概率分布函数Probability Distribution Function)来对比,而KS检验是基于CDF(累计分布函数Cumulative Distribution Function)来检验两个数据分布是否一致,它也是非参数检验方法(即不知道数据分布情况)。两样本K-S检验由于对两样本的经验分布函数的位置和形状参数的差异都敏感,所以成为比较两样本的最有用且最常用的非参数方法之一。(KS适用于样本量比较小的时候)

k-s检验分为单样本kstest和双样本kstest2检验:
1. Single sample Kolmogorov-Smirnov goodness-of-fit hypothesis test.
matlab中kstest函数的使用:

H = kstest(X) %测试向量X是否服从标准正态分布,测试水平为5%。H=0接受原假设,H=1拒绝原假设。
H = kstest(X,cdf) %指定累积分布函数为cdf的测试(cdf=[ ]时表示标准正态分布),测试水平为5%
H = kstest(X,cdf,alpha) % alpha为指定测试水平H=kstest(X,cdf,alpha,tail) % tail=0为双侧检验, tail=1单侧(<)检验, tail=-1单侧(>) 检验
[H,P,KSSTAT,CV] = kstest(X,cdf,alpha) %P为原假设成立的概率,KSSTAT为测试统计量的值,CV为是否接受假设的临界值。

2.Two-sample Kolmogorov-Smirnov test
检验两个数据向量之间的分布的。

[h,p,ks2stat] = kstest2(x1,x2,alpha,tail)

% x1,x2都为向量,ALPHA是显著性水平(默认0.05)。TAIL是表示检验的类型(默认unequal,不平衡)。

对抗验证(Adversarial validation)

除了 KDE 和 KS检验,目前比较流行的是对抗验证,它并不是一种评估模型效果的方法,而是一种用来确认训练集和测试集的分布是否变化的方法。

数据集分布评估-KDE (核密度估计)、KS检验相关推荐

  1. MATLAB算法实战应用案例精讲-【数据分析】核密度估计KDE(附matlab、R语言和python代码实现)

    目录 前言 几个高频面试题目 1.如何选择KDE核密度估计的带宽 自适应或可变带宽的核密度估计

  2. python KS检验:检验数据是否服从指定分布;或两份数据源于同一分布

    KS检验 原假设:两份数据源于同一分布 拒绝假设:两份数据源于不同的分布 一般当p值低于0.01或0.05时,拒绝原假设,即认为两份数据源于不同的分布. 双样本KS检验 from scipy.stat ...

  3. 【机器学习sklearn】两个例子轻松搞懂核密度估计KernelDensity

    前言 作业中遇到了需要使用KernelDensity的情况,但是网上的资料参差不齐,找了不短的时间却失望而归,最后还是靠着自己的理解才弄懂sklearn这个函数的使用,特此纪念. [机器学习sklea ...

  4. 核模型(核密度估计)

    1.核模型(Kernel function) 在线性模型中,多项式或三角函数等基函数与训练样本{(xi,yi)}毫不相关的.下面我们介绍一种模型,在基函数设计的时候会使用到输入样本{xi}. note ...

  5. Kolmogorov-Smirnov test in Java : K-S检验正态分布 Java实现

    K-S 检验即Kolmogorov-Smirnov Test: The Kolmogorov-Smirnov test (KS-test) tries to determine if two data ...

  6. 核密度估计python_核密度估计丨数析学院

    原标题:核密度估计丨数析学院 核密度估计(kernel density estimation)是非参数统计检验中的重要方法之一,常用于估计未知的密度函数.本节将向大家介绍在 Python 中如何利用 ...

  7. 【K-S检验】检验两个数据集的分布是否一致

    [K-S检验]检验两个数据集的分布是否一致 前言:在训练机器学习模型时,遇到了模型在数据集分割出来的test set上预测准确率高,但是在另一个test set数据集上预测准确率很低的情况.第一直觉是 ...

  8. 核密度估计Kernel Density Estimation(KDE)-代码详细解释

    在介绍核密度评估Kernel Density Estimation(KDE)之前,先介绍下密度估计的问题.由给定样本集合求解随机变量的分布密度函数问题是概率统计学的基本问题之一.解决这一问题的方法包括 ...

  9. 核密度估计python_核密度估计Kernel Density Estimation(KDE)

    在介绍核密度评估Kernel Density Estimation(KDE)之前,先介绍下密度估计的问题.由给定样本集合求解随机变量的分布密度函数问题是概率统计学的基本问题之一.解决这一问题的方法包括 ...

最新文章

  1. Struts2中的action类
  2. .net core 文件流保存图片_Java--利用TCP实现文件上传
  3. Chrome浏览器报错:Origin null is not allowed by Access-Control-Allow-Origin.
  4. Spring @Autowired注解在非Controller注入为null,Springboot @Reference注入为null解决方案
  5. web项目下的web.xml listener监听总结
  6. Unity3D AssetBundle相关
  7. 手机输入法带拼音声调_分享4种给拼音加声调的方法,让你的word更有灵魂
  8. 股票交易数据接口是什么?
  9. vs2019,C#,MySQL创建图书管理系统7(用户借/还书)
  10. ppt 转html乱码,ppt转换成pdf乱码解决方法.pdf
  11. 如何让机器产生意识之意识具象化
  12. 如何通过知识付费盈利,实现内容变现?
  13. 上海市居住证积分提交材料
  14. url 里面 等号_【Python成长之路】从零学爬虫给微信公众号阅读量作个弊:刷阅读量...
  15. HTML中的单行注释标签是,html如何单行和多行注释呢 ?
  16. Win11环境 jdk1.8安装及配置详细教程
  17. 二手时间:人类的精神本质就是疲惫和痛苦的
  18. OSDI 2014 paper reading
  19. unity 摄像头跟着鼠标移动_unity第三视角移动,摄像机跟随
  20. 用Python构建区块链

热门文章

  1. 微软TTS服务器,微软TTS,Neospeech TTS 简单使用
  2. Java程序界面设计
  3. 关于全概率和贝叶斯公式的使用场景说明
  4. 网站压力测试--abtest测试详解abtest
  5. react如何获取option的下标和值_select选中获取索引三种写法
  6. Xilinx Zynq开发教程
  7. Qt Creator 使用 QMediaPlayer 播放音频无声音
  8. GetAsyncKeyState()用法
  9. 尝试用gdb简单调试程序
  10. Hi3516A/Hi3516D SDK 安装以及升级使用说明