我正在从每个包含1000张图像的10个类别中提取图像特征。由于有50个要提取的特征,所以我考虑找到最佳的特征组合来使用。训练、验证和测试集被划分如下:
Training set = 70%
Validation set = 15%
Test set = 15%
我在验证集上使用前向特征选择来找到最佳的特征组合,最后使用测试集来检查整体准确性。请问我是否做得正确?
Training set = 70%
Validation set = 15%
Test set = 15%
我在验证集上使用前向特征选择来找到最佳的特征组合,最后使用测试集来检查整体准确性。请问我是否做得正确?
因此,对于建立/测试监督机器学习模型的一般工作流程,kNN 是一个例外。特别地,通过 kNN 创建的 模型 只是已有标记数据在某个度量空间中的放置。
换句话说,对于 kNN,不存在训练步骤,因为没有需要构建的模型。kNN 中正在发生的只有模板匹配和插值。
也不存在验证步骤。验证根据迭代次数(训练进程)将模型准确性与训练数据进行比较。过拟合表现为经验曲线上升,并指示训练应停止的点。换句话说,由于没有构建模型,因此没有东西可以验证。
但您仍然可以进行测试-即使用隐藏了目标(标签或分数)的数据来评估预测的质量。
但是,与其他监督式机器学习技术相比,即使对于测试,kNN 也有所不同。特别地,对于 kNN,预测的质量当然取决于数据量,或更精确地说,密度(单位体积内的点数)-即,如果要通过平均最接近其的2-3个点来预测未知值,则最好有靠近要预测的点的点。因此,保持测试集的规模较小,或者更好地使用 k 折交叉验证或留一交叉验证,两者都可以为您提供更全面的模型测试,但不会减少 kNN 邻居数量。
kNN没有训练过程,所有数据都保存并在运行时用于预测,因此它是最耗时、最占用空间的分类方法之一。特征减少可以减少这些问题。交叉验证是一种比训练/测试分离更好的测试方法。