在进行监督学习时,我们是否需要测试集中的标签?

数据挖掘 机器学习
2022-03-07 14:02:21

我有一个数据集,我想在其上进行监督学习。训练集有标签,但测试集没有。

2个回答

这里的重要概念是评估

  • 任何一个人都想应用该模型来评估它。在这种情况下,必须标记测试数据,因为在监督学习中,通过将模型的预测与真实答案进行比较来评估模型。
  • 或者只是想应用该模型以获得对某些数据的预测。

术语“测试集”可能会引起混淆:

  • 人们总是可以将监督模型应用于一些新实例,与训练数据相比,将应用数据的任何数据称为“测试数据”是很常见的(从技术上讲,它实际上应该被称为“生产数据”)。最终,监督模型旨在预测一些未标记数据的目标变量(这就是重点),因此当然可以将模型应用于一些未标记的“测试”数据。
  • 但从构建 ML 模型的角度来看,只有评估很重要:将模型应用于一些未标记的数据并不真正相关,因为它没有提供有关模型工作情况的任何信息。这就是为什么在几乎所有关于监督学习的机器学习书籍/课程中,测试集都被理解为一个标记的测试集,即可以用于评估。

如果您有标记的训练集但没有标记的测试集,则意味着您必须拆分训练集才能评估模型。否则,当您将模型应用于测试集时,您将不知道预测是否正确,因此该模型将毫无用处。

简单的答案是肯定的。例如,我希望您知道 scikit learn 提供的train_test_split函数,它返回具有特征和标签的训练和测试数据对。为了评估模型的准确性,我们可以使用如下函数,

def r2_score(Y_actual,Y_predicted):
    num = np.sum((Y_actual-Y_predicted)**2)
    denom = np.sum((Y_actual- Y_actual.mean())**2)
    score = (1- num/denom)
    return score*100

因为这个函数会给你更多的想法(r2 分数),如果不标注我们如何预测模型就足够好(在监督学习中),如果准确度非常低。IE

  1. 训练数据的准确性可能非常高,而测试数据的准确性可能非常低,这表明我们的模型可能过度拟合。
  2. 这有助于我们知道可能是删除一些不相关的特征或冗余特征或微调参数。
  3. 这有助于了解我们可能必须对数据进行规范化/标准化(例如z score
  4. 点击了解更多详情