第二章 非平衡数据分类

2.1 数据非平衡现象与影响

产生非平衡数据的原因和机制有:

  1. 攻击者的理性特征使攻击样本不会大规模出现,攻击远远少于正常样本;
  2. 警惕性高的攻击者会变换攻击的方式避免被检测出来,使得攻击行为像正常行为。

针对不平衡数据分类问题关键是设计分类器模型,保证多数类与少数类使用时有一定的分类准确性。

2.2 非平衡数据分类方法

  • 数据预处理层面
    保证样本分布不变的情况下,改变训练集中每个类的样本数量,降低非平衡的程度。重采样具体包含三类:
  1. 过采样:提升少数类的样本数量;
  2. 欠采样:减少多数类的样本数量;
  3. 混合采样:对少数类和多数类分别执行过采样和欠采样。
  • 特征层面
    虽然样本数据量少,但某些特征子空间有能区分少数类和多数类的样本,可以运用特征选择或特征提取的方法决定子空间的构成。传统方法为:信息增益,方卡统计,互信息,主成分分析等,在少数类样本比较多时候可以使用神经网络。
  • 多类算法层面
    改进代价函数的主要方法是代价敏感学习法,增大少数类的权重。单类学习和集成学习也会用来解决非平衡分类问题。
2.2.1 数据欠采样

常见的方法有随机欠采样和启发式欠采样等。

随机欠采样选择样本的方式是随机选择,保证对每个样本的选择概率相同,但一些关键样本会被排除掉。启发式欠采样保留重要有代表的信息,样本选择是基于启发式规则。

  1. 编辑最近邻规则
    ENN规则是寻找排除不能准确分类的多数类样本。ENN在判断时,对于某个多数类样本α,如果被k个最近的邻居错误分类,则把α从数据集中删除;对于少数类样本β,如果它被k个最近的邻居错误分类,则将β邻居中的多数类样本删除掉。
  2. 浓缩最近邻规则
    CNN的基本过程就是使用KNN算法对点进行分类,如果分类错误则该点作为少数类样本。
  3. 近似缺失方法
    NearMiss-1:对于每个多数类样本,计算其与最近的三个少数类样本的平均距离,选择距离最小的Top K个多数类样本,K 的取值跟少数类样本数量相似。针对局部特征。
    NearMiss-2:对于每个多数类样本,计算其与最远的三个少数类样本的平均距离,选择距离最小的Top K个多数类样本。针对全局特征。
    NearMiss-3:先对每个少数类样本分别求得距离最近的若干多数类样本,对这些多数类样本分别获得三个最近的少数类样本的平均距离,选择距离最小的Top K个多数类样本。
  4. Tomek links方法
    若有两个不同类别的样本它们的最近邻居都是对方,那么这两个样本就称为Tomek link。如果两个样本点是Tomek link对,则其中某个样本为噪声或者两个样本都在两类的边界上。数据清洗时可以使用此方法将数据对中两个都剔除掉或者去噪声。
    在这里插入图片描述
2.2.2 数据过采样
  1. 基本的SMOTE算法

对于少数样本集 S S S 中的每个样本 p p p

在$S$ 中求点$p$ 的k个邻居;
有放回的随机抽取r<=k个邻居;
对这r个点,每一个点与点$p$ 连接成一条直线,在直线上随机取一点产生新样本,重复最终得到r个新样本点。在线段$x_ix_j$ 上随机选一点$x_n$ 的方法采用插值法$x_n = x_i +(x_j - x_i) × σ$ ,其中$σ$ 属于[0,1]是一个随机数;
将这些点加入$S$ 中。

SMOTE算法只在近邻之间进行插值采样,没有考虑到采样点附近的样本分布情况。

  1. Borderline SMOTE算法

Borderline SMOTE算法在生成新样本的时候针对位于边界附近的少数类样本。

1) Borderline SMOTE-1

计算$p$ 在样本集的m个最近邻,记为集合$M$ ,设$m'=|M_p ∩ L|$ ;
如果$m' = m$ ,(即p外全部都是多样本点的时候,则p是一个噪声,不做处理;
如果$0≤m'<m/2$ ,(即p位于少数点的内部,则p很安全不需要操作;
如果$m/2≤m'<m$ ,(即位于少数样本和多数样本的边缘部分,需要生成一部分少数样本;
少数样本的每个点都要重复行为。

