众所周知,数据挖掘中大约有80%的时间被用来做数据预处理。其中高维类别数据是数据挖掘算法(比如神经网络、线性or逻辑回归、SVM)最具挑战性的数据类型。事实上,在一些像决策树或者一些规则归纳的学习算法中,对类别数据并不需要额外的处理。但是一些回归算法却需要将每一个输入特征都转变成数值类型的特征。而且在现实生活中,我们需要解决的分类或者预测问题的数据集中,充满了类别属性,比如:ZIP码,SIC,IP,区号,域名等等。这就需要有种系统的方法能够将高维类别数据映射到可供回归任务学习的准连续标量属性上。我读了篇SIGKDD上的解决上述问题的文章:A Preprocessing Scheme for High-Cardinality Categorical
Attributes in Classification and Prediction Problems,并总结了文章的方法,特分享如下。
该论文提出了一种将高维类别属性的数据映射到可供回归任务学习的准连续标量属性上。转换的关键之处在于将高维类别属性的每个值映射成基于目标属性的概率估计。
- 在分类场景下,被映射成,给定类别属性值的条件下,目标属性的后验概率。
- 在预测场景下,被映射成,给定类别属性值的条件下,目标的期望值。
该方法听起来是统计相关的,而且可以应用于分类与回归的任务场景中,它还优雅地处理了类别属性是缺失值的情况。这种方法听起来是不是牛掰爆了,大家会担心,这种方法是不是很难呀。在这里我要说的是:很简单~。论文的组织结构如下:第二节讲述了处理类别属性的最通用的方法;第三节讲述了本文要重点分析的方法;第四节描述了该方法在层次化数据上的应用拓展;第五节就总结了文章。接下来,本文也会按照论文的组织结构,给大家分析下这篇论文的。
这里处理类别属性的通用方法有两大类,这两大类按照数据的维度划分。因此可以分为低维类别数据及高维类别数据。
对于低维度的类别数据最普遍的做法就是二值化。我们简单举个例子:
ID | Gender | Color of cloth |
---|---|---|
1 | male | blue |
2 | female | white |
3 | male | red |
上面的表格中存放了我们构造的三个样本数据,其中属性栏,有三个属性,ID,Gender,Color of cloth,其中很明显,Gender与Color of cloth是类别属性。我们将其二值化,从而将二值化后的新表格如下图所示:
ID | male | female | blue | white | red |
---|---|---|---|---|---|
1 | 1 | 0 | 1 | 0 | 0 |
2 | 0 | 1 | 0 | 1 | 0 |
3 | 1 | 0 | 0 | 0 | 1 |
二值化编码的核心思想就是将第i个组成标记为1,其余标记为0。这是一种1到N的映射关系,当面对高维类别数据即N很大的时候,这种方法就不太适用(矩阵很稀疏)。那么为了解决高维类别属性,又该采用何种方法呢?
现如今,处理高维类别数据的最常用方法就是聚类。核心思想就是将1到N的映射问题降维到1到K的映射问题上来( k≪N )。
因此该方法的工作流程就是:
*先采用诸如层次聚类的聚类算法,有效地将N个原始数据聚类成K个簇
*再将K个簇二值化
然后论文就说了下这些通用方法的缺点啊,不足啊,又吹捧了下自己提出的方法。
终于来到正文了,首先说下,接下来提到的方法,就如我们章节标题所写,是个典型的统计学方法,而且历史悠久,应用领域颇多,但是,在类似这些分类预测任务中作为预处理方法的应用,其他文献没有提到过,所以文章还是有一定创新性的。
这一章节将按照目标变量的类型分成三个小节:二值型变量、连续型变量、多类别变量
当目标属性 Y 是二值的, Y∈{0,1} ,将高维类别属性 X 的一个值 Xi 映射成一个标量 Si ,其中 Si 就代表给定 X=Xi 的条件下 Y=1 的概率估计:
在大多数情况下,数据集里会存在缺失数据。根据属性的特性及所采用的具体算法有不同的处理方法:
- 如果 X 是数值型数据,一般通过均值或者基于其他属性的估计来填充空缺值
- 如果 X 是低维类别数据,那么如果采用二值化编码(有m个元素的向量),那么空缺值可以初始化为m个0的向量。
- 有些决策树算法会直接丢弃空缺值,或者用另外一个值来填充。
这篇论文提出了一种方法来补全空缺值:引入一个空缺值 X0 ,然后再给定条件 X=X0 的情况下求:
上面提出的方法,也能应用到目标变量是连续值得情况下。无非就是将概率估计转变成期望估计。现在我们就是要考虑期望了,公式如下:
当目标变量是多类别的,扩展的方法也很直接,就是直接求
一些高维类别数据通常是定义好的层次结构,这样便于做聚合运算。一个典型的案例就是美国的邮政编码系统:一个5位的ZIP码,如果在一个大都市区域,那么该ZIP码的前三位是一样的。所以可以在基于ZIP3或ZIP4的基础上聚合ZIP5。其他的一些例子像手机号码,IP地址都有这样的层次编码结构。
论文提出的方法可以很好的利用层次结构这一特性来讲结构数据进行转换。直接举例说明,以ZIP5编码作为说明。ZIP5级别的公式如下:
这篇论文,基本介绍完了,就是提出了EB(经验贝叶斯)的通用方法,然后应用到了机器学习分类回归任务的预处理中,关于这个方法到底好用不好用,现在我还不清楚,因为在做Kaggle一个赛题,有人分享了这篇文章,我分析了下,准备试试具体效果,如果效果好,我会再来给本文写个附加的评论的~