k近邻算法三要素: K值的选取、距离度量、分类决策
K值的选取:当k值为1,称为最近邻算法,这时候将训练数据中与测试数据最近的点的类别作为测试数据的类别的分类结果。
K值对算法影响很大。
K比较小,说明用较小的邻域中训练数据进行预测新数据,学习的近似误差减小。
优点:只有与输入实例较近的训练实例才会对预测起作用。
缺点:学习的估计误差会增大,预测结果对近邻的实例点很敏感。比如,邻域的训练实例是噪声时,则预测会发生错误。K值减小,说明模型整体变复杂,容易发生过拟合。
K比较大,意味着用较大的邻域中的训练数据进行预测
优点:减少学习的估计误差
缺点:学习的近似误差变大。因为较远的训练实例也会对预测结果起作用,。使得预测可能发生错误,K增大,意味着模型整体变得越简单。当K=N,无论输入实例是什么,都将它预测为训练实例中最多的类(此时预测结果是一个常量),这时候模型过于简单,完全忽略了训练实例中大量有用的信息。
实际应用中K一般选取较小的值。通常采用交叉验证来选取最优的K值,就是比较不同K值时的交叉验证平均误差率,选择误差率最小的那个k值,比如选择k=1,2,3,...,对于每一个K=i做若干次交叉验证,计算出平均误差率,然后比较,选出最小的那个。
距离度量:一般会对数据做归一化处理,K近邻一般距离度量是欧式距离(适用于连续变量),也可以是Lp距离
分类决策:多数表决(经验风险最小化),也可基于距离的远进进行加权投票,距离越近的样本点权重越大。