对于员工群体,我试图根据 2 年的数据来确定员工中哪些人将来可能会受伤。
与大多数机器学习问题中你试图根据未观察到的数据进行预测不同,我将处理相同的人群,因为你不会在短时间内看到大量的员工流动。
我正在使用XGboost实现。在整个人群中,我的标签表明员工是否受伤。我使用了 70% 的数据作为训练集,同时测试了剩余 30% 的准确性。我得到了相当不错的准确度评级。我能够准确地将受伤员工分类 90%(特异性)。虽然我的负面预测只有 70% 的准确率。我的假设是那些被错误归类为受伤的人,尽管他们在过去 2 年没有受伤,但他们可能在未来受伤或在 2 年前受伤。
我现在尝试在整个人群中测试该算法。我使用下面的 R 代码重新调整了我的整个人口数据,希望算法不会识别测试和训练数据中的观察结果:
df2 <- df1[sample(nrow(df1)),]
简而言之,我的训练数据是我全部人口的一个子集(新的/最终的测试数据)。当我比较结果时,训练和测试误差几乎相同。
是因为,我的大部分最终测试数据已经从我的训练数据中发现的观察中学到了吗?
如果我的方法不可接受,我还可以实施哪些其他选项,以使我的测试数据无法识别其中包含的某些观察结果已经在我的训练数据集中?