kl散度度量分布_数据挖掘比赛技巧——确定数据同分布

在数据挖掘比赛中,很重要的一个技巧就是要确定训练集与测试集特征是否同分布,这也是机器学习的一个很重要的假设[1]。但很多时候我们知道这个道理,却很难有方法来保证数据同分布,这篇文章就分享一下我所了解的同分布检验方法。

封面:电影《红猪(红の豚)》


1. KS检验

KS是一种非参数检验方法,可以在不知道数据具体分布的情况下检验两个数据分布是否一致。当然这样方便的代价就是当检验的数据分布符合特定的分布事,KS检验的灵敏度没有相应的检验来的高。在样本量比较小的时候,KS检验作为非参数检验在分析两组数据之间是否不同时相当常用。[2]

具体操作方法如下:

  1. 画出数据的累积分段图。举个例子,对于数据集 {1.26, 0.34, 0.70, 1.75, 50.57, 1.55, 0.08, 0.42, 0.50, 3.20, 0.15, 0.49, 0.95, 0.24, 1.37, 0.17, 6.98, 0.10, 0.94, 0.38},先对其排序为 {0.08, 0.10, 0.15, 0.17, 0.24, 0.34, 0.38, 0.42, 0.49, 0.50, 0.70, 0.94, 0.95, 1.26, 1.37, 1.55, 1.75, 3.20, 6.98, 50.57}。其中比0.24小的一共有4个,占数据集的 1/5,所以0.24的累积分布值是0.2,依次类推我们可以画出累积分布图。

2f8573ac16c5412e2cb8e530c7bf1f71.png

2. 对于累积分布图取Log变换

5b0c73ef928118078c4fc15929bd8c70.png

3. 通过两个数据的累积分布图直接最大垂直距离描述两数据的差异

fde13d782d4e072fc8c485911144e7bf.png

实际操作中并不建议自己手写,可以直接调用Python scipy库中封装好的函数[3]

from scipy.stats import ks_2samp
ks_2samp(train[col],test[col]).pvalue

2. Overlap Rate

对于连续型变量我们可以使用KS检验来检测数据分布是否一致,对于类别型变量我们可以对其进行编码然后检测[4],或者选择通过特征重合率来进行检测[5],在高基数变量中此方法经常被用到。

通过特征重合率检测的思想是检测训练集特征在测试集中出现的比率,举个例子:

训练集特征:[猫,狗,狗,猫,狗,狗,狗,猫] 
测试集特征:[猫,猫,鱼,猪,鱼,鱼,猪,猪]

即使该特征在训练集表现很好,但在测试集上的用处并不大,因为重合率仅有1/4,反而会导致过拟合或者模型忽略到其他更有用的特征。

3. KL散度

虽然特征重合率可以筛掉一些不好的特征,但是在下面这种情况下,覆盖率虽然是100%,但是特征的作用并不大:

训练集特征:[猫,猫,鱼,猪,鱼,鱼,猪,猪]
测试集特征:[猫,狗,狗,狗,狗,狗,狗,狗] 

该特征在训练集可能有很大的作用,但在测试集无法有效的划分样本,因为在测试集大多是一样的取值。在这种情况下,我第一个想法是在用Overlap Rate筛选过后,再计算测试集的信息熵(在决策树中我们提到过,信息熵更大代表着可以更好的对样本进行划分)。今天发现有个更好的end-to-end的方法,那就是KL散度。

KL 散度是一种衡量两个概率分布的匹配程度的指标,两个分布差异越大,KL散度越大。注意如果要查看测试集特征是否与训练集相同,P代表训练集,Q代表测试集,这个公式对于P和Q并不是对称的。

4. KDE 核密度估计

KDE核密度估计,看起来好像是统计学里面一个高端的非参数估计方法。我简单的理解下哈,大概就是通过一个核函数把一个频率分布直方图搞成平滑的了。具体核函数是啥,问就是不知道,我不是学统计的,自己看看叭[6]

76bbe52d76dfa37725c4ce38c61de2ae.png

我一般都是这么用的,从seaborn中找到KDE plot这个方法[7],然后把测试集和训练集的特征画出来,看看图像不像,不像的直接扔了就行/敷衍。

>>> import numpy as np; np.random.seed(10)
>>> import seaborn as sns; sns.set(color_codes=True)
>>> mean, cov = [0, 2], [(1, .5), (.5, 1)]
>>> x, y = np.random.multivariate_normal(mean, cov, size=50).T
>>> ax = sns.kdeplot(x)

5. 用机器学习模型检测分布是否一致

然后就是这个月我从Kaggle了解的一个惊为天人的方法,听完我就惊了。

