KNN算法,K聚类的优缺点

  • KNN

适用数据范围:数值型和标称型 (目标变量的结果只在有限目标集中取值,如真与假,标称型目标变量主要用于分类)

优点

① 简单,易于理解,易于实现,无需参数估计,无需训练;
② 对异常值不敏感(个别噪音数据对结果的影响不是很大);
③ 适合对稀有事件进行分类;
④ 适合于多分类问题(multi-modal,对象具有多个类别标签),KNN要比SVM表现要好;

缺点

① 对测试样本分类时的计算量大,内存开销大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本;
② 可解释性差,无法告诉你哪个变量更重要,无法给出决策树那样的规则;
③ K值的选择:最大的缺点是当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。该算法只计算“最近的”邻居样本,某一类的样本数量很大,那么或者这类样本并不接近目标样本,或者这类样本很靠近目标样本。无论怎样,数量并不能影响运行结果。可以采用权值的方法(和该样本距离小的邻居权值大)来改进;
④ KNN是一种消极学习方法、懒惰算法。

算法步骤:
1、计算已知类别数据集中的点与当前点之间的距离;
2、按照距离递增次序排序;
3、选取与当前点距离最小的k个点;
4、确定k个点所在类别的出现频率;
(K用于选择最近邻的数目,K的选择非常敏感。K值越小意味着模型复杂度越高,从而容易产生过拟合;K值越大则 意味着整体的模型变得简单,学习的近似误差会增大,在实际的应用中,一般采用一个比较小的K值,用交叉验证的 方法,选取一个最优的K值。)
5、返回前k个点出现频率最高的类别作为当前点的预测分类

参考:https://blog.csdn.net/wangmumu321/article/details/78576916
https://blog.csdn.net/lht_okk/article/details/70233553

  • K均值聚类

适用数据范围:数值型

优点:容易实现
缺点:
① 简单,易于理解,易于实现,无需参数估计,无需训练;
② 可能收敛到局部最小值(2分 K均值);
③ 在大规模数据集上收敛较慢;
④ 对异常值敏感;

算法步骤:
1) 选取数据空间中的K个对象作为初始中心,每个对象代表一个聚类中心(可随机可指定);

2) 对于样本中的数据对象,根据它们与这些聚类中心的欧氏距离,按距离最近的准则将它们分到距离它们最近的聚类中心(最相似)所对应的类;

3) 更新聚类中心:将每个类别中所有对象所对应的均值作为该类别的聚类中心,计算目标函数的值;

4) 判断聚类中心和目标函数的值是否发生改变,若不变,则输出结果,若改变,则返回2)。

确定K的个数:

1、按需选择(规定的K)
2、观察法
3、手肘法(将K作为自变量,每个K都会得到所有样本到K簇的距离和,将这个和作为因变量,画图,拟合,找到极值点)

参考:https://www.cnblogs.com/kevincong/p/7868640.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章