翻译:《通过字符串核函数进行文本分类》(一)
第一部分开始
原作者:
Huma Lodhi, Craig Saunders, John Shawa-Taylor, Nello Cristianini, Chris Watkins
Department of Computer Science, Royal Holloway, University of London
Editor: Bernhard Scholkopf
摘要
我们找到了一种基于全新的核函数的文本分类方法。核函数是由特征空间中所有长度为
k
的子序列的内积生成得到的。子序列是指在文本中不一定连续的
在较小的数据集上进行的与标准词语特征空间核函数的对比中,这个核函数显示出了一定的优势。在子序列连续的情况下也与以不同方式降低权值的字符串核函数进行了对比。对于较大的数据集,这篇文章介绍了一种对于大数据表现良好的快速近似计算的方法。
1. 介绍
标准的学习系统(如神经网络或者决策树之流)是在把输入样本转化为 m 维特征空间上的向量后进行处理的。在特征空间中,这些数据对应的点可以通过类似于超平面分割、聚类、插值 (interpolated?) 等方法进行分析。训练得到的模型再对测试数据集中的数据对应的特征空间上的点进行测试,来达到估测的目的。
然而在很多时候,输入的样本数据集并不能轻松地转化 为一个明确的向量,比如 生物序列 (biosequence)、图片 (image)、图 (graph)、以及文本文档。对于这种数据集,找到实用的特征提取模型的难度可能和解决问题本身不相上下。特征提取的过程不仅需要广泛的特定领域知识,同样可能在提取过程中忽略掉一些关键的信息。这些提取后的特征的可靠性是整个学习系统有效的关键。
核方法 (Kernel methods) 是一种有效的提取特征的选择。核方法的基石是一种叫做核函数 (Kernel function) 的函数,例如一个返回两组数据在高维空间中对应的向量的内积的函数。于是学习过程便在这个特征空间中进行,而学习的算法不受样本数据集的限制可以随意更改,因为样本数据仅仅出现在需要计算的内积中。很多学习方法都能通过这种方法实现,如聚类、分类、回归。最著名的基于核函数的系统是支持向量机 (Support Vector Machine),而感知机 (Perceptron)、主成分分析 (Principal Component Analysis)、最近邻 (Nearest Neighbour)以及其它很多算法都有这个特性。核方法的特征空间维数无关性以及灵活性让其成为了很多分类问题尤其是文本分类中中极佳的选择。
在这篇文章中,我们会利用核函数可以对于较为一般的集合定义出一个特征空间上的内积 的特性。对于这样的核函数,并不需要借助Mercer定理,因为它们能直接以内积的形式呈现出来。我们将在文本分类中的字符串匹配问题上检测核函数的有效性。通过定义文本文档之间的内积,谁都可以使用各种通用算法对其进行处理。所以文本也能被分类,聚类,排序等等。本文建立在 Lodhi et al.(2001) 的初步结论之上。
一种标准的文本分类方法是把文档映射到高维特征向量、向量的每一维表示一个特征的存在与否的经典文本表示方法 (?Classical text representation technique)。这样做的话会丢失掉所有的词序的信息,而仅仅保留了词频。在这个过程中通常伴随着无实意单词的删除,从而失去了转折信息。如此形成的稀疏向量再通过各种学习方法的结合进行处理。这种简单的技术在某些监督学习问题上与支持向量机一同工作得很成功。
在这篇文章里我们提出一种完全不同的方法——仅仅把文档考虑为符号组成的序列,并利用好一些具体的核函数。这种方法不需要用到任何特定的领域知识而能捕获到关键的信息,因为文档对其而言仅仅是一个长句子。特征空间是由文档中所有的长为
我们将以最近 Watkins 和 Haussler 对于在序列上的核函数研究进展为基础。该方法最显著的特征是他们通过序列对比的技巧把文档映射到特征向量而不需要实际表示出它们来。一种动态规划的实现让计算序列的核函数非常的高效(线性时间即可)。
我们将通过一些实例来开展我们的实验,实验的数据来自于路透社的数据集。我们将这种方法与 传统文本表示技巧和 n 元语法表示技巧进行了比较,展示了这种方法在分类问题上、远超经典算法的、无与伦比的效果。
对这种方法实验性的分析又同时揭示了这种方法在大型语料库上遇到的实际问题。这显示了这种方法需要找到一种适应与大数据的近似计算策略。此外,在大批量文本处理过程中还有着各种各样的问题,于是找到一种快速计算格拉姆矩阵的方法是非常关键的。
减少计算时间一个关键的步骤就是找到一种方法计算核函数的近似值而不是其实际值。如果格拉姆矩阵的近似值没有显著的偏离用字符串核函数计算出的值,那么我们便可以在大型的基于文本的数据集。这篇文章中我们将展示如何应用字符串核函数生成出的特征的子集来估算格拉姆矩阵的值。我们会用最近证明的对应程度度量方法来检验估算值与格拉姆矩阵真实值的偏差。仅仅需要很少的特征我们便能估计整个矩阵的值,于是计算耗费的时间大幅度下降。为了证明它的效率,我们将在路透社的数据集上进行完整的字符串核函数的实验。
2. 核函数与支持向量机
这一部分我们将回顾支持向量机以及核函数背后的主要的思想。支持向量机是一类结合学习理论的原则和核映射的想法的算法。它们被 Boser 在 1992 年提出。最开始的支持向量机是在线性可分的数据集中找出一个距离所有支持向量间隔最大的分割超平面。它有着很好的统计学性质,从而可以轻松的进行泛化和推广。其中最好的性质是它选取分割超平面是与特征空间维数无关的。所以它可以在很高的维数的空间下进行工作——如核函数映射到的空间,而不会产生过拟合。
在处理分类的问题中,支持向量机们把输入数据映射到特征空间,在其中一个线性学习机可以找到最大间隔的分割超平面。而如果是在核函数定义下的空间,则分割超平面实际上成为了一个非线性的分割曲面。所以说在核函数参与的场合,分割超平面对应于一种把输入集一分为二的方法。
我们现在简洁地介绍一下核方法。一个计算把两个样例映射到高维空间后得到的内积的函数叫做核函数,形式化地, 满足
一个在特征空间中提取较为清晰的特征通常需要很高的计算时间,但核函数解决了这个问题。这个函数的数学基础在 20 世纪的前 10 年就已经被 Mercer 提出来。一个核函数是一个对称函数:
每个元上的数据满足 Kij=K(di,dj) 的 n×n 矩阵叫做 核矩阵 (Kernel matrix) 。一个核矩阵是一个正定 (positive definite) 的对称矩阵。非常有意思的一点是,这个矩阵是核方法用来学习出分类器的主要信息来源。我们可以结合简单的核函数来形成更复杂的核函数。
举个例子,对于一个核函数
K
和一个有
其中 p 是一个正整数,
而高斯核函数定义的特征空间是希尔伯特空间,它的定义是:
一个高斯核函数允许学习算法从线性分割到无穷维分割。
3. 一个作用于文本序列的核函数
在这个部分我们将描述一个作用于两份文本的核函数。比较它们的思想是考虑它们所拥有的子序列。共同拥有的子序列越多,那么它们就越相似。子序列连续的程度越大,那么在计算时占据的权重就越大。
例如,子序列 “car” 在单词 “card” 和单词 “custard” 中都出现了,但它们的权重不同。对每一个这样的子序列都有一个对应的特征空间,相应的坐标决定于子序列出现的频率和相似程度。为了处理不连续的子序列,引入一个衰减因数来描述子序列的存在形式是很有必要的。
例子: 考虑简单的文档中可能出现的单词- cat, car, bat, bar。如果我们只考虑 k=2 的情形,我们便有了一个 8 维的特征空间,每个单词对应的向量为: