KNN算法是一种基本的分类方法, 在文本分类、人脸识别[1]、遥感图象识别等各个领域都有着广泛的应用, 特别是当大规模数据集各类别分布区域重叠较多时, 较其他算法有更优良的表现.如戚玉娇等[2]使用KNN算法对大兴安岭地区森林地上碳储量进行遥感估算; 宋飞扬等[3]提出一种空气质量预测模型, 通过结合KNN算法和LSTM模型, 有效提高模型的预测精度; 薛卫等[4]使用AdaBoost算法对KNN算法分类器进行集成, 用于蛋白质的亚细胞定位预测问题.
虽然KNN算法简便易懂, 但亦存在一些缺点.为克服这些缺点, 目前已经有很多学者提出改进的方法, 如Guo等提出的KNN Model算法[5,6], 使用代表点集合来建立分类模型, 且能自动确定近邻数k的取值; 陈黎飞等[7]提出一种多代表点的学习算法MEC, 该算法基于结构化风险最小化理论[8]来进行理论分析, 且使用聚类算法生成代表点集合, 以此构建分类模型. 刘继宇[9]等提出一种基于普通粗糙集的加权KNN算法, 对现有的粗糙集值约简算法可能存在的问题进行改进. 王邦军等[10]提出基于多协方差和李群结构的李-KNN分类算法, 该算法利用集成的思想, 充分利用各种统计特征的影响, 结合KNN算法和李群结构的优势. 刘发升等[11]提出一种基于变精度粗糙集的加权KNN文本分类算法(VRSW-KNN算法), 通过引入变精度粗糙集结合样本加权的方法来更有效的控制类别的分布区域, 从而有效提高分类的准确率, 然而比较依赖参数的取值.
根据以上研究现状, 本文提出一种基于多代表点的变精度粗糙集加权KNN算法, 并且使用该算法在文本分类领域进行应用. 本算法在VRSW-KNN算法的基础之上, 借鉴该算法的分类过程, 引入多代表点思想生成一系列代表点集合并使用聚类算法构建更加精确的分类模型, 使用结构化风险最小化理论进行理论层面的分析和进一步优化算法, 最终得出一个数目适宜的模型簇集合用于分类. 与VRSW-KNN算法相比, 本文算法不仅能更精确的划分各类别的分布区域, 更好的适应各种情况的数据集, 且能大幅降低分类的时间开销.
本文的组织结构如下: 第1节介绍本文的背景知识与相关工作; 第2节描述本文提出的算法, 并对部分影响因素进行理论层面分析; 第3节给出实验环境, 并对实验结果进行分析; 第4节总结全文, 同时给出未来可能的研究方向.
1 背景知识与相关工作 1.1 基于变精度粗糙集的加权KNN文本分类算法(VRSW-KNN)Ziarko[12]于1993年利用相对错误分类率提出一种变精度粗糙集模型, 该模型利用精度β把原来经典粗糙集的上、下近似区域推广到任意精度水平,
由于数据集的类别分布并不一定均衡, 这导致普通KNN算法在判断类别时会更容易把训练集中占比较多的类别给予测试样本, 使分类精确度降低. 为更好的解决该问题, 该算法根据测试样本的K近邻样本分布特征使用式(1)对K个样本分别计算权重, 再使用式(2)计算测试样本向量与K个训练样本向量的相似度, 最后使用式(3)计算各类别最终权重, 并将该向量分配给最终权重最大的类别[11].
样本权重计算公式[11]:
$Weigh{t_i} = \dfrac{1}{{{{\left(1 + \dfrac{{Num({C_i})}}{{Avgnum({C_l})}}\right)}^{\tfrac{1}{t}}}}},\;t > 0$ | (1) |
式中,
相似度计算公式[11]:
$sim\left( {{d_i},{d_j}} \right) = \frac{{\displaystyle\sum\limits_{n = 1}^m {{W_{in}} \times {W_{jn}}} }}{{\sqrt {\displaystyle\sum\limits_{n = 1}^m {{W_{in}} \times {W_{in}}} } \sqrt {\displaystyle\sum\limits_{n = 1}^m {{W_{jn}} \times {W_{jn}}} } }}$ | (2) |
其中, 特征向量
VRSW-KNN决策规则为[11]:
$p({d_j},{c_i}) = \sum\limits_{j = 1}^k {Weigh{t_i}\times sim({d_i},{d_j})\times y({d_j},{c_i})} $ |
$ y({d}_{j},{c}_{i})=\left\{\begin{array}{l}0,\ {d}_{j}\notin {c}_{i}\\ 1,\ {d}_{j}\in {c}_{i}\end{array}\right.$ | (3) |
VRSW-KNN算法利用变精度粗糙集的上下近似区域来使每个类别都有一个以类别质心作为中心点的近似区域, 以此检测测试样本和各类别分布区域的相对位置. 同时结合文本数量加权的思想, 从而能够在文本分类问题上比普通的KNN算法表现更好. 其计算类
Begin
Step 1. 计算第i类的质心O(Xi).
Step 2. 计算类别中心
Step 3. 计算类别中心
Step 4. 依次将队列中样本移出. 直到
End
算法中
Begin
Step 1. 数据预处理, 将文本数据转变为向量空间内的向量
Step 2. 得出各类别近似半径.
Step 3. 根据式(2)得出测试样本与各类别的相似度, 确定测试样本在数据集整体中的相对位置.
Step 4. 分类阶段应首先得出该样本是否属于某类别的下近似半径范围内, 如成立则为该样本添加这一类别的类别标记, 且算法终止.
Step 5. 如测试样本与一些类别中心的相似度大于类别的上近似半径, 则在这些类别中先使用式(1)计算各类别的权重, 再使用式(3)进行最终决策.
Step 6. 如测试样本与所有类别中心的相似度都小于类别的上近似半径, 则在完整训练集中先使用式(1)计算各类别的权重, 再使用式(3)来进行最终决策.
End
2 多代表点的VRSW-KNN算法多代表点的VRSW-KNN算法, 全称MVRSW-KNN, 简称M-KNN, 该算法利用多代表点思想来让每个类别的代表区域变得更加细致, 从而通过增强分类模型的判断能力, 来解决VRSW-KNN算法在部分情况下表现失常的问题. 本节将先介绍模型簇的形式定义和总体分类模型, 根据结构风险理论[8]来确定算法的优化目标, 再给出算法的总体过程并对此进行分析.
2.1 分类模型M-KNN算法构建分类模型是为能从给定数据集
模型簇
模型簇
$ O({X}_{ij})=\frac{1}{\left|{X}_{ij}\right|}{\displaystyle \sum \limits_{x\in {X}_{ij}}x}$ | (4) |
其中,
分类算法步骤如下:
输入: 模型簇集合
输出: 样本数据
Begin
Step 1. 根据式(2)计算
Step 2. 首先判断
Step 3. 如样本属于某些模型簇的上近似区域, 则在这些模型簇的覆盖区域中选出与
Step 4. 如果样本不属于所有类别的上近似区域, 则在所有模型簇的覆盖区域中选出与
End
2.2 结构风险应用分类算法来对未分类样本进行分类可看作一个k-分类模型[7]的变型, 即:
$ {{M}}_{k}=\left\{\left.{p}_{kl}\right|l={1,2},\cdots ,{\alpha }\; {\rm and}\; {{Class}}_{kl}=k\right\} $ |
和基于该分类模型的二类分类判断, 即:
$ Prediction({x}_{\alpha },{M}_{k})=\left\{\begin{array}{l}k,\; \; {\rm{if}}\; \exists {p}_{kl}\in {M}_{k}\\ 0,\; \; {\rm{otherwise}}\end{array}\right.$ | (5) |
其中,
为提高模型的性能, 基于该文献所提到的k-分类模型来对本节的分类模型基于VC维理论[8]进行结构风险的分析, 可得应用本节算法的分类模型来进行分类亦是一个二类分类过程, 而二类分类模型期望风险的上界[8], 期望风险
$ {R}\left({{M}}_{k}\right)\le {{R}}_{\rm emp}\left({{M}}_{k}\right)+VC\_confidence\left({h}_{k}\right)\text{,} $ |
其中,
$\begin{split} {R_{\rm emp}}({M_k}) = & \frac{1}{n}\left( \sum\limits_{(x,y) \in Tr,y = k} {I(k \ne Prediction({x_\alpha },{M_k}))}\right. \\ &\left.+ \sum\limits_{(x,y) \in Tr,y \ne k} {I(k = Prediction({x_\alpha },{M_k}))}\right) \end{split} $ | (6) |
由此可得, 分类的性能与VC置信度和经验风险都密切相关. 其中VC置信度随
经验风险亦与
综上可得,
模型训练算法:
输入: 训练集
输出: 分类模型
Begin
Step 1. 构造初始分类模型
Step 2. 计算初始模型的
Step 3. 如果
Step 4. 使用K-means聚类算法[15]对
Step 5. 构造新分类模型
Step 6. 使用式(6)计算
End
对于每个类别, 训练算法的过程是从1开始, 逐个递增模型簇数目, 直到经验风险
实验选择KNN、VRSW-KNN, 这两种基于最近邻思想的分类器作为比对的对象. 实验设备为: CPU为CORE i7-8750H2.20 GHz, 16 GB RAM, Windows 10操作系统的计算机.
3.1 实验数据实验数据使用复旦大学原计算机信息与技术系国际数据库中心自然语言处理小组的中文语料库[11]中的2400篇作为数据集, 包括艺术, 历史, 计算机, 环境, 体育, 农业等共8个类别.
其中的1600篇作为训练样本, 800篇作为测试样本. 在正式实验前, 对数据集进行分词, 去停用词, 特征提取后再使用TF-IDF特征词加权方式将所有文本变为特征向量.
3.2 实验结果与分析实验的分类性能评价指标采用Micro-F1指标来衡量分类器的分类精度, 同时对3种算法所使用的训练集和测试集均一致, 且实验结果为多次运行后的平均值, 以避免随机因素导致的影响.
本实验中表1为固定t=1.0, k=10, 粗糙集精度β的取值分别为0.05、0.10、0.15时3种算法的F1值, 由于参数t与耗时无关, 因此表2为仅β取不同值时3种算法的耗时对比.
由表1可知, 当粗糙集精度β从0.05逐渐增加到0.15时, 对于VRSW-KNN算法, 模型簇的下近似区域覆盖范围逐渐变大, 导致在分类时模型簇的F1值逐渐降低. 但对于M-KNN算法, 虽下近似区域覆盖范围发生相同变化, 但由于在训练模型时, 每个类别分布区域由多个模型簇组成, 导致虽粗糙集精度β发生较大变化, 但对各类别的覆盖区域影响较小, 不会导致F1值的大幅降低. 因此可知使用多代表点思想后, 生成的模型簇的表现与VRSW-KNN算法相比不仅准确率略有上升, 且在参数的选取上更加容易接近较优良的结果.
由表2可知, 普通的KNN算法耗时最长, M-KNN算法在耗时上较VRSW-KNN算法大幅缩短. 原因是虽然VRSW-KNN算法使用变精度粗糙集的思想, 然而只简单的设定一个类别只有一个簇, 导致并没有充分的利用该分类模型, 其分类时间随着样本数的增加而急剧增长. 很多数据点仍需要多个类别甚至全部类别的模型簇内样本寻找K近邻, 但M-KNN算法结合多代表点的思想, 将每个类别分布区域划分成多个模型簇, 虽然导致训练分类模型的时长大幅增加, 但在分类阶段则获得各类别更精确的分布区域, 让很多数据点能够在分类算法的前两步就获得较准确的标记, 从而大幅降低数据分类的耗时, 导致在本节算法中, 大部分耗时是训练分类模型的耗时. 因此, 在更大规模的文本数据集中, 本节算法的分类性能会远好于VRSW-KNN算法和普通的KNN算法.
综上所述, 本文算法能更加有效的提升分类的效率和准确率.
4 结束语本文提出一种较高效的基于多代表点思想的变精度粗糙集加权KNN算法, 并使用该算法在文本分类领域中进行实验. 实验结果不仅成功验证期望风险的理论分析的正确性, 更表明该算法的实际可行性, 进一步解决VRSW-KNN算法在刻画各个类别分布情况的不足, 从而在大幅降低时间开销的同时提高分类的准确率. 下一步的工作重点是围绕训练模型的各个影响因素, 探索在保证分类准确率且能降低训练期间时间开销的相关方法.
[1] |
毋雪雁, 王水花, 张煜东. K最近邻算法理论与应用综述. 计算机工程与应用, 2017, 53(21): 1-7. DOI:10.3778/j.issn.1002-8331.1707-0202 |
[2] |
戚玉娇, 李凤日. 基于KNN方法的大兴安岭地区森林地上碳储量遥感估算. 林业科学, 2015, 51(5): 46-55. |
[3] |
宋飞扬, 铁治欣, 黄泽华, 等. 基于KNN-LSTM的PM2.5浓度预测模型
. 计算机系统应用, 2020, 29(7): 193-198. DOI:10.15888/j.cnki.csa.007490 |
[4] |
薛卫, 王雄飞, 赵南, 等. 集成改进KNN算法预测蛋白质亚细胞定位. 生物工程学报, 2017, 33(4): 683-691. |
[5] |
Guo GD, Wang H, Bell D, et al. KNN model-based approach in classification. OTM Confederated International Conferences on the Move to Meaningful Internet Systems. Catania: Springer, 2003. 986–996.
|
[6] |
Guo GD, Wang H, Bell D, et al. Using kNN model for automatic text categorization
. Soft Computing, 2006, 10(5): 423-430. DOI:10.1007/s00500-005-0503-y |
[7] |
陈黎飞, 郭躬德. 最近邻分类的多代表点学习算法. 模式识别与人工智能, 2011, 24(6): 882-888. DOI:10.3969/j.issn.1003-6059.2011.06.023 |
[8] |
Burges CJC. A tutorial on support vector machines for pattern recognition. Data Mining and Knowledge Discovery, 1998, 2(2): 121-167. DOI:10.1023/A:1009715923555 |
[9] |
刘继宇, 王强, 罗朝晖, 等. 基于粗糙集的加权KNN数据分类算法. 计算机科学, 2015, 42(10): 281-286. |
[10] |
王邦军, 李凡长, 张莉, 等. 基于改进协方差特征的李-KNN分类算法. 模式识别与人工智能, 2014, 27(2): 173-178. DOI:10.3969/j.issn.1003-6059.2014.02.012 |
[11] |
刘发升, 董清龙, 李文静. 变精度粗糙集的加权KNN文本分类算法. 计算机工程与设计, 2019, 40(5): 1339-1342, 1364. |
[12] |
Ziarko W. Variable precision rough set model. Journal of Computer and System Sciences, 1993, 46(1): 39-59. DOI:10.1016/0022-0000(93)90048-2 |
[13] |
董清龙. 果蝇优化算法改进及其扩展研究[硕士学位论文]. 赣州: 江西理工大学, 2019.
|
[14] |
Crammer K, Gilad-Bachrach R, Navot A, et al. Margin analysis of the LVQ algorithm. Proceedings of the 15th International Conference on Neural Information Processing Systems. Cambridge: MIT Press, 2002. 479–486.
|
[15] |
Kotsiantis S, Pintelas P. Recent advances in clustering: A brief survey. WSEAS Transactions on Information Science and Applications, 2004, 1(1): 73-81. |