k近邻和k-means,听名称很相似,很容易张冠李戴。其实它们的全名为K近邻分类算法(k-Neighbour,KNN)和K均值聚类算法(K-means clustering algorithm)。

  1. k紧邻是一中基本的分类与回归算法,是监督学习算法,没有明显的训练学习过程。
  2. k-means是聚类算法,是无监督学习算法,有训练步骤。

k近邻

k近邻(k-neareast neighbor)的直观理解就是:给定一个训练数据集 T = { ( x i , y i ) , ⋯ , ( x n , y n ) } T = \left \{ \left ( x_{i}, y_{i} \right ), \cdots, \left ( x_{n}, y_{n} \right ) \right \} T={(xi​,yi​),⋯,(xn​,yn​)},对于新的实例 x x x,在训练集中找到与之相邻的k个实例 N k ( x ) N_{k}\left( x\right) Nk​(x),这 k k k个实例的多数属于哪一类,就把这个实例分到哪一类中。可知, k k k值的选择距离度量分类决策规则 作为k近邻的三要素。
k近邻的分类决策通常会使用多数表决法。新实例 x x x的k个最近训练实例点多数属于哪一类别,新实例 x x x就属于哪一类别。

k值的选择

k k k值是k近邻算法中的超参数。如果 k k k值过小,容易发生过拟合,输入实例对与其邻近的实例点很敏感;如果 k k k值过大,容易发生欠拟合,与输入实例距离较远的实例点也会参与到预测中,干扰预测。一般情况下,会使用交叉验证的方法取合适的 k k k值。

距离度量

我们定义特征空间中的两个实例点的距离反映两个实例点的相似程度。对于k紧邻算法,它的的特征空间一般是 n n n维实向量空间 R n \mathbb{R}^{n} Rn。假设特征空间为 χ \chi χ,为 n n n维实向量空间 R n \mathbb{R}^{n} Rn,其中有两点为 x i , x j x_{i}, x_{j} xi​,xj​,分别表示为 x i = ( x i 1 , ⋯ , x i n ) T , x j = ( x j 1 , ⋯ , x j n ) T x_{i} = \left ( x_{i}^{1}, \cdots, x_{i}^{n} \right )^{T}, x_{j} = \left ( x_{j}^{1}, \cdots, x_{j}^{n} \right )^{T} xi​=(xi1​,⋯,xin​)T,xj​=(xj1​,⋯,xjn​)T。

L p L_{p} Lp​定义为:
L p ( x i , x j ) = ( ∑ l = 1 n ∣ x i l − x j l ∣ p ) 1 p ≥ 1 L_{p}\left ( x_{i} , x_{j} \right ) = \left ( \sum_{l=1}^{n} \left | x_{i}^{l} - x_{j}^{l} \right |^{p} \right )^{\frac{1}{p}} \qquad \geq 1 Lp​(xi​,xj​)=(l=1∑n​∣∣​xil​−xjl​∣∣​p)p1​≥1
当 p = 2 p=2 p=2时,就是我们常见的欧式距离(Euclidean distance):
L 2 ( x i , x j ) = ∑ l = 1 n ∣ x i l − x j l ∣ 2 L_{2}\left ( x_{i} , x_{j} \right ) = \sqrt{ \sum_{l=1}^{n} \left | x_{i}^{l} - x_{j}^{l} \right |^{2} } L2​(xi​,xj​)=l=1∑n​∣∣​xil​−xjl​∣∣​2 ​
当 p = 1 p=1 p=1时,被称为马哈顿距离(Manhattan distance):
L 1 ( x i , x j ) = ∑ l = 1 n ∣ x i l − x j l ∣ L_{1}\left ( x_{i} , x_{j} \right ) = \sum_{l=1}^{n} \left | x_{i}^{l} - x_{j}^{l} \right | L1​(xi​,xj​)=l=1∑n​∣∣​xil​−xjl​∣∣​
当 p = ∞ p=\infty p=∞时,为各个坐标距离的最大值
L ∞ ( x i , x j ) = m a x ∣ x i l − x j l ∣ L_{\infty}\left ( x_{i} , x_{j} \right ) = max \left | x_{i}^{l} - x_{j}^{l} \right | L∞​(xi​,xj​)=max∣∣​xil​−xjl​∣∣​

k-means

k-means是一种聚类算法,是无监督学习算法。假设有训练数据 T = { x i , ⋯ , x n } T = \left \{ x_{i}, \cdots,x_{n} \right \} T={xi​,⋯,xn​},它将训练数据分为k组,每一组是一个簇,随机选择k个实例作为初始的聚类中心点,对于每一个实例,计算它和这k个聚类中心的距离,然后把它分配到与它距离最近的聚类中心所在的簇中去;计算每个簇中所有实例的平均值,作为新的聚类中心点,以此往复,直至聚类中心点不再发生明显变化。

k-means算法最后得到k个簇,记为 C = { C 1 , ⋯ , C k } C = \left\{ C_{1}, \cdots, C_{k}\right\} C={C1​,⋯,Ck​},每个簇内的实例相似度高,不同簇中的实例相似度低。计算实例点和聚类中心点的距离一般可以使用欧氏距离。

