kNN算法综述

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
欧式距离:
deuc uc
h
c
h
h
c
c
马 氏 距 离 :马 氏 距 离 能 够 缓 解 由 于 属 性 的 线 性 组 合 带 来 的 距 离 失 真 ,Σ是 数 据 的 协 方差矩阵。
曼哈顿距离:
dmah uc
cΣ h
c
dman uc
c
h
切比雪夫距离:
dche uc max t c t 闵氏距离:r 取值为 2 时:曼哈顿距离;r 取值为 1 时:欧式距离。
经验规则:k 一般低于训练样本数的平方根。
5 kNN 算法综述
2.7.2 类别的判定方式 投 票 法 没 有 考 虑 近 邻 的 距 离 的 远 近 ,距 离 更 近 的 近 邻 也 许 更 应 该 决 定 最 终 的 分 类 ,
所以加权投票法更恰当一些。
2.7.3 距离度量方式的选择 高 维 度 对 距 离 衡 量 的 影 响 :众 所 周 知 当 变 量 数 越 多 ,欧 式 距 离 的 区 分 能 力 就 越 差 。 变量值域对距离的影响:值域越大的变量常常会在距离计算中占据主导作用,因
此应先对变量进行标准化。
2.7.4 训练样本的参考原则 学者们对于训练样本的选择进行研究,以达到减少计算的目的,这些算法大致可
分为两类。第一类,减少训练集的大小。KNN 算法存储的样本数据,这些样本数据包含 了 大 量 冗 余 数 据 ,这 些 冗 余 的 数 据 增 了 存 储 的 开 销 和 计 算 代 价 。缩 小 训 练 样 本 的 方 法 有 : 在原有的样本中删掉一部分与分类相关不大的样本样本,将剩下的样本作为新的训练 样 本 ;或 在 原 来 的 训 练 样 本 集 中 选 取 一 些 代 表 样 本 作 为 新 的 训 练 样 本 ;或 通 过 聚 类 ,将 聚 类所产生的中心点作为新的训练样本。
关键字:kNN 算法;k 近邻算法;机器学习;文本分类
Abstract: KNN algorithm, a famous statistical method of pattern recognition, which is one of the best algorithms for dealing with text categorization, is playing an important role in machine learning classification algorithm, and it is one of the simplest algorithms in machine learning. This paper mainly summaries the kNN algorithm and its related literature, and detailed introduces its main idea, principle, implementation steps and specific implementation code, as well as analyzes the advantages and disadvantages of the algorithm and its various improvement schemes. This paper also introduces the development course of kNN algorithm, its important published paper. In the final, this paper introduces the application field of kNN algorithm, and especially in text categorization.
2.7 常见问题
2.7.1 k 值的设定 k 值选择过小,得到的近邻数过少,会降低分类精度,同时也会放大噪声数据的
干扰;而如果 k 值选择过大,并且待分类样本属于训练集中包含数据数较少的类,那 么在选择 k 个近邻的时候,实际上并不相似的数据亦被包含进来,造成噪声增加而导 致分类效果的降低。
如何选取恰当的 K 值也成为 KNN 的研究热点。k 值通常是采用交叉检验来确定(以 k=1 为基准)。
没有万能的算法,只有在一定使用环境中最优的算法。
2.2 算法指导思想
kNN 算法的指导思想是“近朱者赤,近墨者黑”,由你的邻居来推断出你的类别。 先计算待分类样本与已知类别的训练样本之间的距离,找到距离与待分类样本数 据最近的 k 个邻居;再根据这些邻居所属的类别来判断待分类样本数据的类别。
2.3 算法计算步骤
Keywords: KNN algorithm, K neighbor algorithm, Machine learning, Text classification
1 引言
分类是数据挖掘中的核心和基础技术,在经营、决策、管理、科学研究等多个领 域都有着广泛的应用。目前主要的分类技术包括决策树、贝叶斯分类、kNN 分类、人 工神经网络等。在这些方法中,kNN 分类是一种简单、有效、非参数的方法,现已经 广泛应用于文本分类、模式识别、图像及空间分类等领域。本文从各个角度对 kNN 算 法进行较为全面的总结。
在 训 练 集 中 ,有 些 样 本 可 能 是 更 值 得 依 赖 的 。可 以 给 不 同 的 样 本 施 加 不 同 的 权 重 , 加强依赖样本的权重,降低不可信赖样本的影响。
2.7.5 性能问题 kNN 是一种懒惰算法,而懒惰的后果:构造模型很简单,但在对测试样本分类地
的系统开销大,因为要扫描全部训练样本并计算距离。 已经有一些方法提高计算的效率,例如压缩训练样本量等。
打斗次数
3 2 1 101 99 98
接吻次数
104 100 81 10 5 2
电影类型
Romance Romance Romance Action Action Action
简 单 说 一 下 这 个 数 据 的 意 思 :这 里 用 打 斗 次 数 和 接 吻 次 数 来 界 定 电 影 类 型 ,如 上 , 接吻多的是 Romance 类型的,而打斗多的是动作电影。还有一部名字未知(这里名字 未知是为了防止能从名字中猜出电影类型),打斗次数为 18 次,接吻次数为 90 次的电 影,它到底属于哪种类型的电影呢?
2.9 kNN 算法的 Java 实现代码
public class KNN {
6 kNN 算法综述
/** * 设置优先级队列的比较函数,距离越大,优先级越高 */ private Comparator<KNNNode> comparator =new Comparator<KNNNode>(){
public int compare(KNNNode o1, KNNNode o2) { if (o1.getDistance() >= o2.getDistance()) return -1; else return 1;
2.8 算法流程
h. 准备数据,对数据进行预处理 . 选用合适的数据结构存储训练数据和测试元组
3. 设定参数,如 k 4. 维护一个大小为 k 的的按距离由大到小的优先级队列,用于存储最近邻训练元组。
随机从训练元组中选取 k 个元组作为初始的最近邻元组,分别计算测试元组到这 k 个元组的距离,将训练元组标号和距离存入优先级队列 5. 遍历训练元组集,计算当前训练元组与测试元组的距离,将所得距离 L 与优先级 队列中的最大距离 Lmax 6. 进行比较。若 L> Lmax,则舍弃该元组,遍历下一个元组。若 L < Lmax,删除 优先级队列中最大距离的元 7. 组,将当前训练元组存入优先级队列。 8. 遍历完毕,计算优先级队列中 k 个元组的多数类,并将其作为测试元组的类别。 9. 测试元组集测试完毕后计算误差率,继续设定不同的 k 值重新进行训练,最后取 误差率最小的 k 值。
2 kNN 算法简介
2 kNN 算法综述
2.1 算法引入
KNN 算法是机器学习里面比较简单的一个分类算法,整体思想比较简单:计算一 个点 A 与其他所有点之间的距离,取出与该点最近的 k 个点,然后统计这 k 个点里面 所属分类比例最大的,则点 A 属于该分类。下面用一个例子来说明一下:
电影名称
California Man He’s Not Really into Dudes Beautiful Woman Kevin Longblade Robo Slayer 3000 Amped II
h
平均距离:
dmin uc
c uh
h
dave uc
h
h
h
c
弦距离:tt ∙ tt 表示 2-范数,即tt tt dchord uc
h
h
hc tt tt ttctt
测地距离:
dgeo uc arccos h
th uc
Mean character difference:
h
dmcd uc
t ct
h
Index of association:
1. 算距离:给定测试对象,计算它与训练集中的每个对象的距离; 2. 找邻居:圈定距离最近的 k 个训练对象,作为测试对象的近邻; 3. 做分类:根据这 k 个近邻归属的主要类别,来对测试对象分类。
2.4 相似性度量
3 kNN 算法综述
用空间内两个点的距离来度量。距离越大,表示两个点越不相似。距离的选择有 很多[13],通常用比较简单的欧式距离。
2.6 优缺点
2.6.1 1. 2. 3.
优点 简单,易于理解,易于实现,无需估计参数,无需训练; 适合对稀有事件进行分类; 特别适合于多分类问题(multi-modal,对象具有多个类别标签), kNN 比 SVM 的表现要好。
2.6.2 1. 2.
3.
缺点 懒惰算法,对测试样本分类时的计算量大,内存开销大,评分慢; 当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有 可能导致当输入一个新样本时,该样本的 K 个邻居中大容量类的样本占多数; 可解释性较差,无法给出决策树那样的规则。
本文的结构如下: 在第二部分,主要介绍 kNN 算法的基本原理、思想、实现步骤、Java 实现代码以 及发展历程和经典论文。 第三部分是对 kNN 算法的诸多不足之处进行的讨论,并给出一些改进的方案。 第四部分介绍的是 kNN 算法如何处理多标签数据。 第五部分介绍了 kNN 算法目前的主要应用领域,并着重说明了其在文本分类中的 出色表现。
1 kNN 算法综述
kNN 算法综述
王宇航 13120476 (北京交通大学计算机与信息技术学院,北京,100044)
摘要:kNN 算法是著名的模式识别统计学方法,是最好的文本分类算法 之一,在机器学习分类算法中占有相当大的地位,是最简单的机器学习算法 之一。本文对 kNN 算法及相关文献做一份总结,详细介绍 kNN 算法的思想、 原理、实现步骤以及具体实现代码,并分析了算法的优缺点及其各种改进方 案。本文还介绍了 kNN 算法的发展历程、重要的发表的论文。本文在最后介 绍了 kNN 算法的应用领域,并重点说明其在文本分类中的实现。
Canberra metric:
h
c
h
h
hc
4 kNN 算法综述
Czekanowski coefficient:
t ct c
h
h Coefficient of divergence:
Fra Baidu bibliotek
h min { uc
h
c
h
h
h
c c
2.5 类别的判定
投票决定:少数服从多数,近邻中哪个类别的点最多就分为该类。 加 权 投 票 法 :根 据 距 离 的 远 近 ,对 近 邻 的 投 票 进 行 加 权 ,距 离 越 近 则 权 重 越 大( 权 重为距离平方的倒数)
KNN 算法要做的,就是先用打斗次数和接吻次数作为电影的坐标,然后计算其他 六部电影与未知电影之间的距离,取得前 K 个距离最近的电影,然后统计这 k 个距离 最近的电影里,属于哪种类型的电影最多,比如 Action 最多,则说明未知的这部电影 属于动作片类型。
在实际使用中,有几个问题是值得注意的:K 值的选取,选多大合适呢?计算两 者间距离,用哪种距离会更好呢?计算量太大怎么办?假设样本中,类型分布非常不 均,比如 Action 的电影有 200 部,但是 Romance 的电影只有 20 部,这样计算起来, 即使不是 Action 的电影,也会因为 Action 的样本太多,导致 k 个最近邻居里有不少 Action 的电影,这样该怎么办呢?
相关文档
最新文档