KNN
基本思路:
如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。 KNN是一种memory-based learning,也叫instance-based learning,属于lazy learning。即它没有明显的前期训练过程,而是程序开始运行时,把数据集加载到内存后,不需要进行训练,就可以开始分类了。
KNN的主要优点有:
(1)理论成熟,思想简单,既可以用来做分类又可以做回归
(2)可以用于非线性分类
(3)训练时间复杂度比支持向量机之类的算法低
(4)和朴素贝叶斯之类的算法比,对数据没有假设,准确度高,对异常点不敏感
(5)由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属的类别,因此对于类域的交叉或重叠较多的待分类样本集来说,KNN方法较其他方法更为适合
(6)该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量比较小的类域采用这种算法比较容易产生误分类情况
KNN的主要缺点:
(1)计算量大,尤其是特征数非常多的时候。
(2)样本不平衡的时候,对稀有类别的预测准确率低。
(3)KD树,球树之类的模型建立需要大量的内存。
(4)是慵懒散学习方法,基本上不学习,导致预测时速度比起逻辑回归之类的算法慢。
(5)相比决策树模型,KNN模型的可解释性不强。