挖掘原理|k近邻法原理
k近邻法原理
k近邻法(k-nearest neighbor)用于分类时,给定一个训练数据集,对于新输入的实例,计算得出与该实例距离最近的k个样本,由k个样本中的大多数决定出该实例属于哪一类。
假设数据集
其中为样本的特征向量,为类别,判断实例x所属的类别y。
我们知道相同类别的样本点总是有着相似的特征值,表现在多维空间中就是有着相近的距离,因此我们可以通过判断与该实例距离相近的样本点大多是哪一类别,就可以将该实例划分到哪一类别中。
在该过程中,涉及到两个关键问题,一个是距离,一个是选取几个样本点进行判断,也即k值得选取。
(1)关于距离:
我们在初高中时学习过平面直角坐标系或者空间直角坐标系时,学习过两点间距离公式,各坐标差值的平方和,在求其算数平方根就是两点间距离,事实上关于距离得度量有着更广泛的定义。
闵可夫斯基距离:
其中x,y表示空间中的两个点,表示某一轴上的值。
当p=1时,
就是曼哈顿距离,指各个坐标距离之和。
当p=2时,
就是我们熟悉的欧氏距离,在二维和三维空间中就是两点间距离公式。
当p→∞时,
就是切比雪夫距离,指各个坐标距离的最大值,这是因为
(2)关于k值的选择
k过大过小都会影响预测的准确率。
当k过小时,预测结果可能会受到噪声的影响,如图:红色和蓝色点分别代表两个不同颜色类别,绿色是待预测的点,如果选择k=1,则会将其划分为红色类别,而事实上属于蓝色类别,由此导致分类错误。
当k过大时,样本点数量较少的类别可能会被忽略掉,如图:红色和蓝色点分别代表两个不同颜色类别,绿色是待预测的点,如果选择k=20,由于红色类别只有8个点,无论绿点在哪里都会将其划分为蓝色类别,而事实上属于红色类别,会导致分类错误。
在选择k值时,可以适当选择几个k值进行预测,然后计算准确率并进行比较,然后选出最合适的k值。
手算示例
我们从鸢尾花数据集中的三个类别各选取十个样本点为示例,选取欧式距离作为度量,k=5,进行手算演示。
数据集:
Setal_length |
Setal_width |
Petal_length |
Petal_width |
class y |
|
0 |
5.1 |
3.5 |
1.4 |
0.2 |
0 |
1 |
4.9 |
3.0 |
1.4 |
0.2 |
0 |
2 |
4.7 |
3.2 |
1.3 |
0.2 |
0 |
3 |
4.6 |
3.1 |
1.5 |
0.2 |
0 |
4 |
5.0 |
3.6 |
1.4 |
0.2 |
0 |
5 |
5.4 |
3.9 |
1.7 |
0.4 |
0 |
6 |
4.6 |
3.4 |
1.4 |
0.3 |
0 |
7 |
5.0 |
3.4 |
1.5 |
0.2 |
0 |
8 |
4.4 |
2.9 |
1.4 |
0.2 |
0 |
9 |
4.9 |
3.1 |
1.5 |
0.1 |
0 |
10 |
5.9 |
3.2 |
4.8 |
1.8 |
1 |
11 |
6.1 |
2.8 |
4.0 |
1.3 |
1 |
12 |
6.3 |
2.5 |
4.9 |
1.5 |
1 |
12 |
6.1 |
2.8 |
4.7 |
1.2 |
1 |
14 |
6.4 |
2.9 |
4.3 |
1.3 |
1 |
15 |
6.6 |
3.0 |
4.4 |
1.4 |
1 |
16 |
6.8 |
2.8 |
4.8 |
1.4 |
1 |
17 |
6.7 |
3.0 |
5.0 |
1.7 |
1 |
18 |
6.0 |
2.9 |
4.5 |
1.5 |
1 |
19 |
5.7 |
2.6 |
3.5 |
1.0 |
1 |
20 |
6.9 |
3.2 |
5.7 |
2.3 |
2 |
21 |
5.6 |
2.8 |
4.9 |
2.0 |
2 |
22 |
7.7 |
2.8 |
6.7 |
2.0 |
2 |
23 |
6.3 |
2.7 |
4.9 |
1.8 |
2 |
24 |
6.7 |
3.3 |
5.7 |
2.1 |
2 |
25 |
7.2 |
3.2 |
6.0 |
1.8 |
2 |
26 |
6.2 |
2.8 |
4.8 |
1.8 |
2 |
27 |
6.1 |
3.0 |
4.9 |
1.8 |
2 |
28 |
6.4 |
2.8 |
5.6 |
2.1 |
2 |
29 |
7.2 |
3.0 |
5.8 |
1.6 |
2 |
待预测实例x:
Setal_length |
Setal_width |
Petal_length |
Petal_width |
class |
5.5 |
4.2 |
1.4 |
0.2 |
距离公式:
其中,下标i表示第i个样本点,上标(j)表示第i个样本点的第j个特征
k值选择:k=5
依次将各样本带入公式计算距离:
同理可得:
计算与各点距离 | 排序后 | ||||
D1 | 0.806 | 0 | D6 | 0.480 | 0 |
D2 | 1.342 | 0 | D5 | 0.781 | 0 |
D3 | 1.285 | 0 | D1 | 0.806 | 0 |
D4 | 1.425 | 0 | D8 | 0.949 | 0 |
D5 | 0.781 | 0 | D7 | 1.208 | 0 |
D6 | 0.480 | 0 | D10 | 1.261 | 0 |
D7 | 1.208 | 0 | D3 | 1.285 | 0 |
D8 | 0.949 | 0 | D2 | 1.342 | 0 |
D9 | 1.703 | 0 | D4 | 1.425 | 0 |
D10 | 1.261 | 0 | D9 | 1.703 | 0 |
D11 | 3.909 | 1 | D20 | 2.766 | 1 |
D12 | 3.208 | 1 | D12 | 3.208 | 1 |
D13 | 4.180 | 1 | D15 | 3.481 | 1 |
D14 | 3.770 | 1 | D16 | 3.618 | 1 |
D15 | 3.481 | 1 | D19 | 3.639 | 1 |
D16 | 3.618 | 1 | D14 | 3.770 | 1 |
D17 | 4.080 | 1 | D11 | 3.909 | 1 |
D18 | 4.253 | 1 | D27 | 4.071 | 2 |
D19 | 3.639 | 1 | D28 | 4.076 | 2 |
D20 | 2.766 | 1 | D17 | 4.080 | 1 |
D21 | 5.085 | 2 | D22 | 4.179 | 2 |
D22 | 4.179 | 2 | D13 | 4.180 | 1 |
D23 | 6.175 | 2 | D24 | 4.207 | 2 |
D24 | 4.207 | 2 | D18 | 4.253 | 1 |
D25 | 4.935 | 2 | D29 | 4.901 | 2 |
D26 | 5.255 | 2 | D25 | 4.935 | 2 |
D27 | 4.071 | 2 | D30 | 5.065 | 2 |
D28 | 4.076 | 2 | D21 | 5.085 | 2 |
D29 | 4.901 | 2 | D26 | 5.255 | 2 |
D30 | 5.065 | 2 | D23 | 6.175 | 2 |
由此可以判断,待测实例类别y=0
挖掘原理|k近邻法原理相关推荐
- K近邻法(KNN)原理小结
K近邻法(k-nearst neighbors,KNN)是一种很基本的机器学习方法了,在我们平常的生活中也会不自主的应用.比如,我们判断一个人的人品,只需要观察他来往最密切的几个人的人品好坏就可以得出 ...
- 《统计学习方法》读书笔记——K近邻法(原理+代码实现)
传送门 <统计学习方法>读书笔记--机器学习常用评价指标 <统计学习方法>读书笔记--感知机(原理+代码实现) <统计学习方法>读书笔记--K近邻法(原理+代码实现 ...
- 统计学习方法笔记(一)-k近邻算法原理及python实现
k近邻法 k近邻算法 算法原理 距离度量 距离度量python实现 k近邻算法实现 案例地址 k近邻算法 kkk近邻法(kkk-NN)是一种基本分类和回归方法. 算法原理 输入:训练集 T={(x1, ...
- 【MATLAB】Parzen窗与K近邻算法原理与代码详解
文章目录 1.非参数估计原理 2.Parzen窗 2.1.算法原理 2.2.Matlab实现与参数探究 3.K近邻 3.1.算法原理 3.2.Matlab实现与参数探究 1.非参数估计原理 \qqua ...
- scikit-learn K近邻法类库使用小结
1. scikit-learn 中KNN相关的类库概述 在scikit-learn 中,与近邻法这一大类相关的类库都在sklearn.neighbors包之中.KNN分类树的类是KNeighborsC ...
- 机器学习-监督学习之分类算法:K近邻法 (K-Nearest Neighbor,KNN)
目录 KNN概述 举个例子: K值选取 距离计算 曼哈顿距离,切比雪夫距离关系(相互转化) k-近邻(KNN)算法步骤 相关代码实现 简单实例:判断电影类别 创建数据集 数据可视化 分类测试 运行结果 ...
- R语言机器学习(1)-R的近邻分析—K近邻法
转载请注明出处:https://blog.csdn.net/xiezhiliang22 对应书籍:<R数据挖掘>薛薇 中国人民大学出版社 1 前言 下面这几个部分主要讲述如何使用R语言来实 ...
- 统计学习笔记(3)——k近邻法与kd树
在使用k近邻法进行分类时,对新的实例,根据其k个最近邻的训练实例的类别,通过多数表决的方式进行预测.由于k近邻模型的特征空间一般是n维实数向量,所以距离的计算通常采用的是欧式距离.关键的是k值的选取, ...
- 复现经典:《统计学习方法》第 3 章 k 近邻法
本文是李航老师的<统计学习方法>[1]一书的代码复现. 作者:黄海广[2] 备注:代码都可以在github[3]中下载. 我将陆续将代码发布在公众号"机器学习初学者", ...
最新文章
- No.6 PHP的基本配置与优化
- 使用reuseport和recvmmsg优化UDP服务器
- 图解VMWARE内存机制
- 使用c#訪问Access数据库时,提示找不到可安装的 ISAM
- html根据文档定位,html文档中的location对象属性理解及常见的用法
- 病症:arm启动后应用程序界面显示…
- Java笔记-RabbitMQ中生产者端confirm模式(异步模式)
- html选择按钮select,Html选择使用select来改变一个按钮的链接使用Javascript
- 用css和jquery实现标签页效果(一)
- 集成学习——LightGBM原理理解
- Trello如何访问用户的剪贴板?
- openssl、gmssl的简单介绍
- html制作清明上河图
- AVI文件在opencore框架下的解析
- 最新资料!工银亚洲开户见证业务受理网点(广东地区,除了深圳)
- Windows NT引导过程源代码分析(一)
- 政策解读|2023法定节假日安排发布了,HR需要跟进的三件事
- 开源物联网终端设备操作系统
- CVPR 2021公布最佳论文候选!华人占据半壁江山,何恺明、陶大程、沈春华等人上榜...
- 李白藏头诗鸿蒙,20条藏头诗文案:我想要的很简单 爱只增不减 你待我一如初见...