K-means smote:基于K均值和SMOTE的启发式过采样方法改进不平衡学习

K-means smote:基于K均值和SMOTE的启发式过采样方法改进不平衡学习

相关工作

  处理类别不平衡的方法要么改变分类算法本身,将不同类别的错误分类成本纳入分类过程,要么修改用于训练分类器的数据。对训练数据进行重采样可以通过移除多数类样本(欠采样)或扩大少数类样本(过采样)来完成。过采样技术要么复制现有的观测数据,要么生成人工数据。这种方法可以在无信息的情况下工作,随机选择被复制或用作数据生成基础的样本,或者被告知,将他们的努力导向过采样被认为最有效的领域。在知情的过采样器中,聚类程序有时用于确定合成样本生成的合适区域。
  随机过采样随机复制少数类实例,直到达到所需的类分布。由于它的简单和易于实现,它很可能是从业者中最常用的方法。然而,由于样本仅仅是重复的,在随机过采样数据上训练的分类器很可能遭受过拟合3[2,6]。
  2002年,Chawla等人【4】提出了SMOTE算法,避免了随机过采样面临的过拟合风险。这项技术不仅仅是复制现有的观察结果,而是生成人工样本。如图1所示,这是通过对随机选择的少数观测值及其相邻的少数观测值之一进行线性插值来实现的。更准确地说,SMOTE执行三个步骤来生成合成样本。首先,它选择一个随机的少数观测值a。在其k个最近的少数类邻居中,选择实例b。最后,通过对两个样本进行随机插值来创建一个新的样本在这里插入图片描述
K-means smote:基于K均值和SMOTE的启发式过采样方法改进不平衡学习_第1张图片

  然而,如图2所示,该算法在处理不平衡和噪声方面存在一些弱点。其中一个缺点源于SMOTE随机选择少数实例以均匀的概率进行过采样。虽然这种方法可以有效地打击阶级间的不平衡,但问题是类别内部的不平衡和小的分离被忽略。计算许多少数类样本的输入区域很有可能被进一步夸大,而样本稀少的少数类区域可能保持稀疏[39]。
  另一个主要问题是SMOTE可能会进一步放大数据中存在的噪声。当线性插值一个有噪声的少数样本时,可能会发生这种情况,该样本位于多数类实例及其最近的少数邻居之间。该方法容易产生噪声,因为它不能区分重叠的类区域和所谓的安全区域[3,41,45,49]。