k近邻和k-means相关推荐

  1. 【资源分享】今日学习打卡--k近邻法 (k Nearest Neighbor Method)

    他来了他来了,他带着礼物走来了. 今天继续学习打卡 今天给大家分享的是k近邻法,是监督学习中的最基本的分类问题模型. 博主从自己看的几个比较好的视频中,分享了一些自己认为比较好的视频.希望能在大家和博 ...

  2. K近邻(K Nearest Neighbor-KNN)原理讲解及实现

    算法原理 K最近邻(k-Nearest Neighbor)算法是比较简单的机器学习算法.它采用测量不同特征值之间的距离方法进行分类.它的思想很简单:如果一个样本在特征空间中的k个最近邻(最相似)的样本 ...

  3. 机器学习算法系列(二十二)-近似k近邻算法-Annoy(Approximate Nearest Neighbor / ANN)

    阅读本文需要的背景知识点:k近邻算法.一丢丢编程知识 一.引言   前面一节我们学习了机器学习算法系列(二十一)-k近邻算法(k-Nearest Neighbor / kNN Algorithm),其 ...

  4. Python,OpenCV中的K近邻(knn K-Nearest Neighbor)及改进版的K近邻

    Python,OpenCV中的K近邻(knn K-Nearest Neighbor)及改进版的K近邻 1. 效果图 2. 源码 参考 这篇博客将介绍将K-最近邻 (KNN K-Nearest Neig ...

  5. 机器学习 —— 基础整理(三)生成式模型的非参数方法: Parzen窗估计、k近邻估计;k近邻分类器...

    本文简述了以下内容: (一)生成式模型的非参数方法 (二)Parzen窗估计 (三)k近邻估计 (四)k近邻分类器(k-nearest neighbor,kNN) (一)非参数方法(Non-param ...

  6. 统计学习方法笔记(一)-k近邻算法原理及python实现

    k近邻法 k近邻算法 算法原理 距离度量 距离度量python实现 k近邻算法实现 案例地址 k近邻算法 kkk近邻法(kkk-NN)是一种基本分类和回归方法. 算法原理 输入:训练集 T={(x1, ...

  7. Python机器学习基础教程-第2章-监督学习之K近邻

    前言 本系列教程基本就是摘抄<Python机器学习基础教程>中的例子内容. 为了便于跟踪和学习,本系列教程在Github上提供了jupyter notebook 版本: Github仓库: ...

  8. 机器学习理论《统计学习方法》学习笔记:第三章 k近邻法

    机器学习理论<统计学习方法>学习笔记:第三章 k近邻法 3 k近邻法 3.1 K近邻算法 3.2 K近邻模型 3.2.1 模型 3.2.2 距离度量 3.2.3 K值的选择 3.2.4 分 ...

  9. 机器学习算法——K近邻法

    K近邻算法 k近邻算法(k-nearest neighbor,k-NN)是一种基本分类与回归方法.k-近邻算法的输入为实例的特征向量,对应于特征空间的点:输出为实例的类别,可以取多类.k-近邻算法假设 ...

  10. 《统计学习方法》读书笔记——K近邻法(原理+代码实现)

    传送门 <统计学习方法>读书笔记--机器学习常用评价指标 <统计学习方法>读书笔记--感知机(原理+代码实现) <统计学习方法>读书笔记--K近邻法(原理+代码实现 ...

最新文章

  1. Leetcode 107. 二叉树的层次遍历 II 解题思路及C++实现
  2. B题 锅炉水冷壁温度曲线 2021年第一届长三角高校数学建模竞赛
  3. GO语言实现文件的断点续传
  4. [C++] 用Xcode来写C++程序[3] Constants
  5. 【飞秋】记一次“偷盗”别人的CSS和Js
  6. EXPLAIN字段详解
  7. 阿里云云计算 48 云安全中心
  8. 温度冲击试验箱军标GJB 150与GB 2423区别
  9. 用计算机给plc编程,plc编程用什么电脑?plc编程用什么配置电脑
  10. cramer定理_克莱姆(cramer)法则及定理简介.ppt
  11. 做个vbs整人小程序
  12. Vue - 引入集成 Tinymce 富文本编辑器(详细步骤及运行Demo),在 Vue.js 项目中使用富文本插件详细教程,附带超级详细的注释说明
  13. Java并发机制的底层实现原理(Java并发编程的艺术整理)
  14. 系统封装_Ghost光盘制作
  15. 非对称加密之公钥加密与私钥加密的应用场景
  16. 【网盘项目日志】Seafile 源码部署和安装命令
  17. HC32L136/HC32L176开发之硬件IIC驱动AT24C64
  18. C语言单分支if语句形式,2 单分支if语句
  19. 国防科技大学计算机学院微电子,国防科大微电子所在声表面波高频特性研究方面取得重要进展...
  20. gb和gib的区别_GB和GIB的区别

热门文章

  1. python怎么搜索文献_python论文参考文献有哪些
  2. 让苹果iOS的手机iPhone和电脑Safari浏览器支持油猴脚本
  3. 友元函数实现复数加减法
  4. 这款台灯,不仅能护眼,还能点读和互动
  5. 适合公司用的电子邮箱哪家好?企业邮箱最全功能介绍~
  6. 36艺教育完成3000万元Pre-A轮融资,星火资本投资
  7. scholarscope不显示影响因子_如何根据IF快速筛选文章,ScholarScope来帮你
  8. 【推荐】献给在这个世界上摇摆不定的朋友们
  9. 如何避免装修风格跑偏
  10. 不要过分相信基础函数, 因为那也是人写的------警惕负负得正的现有逻辑之坑