首先本文只是介绍一下算法的思想以及里面涉及的关键的步骤,至于其所以然,大家可以看些专业的讲义或者视频,在此强烈推荐July的文章,虽然对于一些基础不好的人来说看完july的一篇长文是很费劲的,但是此人有传道精神,解惑品质,日后定成大师。希望以后大家多多支持。
KNN中文名字是K近邻,可以用于分类和回归,下面以分类为例进行讲解:
算法思想:
基于最相似的算法思想,类似协同过滤。比如说已知了训练集的一些数据的标签,要预测测试集的数据的标签,只需要计算预测集的每一个数据和训练集的数据的相似度,然后选取最相似的k个,再然后让着k个数据的类标签共同投票要预测的数据的类标签。
**
几个问题:
**
相似度如何计算?
一般的相似性计算有余弦相似度、皮尔十森系数、欧氏距离。。。。具体采用哪个要看具体的情景。K的选取有何原则?
如果K选的过大,就不能很好的利用训练数据的有效的信息,也就是那些真正相似的数据,极端的例子是K取训练数据的总数;另一方面K选的过小,容易造成模型变得复杂,结果变得十分敏感,且出现错误的概率也增大,比如噪声恰好和目标数据很相似,极端的例子就是K=1,这时候就叫做最近邻。共同投票的原则是什么?
投票多采用多数投票决定,