所谓不平衡指的是:不同类别的样本数量差异非常大。

数据规模上可以分为大数据分布不均衡和小数据分布不均衡。大数据分布不均衡:例如拥有1000万条记录的数据集中,其中占比50万条的少数分类样本便于属于这种情况。小数据分布不均衡:例如拥有1000条数据样本的数据集中,其中占有10条的少数分类样本便于属于这种情况。

样本类别分布不平衡主要出现在分类问题的建模上。导致样本量少的分类所包含的特征过少,很难从中提取规律;即使得到分类模型,也容易产生过度依赖于有限的数据样本而导致过拟合的问题,当模型应用到新的数据上,模型的准确性和鲁棒性很差。

样本分布不平衡主要在于不同类别间的样本比例差异,超过10倍,就要考虑该问题,超过20倍,一定要解决。

1. 数据挖掘中容易出现样本不均衡的场景

1. 异常检测场景

比如恶意刷单、黄牛订单、信用卡欺诈、电力窃电、设备故障等。这些数据样本所占的比例通常是整体样本中很少一部分,以信用卡欺诈为例,欺诈比例一般在 0.1% 以内。

2. 客户流失场景

大型企业流失的客户相对于整体客户通常是少量的。比如电信、石油等。

3. 低频事件的发生

例如每年1次的双11盛会一般都会产生较高的销售额,但放到全年来看这一天的销售额占比很可能只有1%不到,尤其对于很少参与活动的公司而言,这种情况更加明显。这种属于典型的低频事件。

2. 解决样本不均衡

1. 过抽样和欠抽样解决样本不均衡

过抽样

(也叫上采样、over-sampling)即增加分类中少量样本的数量,简单方法就是复制少数类样本形成多条记录,缺点是样本特征少导致过拟合。

改进的过抽样:通过在少数类中加入随机噪声、干扰数据或通过一定规则产生新的合成样本。如SMOTE算法(Synthetic Minority Oversampling Technique即合成少数类过采样技术)。

欠抽样

(也叫下采样、under-sample)即减少分类中多数样本的数量,简单方法就是随机去掉一些多数类样本减小规模,缺点丢失多数类样本中的重要信息。

总体上,过抽样和欠抽样更适合大数据分布不均衡的情况。

2. 正负样本的惩罚权重解决样本不均衡

思想:对不同样本数量的类别赋予不同的权重(一般分类中的小样本量类别权重高,大样本量类别权重低)。

很多算法都有基于类别参数的调整设置,以 SVM 为例,在class_weight:{dict, 'balanced'}中针对不同类别手动指定不同的权重。适用默认方法balanced,SVM将权重设置为与不同类别样本数量呈反比的权重来做自动均衡处理,计算公式:n_samples / (n_classes * np.bincount(y))。

3. 组合/集成方法解决样本不均衡

思想:在每次生成训练集时使用所有分类中的小样本量,同时从分类中的大样本量中随机抽取数据来与小样本量合并构成训练集,这样反复多次得到很多训练集和训练模型。最后使用组合方法(比如投票、加权投票等)产生分类预测结果。

例如: 在数据集中的正、负的样本分别为100和10000条,比例为1:100。此时可以将负样本(类别中的大量样本集)随机分为100份(当然也可以分更多),每份100条数据;然后每次形成训练集时使用所有的正样本(100条)和随机抽取的负样本(100条)形成新的数据集。如此反复可以得到100个训练集和对应的训练模型。

来自:《Python数据分析与数据化运营》

