夏未眠秋风起 2012-03-31
传统的机器学习分类研究大多基于如下假设:(1)分类以最大正确率为目标;(2)所有的分类错误会带来相同的错误代价;(3)数据集中的各类样本数目基本均衡,即各类所含的样本数大致相当。
显然,这三个假设在现实应用领域中很多时候是不成立的。很多类别并不均衡,数据集中某个类别的样本数可能会远多于其他类别;不同的分类错误往往会带来显著不同的损失。例如信用卡交易中的欺诈识别。非均衡数据集(Imbalance Data Set)的分类问题,有其特殊的地方,需要对传统方法做进一步的演化和改进。
传统机器学习通常以总体最大分类精度为目标,这一目标必然会导致算法提高多数类样本的分类精度,而忽略样本集中小样本的预测精度。机器学习分类算法面对不均衡数据分类时性能下降的原因很多,例如不恰当的性能评价准则、不恰当的归纳偏置、某类样本数据过少产生的绝对稀少问题、各类样本数据相差悬殊产生的相对稀少问题以及采取分而治之策略算法所独有的数据碎片问题和噪音等。
现有的对策大致包括:选择合适的性能评价准则、采用非贪婪的搜索策略、选择合适的归纳偏置、与专家或知识交互、分割数据以降低数据的不平衡性、通过取样方法改变数据的原始分布、只对一类进行学习、利用代价敏感学习解决不平衡问题等。这些对策均在一定程度上缓解了不均衡数据集的机器学习问题。
归纳一下解决方法,主要有两大方向:一是从数据集的角度,即重构数据集,通过数据预处理的方法解决;另一个是从算法角度,即改进分类算法,主要通过对不同类样本设置不同的权值、改变概率密度、调整分类边界等措施解决。
1、重构数据集
重构数据集,又叫重采样/重抽样/重取样,是解决数据失衡的一个有效途径。该方法主要是通过减轻数据集的不均衡程度来提高少数类的分类性能。其关键在于:如何既能消除大量的噪声信息,显著减少数据不均衡程度,又能保证最小的信息损失,以保留绝大多数对分类学习有用的样本点。重采样方法,包括过取样和欠取样。
过取样通过增加少数类的样本来提高少数类的分类性能,最简单的过取样方法是随机复制少数类样本,缺点是没有给少数类增加任何新的信息,会使分类器学到的决策域变小,从而导致过学习。改进的方法有SMOTE算法(根据一定的规则随机制造生成新的少数类样本点,并将这些新合成的少数类样本点合并到原来的数据集里,生成新的训练集)、Borderline-SMOTE(主要是通过在适当区域内进行插值,以保证新增加的样本是有价值的)。
欠取样是通过减少多数类样本来提高少数类的分类性能,最简单的欠取样方法是随机的去掉某些多数类样本来减少多数类的规模,缺点是容易丢失多数类的一些重要信息。改进的方法有Condensed Nearest Neighbor Rule、Neighborhood Cleaning Rule、One sided Selection、Tomek Link等,这些方法通过一定的规则和技术,找出边界样本和噪音样本,有选择地去掉对分类作用不大,即远离分类边界或者引起数据重叠的多数类样本,并将其从大类中去掉,只留下安全样本和小类样本作为分类器的训练集。
2、改进分类算法
对已有分类算法的改进,主要是通过调节各类样本之间的代价函数、对于不同类的样本设置不同的权值、改变概率密度、调整分类边界等措施使其更有利于少数类的分类。算法层面的操作主要集中在以下四种类型:
·代价敏感学习
代价敏感学习方法是将各类不同的错分代价用到分类决策中,尽可能降低误分类的总体代价而不是尽可能降低误分类的错误率。改变现有分类算法使其变得代价敏感是非常困难的工作,有时效果并不明显,通常的方法是不改变原有的算法,通过增加一个过程使得原来的分类算法变得代价敏感。常用方法:调整样本分布(根据错误分类的代价按一定比例变换训练集中类别的频率,其缺点是改变了样本的分布情况,有时会影响算法的性能)、元代价方法(通过“元学习”过程,根据最小期望代价修改训练样本的类标记,并用修改过的训练集重新学习新的模型)、代价敏感决策(首先在训练集中多次抽样,生成多个模型,在根据模型,得到测试样本属于每个类别的概率,然后计算测试样本的所有错误分类代价,并根据最小代价得到类标记)。
·支持向量机(SVM)
SVM对数据的不均衡本身并不敏感。但可以对SVM进行适当改进以更好的处理不均衡数据分类。简单的分类是将分类边界朝多数类进行适当的偏移,以使更多的少数类样本不会被误判;另一种方法是对正类和负类赋予不同的代价,作为SVM的惩罚因子;还可以对支持向量进行裁剪,通过适当牺牲多数类的分类精度以提高少数类的精度。
·单类学习分类
可以将不均衡数据集基于区别的分类方法改为基于识别的方法进行学习,从而提出了单类学习的分类算法。其主要思想在于只利用感兴趣的目标类学习样本进行学习和训练,即只对少数类样本进行训练,其目标是从测试样本中识别出感兴趣的少数类样本,而不是对少数类和多数类进行区分。对于新的样本,通过比较该样本与目标类的相似程度而识别该样本是否归属于目标类。
·组合方法
组合方法的主要思想在于将多个分类器组合成一个分类器,以提高分类性能。其中提升是组合方法中被广泛使用的技术。通过提升,多个弱分类器可以组合成一个强分类器,能有效改善不均横数据集的分类性能。AdaBoost是提升算法的代表,它给训练集数据的分布迭代加权。在每次迭代中,提升算法增加错误分类的样本权值,减少正确分类的样本权值。这使训练系统在下次迭代中更关注于分类错误的样本。改进的算法还有AdaCost算法、RareBoost算法。
总而言之,不均衡数据集的分类问题是机器学习和模式识别领域中心的研究热点,是对传统分类方法的重大挑战。