KNN中多个K测试准确率相同时,如何选择最优K值?
KNN分类器中相同测试准确率下的K值选择问题
我在KNN分类器中绘制了不同K值(最近邻数量)对应的训练准确率和测试准确率,如图所示:

可以看到,区间[1,5]内的K值拥有相同的测试准确率。在此情况下,推理阶段应选择哪个K值?
已尝试的方法
这种情况下无法应用肘部法则。
补充说明
我使用以下函数划分训练集和测试集:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.3, random_state=4, shuffle=True, stratify=y)
解决方案
优先选择K=5,理由如下:
- 更大的K值让模型决策更平滑,对噪声样本的鲁棒性更强,能降低过拟合风险:从图中能看到K=1时训练准确率最高,明显存在过拟合倾向,K增大后训练准确率下降但测试准确率保持不变,说明更大的K在不牺牲测试性能的前提下,泛化稳定性更好
- 对于K=1到5这种小范围的K值,计算成本的差异可以忽略,完全可以用稍大的K换取更可靠的推理结果
如果对推理速度有极致要求,也可以选K=1,但要注意此时模型对训练集中的噪声异常敏感,泛化风险更高,不推荐作为首选。
内容的提问来源于stack exchange,提问作者Deepak Tatyaji Ahire
相关产品推荐
相关产品推荐

