我有一个包含 40k 记录和 2 个分类类别的大型数据库。在这个大数据库中,76% 的记录属于第一类。
我使用了带有分层抽样的 70-30 分割分区,并且 K-nn 在 k = 20 时给出了最佳精度。
1) k 的值是否太大?
2) 即使我使用分层抽样,k 的这个大值是否可能是由于数据库中 2 个类的不成比例造成的?
我有一个包含 40k 记录和 2 个分类类别的大型数据库。在这个大数据库中,76% 的记录属于第一类。
我使用了带有分层抽样的 70-30 分割分区,并且 K-nn 在 k = 20 时给出了最佳精度。
1) k 的值是否太大?
2) 即使我使用分层抽样,k 的这个大值是否可能是由于数据库中 2 个类的不成比例造成的?
在 k-NN 中通常有一个交易:
k 应该足够大以消除任何噪音。
k 不应该太大而不能创建大的有偏边界。
一个经验法则是选择一个奇数 k 值以避免二元类问题中的联系。k 的大小取决于数据集本身的底层结构,这就是我们检查一系列 k 值的原因。如果在交叉验证方面做得很好,上述两个问题都会得到解决。所以你需要关注的最重要的问题是:
您是否为模型选择选择了正确的指标,并考虑了类的不平衡?
我建议您首先确定对您正确预测更重要的类。然后,在最终确定模型/k 值之前,查看混淆矩阵并考虑不同的指标(例如召回率、精度等)。