高性能文本分类算法:DragPushing

  文本分类算法可以大致总结如下:

  高精度算法:SVM、Boosting。这类算法的分类精度很高,但训练与分类时间很长,往往难以满足大规模问题的需要;

  高速度算法:Centroid、Rocchio、Winnow等。这类算法的训练与分类时间与问题的规模成线性关系,但分类精度往往不太理想。

  DragPushing策略的目标是得到一种既好又快的文本分类算法:精度可以与SVM相当;而运行时间与Centroid保持相当。其基本思想是:对被错误分类的训练样本,拉近与正确类代表之间的距离;推远与错误类代表之间的距离。类代表,可以是中心向量、类中样本及概率中心(即类中属性的概率)。示意图如下:

 

                                                  

对于样本d,其正确分类应是A。但是使用分类规则时,却将d划分为B类(相似性度量上是Sim(Aoriginal,d) < Sim(Boriginal,d),用距离表示则是d离A远,离B近)。此时,将对A类代表进行Drag操作,对B类代表进行Push操作,实现样本d偏离B类代表靠近A类代表的效果。一次迭代过程中,对于所有错分类的样本,都执行相应的Drag/Push操作,多次迭代后的即可达到一个很好的效果。

  将DragPushing策略应用到Centroid算法中,过程如下:对于一个文档(document),其中每一个出现的词权重采用tf-idf计算方式,并进行归一化处理

          

其中D是所有文档的数目,nt是所有包含单词t的文档数目。tf表示词t在当前文档中出现的次数。得到文档的特征向量后,对于每一个类别Ci,计算其summed centroid和normalized centroid

            

                               

               

其中||z||2表示2范数(2-norm of z)。对于给定的一个测试文档d,其与类别C之间的相似性可以使用内积的计算形式度量

                

文档d的最终类别可以通过如下方式判定

                 

在一次迭代过程中,若A类文档d被错分类为B类,则执行下面的DragPushing操作:

             

其中o表示的是迭代次数,表示特征空间中的特征下标。dragweight/pushweight则是调节Drag/Push程度的参数。[z]+等同于max{0,z}(这一操作的原因是采用非负的值实验效果更好)。

  整体的算法框架如下:

  

DragPushing策略还可以融入到朴素贝叶斯分类和K近邻分类算法中,此处不再赘述。

  拉推策略的基本思想是利用训练集误差去修正分类器模型。换句话说,拉推策略主要考虑降低训练集误差,也就是经验误差。但是,即使是很低的训练集误差也不一定就能保证分类器的测试集误差,又称推广误差。这是推拉策略的不足之处。

 

参考文献: A Novel Refinement Approach for Text Categorization, Songbo Tan, Xueqi Cheng, Moustafa M. Ghanem, Bin Wang, Hongbo Xu

转载于:https://www.cnblogs.com/xiaoxuch-zhl/archive/2012/08/10/2631611.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值