python组合数据分类_Python解决数据样本类别分布不均衡问题相关推荐

  1. pandas数据预处理(标准化归一化、离散化/分箱/分桶、分类数据处理、时间类型数据处理、样本类别分布不均衡数据处理、数据抽样)

    1. 数值型数据的处理 1.1 标准化&归一化 数据标准化是一个常用的数据预处理操作,目的是处理不同规模和量纲的数据,使其缩放到相同的数据区间和范围,以减少规模.特征.分布差异等对模型的影响. ...

  2. 样本类别分布不均衡 imbalance 问题的处理

    样本类别分布不均衡导致的危害? 样本类别不均衡将导致样本量少的分类所包含的特征过少,并很难从中提取规律:即使得到分类模型,也容易产生过度依赖与有限的数据样本而导致过拟合问题,当模型应用到新的数据上时, ...

  3. Python fitter包:拟合数据样本的分布

    Python fitter包:拟合样本数据的分布 安装fitter 生成一段模拟数据 利用fitter拟合数据样本的分布 方法详解 Fitter方法 Fitter返回 参考 安装fitter pip ...

  4. python组合数据分类_Python 数据可视化:分类特征统计图

    上一课已经体验到了 Seaborn 相对 Matplotlib 的优势,本课将要介绍的是 Seaborn 对分类数据的统计,也是它的长项. 针对分类数据的统计图,可以使用 sns.catplot 绘制 ...

  5. Python拟合数据样本的分布

    安装fitter pip install fitter 生成一段模拟数据 from scipy import stats import numpy as np # N(0,2)+N(0,10) dat ...

  6. python hist函数_Python主要数据探索函数

    Python中用于数据探索的库主要是pandas(数据分析)和 Matplotlib(数据可视化),其中pandas提供了大量的与数据库探索相关的函数,这些数据探索函数壳大致分为统计特征函数与统计绘图 ...

  7. python汉字编码错误_python解决汉字编码问题:Unicode Decode Error

    前言 最近由于项目需要,需要读取一个含有中文的txt文档,完了还要保存文件.文档之前是由base64编码,导致所有汉字读取显示乱码.项目组把base64废弃之后,先后出现两个错误: 如果对于ascii ...

  8. python输出浮点数_Python的数据类型转换,那个很多人知道的知识,你知道吗?

    前言 阿皮又来和大家分享Python干货了,大家昨天的题会做吗? 这是答案: print(1.2+1.2) 输出:2.4 print('1.2'+'1.2') 输出:1.212 这两个不同的输出结果看 ...

  9. python下载源_python解决使用镜像源来安装包

    一.问题 在进行python包安装的时候出现一个问题就是无法进行安装,且出现了如下的错误 报错代码 Retrying (Retry(total=4, connect=None, read=None, ...

最新文章

  1. 电脑安装python步骤-python3.8下载及安装步骤详解
  2. 基于Linux系统中进程调度分析
  3. border 外边框
  4. 电脑控制iphone_如何把苹果 iPhone/iPad 投屏到电脑
  5. dijkstra算法_Python实现图的经典DFS、BFS、Dijkstra、Floyd、Prim、Kruskal算法
  6. 工行u盾显示316_工行U盾只显示金融@家怎么显密码
  7. 路由器下一跳地址怎么判断_Tracert命令详解,路由跟踪命令tracert命令怎么用?...
  8. 从 NASL 说开:低代码编程语言能饭否
  9. python整蛊代码+详解
  10. 2021年深圳市坪山区贴息贴保资助申请条件及材料,补贴100万元
  11. win10家庭版如何修改用户名对应的用户文件夹下的用户文件名字(中文该成英文字符)
  12. 网站实现发送帖子的功能
  13. 【新手入门】什么是量化投资?
  14. Word域代码:TOA,自动生成目录
  15. MySql 学生表 科目表 成绩表 查询学生各科成绩
  16. 揭示微软鲜为人知的秘密:观止--微软创建NT和未来的夺命狂奔 (Show Stopper!中文版)...
  17. 华为java实习生面试_华为java实习生一面总结
  18. 解决端口号被占用的问题
  19. 第02课 操作系统及Linux 系统介绍
  20. 手把手教你Linux磁盘分区与文件挂载

热门文章

  1. 斯坦福完全可解释深度神经网络:你需要用决策树搞点事
  2. Android官方开发文档Training系列课程中文版:布局性能优化之布局复用
  3. 笔记:python设计模式
  4. R语言排序 -- sort() order() rank()
  5. mysql5.7 备份
  6. 学习笔记二:异步FIFO
  7. 未来的趋势发展 802.11v网络协议解析
  8. poj 3485 区间选点
  9. install scikit-learn
  10. html 中表格长度固定