中心思想就是使用特征训练模型来分辨测试集与测试集,若模型效果好的话代表训练集和测试集存在较大差异,否则代表训练集和测试集分布比较相似。

具体做法是构建一个二分类模型,对train-set打上0,测试集打上1,然后shuffle一下进行训练,若分类效果好,代表训练集和测试集区分度很高,那么分布差异就较大[8]

我感觉它最大的价值是,针对不同的模型检测分布会得到不同的效果,在实践中由于选定了预测模型,它对于某个特定场景的适应效果应该比常规的检测方法好很多。

由此延申出来,我们用训练好的二分类模型对训练集进行预测,然后输出预测概率,根据这个概率为训练集设置权重(概率越接近1代表训练集分布更接近测试集),这样就可以强行过拟合到测试集上!对于非线上测试型的数据挖掘比赛应该会有比较大的提升!

参考

  1. ^为什么要同分布 https://zhuanlan.zhihu.com/p/52530189
  2. ^KS检验 https://www.cnblogs.com/arkenstone/p/5496761.html
  3. ^Scipy KS检验 https://docs.scipy.org/doc/scipy-0.19.1/reference/generated/scipy.stats.ks_2samp.html
  4. ^离散变量编码 https://zhuanlan.zhihu.com/p/87203369
  5. ^特征重合率 https://zhuanlan.zhihu.com/p/82435050
  6. ^KDE https://blog.csdn.net/pipisorry/article/details/53635895
  7. ^KDE Drawer http://seaborn.pydata.org/generated/seaborn.kdeplot.html
  8. ^Kaggle Adversarial validation https://www.kaggle.com/kevinbonnes/adversarial-validation

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/511941.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Inclavare Containers:云原生机密计算的未来

简介:本文为你详细的梳理一次 Inclavare Containers 项目的发展脉络,解读它的核心思想和创新技术。 作为业界首个面向机密计算场景的开源容器运行时,Inclavare Containers 项目于 2020 年 5 月开源,短短一年多时间内发展势头非常迅…

没有操作系统程序可以运行起来吗?

作者 | 陆小风来源 | 码农的荒岛求生现在的程序员对操作系统已经习以为常了,但是你有没有想过,如果没有操作系统的话我们可以让程序运行起来吗?先说答案,当然是可以的,而且必须是可以的。你可以从这个角度来思考&#…

sysAK(青囊)系统运维工具集:如何实现高效自动化运维?| 龙蜥技术

简介:What is sysAK、典型工具介绍、开源 3 方面介绍了 sysAK 系统,目前 sysAK 工具集已经在龙蜥社区开源,并且在系统运维 SIG、跟踪诊断 SIG 一起共建,希望大家后期加入 SIG 一起讨论共建。 编者按:本文整理自「云栖…

quill鼠标悬浮 出现提示_CHERRY MC8.1鼠标评测:超前设计延续军火箱信仰

CHERRY作为机械键盘品牌拥有非常高的知名度,许多朋友的第一把机械键盘就是CHERRY品牌。在CHERRY产品线中,最具信仰的一定是军火箱MX8.0键盘。键盘本身手感颜值俱佳,独特的军火箱包装更是收获了大批粉丝。至于最配这把键盘的鼠标却一直让网友们…

高并发IO的底层原理

作者 | 阿辉来源 | Andy阿辉思考:作为程序员的我们,在编写软件进行文件读取,网络收发数据时,是不关心其具体的内部数据传输的。只关心把数据传输到缓冲区或及时从缓冲区读取数据。那么内部究竟是如何实现的呢,今天这篇…

新能源汽车太猛了,这些卡脖子技术你了解吗?

简介:从汽车行业的变化,我们即可初步看出芯片的重要性,那么,芯片对汽车行业的发展具体有哪些重要影响呢? 根据全球汽车咨询机构Auto Forecast Solutions统计的数据,截至10月10日,由于芯片短缺&…

龙蜥社区成立系统运维SIG,开源sysAK系统运维工具集