2) Borderline SMOTE-2
Borderline SMOTE-2不仅从少数样本中求最近邻,多数样本也会求最近邻。

2.2.3 数据的组合采样
  1. SMOTE + Tomek links
    由于基本SMOTE算法通过线性插值直接得到少量类样本可能导致多数类样本遭到混淆。首先利用SMOTE生成新的少数类样本,然后剔除T中的Tomek link对;
  2. SMOTE + ENN
    利用SMOTE生成新的少数类样本,得到扩充后的数据集;对数据集中每一个样本使用ENN,如果某点被k个最近邻错误分类则剔除这些邻居中的多数类样本。
2.2.4 特征层的不平衡数据分类

特征选择和特征提取。特征选择包括:信息增益,互信息等监督方法,也包括特征数之类的无监督方法;特征提取包括主成分分析法,或者神经网络。

2.2.5 算法层的非平衡数据分类
  1. 代价敏感学习
    经典分类方法假设各个类别的错分代价是相同的,以全局错分率最低为优化目标。

给定数据集类别N,代价定义为N×N的矩阵,每一项 C ( i , j ) C(i,j) C(i,j) 表示将i类数据错误分给j类所受到的代价,并规定错误分类的代价大于正确分类的代价,少数类的错分代价大于多数类的错分代价。

定义真是类别为i的样本x的分类风险为: R ( i ∣ x ) = ∑ j = 1 N p ( j ∣ x ) C ( i , j ) R(i|x) = \sum_{j=1}^N p(j|x)C(i,j) R(ix)=j=1Np(jx)C(i,j)其中 p ( j ∣ x ) p(j|x) p(jx) 表示样本x属于类别j的概率; C ( i , j ) C(i,j) C(i,j) 表示把i识别成j付出的代价。

根据最优贝叶斯预测把x分为使 R ( i ∣ x ) R(i|x) R(ix) 最小化的类别,即 k = a r g m i n i R ( i ∣ x ) , i = 1 , 2.. N k = arg min_iR(i|x), i = 1,2..N k=argminiR(ix),i=1,2..N 代价敏感学习方法介绍如下:

1) Metacost
利用贝叶斯理论根据代价最优分类对训练集中每个样本的类别重新标记,在标记后的数据集上训练新的分类器,具有代价敏感的分类能力。

在训练集中采S个样本;
使用分类算法对取到的样本训练,得到模型M;
对于训练集的每个样本x,对于每个类别j:如果分类算法产生了类别概率(表示存在异样本),则根据每个模型计算p(j|x;M)(表示总训练集单个样本x在样本类别j的概率之中每个取样样本存在的概率),如果没产生类别概率说明取样中单个存在的类别要么是j要么不是j。是j则概率为1,否则为0;
判断如果所有的样本点都需要计算,则p(j|x)=Σp(j|x;M)/m,否则p(j|x)=Σp(j|x;M)/(m-1),由于分类器用部分样本训练的,如果不满足全部样本集参与训练则剔除这部分训练子集,因此m-1。

2) 代价敏感的支持向量机
将代价信息嵌入分类模型的目标函数中通过最小化期望损失获得代价敏感学习算法。对SVM为例进行代价敏感学习改造的关键在于惩罚因子C,该参表示每个样本在分类器构造中的重要程度。方法是对C进行加权。

