《计算机科学》2008年第35卷第3期刊载了一篇题为《一个高效的knn分类算法》的研究论文,该研究由贵州大学计算机科学技术学院的张著英、黄玉龙和王翰虎三位学者共同完成。这篇论文聚焦于数据挖掘领域中的分类算法研究,特别是针对k近邻(k-Nearest Neighbor,简称knn)分类算法在处理大规模高维数据时效率低下的问题,提出了一种创新的解决方案。
在学术背景部分,论文指出,分类是数据挖掘领域中一项基础且重要的技术,其核心任务是从已知的训练样本数据中学习并归纳出一个分类模型,进而利用该模型对未知类别的待分类样本进行预测。在众多分类方法中,knn算法因其原理简单、易于实现且分类准确率较高而得到了广泛应用,尤其是在中文文本自动分类等领域。然而,knn算法的优越性在面对特征属性数量众多、样本容量巨大的数据集时会受到显著挑战。knn算法是一种基于实例的非参数学习方法,它在进行分类决策时,需要计算待分类样本与训练数据集中每一个已知样本之间的距离或相似度。因此,当样本的特征维度很高或训练集规模很大时,这种在线计算的时空开销将急剧增加,导致分类效率大幅下降,算法性能大打折扣。为了克服这一固有缺陷,扩展knn算法的应用边界,研究者们开始寻求在不牺牲或较少牺牲分类准确性的前提下,对数据进行预处理以降维和去噪。其中,属性约简(Attribute Induction)成为一个关键的研究方向。虽然已有一些属性约简的方法被提出,但它们在约简效果和保持分类能力方面往往难以取得令人满意的平衡。论文的作者们正是基于这一背景,创造性地引入了粗糙集理论(Rough Set Theory),旨在从训练样本的众多属性中,系统地删除那些对分类决策不相关或冗余的属性,从而在保持决策表分类能力不变的同时,将数据投射到一个更低维的空间中,为后续的knn分类扫除效率障碍。
该研究的详细工作流程主要分为两个阶段。第一阶段是决策信息表的属性约简,这是整个研究的核心创新所在。研究者首先将原始数据集形式化为一个决策系统,并为其定义了一系列粗糙集的理论框架,包括信息系统、不可区分关系、核属性和可辨识矩阵等核心概念。算法的输入是包含多个条件属性和一个决策属性的训练样本集。其目标是输出一个属性约简后的样本集,该集合减少了条件属性的数量。具体算法包含七个步骤:第一步,遍历所有样本,根据可辨识矩阵的定义,为矩阵中的每个元素赋值。当两个样本的决策属性值不同时,该矩阵元素被赋值为能够区分这两个样本的所有条件属性的集合;如果决策属性值相同,该元素则为空集。第二步,深入分析构建好的可辨识矩阵,找出所有仅包含单个属性的元素。这些单个属性就是核属性(Core Attribute),它们对于分类是不可或缺的,并被收集到一个核属性集合中。第三步,将包含任何核属性的矩阵元素全部置为空集,因为核属性的区分能力已被确认,无需再在其组合中考虑。对于剩下的非空矩阵元素,将其中的属性组合构造成一个逻辑析取表达式。第四步,将所有非空的析取表达式进行逻辑合取运算,形成一个复杂的复合逻辑表达式。第五步,利用逻辑运算的分配律,将该合取表达式转换为析取范式。第六步,将核属性集合中的所有属性进行逻辑合取,形成一个合取表达式。第七步,将核属性的合取表达式与析取范式中的每一个合取子项分别进行合取运算。最终,每一个新的合取子项都代表了一种属性约简的可能结果。研究者可以选择包含核属性以及某些对分类有重要影响的非核属性的约简组合。为了直观说明该算法的有效性,论文以一个包含6个对象、3个条件属性和1个决策属性的小型决策表为例,详细展示了可辨识矩阵的生成和逻辑表达式的推导过程。经过计算,核属性被确定为属性a,而另一组不包含核属性的可区分属性组合是b和c,最终得出两种有效的属性约简方案:{a, b}或{a, c}。这一实例清晰地证明了该算法能够成功地从原始数据中识别并剔除冗余属性。
第二阶段是基于属性约简的改进knn分类算法。这个改进的算法将前述的属性约简作为前置步骤,无缝衔接到传统的knn分类流程中。算法的输入是原始训练数据集、一个待分类的新样本和一个距离函数。算法流程分为六个步骤:首先,对训练集中的所有样本,应用第一阶段设计的属性约简算法,去除冗余属性,得到精简的训练样本集。其次,清理数据,删除经约简后完全相同的重复样本。第三步,至关重要的一步,是根据训练样本的约简结果,同步对待分类的新样本进行属性裁剪,确保训练样本和测试样本处于相同的特征空间。随后,在缩减后的特征空间里,采用欧氏距离公式,计算新样本与训练集中每个样本之间的距离。第四步,将所有计算出的距离进行升序排序,找到与新样本最相似的前k个邻居。第五步,选择这k个最近邻样本构成一个决策集S。第六步,统计这k个邻居各自所属的类别,将出现频次最高的那个类别判定为待分类样本的最终类别。
在实验验证部分,研究者采用了一组覆盖某地区13年(1985年至1998年)的林业统计数据集来检验新算法的实效。该数据集包含了人数、平均工资、投资额、原木产量、等外材产量、小规格树产量等6个条件属性,以总销量作为决策属性。为了便于处理和分类,研究者首先对原始连续数据进行了离散化处理,将其转换为相对于前一年增幅的离散编码表,并将增幅转化为简单的“增加(1)”和“减少(0)”的二值逻辑。实验采用了交叉验证的方法来评估模型性能。对比实验的结果令人瞩目:当设定k值为3,取9年数据为训练集、后5年数据为测试集时,传统knn算法的分类准确率仅为60%;而研究者提出的新算法,在自动进行属性约简后,识别并剔除了“平均工资”和“小规格树产量”两个冗余属性,将特征空间降至“人数、投资额、原木产量、等外材产量”等4个属性,再应用knn分类,其准确率显著提升至80%。在另一组互换训练集和测试集的对比中,传统knn算法的准确率低至40%,而新方法的准确率仍然保持在60%。这些实验结果有力地证明了,在处理特征属性较多或样本容量较大的数据集时,基于粗糙集属性约简的改进knn算法在分类效率与准确率上都显著优于传统的knn算法,特别是在排除噪声和无关属性干扰后,模型的泛化能力得到了提升。
该研究的结论与应用价值清晰明确。研究者认为,knn算法因其无需预先构建模型的惰性学习特性,虽然应用广泛,但在大数据量和多属性情境下存在计算代价高昂的天然缺陷。本研究提出的融合粗糙集理论的改进算法,恰到好处地在分类之前引入了一步智能的属性约简,系统地删除了对分类决策影响力微弱的冗余属性,不仅使knn分类过程变得高效顺畅,扩展了算法的适用场景,同时也确保了分类的准确度不降反升。这项工作的科学价值在于,它成功地将粗糙集这一强大的符号化知识发现工具,以预处理的方式与经典的统计分类方法knn进行了巧妙结合,为处理离散化或可离散化的高维数据分类任务提供了一种新颖、有效且可解释的算法框架。其应用价值体现在,它使得knn算法能够更有效地应用于财务风险预警、医疗辅助诊断、客户关系管理、文本分类等众多实际领域,在这些领域中,数据维度往往很高且充满不相关特征。最后,研究者也清醒地指出了工作的局限和未来方向:现实世界的数据集不可避免地会包含噪声数据和属性缺失的样本,这两种情况都会对knn分类产生严重干扰。因此,如何进一步利用粗糙集理论对这些不完美的数据进行预处理,以增强算法的鲁棒性,将是他们下一步的研究重点。