嵌入式人工智能应用-第四章 KNN 算法介绍 3

KNN 算法介绍

  • 1 KNN介绍
    • 1.1 基本概念
      • 1.1.1 主要步骤
      • 1.1.2. 距离计算:
      • 1.1.3 进行预测:
  • 2 分类介绍
    • 2.1 KNN 算法的K 值说明
    • 2.2 K值的选取
    • 2.3 距离计算
    • 2.4 KNN算法特点
    • 2.5 KNN 算法流程
  • 3 实验验证
    • 3.1 实验代码-具体代码可以从附件下载
    • 3.2 演示效果

1 KNN介绍

K邻近(K-Nearest Neighbors,KNN)是一种广泛使用的监督学习算法,主要用于分类和回归任务。以下是K邻近算法的详细介绍:

1.1 基本概念

K邻近算法的基本思想是:对于一个待分类的样本,找到训练集中距离它最近的K个样本,通过这K个样本的类别(对于分类任务)或数值(对于回归任务)来进行预测。

1.1.1 主要步骤

选择参数K:K是一个正整数,表示在进行分类时考虑的邻居数量。K的选择会影响模型的性能。

1.1.2. 距离计算:

对于待分类的样本,计算它与训练集中每个样本的距离。常用的距离度量包括:

  • 欧氏距离
  • 曼哈顿距离
  • 闵可夫斯基距离
  • 汉明距离(用于分类)

寻找最近邻:根据计算的距离,选出距离待分类样本最近的K个样本。

1.1.3 进行预测:

分类:K个邻居中出现频率最高的类别作为预测结果。
回归:K个邻居的目标值的平均值作为预测结果。

特点
简单易懂:KNN算法的原理简单直观,容易实现。
无模型训练:KNN没有显式的训练过程,所有训练样本都保留在内存中,直接用于预测。
适应性强:可以处理多类分类和多维特征数据。

2 分类介绍

分类算法的本质:给定一个对象 X,将该对象划分到之前预定义好的某个类别 Yi 中,怎么将 X 划分到 Yi 的方法就是分类算法。

分类算法用在什么地方?在我们的身边有很多这种需求,例如人群分类,在一个学校,对男生、女生分类,对不同的专业进行分类等;再比如新闻分类,比如军事新闻、科技新闻等进行分类;再比如垃圾邮件过滤、网页信息过滤等。

2.1 KNN 算法的K 值说明

KNN 的全称是 K Nearest Neighbors,意思是 K 个最近的邻居,从这个名字我们就能看出一些 KNN算法的蛛丝马迹了。K 个最近邻居,毫无疑问,K 的取值肯定是至关重要的。那么最近的邻居又是怎么回事呢?

其实啊,KNN 的原理就是当预测一个新的值 x 的时候,根据它距离最近的 K 个点是什么类别来判断 x 属于哪个类别。图中绿色的点就是我们要预测的那个点,假设 K=3。那么 KNN 算法就会找到与它距离最近的三个点(这里用圆圈把它圈起来了),看看哪种类别多
一些,比如这个例子中是蓝色三角形多一些,新来的绿色点就归类到蓝三角了。
嵌入式人工智能应用-第四章 KNN 算法介绍 3_第1张图片

当 K=5 的时候,判定就变得不一样了。这次变成红圆多一些,所以新来的绿点被归类成红圆。从这个例子中,我们就能看得出 K 的取值是很重要的。了解原理后,我们就来说一说细节的东西,主要有两个,K 值的选取和点距离的计算。

嵌入式人工智能应用-第四章 KNN 算法介绍 3_第2张图片

2.2 K值的选取

K 的取值十分重要,那么该如何确定 K 取多少值好呢?答案是通过交叉验证(将样本数据按照一定比例,拆分出训练用的数据和验证用的数据,比如按 6:4 的比例拆分出训练数据和验证数据),从选取一个较小的 K 值开始,不断增加 K 的值,然后计算验证集合的方差,最终找到一个比较合适的 K 值。

嵌入式人工智能应用-第四章 KNN 算法介绍 3_第3张图片

当你增大 k 的时候,一般错误率会先降低,因为有周围更多的样本可以借鉴了,分类效果会变好。但当 K 值更大的时候,错误率会更高。这也很好理解,比如说你一共就 35 个样本,当你 K 增大到 30 的时候,KNN 基本上就没意义了,错误率自然也就上去了。所以选择 K 点的时候可以选择一个较大的临界 K 点,当它继续增大或减小的时候,错误率都会上升。

2.3 距离计算

要度量空间中点距离的话,有好几种度量方式,比如常见的曼哈顿距离计算,欧式距离计算等等。不过通常 KNN 算法中使用的是欧式距离,这里只是简单说一下,拿二维平面为例,二维空间两个点的欧式距离计算公式如下:

在这里插入图片描述

拓展到多维空间,则公式变成这

你可能感兴趣的:(嵌入式人工智能应用,人工智能,算法,linux,knn)