偶数AI小课堂:如何解决数据集不均衡问题

机器学习作为数据分析的一种重要技术手段,正成为一家企业实现数据智能的关键,通过学术界和工业界对模型和算法的不断优化,通用的模型在部分领域的分类准确度已经超越了人类的水平。但是在信息化和智能化的道路上产生的自然数据往往将有用的信息掩藏较深,面对这样未经科学方法预先处理的数据即便是强大的神经网络都难以给出正确的决策,因此在机器学习中数据往往扮演着很重要的角色。

我们实践获得的需求中发现数据不均衡是实际分析数据时最常见的问题之一,接下来的篇幅中就和大家聊一聊数据集不均衡的问题给大家一些实际分析数据的一些建议和启发。

问题的定义

数据不均衡是指在待分析的数据中,不同类别的样本数量的比例失调的现象。这种现象高频的出现在实际生产和需求中。例如:

1.在信用卡欺诈的案件中,欺诈大约只占据信用卡业务中2%的比例。

2.电力公司在检查偷电漏电的事件中,发生的概率只有4.1%。

3.通过对硬件I/O口的监控实现判断硬件的工作状态,通常硬件发生故障的概率不足0.5%。

类似于上述情况的现象在生产环境中还会有很多,并且通常在这样的问题中我们的关注点主要集中在数量较少的那一方。在这样的数据中我们将较少的那一方称为正样本。一个常用的描述描述数据不均衡程度的指标IR(Imbalance Ratio)如下:

nMaj 分子(Majority)是多数样本的数量,nMin 分母(Minority)是少量样本的数量,通常大家会很自然的认为IR的数值越大分类器就越难从中学习并正确的分类正样本。然而数据的分类的效果其实和IR的值没有明显的依赖关系。

下图中展示了三种拥有同样IR值的数据,对于图a这样的分布独立的数据集基本不需要任何额外的处理方法就能使得分类器很好的将正样本和负样本区分开。

在图b中正样本和负样本完全均匀的重合在一起,这样的数据集无论采用什么策略来处理数据得到的最好的结果都只是分出一半的正样本,同时损失一半负样本的精度。

图c中正样本和负样本只有部分使重合的,在这种情况下如果采用合适的策略处理数据是可以将正样本正确的区分出来同时保证负样本的精度不会下降太多,在接下来提出的方法主要针对c图所处的条件下。

解决方法

在数据不均衡的场景中并没有什么固定的方法或者对所有情况都适用的策略,采取什么策略一切都得依据真实数据来定,更普遍的情况是在数据上尝试不同的方法最后根据科学的评估指标选取一种或者几种策略。基本考虑的几个思路的方向是采用一些策略使得正负样本更加均衡,调整不同类别的权重,在训练模型时对少量的样本施加更大的惩罚等。这些策略大体分为两个层面,分别是数据层面和算法层面,接下来展开讨论。

数据层面的策略

1.欠采样和过采样

过采样就是简单随机复制少数类别的样本,使得最终的数量和多数类别均衡。欠采样就是随机抽取数量较多类别的样本,使得最终的样本均衡。方法虽然简单但是也是最直接有效的办法。此处需要避开一个误区,有的读者可能认为欠采样是减少样本这样会减少正样本的有效信息而过采样不会产生这种情况,实际条件下真实数据中都会存在噪声,复制少量样本进行填充也会将噪声更多的引入也会影响分类器的决策。

2.构造新的样本

由于随机过采样只是简单复制样本的策略来增加少数类样本,这样的方法容易产生一些模型过拟合的问题,使得模型学到的特征依赖数据分布而不够泛化,于是提出了一些分析少数类别样本并通过已有的样本合成新数据添加入数据集训练的方法。比较有代表性的是SMOTE(Synthetic Minority Oversampling Technique),算法原理如下:

(1)对于少数类中每一个样本X,以欧氏距离为标准计算它到少数类样本集 Smin 中所有样本的距离,得到其k近邻。

(2)根据样本不平衡比例设置一个采样比例以确定采样倍率N,对于每一个少数类样本,X从其k近邻中随机选择若干个样本,假设选择的近邻为x_{n}

(3)对于每一个随机选出的近邻 x_{n} ,分别与原样本按照如下的公式构建新的样本。

降采样和过采样都会具有一定自身的局限性,降采样有概率遗失一些重要的数据信息,过采样会引使得数据自身的噪声放大,同时有风险产生模型过拟合,使用时需要结合实际数据,并使用科学的评估指标选择时候具体数据的处理方法和降采样和过采样的比例

算法层面的策略

