kNN:培训,测试和验证

时间:2012-05-30 10:45:54

标签: machine-learning computational-geometry classification knn

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

Training set = 70%
Validation set = 15%
Test set = 15%

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

2 个答案:

答案 0 :(得分:14)

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

换句话说,对于kNN,没有训练步骤,因为没有要构建的模型。模板匹配&插值是kNN中正在进行的所有操作。

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

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

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

答案 1 :(得分:2)

kNN没有经过训练。所有数据都保留并在运行时用于预测,因此它是最耗时和最耗时的分类方法之一。功能减少可以减少这些问题。交叉验证是比训练/测试拆分更好的测试方法。