基于K—means算法的神经网络文本分类算法研究
2014-04-29卢曼丽
卢曼丽
[摘 要] 本文在分析文本分类算法的一般模型和现有技术后,针对传统神经网络算法存在的问题,提出了一种引入K-means算法用于训练RBF神经网络的径向基函数中心,改善误差反向传播(BP)神经网络分类算法收敛速度较慢的缺点。实验结果表明,改进后的RBF网络与BP网络、RBF网络相比,在取得较好分类精度和召回率情况下,具有较高的运算速度和较强的非线性映射能力。
[关键词] 文本分类;RBF神经网络;K-means算法
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2014 . 21. 059
[中图分类号] TP31 [文献标识码] A [文章编号] 1673 - 0194(2014)21- 0080- 03
1 引 言
现代社会信息量呈几何级数增长,为了从海量的数据中找到自己需要的信息,提高检索的效率,信息自动分类成为一个重要的工具。文本分类是信息自动分类的一个重要的研究领域。其目标是在分析文本内容的基础上,将一个或多个适合的类别分配给文本,用以提高文本检索、存储等应用的处理效率[1]。目前在文本自动分类领域,已有大量传统的分类方法应用其中,但各有其不足之处。如,朴素的贝叶斯方法(Navie Bayers)在数据属性个数较多或属性之间关联性较大时,文本分类的效率低;决策树方法对于处理缺失数据时较困难,会出现过度拟合问题,数据属性间的相关性容易被忽略;传统的支持向量机方法对于大规模训练样本难以实施[2];传统的神经网络在文本特征维数过多时会导致神经网络收敛速度较慢[3]。因此,为找到一个执行效率、精确程度和召回率都相对理想的算法,本文提出一个结合K-means算法的神经网络分类文本算法,改进了传统神经网络分类算法不易收敛的缺点,有了更高的运算速度和准确度。
2 文本分类的流程
文本分类指的是在已有的文本分类类别中,根据文本的内容将文本归到相关分类。自动文本分类即将大量自然语言的文本按照训练文本进行自动分门别类,有效地提高信息服务的质量。
一个典型的文本分类系统的流程是:对输入文本进行预处理,然后抽取文本的特征词条,利用分类中间结果训练分类器,最后训练分类器对新的未分类文本分门别类,达到自动分类输出结果的目标。
训练样本的处理包含分词、去停用词。分词的目的是将文本分割成一个个的词语,我们采用中国科学院的汉语词法分词系统“ICTCLAS”做分词处理。分词完成后要进行去停用词处理,即将对文本分类没有贡献的词语剔除,如各种标点符号、数字、字母、“今天,今年”等这样的词语,这步操作的目标是减少文本特征向量的维数,提高运算的效率。实际操作时可以使用已有的成熟的几个停用词表进行遍历比对,运算的时间会有些长。为了提高效率,使用布隆过滤器对文本操作,结果表明运算时间大大缩短。文本在经过分词和去停用词处理后,用向量空间模型来表示,如两个文本D1和D2之间的内容式中,词语W在文本di中出现的次数用N(W,di)来表示;|Dj|是所有的训练文本数;|V|是所有训练文本的总词数;N(WS,di)是所有词在所有训练文本中出现频率之和。互信息技术的结果越大,说明词语W在类别Cj中特征明显,可以作为类别Cj的特征属性留在特征集中。
3 改进的神经网络文本分类方法
RBF神经网络又称径向基函数(Radical Basis Function)神经网络。径向基函数神经网络是一种高效的前馈式神经网络,由J.Moody和C.Darken在20世纪80年代末提出。它具有其他前向网络所不具有的最佳逼近性能和全局最优特性,并且结构简单,训练速度快。同时,它也是一种可以广泛应用于模式识别、自动控制、信号处理等领域的神经网络模型。
RBF 神经网络是典型前馈神经网络,由输入层、隐含层和输出层三层神经元构成,如图1。
第一层为输入层节点,将输入信号传递到隐含层;第二层为隐含层节点,激活函数由径向基函数构成,如Gauss函数、反演S型函数等;第三层为输出层节点,对隐含层输出的单元应用线性函数。其中,第二层隐含层节点采用了径向基函数模拟人类脑皮层中局部调节和交叠的感觉域的生物特性[4]。在相同逼近精度指标下, RBF 神经网络具有唯一最佳逼近的特性,无局部最小问题存在,且可以根据输入问题决定网络结构,运算速度快。RBF神经网络算法的基本思想是用径向基函数作为隐含层的“基”,构成隐含层空间,并通过非线性函数将输入节点的低维空间模型映射为高维空间模型,在高维空间模型中拟合曲线,找到最佳训练数据。也就是说,对于隐含层的输出加权求和,使得数据在高维空间内线性可分,从而极大地提高学习速度并避免局部最小问题。当训练样本的输入数据是Xi时,实际产生的输出是:Y(Xi)=wjφ(Xi,tj)。其中,假设输出层只有一个隐含单元,训练文本为{Xi,Zi}(i=1,2,…,I),Xi=[Xi1,xi2,…,xij]T为训练样本的输入数据,Zi(i=1,2,…,I)为期望的输出数据,实际输出是Yi(i=1,2,…,I),第i个隐含层单元的输出为径向基函数φ(X,tj),径向基函数的中心为tj=[tj1,tj2,…,tjm]T(j=1,2,…,J),第i个隐含层单元与输出层单元的权值是wj(j=1,2,…,J)。
隐含层的径向基函数采用非线性Gauss函数,如下:
φ(r)=exp
采用Gauss函数作为“基函数”任意阶导数均存在,光滑性好,训练样本输入的数据过多也不会增加复杂性。优点是表示形式简单,解析性好,便于对结果进行分析。
输出层对隐含层输出的单元应用线性函数,增加一个偏移量wij,可表示为:
fj(x)=wijφi(x)
式中,j=1,2,…,J,表示输出层神经元个数;H表示隐含层的神经元个数;x表示输入层数据;wij表示隐含层第i个神经元和输出层第j个神经元之间的权值。
径向基函数中心的确定采用K-means算法。K-means算法也称为K-均值或K-平均算法,是基于划分的聚类算法中应用最广泛的一种。算法的主要思想是给定要构建划分的数目k,首先创建一个初始划分,然后采用一种迭代的重定位技术,尝试通过对象在划分间移动来改进划分。划分的结果要让每个聚类子集中的记录最大程度的相似,不同聚类子集的记录差异度尽可能大。K-means算法的基本思想是假设对n个记录进行聚类,其结果要求产生k个聚类子集,算法的基本过程描述如下[5]:
(1)首先随机地选择k个记录,每个记录作为一个聚类的质心,分别代表将分成的k个聚类;
(2)将每个记录分配到最近的质心,形成k个聚类;
(3)k个聚类分别重新计算质心;
(4)重复步骤2、3,直到聚类不再变化为止。
假设给定Ki={ti1,ti2,…,til},质心计算定义为:
mi=tij (m≤l)
个体间差异大小选择欧氏距离(Euclidean距离)作为衡量的依据,它的定义如下:
d(i,j)=i,j∈{1,2,…,n}
这里(Xi1,Xi2,…,Xim)和(Xj1,Xj2,…,Xjm)是两个m维的数据对象。
4 3种算法的效率比较
本文采用的语料库为国家语委提供的现代汉语语料库。文本分类器对其中3大类包含3 410 个文本样本进行分类测试。首先对3 410个文本进行信息编码,得到10 维的文本向量3 410 个,其中训练样本1 128 个,测试样本为其余的2 282个。实验环境为MATLAB 7.0,分别做BP 神经网络算法实现、RBF 神经网络算法实现和分类算法的核心采用K-means 算法的RBF神经网络算法实现。文本分类效率的指标有精度、召回率与响应时间,本文将根据3个实验的结果进行上述3个指标的比较。
精度为ri=li/ni,其中所有测试文本中,属于第i类的文本个数为ni;li是实验输出的分类结果中为第i类且结果正确的文本个数。精度又称为查准率。召回率pi=li /mi,其中mi是实验输出的分类结果中为第i类的文档个数,li是经分类系统输出分类结果为第i类且结果正确的文本个数。召回率又称为查全率。可以看出,查准率和查全率存在相互制约的情况。使用泛指性较强的查询语言可以提高查全率,但相应的,查准率下降;使用专业性较强的查询语言可以提高查准率,但同时查全率下降。
3 410个10维的特征向量分别应用3个算法做了3个实验,分类结果统计如表1所示。