在算法层面大体有以下的几种思路:1.通过不均衡的数据集指定特殊的模型训练策略。2.对现有的模型和决策方法引入代价敏感学习。3.改变思路将分类任务变为一个无监督的异常点检测任务。

接下来针对这三个方向做详细说明。

1.采用特殊的训练策略

(1)在训练神经网络时,假定多数类别样本是少数类别样本的N倍,在进行随机梯度下降优化时,遇到少数类别的样本可以将该样本重复训练N次。

(2)假定少数类有m个样本,对多数类样本聚成N个簇,从这N个簇中心点的周围抽出m个样本,并将其与少数类混合,这样就得到N个均衡的数据集,通过训练得到N个分类器,将这N个分类器的决策结果以投票的方式(少数服从多数)产生最终的分类。

(3)训练三个分类器分别用C1、C2、C3表示,首先使得第一个分类器的输出固定为多数类,之后将C1分错的样本提出,同时从分对的样本中等量的随机抽取样本合成新的训练集合D1,使用D1训练C2,接着在将C2分错数据和等量分对的数据打乱后合成集合D2,再使用D2训练C3。最后采样投票的方式产生决策结果,即只有当C2和C3的决策结果全为正样本时结果才为正样本,其他情况下为负样本。

2.代价敏感学习

代价敏感学习(Cost-sensitive learning)的启发来自分类问题中,错误的分类对现实造成的结果是不相同的,例如:在医学诊断中将一阳性病例确诊为阴性,和将阴性确诊为阳性造成的后果是不一样的。如何将现实中的后果转化成一种代价反馈给模型,这就是代价敏感学习的研究内容,通常代价被描述为一个代价矩阵如下所示:

通常情况下C00和C11位置表示分对结果所有代价为0,C01表示将第0类错分为第1类的代价,C10表示第1类错分为第0类的代价。从模型学习的角度出发学者们针对不同的分类器都提出了代价敏感的版本,例如:决策树的代价敏感剪枝、代价敏感深度置信网络、代价敏感支持向量机。还有基于模型的分类结果对最终的分类做代价敏感的后处理,和基于代价对训练样本施加权重,来获得代价敏感的模型。

(1)基于代价学习的AdaCost模型

AdaCost是AdaBoost的代价敏感版本,AdaBoost的算法流程主要流程如下:

为训练样本的权重初始化,m为样本的个数

• 之后循环训练个基础分类器,在第t轮中 

 为本次训练的基础分类器, h_{t}  为该轮基础分类器分类的错误的概率(如果该概率大于0.5则表示此分类器没有任何效果就会退出循环),利用\epsilon _{t} 计算出该分类器占最后决策的比重 \alpha _{t}

• 使

用来更新下一轮数据的样本的权重。

• 最后使用训练的T个分类器和T个决策系数 \alpha _{t} ,得出最终的分类结果。

了解了AdaBoost的原理后,任务就是要将代价系数 \beta _{i}  也加入到下一轮的样本权重的决策上,所以修改如下公式:

改为

就产生了AdaCost算法。

(2)训练模型时为样本增加代价系数可以使得分类的界限更加明确如下图所示是没有代价系数模型(左图)和增加代价系数(右图)的分类效果:

图中展示黑色和白色两种类别的分类效果,可以看出左图展示的模型分类使得类别分类的界限更加明确。

(3)同样可以使用代价矩阵中的代价系数去合理的选取不同分类器最终的决策阈值使得区分出更加重要的决策结果,优化的原理公式为:

其中 P(j|X)表示样本x被分类器分为j类的概率,C(i,j)表示代价矩阵中的系数。

代价敏感学习实质是一种思想和指导方法,可以将其应用在从数据选取到模型训练的各个阶段,每一种方法针对不同数据集的效果都可能会产生不等的差距,需要不断尝试在实际应用时科学评判不同的策略和算法.

在实际的应用中对于处理不平衡数据集的方法仍然还有很多,在面对实际数据时还有很多数据处理上的问题,需要大量的算法去尝试和解决,在偶数的LittleBoy自动化机器学习平台中已经集成了大量的数据预处理、模型训练、数据可视化的算法和工具,简化了数据分析和数据智能的门槛,欢迎读者来体验。

本文首发自公号“偶数科技”第一时间了解更多信息欢迎关注哦~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 198,932评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,554评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 145,894评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,442评论 1 268
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,347评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,899评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,325评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,980评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,196评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,163评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,085评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,826评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,389评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,501评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,753评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,171评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,616评论 2 339

推荐阅读更多精彩内容