简介:系统运维SIG致力于打造一个集主机管理、配置部署、监控报警、异常诊断、安全审计等一系列功能的自动化运维平台。 OpenAnolis 龙蜥社区(以下简称“龙蜥社区”)正式成立系统运维(System Operation&Maintenance, sysOM&…

奔跑吧兄弟变成机器人是哪一期_奔跑吧预告,郑恺郭麒麟回归,而我却被女嘉宾的颜值吸引了...

哈喽小伙伴们,近期大家都看了《奔跑吧黄河篇》吗?现在已经播到第二期了,相信大家依旧是对跑男系列节目非常感兴趣的,播放量非常高,稳稳占据TX和AQY两大视频平台的综艺播放第一名的位置,可见网友们真的是非常…

院士专家热议如何拥抱“东数西算”,第二届中国IDC行业Discovery大会顺利召开

4月21日,一场别开生面的主题为“聚光奔赴”的数据中心行业大会圆满落下帷幕。由中国通信工业协会数据中心委员会指导,中国IDC圈与世纪互联共同主办的“2022年第二届中国IDC行业Discovery大会”在线上召开,会议聚焦国家“双碳”目标、“东数西…

一文理解 K8s 容器网络虚拟化

简介:本文需要读者熟悉 Ethernet(以太网)的基本原理和 Linux 系统的基本网络命令,以及 TCP/IP 协议族并了解传统的网络模型和协议包的流转原理。文中涉及到 Linux 内核的具体实现时,均以内核 v4.19.215 版本为准。 作者…

应对 Job 场景,Serverless 如何帮助企业便捷上云

简介:函数计算作为事件驱动的全托管计算服务,其执行模式天生就与这类 Job 场景非常契合,对上述痛点进行了全方面的支持,助力“任务”的无服务器上云。 作者:冯一博 任务(Jobs),是互…

Gartner发布新兴技术研究:深入洞悉元宇宙

供稿 | Gartner 出品 | CSDN云计算 根据Gartner预测,2026年全球30%的企业机构将拥有元宇宙产品和服务。 元宇宙是一个由独立但相互连接的网络所组成的持久、沉浸式数字环境,但目前尚未确定这些网络将使用的通信协议。元宇宙能够实现持久、去中心化、可…

双11实时物流订单实践

简介:随着双11的开启,物流业也迎来了年度大考。2021年双11期间,递四方作为物流仓储服务方,布局仓库和分拣点超40个,50w平米作业场地,单日订单峰值达千万级别,海量购物订单由递四方配送到家&…

阿里云徐立:面向容器和 Serverless Computing 的存储创新

简介:以上为大家分享了阿里云容器存储的技术创新,包括 DADI 镜像加速技术,为容器规模化启动奠定了很好的基础,ESSD 云盘提供极致性能,CNFS 容器网络文件系统提供极致的用户体验。 作者:徐立 云原生的创新…

鸿蒙2.0beta报名,鸿蒙OS 2.0 Beta版系统在哪报名-报名方法介绍

鸿蒙OS系统一直以来深受大家的关注,最近全新推出了鸿蒙OS 2.0 Beta版,那么鸿蒙OS 2.0 Beta版在哪报名呢?小编为大家分享一下关于鸿蒙OS 2.0 Beta版的报名方法介绍,对鸿蒙OS 2.0 Beta版感兴趣的不要错过了。鸿蒙OS 2.0 Beta版系统报…

不改一行代码,轻松拥有企业级微服务治理|MSE微服务治理专业版发布

简介:随着业务的发展,微服务拆分越来越复杂,微服务的治理也成了一个比较令人头疼的问题。有没有更加简单且高效的方法来解决微服务治理的难题? 作者:十眠 随着业务的发展,微服务拆分越来越复杂&#xff0…

曦智科技沈亦晨入选2022达沃斯世界经济论坛“全球青年领袖”

日前,达沃斯世界经济论坛公布了2022年“全球青年领袖”名单,曦智科技创始人兼首席执行官沈亦晨博士获选,他将与来自全球42个国家的其他109位青年领袖一起,加入到为期三年的领导力培训项目中,从不同领域为全球发展发挥更…

如何利用 “集群流控” 保障微服务的稳定性?

简介:应用高可用服务 AHAS (Application High Availability Service) 是经阿里巴巴内部多年高可用体系沉淀下来的云产品,以流量与容错为切入点,从流量控制、不稳定调用隔离、熔断降级、热点流量防护、系统自适应保护、集群流控等多个维度来帮…

阿里巴巴服务网格技术三位一体战略背后的思考与实践

简介:本文分享了阿里巴巴服务网格技术三位一体战略背后的思考和实践,关于阿里云服务网格 ASM 的一些产品功能,包括最近发布的一些功能。 作者:宗泉、宇曾 阿里巴巴三位一体战略 阿里云内部很早就提出了开源、自研、商业化三位一…

antd的tooltip如何调整间距_Word字符间距不会调?那就试试这些技巧

Word字符间距,你会调整吗?本期Word妹与大家分享4种字符间距调整技巧。1、取消数字或字母之间的距离数字或字母间距太大了主要是因为在全角状态下输入的,这时可以点击开始——字体——更改大小写——半角即可。2、取消汉字与英文字母之间的距离…