K-means smote:基于K均值和SMOTE的启发式过采样方法改进不平衡学习_第2张图片
  尽管有其弱点,SMOTE已被研究人员和从业人员广泛采用,这可能是因为它的简单性和相对于随机过采样的附加值。已经提出了对该技术的许多修改和扩展,旨在消除其缺点。这种修改典型地解决了原始方法的一个弱点[46]。它们可以根据其声称的目标被分成算法,这些算法旨在强调某些少数类区域,旨在对抗类内不平衡,或者试图避免噪声的产生。
  将注意力集中在决策边界上,边界线-SMOTE1属于强调类区域的方法的范畴。这是这里讨论的唯一一种不使用聚类过程的算法,由于其受欢迎程度而被包括在内。该技术用接近类边界的实例的目标选择代替SMOTE随机选择的4个接受的手稿接受的手稿观察。样本的k个最近邻的标签被用来确定它是作为噪声被丢弃,是因为它假定接近类边界而被选择,还是因为它远离边界而被排除。边界线-SMOTE2扩展了此方法,允许对少数实例及其一个多数类邻居进行插值,将插值权重设置为小于0.5,以便将生成的样本放置在更接近少数样本的位置[21]。
  Cluster-SMOTE是强调某些类区域的技术类别中的另一种方法,它在将SMOTE应用于所发现的类之前,使用kmeans对少数类进行聚类。这种方法的既定目标是通过在自然出现的少数民族群体中创建样本来提升群体区域。没有规定每个集群中生成多少个实例,也没有规定如何确定集群的最佳数量[7]。虽然这种方法可以缓解类间不平衡的问题,但无助于消除小的分离。
  Nekooeimehr和Lai-Yuen [36]提出的自适应半无监督加权过采样(A-SUWO)属于同一类别,是一种应用聚类来提高过采样质量的相当复杂的技术。该方法基于层次聚类,旨在对决策边界附近的难学习实例进行过采样。
  在旨在减少类内不平衡的同时减少类间不平衡的技术中,有基于聚类的过采样。该算法使用k均值对整个输入空间进行聚类。然后在聚类中应用随机过采样,以便:a)所有多数聚类,b)所有少数聚类,以及c)多数和少数类具有相同的大小[27]。通过复制观测结果而不是生成新的观测结果,这种技术可能会鼓励过度拟合。
  在基于聚类的欠采样中,林等人[32]应用k均值聚类,其中k等于少数样本的数量。对于欠采样的多数类,只保留聚类中心或聚类中心,导致类大小相等。作为一种欠采样方法,这种方法去除了可能代表重要概念的观察值。
  宋等人[44]采用双向采样方法,将多数类的欠采样与少数类的过采样结合起来。K-means聚类在每个类中单独应用,目标是实现类内和类间的平衡。该方法的欠采样步骤与基于聚类的欠采样[32]相同,保留聚类数k设置为平均类大小的聚类medoids。少数类被分成两个分区。随后,在较小的集群中应用SMOTE。执行多次聚类和SMOTE迭代,直到两个类的大小相等。因为这种方法将两个类分别聚类,所以它对重叠的类边界是不可见的,并且可能会导致噪声的产生。
  自组织映射过采样(SOMO)算法使用自组织映射将输入数据转换成二维空间,在该二维空间中,为数据生成识别安全和有效的区域。然后,在低维空间中发现的聚类内以及相邻聚类之间应用SMOTE,以纠正类内和类间的不平衡[11]。
  为了避免噪声的产生,一种基于聚类的方法CURE-SMOTE使用层次聚类算法CURE在应用SMOTE之前清除数据中的离群点。这种方法的基本原理是,因为SMOTE会放大现有噪声,所以在过采样之前,应该清除数据中的噪声观测值[33]。虽然避免了噪音的产生,但少数民族内部可能的不平衡被忽略了。
  Santos等人[42]用k均值对整个输入空间进行聚类。使用SMOTE选择代表较少的集群进行过采样。该算法不同于大多数过采样方法,因为SMOTE的应用与类别标签无关。生成的样本的类标签是从两个父类中最近的一个复制而来的。该算法因此针对数据集不平衡,而不是类之间或类内的不平衡,并且不能用于解决类不平衡。
  一种被设计用来提高稀有类预测的集成方法,称为COG,使用k-means将多数类分解成更小的分区,目的是促进线性可分性。对于多数类的每个聚类,训练单个线性分类器以将其从少数类中分离出来。最后的预测是所有推断规则的结合。COG-OS方法通过在少数类簇内应用随机过采样来扩展这一过程[48]。生成的样本在少数群体中的分布由用户决定,不受任何启发式方法的指导。此外,COGOS的有效应用需要了解子聚类结构,以确定每个类中的聚类数量。因此,它的应用在大型和高维数据集中是不可行的。
  综上所述,最近有很多针对不平衡数据集重采样改进的研究。一些建议的方法在应用随机过采样或SMOTE之前使用聚类技术。虽然它们中的大多数设法克服了现有过采样算法的一些弱点,但没有一个能够同时避免噪声产生和减轻类之间和类内的不平衡。此外,许多技术以高复杂性为代价实现了各自的改进,使得这些技术难以实现和使用。