给定数据集,标准非代价敏感支持向量机学习一个决策边界: f ( x ) = w T ϕ ( x ) + b f(x) = w^T\phi (x) + b f(x)=wTϕ(x)+b
其中 ϕ \phi ϕ 表示将样本的特征空间映射到高维空间,参数b和w的优化目标如下:
{ m i n w , b , ε 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i ξ i s . t . y i ( w T x i + b ) ≥ 1 − ξ i \begin{cases} min_{w,b,ε} \frac{1}{2} ||w||^2 + C\sum_i ξ_i \\ s.t. y_i(w^Tx_i + b) ≥ 1 - ξ_i\\ \end{cases} {minw,b,ε21∣∣w2+Ciξis.t.yi(wTxi+b)1ξi
最小化目标函数包括两部分,正则项和损失函数项,标准支持向量机最小化一个对称的损失函数,称为合页损失函数。在SVM中实现代价敏感的两种方法是偏执惩罚支持向量机和代价敏感合页损失支持向量机。

偏执惩罚支持向量机(BP-SVM)引入了分别对阳性和阴性样本的松弛量,处理假阳性和假阴性不同的误分代价。优化目标为:
{ m i n w , b , ε 1 2 ∣ ∣ w ∣ ∣ 2 + C ( C + ∑ i ∈ S + ξ i + C − ∑ i ∈ S − ξ i ) s . t . y i ( w T x i + b ) ≥ 1 − ξ i \begin{cases} min_{w,b,ε} \frac{1}{2} ||w||^2 + C(C_+\sum_{i∈S_+} ξ_i + C_-\sum_{i∈S_-} ξ_i)\\ s.t. y_i(w^Tx_i + b) ≥ 1 - ξ_i\\ \end{cases} {minw,b,ε21∣∣w2+C(C+iS+ξi+CiSξi)s.t.yi(wTxi+b)1ξi

代价敏感合页损失函数支持向量机(CSHL-SVM)扩展了SVM中的和也损失函数,推导出最小化关联风险的代价敏感学习算法。优化目标为:
{ m i n w , b , ε 1 2 ∣ ∣ w ∣ ∣ 2 + C ( C + ∑ i ∈ S + ξ i + ( 2 C − − 1 ) ∑ i ∈ S − ξ i ) s . t . y i ( w T x i + b ) ≥ 1 − ξ i y i ( w T x i + b ) ≥ 1 2 C − − 1 − ξ i \begin{cases} min_{w,b,ε} \frac{1}{2} ||w||^2 + C(C_+\sum_{i∈S_+} ξ_i + (2C_--1)\sum_{i∈S_-} ξ_i)\\ s.t. y_i(w^Tx_i + b) ≥ 1 - ξ_i\\ y_i(w^Tx_i + b )≥\frac{1}{2C_--1}-ξ_i \\ \end{cases} minw,b,ε21∣∣w2+C(C+iS+ξi+(2C1)iSξi)s.t.yi(wTxi+b)1ξiyi(wTxi+b)2C11ξi

  1. 单类学习
    当二分类的非平衡数据集类别差异很大时可以考虑单类分类器。只对多数类样本进行训练,形成一个对该类别的数据模型,可以计算相似度度量并设定阈值判断新样本是否属于多数类。多数类的轮廓就是分类器,解决轮廓问题三种方法,基于密度,基于支持域,基于聚类。

1) 基于密度
基于密度的轮廓就是该样本的密度轮廓,在概率计算的基础上结合给定的阈值即可判别,训练的维数较低且训练样本较多时基于密度的单类分类器方法很有效。

2)基于支持域
训练数据的轮廓是用边界区域来描述,目的是获得最小化训练数据的支持域的体积。代表方法为单类支持向量机和支持向量描述。
在这里插入图片描述

OCSVM实际上把特征空间坐标原点作为一个虚构类,在多数类和虚构类之间寻找最优超平面。
SVDD首先把空间映射到高维空间,在高维特征中找一个尽可能小的超球体,包含所有训练样本的最小球体。

3) 基于聚类
无监督学习方法,假设多数类满足聚类条件可以对数据进行聚类,对新样本计算它到最近聚类中心的距离,根据阈值判断即可。

  1. 集成学习

集成学习对多个弱分类器进行集成从而提升分类性能,嵌入了对数据采样,数据样本权重调整等。基于Bagging的非平衡数据分类方法在Bagging中改变采样方式从而获得多样化的基分类器。

  • OverBagging 每次采样时在少数类数据上应用随机过采样;
  • UnderBagging 每次采样对多数类数据应用随机下采样;
  • SMOTEBagging 先用SMOTE生成少数类样本,然后再使用Bagging;
  • AsymmetricBagging 将少数类样本保留下来从多数类样本中采样一个与少数类数据一样大的子集。

2.3 非平衡数据分类方法的实现

Python库函数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值