先从两者的相同点来看吧,两者都是比较经典的机器学习分类算法,都属于监督学习算法,都对机器学习的算法选择有着重要的理论依据。
区别:
1 KNN对每个样本都要考虑。SVM是要去找一个函数把达到样本可分。
2 朴素的KNN是不会去自助学习特征权重的,SVN的本质就是在找权重。
3 KNN不能处理样本维度太高的东西,SVM处理高纬度数据比较优秀。
怎么选择使用二者呢?
1 选择KNN的场景:
@ 准确度不需要精益求精。
@ 样本不多。
@ 样本不能一次性获取。智能随着时间一个个得到。
2 选择SVM的场景:
@ 需要提高正确率。
@ 样本比较多。
@ 样本固定,并且不会随着时间变化。