kNN:培训,测试和验证

kli*_*ijo 5 classification machine-learning knn computational-geometry

我从10个类中提取图像特征,每个类有1000个图像.由于我可以提取50个功能,我想在这里找到最好的功能组合.培训,验证和测试集分为以下几种:

Training set = 70%
Validation set = 15%
Test set = 15%
Run Code Online (Sandbox Code Playgroud)

我在验证集上使用前向特征选择来找到最佳特征组合,最后使用测试集来检查整体精度.有人可以告诉我,我做得对吗?

dou*_*oug 16

因此,kNN是构建/测试受监督机器学习模型的一般工作流程的例外.特别是,通过kNN创建的模型只是可用的标记数据,放置在某个度量空间中.

换句话说,对于kNN,没有训练步骤,因为没有可以构建的模型.模板匹配和插值就是kNN中正在进行的一切.

也没有验证步骤.验证测量作为迭代计数(训练进度)的函数的训练数据的模型准确度.这种经验曲线的向上移动证明了过度拟合,并指出了训练应该停止的点.换句话说,因为没有建立模型,所以没有什么可以验证的.

但是你仍然可以测试 - 即,使用从模型中隐藏目标(标签或分数)的数据来评估预测的质量.

但即使是kNN与其他监督机器学习技术的测试也有所不同.特别是对于kNN,预测的质量当然取决于数据量,或者更确切地说是密度(每单位体积的点数) - 即,如果您要通过平均2-3来预测未知值最接近它的点,如果你有一个接近你想要预测的点,它会有所帮助.因此,保持测试集的大小较小,或者更好地使用k-fold交叉验证或留一交叉验证,这两种方法都可以为您提供更全面的模型测试,但不会以减少测试集的大小为代价.你的kNN邻居人口.

  • 但由于我需要找到最好的功能组合,我不应该在验证集上执行此搜索,然后最终通过测试测试测试所选的最佳功能 (2认同)
  • 如果我在测试集上运行最佳特征选择算法然后获得最终精度,这是否会使特征组合偏向于测试集? (2认同)
  • @klijo规范的kNN描述不包括用于特征选择的算法,或任何类型的算法.除此之外,我不理解你的任何评论中的问题,但我确定它们与kNN无关. (2认同)

小智 5

kNN 未经训练。所有数据都在运行时保存并用于预测,因此它是最耗时和占用空间的分类方法之一。特征减少可以减少这些问题。交叉验证是比训练/测试分割更好的测试方法。