KNN的优点
1、KNN
算法是一个非常简单的算法,理论成熟,思想简单,既可以用来做分类也可以用来做回归
2、天然解决多分类问题,也可用于回归问题
3、和朴素贝叶斯之类的算法比,对数据没有假设,准确度高,对异常点不敏感
4、KNN
在训练过程中实质上不需要做任何事情,所以训练本身不产生任何时间上的消耗
5、由于KNN
方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN
方法较其他方法更为适合
KNN的缺点
1、计算量大,效率低。即使优化算法,效率也不高。
2、高度数据相关,样本不平衡的时候,对稀有类别的预测准确率低
3、相比决策树模型,KNN模型可解释性不强
4、维度灾难:随着维度的增加,“看似相近”的两个点之间的距离越来越大,而knn非常依赖距离
维数 | 点到点 | 距离 |
---|---|---|
1维 | 0到1的距离 | 1 |
2维 | (0,0)到(1,1)的距离 | 1.414 |
3维 | (0,0,0)到(1,1,1)的距离 | 1.73 |
64维 | (0,0,…0)到(1,1,…1) | 8 |
10000维 | (0,0,…0)到(1,1,…1) | 100 |