K_近邻分类算法的研究及实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
间复杂度为 O(nlogn), 所以整个训练阶段的时间 复杂度为 O(mn+nlogn), 进而得到一个结论: 分 类的效率主要取决于数据库的大小。
参考文献
[1]Hand.D 著.张银来自百度文库等译; 数据挖掘原理[M]. 北 2003,4. 京:机械工业出版社, [2]邵峰晶, 于忠清 . 数据挖掘原理与算法 [M]. 北 京:中国水利水电出版社, 2003. [3]韩家炜译.数据挖掘[J].概念与技术, 2000.
一系列的相似的 阶段, 该算法除进行已知数据的简单存储之外不进行其它的操作, 而在学习阶段进行绝大多数的计算。每当遇到新的查询实例时, 实例就从存储器中取出, 并用来分类新的查询实例。 关键词 :k- 近邻; KNN ; 分类; 数据挖掘 1 概述 分类问题是数据挖掘邻域研究的一个基 本的问题, 给定一批具有类标记的训练实例, 分 类器被构造并被用于预测待分类实例的类标 一个实例 X 用一个 m 维的属性向量 记。通常, <x1,x2, · · · ,xm> 来表示, 其中 xi 表示实例 X 的第 i 个属性值。令 C 表示实例的类标记,则实例 X 的类标记可表示为 C(x)。KNN 算法作为一种基 本的基于实例的分类算法,由于它的有效 、 简 单、高鲁棒性而被广泛的应用于数据挖掘领域 来解决分类问题。 2 KNN 算法 KNN 算法假定所有的实例对应于 m 维的 实例间的距离是根据标准 欧氏空间 Rm 中的点, 的欧氏距离来度量的,假设有欧氏空间中的两 个实例 a 和 b,则 a、 b 之间的欧氏距离可以表 示为如下: 。 若对实例 X 进行分类时, KNN 将距离实例 X 最近, 即: 欧氏 距离最小的 k 个实例的最普遍的类标记作为预 测值赋给实例 X, 用公式表示如下: , 其中, y ( · · · k ) 为 X 的 k 个近 i i=1,2 C 为 c 所有取值的集合, δ 函数定义如下: 邻, δ (c,c(yi))=1 (c=c(yi)) 且 δ (c,c(yi))=0 (c ≠c(yi))。 由此可见 KNN 算法是一种典型的消极学习算 法, 在训练阶段仅仅简单存储所有的训练实例, 而所有的计算都延迟到训练阶段进行, 即: 对于 未分类的实例分类时,对每一个实例都构建一 个分类模型, 一次建模一次使用。 KNN 分类算法的实现主要可描述为如下: 2.1 训练阶段: 训练数据的存储, 主要包括 训练数据的离散化, 数据的读取, 数据的存储三 个方面。数据的离散化主要是针对数据的 m 维 属性, 对每个属性要进行单独的离散化, 并将离 散化后的数据写入一个表中,以为下一步的数 据读取做准备;数据的读取和存储主要是将表 中数据读入数组存储以便于程序执行处理。需 要说明的是为了确定分类的效果将离散后的数 据分成了十份, 用以进行十重交叉测试试验。 2.2 分类阶段:在这一阶段主要是将上一 阶段处理完毕的数据进行八重交叉测试试验, a.选取一数据作为待分类实例, 具体步骤如下: 计算此实例与其它实例的欧氏距离。b.比较各 个距离的大小, 选取最近邻的 K 个实例; c.查看 上步中 K 个实例的分类标记, 采用多数表决的 d. 应用十重交叉 方式确定待分类实例的类别; 测试试验方法, 重复以上各步骤。 3 结论与性能分析 K 取 2, 3, 4, 5, 6, 7, 8, 9, 10 分 别 做 了 测 试, 发现 K=8 时, 效果最好。最近距离矩阵选择 (K=8 ) 结论如表 1: 欧氏距离。经过程序执行 另外, K 的取值不同, 分类效果明显不同。
责任编辑 : 胡明月
-45-
科
技
论
坛
K- 近邻分类算法的研究及实现
王建伟
摘
1
张 璞
2
(1、 华北水利水电学院信息工程学院, 河南 郑州 450046
2、 河南职业技术学院, 河南 郑州 450000 )
要 :k- 近邻 (KNN) 算法是一种基本的基于实例的学习分类算法, 被广泛用于数据挖掘中。它分为学习过程和训练过程两个阶段。在学习
当 K 增大时, 分类效果可能会相对较好, 但并 不完全是这样的。例如: 当 K=10 时, KNN 分类 86.6509%。 分类效果不如 K=8 的平均正确率为: 时的分类效果。 经过试验测试后可见, KNN 分类算法的主 要时间消耗在于:对于一个待分类的实例 (m 维 ) , 都要计算它与数据库 (大小为 n ) 中所有数 据的距离, 同时还要对产生的距离进行排序, 其 中计算距离的时间复杂度为 O(mn), 排序的时
表1
1 2 3 4 5 6 7 8 9 10
85 377% 77 83% 82 547% 73 585% 98 585% 1 90 094% 91 038% 89 623% 78 774% 86 745%
14 623% 22 17% 17 453% 26 415% 1 4151% 0 9 9057% 8 9623% 10 377% 21 226% 13 255%