当前位置: 首页 > 工具软件 > k3d > 使用案例 >

K近邻法(KNN)与k-Means的区别

边桐
2023-12-01

K近邻法(KNN)与k-Means也是用户画像中常用的算法了。

      今天小生就来解释下这两者之间的区别。

KNN

K-Means

目的是为了确定一个点的分类

目的是为了将一系列点集分成k类

KNN是分类算法

K-Means是聚类算法

监督学习,分类目标事先已知

非监督学习,将相似数据归到一起从而得到分类,没有外部分类

训练数据集有label,已经是完全正确的数据

训练数据集无label,是杂乱无章的,经过聚类后才变得有点顺序,先无序,后有序

没有明显的前期训练过程,属于memory-based learning

有明显的前期训练过程

K的含义:“k”是用来计算的相邻数据数。来了一个样本x,要给它分类,即求出它的y,就从数据集中,在x附近找离它最近的K个数据点,这K个数据点,类别c占的个数最多,就把x的label设为c

K的含义:“k”是类的数目。K是人工固定好的数字,假设数据集合可以分为K个簇,由于是依靠人工定好,需要一点先验知识

K值确定后每次结果固定

K值确定后每次结果可能不同,从 n个数据对象任意选择 k 个对象作为初始聚类中心,随机性对结果影响较大

时间复杂度:O(n)

时间复杂度:O(n*k*t),t为迭代次数

相似点:都包含这样的过程,给定一个点,在数据集中找离它最近的点。即二者都用到了NN(Nears Neighbor)算法,一般用KD树来实现NN。

总结:KNN是分类算法,它是监督学习,知道了结果去效验结果是否正确。

          K-Means是聚类算法,它是非监督学习,它需要先自己算去一个结果。

 

扩展:

K-Means算法的缺陷和优点是什么?

优点:

1、解决聚类问题的经典算法,简单、快速

2、当处理大数据集时,该算法保持可伸缩性和高效率

3、当簇近似为高斯分布时,它的效果较好

4、时间复杂度近于线性,适合挖掘大规模数据集

缺点:

1、必须事先给出k(一般刚开始难以估计)

2、对初值敏感,即对于不同的初值,可能会导致不同结果

3、不适合非凸形状的簇或者大小差别很大的簇

4、对噪声和孤立点敏感

 

KNN算法的缺陷和优点是什么?

优点

1、KNN可以处理分类问题,同时天然可以处理多分类问题,比如鸢尾花的分类

2、简单,易懂,同时也很强大,对于手写数字的识别,鸢尾花这一类问题来说,准确率很高

3、KNN还可以处理回归问题,也就是预测

缺点

1、效率低,因为每一次分类或者回归,都要把训练数据和测试数据都算一遍,如果数据量很大的话,需要的算力会很惊人,但是在机器学习中,大数据处理又是很常见的一件事

2、对训练数据依赖度特别大,虽然所有机器学习的算法对数据的依赖度很高,但是KNN尤其严重,因为如果我们的训练数据集中,有一两个数据是错误的,刚刚好又在我们需要分类的数值的旁边,这样就会直接导致预测的数据的不准确,对训练数据的容错性太差

 类似资料: