knn

knn算法是一种基本分类和回归的算法,其实它的思想在之前很多方法中都出现过了,这里详细介绍一下它在分类问题中的应用。

knn应用于分类问题,原理就是根据与输入数据最接近的k个样本,去判断输入数据所属的分类(少数服从多数),比如在输入数据点方圆一个单位内,有三个样本属于a,两个样本属于b,就认为输入数据也是属于a。

最核心的思想就是这样,说到底就是通过局部的情况去分析输入数据的分类,这种局部分析其实和loess也比较类似(越接近影响越大)。然后我们要考虑的问题就是k是怎么决定的,k为多少模型性能最好等等。

首先是k的选择,k太小(比如只考虑一个样本),输入数据都是通过最接近的样本进行分析,这样就很可能导致过拟合(噪声影响过大,因为如果碰上噪声直接就分类错误了)。如果k过大,与输入数据无关的样本也被考虑进去,对分类的准确率也有所影响。从另一个角度来说,k的大小,也是variance和bias之间的trade-off,k太小,bias就大,k太大,variance就大,机器学习大都是这样,只有选择最合适的k,才能得到最优的平衡。