我从 10 个类中提取图像特征,每个类有 1000 张图像。由于我可以提取 50 个特征,因此我正在考虑在这里找到最佳的特征组合。训练集、验证集和测试集划分如下:
Training set = 70%
Validation set = 15%
Test set = 15%
我在验证集上使用前向特征选择来找到最佳特征组合,最后使用测试集来检查整体准确性。有人可以告诉我我做得对吗?
我从 10 个类中提取图像特征,每个类有 1000 张图像。由于我可以提取 50 个特征,因此我正在考虑在这里找到最佳的特征组合。训练集、验证集和测试集划分如下:
Training set = 70%
Validation set = 15%
Test set = 15%
我在验证集上使用前向特征选择来找到最佳特征组合,最后使用测试集来检查整体准确性。有人可以告诉我我做得对吗?
因此,kNN是构建/测试监督机器学习模型的一般工作流程的一个例外。特别是,通过 kNN 创建的模型只是放置在某个度量空间中的可用标记数据。
换句话说,对于 kNN,没有训练步骤,因为没有要构建的模型。模板匹配和插值是 kNN 中发生的所有事情。
也没有验证步骤。验证根据训练数据测量模型准确性,作为迭代次数(训练进度)的函数。该经验曲线的向上移动证明了过度拟合,并指示了训练应该停止的点。换句话说,因为没有建立模型,所以没有什么要验证的。
但是您仍然可以测试——即,使用模型中隐藏了目标(标签或分数)的数据来评估预测的质量。
但即使是测试,kNN 与其他监督机器学习技术也略有不同。特别是,对于 kNN,预测的质量当然取决于数据量,或者更准确地说是密度(每单位体积的点数)——即,如果您要通过平均 2-3 来预测未知值点最接近它,那么如果您的点接近您希望预测的点,它会有所帮助。因此,保持测试集的大小较小,或者更好的是使用 k 折交叉验证或留一法交叉验证,这两种方法都可以为您提供更彻底的模型测试,但不会以减小大小为代价你的 kNN 邻居人口。
kNN is not trained. All of the data is kept and used at run-time for prediction, so it is one of the most time and space consuming classification method. Feature reduction can reduce these problems. Cross validation is a much better way of testing then train/test split.