提出的方法

  在这项工作中提出的方法采用简单和流行的k-均值聚类算法与SMOTE过采样相结合,以重新平衡偏斜数据集。它通过仅在安全区域进行过采样来避免噪声的产生。此外,它的重点放在阶级之间的不平衡和阶级内部的不平衡上,通过扩大少数类地区来解决小分裂问题。该方法简单易行,k-means和SMOTE均可广泛应用。
  该方法与相关方法的独特之处不仅在于其简单性,还在于其分配合成样品的新颖且有效的方法。样本分布以聚类密度为基础,在稀疏的少数民族地区比在密集的地区生成更多的样本,以消除类内不平衡。此外,所提出的技术的突出之处在于,它不分类别标签进行聚类,从而能够检测对过采样安全的区域。最后,通过生成新样本而不是复制它们来抵消过度拟合。
算法
  K-means SMOTE由三个步骤组成:聚类、滤波和过采样。在聚类步骤中,使用k-均值聚类将输入空间聚类成k个组。滤波步骤选择用于过采样的聚类,保留少数类样本比例高的聚类。然后,它分配要生成的合成样本的数量,将更多的样本分配给少数样本稀疏分布的集群。最后,在过采样步骤中,在每个选定的聚类中应用SMOTE,以实现少数和多数实例的目标比率。该算法如图3所示。
  k-means算法是一种流行的迭代方法,用于在可以在欧几里得空间中表示的数据中寻找自然出现的组。它通过反复重复两个指令来工作:首先,将每个观察值分配给k个聚类质心中最近的一个。其次,更新质心的位置,使它们位于指定给它们的观测值之间的中心。当不再重新分配观测值时,算法收敛。保证在有限的迭代次数内收敛到典型的局部最优[34]。对于k-means收敛速度较慢的大型数据集,k-means SMOTE的聚类步骤可以使用更有效的实现,如[43]提出的小批量k-means。k-means的所有超参数也是所提出算法的超参数,最显著的是k,即聚类数。为k找到一个合适的值对于k-means SMOTE的有效性很重要,因为它会影响在过滤步骤中可以找到多少少数簇(如果有的话)。
  在聚类步骤之后,过滤步骤选择要过采样的聚类,并确定每个聚类中要生成多少样本。这一步骤的动机是只对少数群体占主导地位的聚类进行过采样,因为在少数群体区域内应用SMOTE更安全,即更不容易产生噪声。此外,目标是在少数群体中实现样本的平衡分布。因此,过滤步骤将更多生成的样本分配给稀疏的少数簇,而不是密集的簇。
K-means smote:基于K均值和SMOTE的启发式过采样方法改进不平衡学习_第3张图片
  过采样集群的选择基于每个集群的少数和多数实例的比例。默认情况下,选择由至少50 %的少数样本组成的任何聚类进行过采样。这种行为可以通过调整失衡比率阈值(irt)来调整,这是k-means SMOTE的一个超参数,默认为1。聚类c的不平衡率定义为多数计数©+1少数计数©+1。当不平衡比率阈值增加时,集群选择更具选择性,并且需要更高比例的少数实例来选择集群。另一方面,降低阈值放松了选择标准,允许选择具有较高多数比例的聚类。
  为了确定要生成的样本的分布,过滤后的聚类被赋予介于0和1之间的采样权重。高采样权重对应于少数样本的低密度,并产生更多生成的样本。为此,采样权重取决于单个聚类的密度与所有选定聚类的平均密度之比。请注意,当测量集群的密度时,只考虑少数实例之间的距离。采样权重的计算可以通过五个子计算来表示:
1.对于每个过滤的聚类f,计算欧氏距离矩阵,忽略大多数样本。
2.通过将距离矩阵的所有非对角元素相加,然后除以非对角元素的数量,计算每个聚类内的平均距离。
3.获得密度的度量,将每个集群的少数实例数除以其平均少数距离,该距离等于特征数m的幂:在这里插入图片描述
4.反转密度度量以获得稀疏性度量,即在这里插入图片描述
5.每个聚类的采样权重定义为聚类的稀疏因子除以所有聚类的稀疏因子之和。
  因此,所有采样权重之和为1。由于这一特性,聚类的采样权重可以乘以要生成的样本总数,以确定该聚类中要生成的样本数。
  在算法的过采样步骤中,使用SMOTE对每个滤波后的聚类进行过采样。对于每个聚类,过采样程序会给出聚类的所有点,以及生成k采样权重(f) × nk样本的指令,其中n是要生成的样本总数。对于要生成的每个合成样本,SMOTE在聚类中选择一个随机少数观测值a,找到该点的随机相邻少数实例b,并通过随机插值a和b来确定新样本x。从几何角度来看,新点x因此被放置在从a到b的直线上的某个位置。重复该过程,直到达到要生成的样本数量。
  SMOTE的超参数k最近邻,或knn,构成了随机选择点b的少数样本数。k-means SMOTE也使用这个超参数。根据SMOTE的具体实现,当一个聚类的少数样本少于knn + 1时,knn的值可能必须向下调整。一旦对每个滤波后的聚类进行过采样,所有生成的样本都会返回,过采样过程也就完成了。
  所提出的方法不同于相关技术,因为它对整个数据集进行聚类,而不考虑类标签。这种无监督的方法能够发现重叠的类区域,并有助于避免不安全区域的过采样。这与cluster-SMOTE形成对比,在cluster-SMOTE中,只有少数类实例被聚类[7],而在前面提到的过采样和欠采样的组合中,两个类被分别聚类[44]。另一个显著的特征是生成的样本在聚类中分布的独特方法:稀疏的少数聚类比密集的聚类产生更多的样本。另一方面,以前提出的基于聚类的过采样方法是基于聚类大小分布样本的[27]。由于k-means可以找到不同密度的聚类,但通常具有相同的大小[34,48],根据聚类密度分布样本可以被认为是对抗类内不平衡的有效方法。最后,SMOTE的使用避免了过拟合的问题,随机过采样被证明是鼓励过拟合的。
限制案例
  在下文中,表明SMOTE和随机过采样可被视为本工作中提出的更一般方法的极限情况。在k-means SMOTE中,使用k-means对输入空间进行聚类。随后,选择一些聚类,然后使用SMOTE过采样。考虑到聚类数k等于1的情况,所有的观测值被分组到一个聚类中。对于要被选择作为少数聚类的唯一聚类,需要设置不平衡率阈值,以便满足训练数据的不平衡率。例如,在具有100个少数观测值和10,000个多数观测值的数据集中,不平衡比率阈值必须大于或等于10,000+1 100+1 ≈ 99.02。然后使用SMOTE选择并过采样单个聚类;由于聚类包含所有观察值,这相当于简单地用SMOTE对原始数据集进行过采样。可以简单地将其设置为正无穷大,而不是将不平衡比率阈值设置为数据集的精确不平衡比率。
  如果SMOTE没有插值两个不同的点来生成新的样本,而是对同一个点进行随机插值,结果将是原始点的副本。如果具体实现支持这种行为,可以通过将SMOTE的参数“k个最近邻居”设置为零来实现这种行为。因此,随机过采样可以被视为SMOTE的一个具体情况。
K-means smote:基于K均值和SMOTE的启发式过采样方法改进不平衡学习_第4张图片
k-means SMOTE的这一特性对其用户具有很大的实用价值:因为它既包含SMOTE又包含随机过采样,所以对最佳超参数的搜索可以包括这些方法的配置。结果,虽然可以找到更好的参数化,但是所提出的方法将至少与两个过采样器一样好。换句话说,SMOTE和随机过采样包含在k-means SMOTE中,当所提出的方法在其他参数化下不产生任何增益时,可以采用k-means SMOTE。表1总结了可用于再现两种算法行为的参数。

K-means smote:基于K均值和SMOTE的启发式过采样方法改进不平衡学习_第5张图片

你可能感兴趣的:(聚类,算法,机器学习,python)