KNN是一种基本的机器学习算法,所谓K近邻,就是k个最近的邻居。即每个样本都可以用和它最接近的k个邻近位置的样本来代替。
打个比方:通过KNN算法可以知道我是个怎样的人。具体做法就是分析我身边的朋友的属性,然后得出我的属性。
从上图中我们可以看到,一共三种数据类型,一类是蓝色的正方形,一类是红色的三角形,那个绿色的圆形是我们待分类的数据。 KNN算法就是判断绿色圆圈的数据类型。
如果K=3,那么离绿色点最近的有2个红色三角形和1个蓝色的正方形,这3个点投票,于是绿色的这个待分类点属于红色的三角形 ;
如果K=5,那么离绿色点最近的有2个红色三角形和3个蓝色的正方形,这5个点投票,于是绿色的这个待分类点属于蓝色的正方形 。
KNN要素
k值的选择:
k越小,即使用较小的领域中的样本进行预测,训练误差会减小,但模型会很复杂,以至于过拟合。
k越大,即使用交大的领域中的样本进行预测,训练误差会增大,模型会变得简单,容易导致欠拟合。
ps:可以从K=1开始,逐步增加,用检验数据来分析正确率,从而选择最优K。这个结果要均衡考虑正确率与计算量,比如K=3时,正确率为90%,而K=10时,正确率为91%,则需要考虑计算量换来的1%提升是否合算了。
距离的度量:
使用欧几里得距离计算点之间的距离,公司如下:
(通过以上公式求得点之间的距离)