k最近邻分类;matlab_机器学习 | KNN, K近邻算法

k近邻法 (k-nearest neighbor, k-NN) 是一种基本分类与回归方法。是数据挖掘技术中原理最简单的算法之一,核心功能是解决有监督的分类问题。KNN能够快速高效地解决建立在特殊数据集上的预测分类问题,但其不产生模型,因此算法准确 性并不具备强可推广性。

k近邻法的输入为实例的特征向量,对应与特征空间的点;输出为实例的类别,可以取多类。

k近邻法 三个基本要素: k 值的选择、距离度量及分类决策规则 。

5ada1a31f68fc38fcab745965aa5495e.png


算法过程

1, 计算训练样本和测试样本中每个样本点的距离;

2, 对上面所有的距离值进行排序;

3, 选前k个最小距离的样本;

4, 根据这k个样本的标签进行投票,得到最后的分类类别。

  • 输入:训练数据集

其中, 为实例的特征向量, 为实例的类别,

  • 输出:实例 所属的类

(1)根据给定的距离度量,在训练集 中找出与 最近邻的个点,涵盖这个 点的 的邻域记作)

(2)在 )中根据分类决策规则(如多数决策)决定 的类别

其中, 为指示函数,即 时 为 1,否则 为 0。

距离度量

特征空间中两个实例点的距离是两个实例点相似程度的反映。

在距离类模型,例如KNN中,有多种常见的距离衡量方法。如欧几里得距离、曼哈顿距离、闵科夫斯基距离、切比雪夫距离及余弦距离。其中欧几里得距离为最常见。

  • 欧几里得距离(Euclidean Distance)

在欧几里得空间中,两点之间或多点之间的距离表示又称欧几里得度量。

二维平面

三维空间

推广到在 n维空间 中,有两个点A和B,两点的坐标分别为:

坐标轴上的值 正是我们样本数据上的n个特征。

  • 曼哈顿距离(Manhattan Distance)

曼哈顿距离,正式意义为城市区块距离,也被称作街道距离,该距离在欧几里得空间的固定直角坐标所形成的线段产生的投影的距离总和。其计算方法相当于是欧式距离的1次方表示形式,其基本计算公式如下:

  • 闵科夫斯基距离(Minkowski Distance)
闵氏距离不是一种距离,而是一组距离的定义,是对多个距离度量公式的概括性的表述。无论是欧式距离还是曼哈顿距离,都可视为闵可夫斯基距离的一种特例。

其中p是一个变参数:

  • 当p=1时,就是曼哈顿距离;

  • 当p=2时,就是欧氏距离;

  • 当p→∞时,就是切比雪夫距离。

因此,根据变参数的不同,闵氏距离可以表示某一类 / 种的距离。

dc95d02e80ac0dc9cfccc54076afb742.png

闵氏距离,包括曼哈顿距离、欧氏距离和切比雪夫距离都存在明显的缺点。

e.g. 二维样本(身高[单位:cm],体重[单位:kg]), 现有三个样本:a(180,50)b(190,50)c(180,60)。那么a与b的闵氏距离(无论是曼哈顿距离、欧氏距离或切比雪夫距离)等于a与c的闵氏距离。但实际上身高的10cm并不能和体重的10kg划等号。

闵氏距离的缺点:

(1)将各个分量的量纲(scale),也就是"单位"相同的看待了;(2)未考虑各个分量的分布(期望,方差等)可能是不同的。

  • 切比雪夫距离 (Chebyshev Distance)

国际象棋中,国王可以直行、横行、斜行,所以国王走一步可以移动到相邻8个方格中的任意一个。国王从格子(xa,ya)走到格子(xb,yb)最少需要多少步?这个距离就叫切比雪夫距离。

二维平面

n维空间

  • 余弦距离(Cosine Distance)

余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个样本差异的大小。余弦值越接近1, 说明两个向量夹角越接近0度,表明两个向量越相似。几何中,夹角余弦可用来衡量两个向量方向的差异;机器学习中,借用这一概念来衡量样本向量之间的差异。

k值选择

k 值的选择会对KNN 算法的结果产生重大影响。

  • k 值的减小就意味着整体模型变得复杂,学习器容易受到由于训练数据中的噪声而产生的过分拟合的影响。
  • k 值的的增大就意味着整体的模型变得简单。如果k太大,最近邻分类器可能会将测试样例分类错误,因为k个最近邻中可能包含了距离较远的,并非同类的数据点。

在应用中,k 值一般选取一个较小的数值,通常采用交叉验证来选取最优的k 值。

分类决策规则

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值