KNN 算法|学习笔记

简介: 快速学习 KNN 算法

开发者学堂课程【高校精品课-华东师范大学-人工智能基础:KNN 算法】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/920/detail/15580


KNN 算法

 

内容介绍:

一、KNN 简介

二、KNN 三个核心要素

 

一、KNN 简介

这一讲我们将一起学习一个经典的机器学习算法K近邻算法,俗话说,物以类聚,人以群分。这就是 K近邻分类算法的思想。

分类是数据分析中非常重要的方法,是对已有数据进行学习。得到一个分类器,并构造出一个分类模型。即通常所说的分类器 Classifier。KNN 分类算法全称是 K-Nearest- Neighbors Classification 又叫 K 近邻算法,是一个概念及其简单而效果又很优秀的分类算法。

它提出的很早,1967年由Cover T 和 Hart P 提出。

核心思想是如果一个样本在特征空间中的 K 个最相似。指的是特征空间中最邻近的样本中的大多数属于某一个类别,这个样本也属于这个类别。例如这个图中

 image.png

通过计算距离。与这只猫最近的 K 等于三,三个样本是左边,即根据已经获取的一些动物的特征,并且已经知道这些动物的类型,识别一只新动物,判断它是哪类动物。我们刚才做的首先是找到与这个物体最接近的K等于3,找到了两只猫和一条狗。由于找到的结果中大多数是猫,就把这个新动物划分为猫类。KNN 没有专门的学习过程。是基于数据实力的一种学习方法。

 

二、KNN 三个核心要素

(1)K 值

K 取值太小。好处是近似误差会减小只有特征与这个新动物很相似的才对预测新动物的类别起作用但同时预测结果对近邻的样本点非常敏感,仅有非常近的预测样本决定结果,使模型变得复杂,容易过拟合。

如果 K 值太大。学习的近似误差会增大,导致分类模糊,急切拟合。下面举例看 K 值对预测结果的影响

image.png

K 等于3。跟刚才一样,分类结果是猫:狗等于2 : 1。所以动物属于猫,当 K 等于5,表决结果是猫:狗:熊猫等于2 : 3 : 1。所以判断目标动物为狗结果发生了变化,那么K值到底怎么选取呢?涉及到距离的度量问题。

(2)距离的度量

距离决定了哪些是邻居,哪些不是。度量距离有很多方法,不同的距离所确定的近邻点不同。

image.png

平面上比较常用的是欧式距离,此外还有曼哈顿距离、余弦距离、球面距离等。

例如,下面有四个点为训练的样本点。

 image.png

我们对于新的点 new(3,3)进行预测。其中 cat 1、cat2、dog1、dog2、dog3这五个点为训练数据,new是测试数据。根据二维平面上的欧式距离公式。是可以得到距离如图所示。

 image.png

(3)分类决策规则

分类结果的确定往往采用多数表决。既由输入实例的 K 邻近训练实例中的多数是哪个类别决定输入实例的类别。

相关文章
|
6天前
|
机器学习/深度学习 数据采集 存储
【机器学习】K-近邻算法(KNN)全面解析
K-近邻算法(K-Nearest Neighbors, KNN)是一种基于实例的学习方法,属于监督学习范畴。它的工作原理简单直观:给定一个训练数据集,对新的输入实例,KNN算法通过计算其与训练集中每个实例的距离,找出距离最近的K个邻居,然后根据这些邻居的类别(对于分类任务)或值(对于回归任务)来预测新实例的类别或值。KNN因其简单高效和无需训练过程的特点,在众多领域中得到广泛应用,如模式识别、推荐系统、图像分类等。
167 0
|
13天前
|
算法 C++
c++算法学习笔记 (21) STL
c++算法学习笔记 (21) STL
|
13天前
|
算法 C++
c++算法学习笔记 (20) 哈希表
c++算法学习笔记 (20) 哈希表
|
13天前
|
算法 C++
c++算法学习笔记 (19) 堆
c++算法学习笔记 (19) 堆
|
13天前
|
人工智能 算法 C++
c++算法学习笔记 (18) 约数
c++算法学习笔记 (18) 约数
|
13天前
|
人工智能 算法 C++
c++算法学习笔记 (17) 质数
c++算法学习笔记 (17) 质数
|
13天前
|
算法 C++
c++算法学习笔记 (16) 并查集
c++算法学习笔记 (16) 并查集
|
13天前
|
算法 C++
c++算法学习笔记 (15) 单调栈与单调队列
c++算法学习笔记 (15) 单调栈与单调队列
|
13天前
|
算法 C++
c++算法学习笔记 (14) 栈与队列
c++算法学习笔记 (14) 栈与队列
|
13天前
|
算法 C++
c++算法学习笔记 (13) 链表
c++算法学习笔记 (13) 链表