我从10个类中提取图像特征,每个类都有1000个图像。由于我可以提取50个功能,我想在这里找到最好的功能组合。培训,验证和测试集分为以下几个部分:
Training set = 70%
Validation set = 15%
Test set = 15%
我在验证集上使用前向特征选择来找到最佳特征组合,最后使用测试集来检查整体精度。有人可以告诉我,我做得对吗?
答案 0 :(得分:14)
因此, kNN 是用于构建/测试受监督机器学习模型的一般工作流程的异常。特别是,通过kNN创建的模型只是可用的标记数据,放在一些度量空间中。
换句话说,对于kNN,没有训练步骤,因为没有要构建的模型。模板匹配&插值是kNN中正在进行的所有操作。
也没有验证步骤。验证测量作为迭代计数(训练进度)的函数的训练数据的模型准确度。这种经验曲线的向上移动证明了过度拟合,并指出了训练应该停止的点。换句话说,因为没有建立模型,所以没有什么可以验证的。
但您仍然可以测试 - 即使用数据来评估预测的质量,其中目标(标签或分数)隐藏在模型中。
但是,即使是kNN与其他监督机器学习技术的测试也有所不同。特别是对于kNN,预测的质量当然取决于数据量,或者更确切地说是密度(每单位体积的点数) - 即,如果您要通过平均2-3来预测未知值最接近它的点,如果你有一个接近你想要预测的点,它会有所帮助。因此,保持测试集的大小,或者更好地使用k-fold交叉验证或留一交叉验证,这两者都可以为您提供更全面的模型测试,但不是减少kNN邻居人口规模的成本。
答案 1 :(得分:2)
kNN没有经过训练。所有数据都保留并在运行时用于预测,因此它是最耗时和最耗时的分类方法之一。功能减少可以减少这些问题。交叉验证是比训练/测试拆分更好的测试方法。