|
|
|
|
移动端

1.8 一个最简单的分类器 -K近邻分类器

《大数据分析:数据挖掘必备算法示例详解》第1章数据分析绪论,本章主要介绍预备知识,即在进行数据分析前,读者需要了解的知识与背景。本节为大家介绍一个最简单的分类器 -K近邻分类器。

作者:张重生来源:机械工业出版社|2017-12-13 17:27

技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战

1.8 一个最简单的分类器 -K近邻分类器

问题描述:已知训练数据集 Tr,需要预测测试数据集 Te中每个实例的标签 (类别)。算法原理:KNearestNeighborsClassifier(K近邻分类器),对于 Te中的每个实例 e,首先在训练数据集 Tr中寻找 (计算)e的 K个最近邻的集合 knset;然后,基于 knset中的实例的标签,采用多数投票的机制,将出现次数最多的标签 (类别)作为 e的标签输出。图 1-2给出了 K-NN分类器算法原理的示例。

图 1-2中,圆点是查询点,三角符号的标签相同,四方块的标签也相同,K>=1。

如果 K=3,则实线圆内的三个点是圆点的最近邻,其中有两个三角符号表示的点,一个四方块表示的点。根据多数投票的原则,此时圆点的标签与三角符号表示的数据点的标签 (类别)相同。

如果 K=5,则虚线圆内的 5个点是圆点的最近邻,其中有两个三角符号表示的点,三个四方块表示的点。根据多数投票的原则,此时圆点的标签与四方块符号表示的数据点的标签 (类别)相同。

可见,K-NN分类器中,不同的 K值,会导致不同的预测结果。

K值的选取是 K-NN分类算法必须面对、解决的问题。例如,scikit-learn[3]中,K的默认值是 5。笔者也见到 K值取 1,3,5,7,9等不同值的情形;有时,K的取值也可以是偶数。为了确定最佳的 K值,一个方法是将整个数据划分为训练数据 Tr、验证数据 Va和测试数据集 Te。对 Va尝试使用不同的 K值,如 K=1,3,5,7,9,然后,对于验证数据集 Va中的每个实例,使用该 K值,利用 K-NN分类算法,预测 Va中的每个实例的标签 (类别)。由于 Va数据集中的每个实例都拥有标签 (类别) 信息,将每个 K值对应的 Va预测结果,与 Va的真实标签进行比较,然后,选择准确率最高的预测结果对应的 K值,作为最终的 K值。最后,使用该 K值对测试数据集中的每个实例进行 K-NN分类预测。

而有关一个查询点的 K近邻的计算,最直接的方法是遍历数据集中的每一个数据,并计算查询点与每个数据点的距离 (如欧几里得距离),然后依据该距离对数据点进行升序排序,并从中返回前 K个数据点,它们就是查询点的 K近邻。此处,读者可以尝试其他方法进行优化。

K-NN分类算法的特点是简单、容易理解、快速,在特定的数据集上能够取得比较好的分类准确度。但是,整体而言,K-NN分类算法的准确度往往不如 SVM、GBDT、RandomForest,以及 C45等分类算法。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码

 

51CTO读书频道活动讨论群:365934973
【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

C#入门经典(第3版)

本书将全面介绍C#编程的所有知识,共分为5篇:第1篇是C#语言:介绍了C#语言的所有内容,从基础知识到面向对象的技术,应有尽有。第2篇是Win...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