如果模型精度不高于基线水平,我应该检查什么(随机猜测)

数据挖掘 机器学习 Python 预测建模 数据科学模型 模型选择
2022-02-20 21:34:49

我有一个只有 8 列的数据:

  • ID
  • 创建时间
  • 员工ID
  • 排名位置
  • 每小时价格
  • num_work_completed
  • 工作类别
  • 雇用

Hired 是目标变量,1 表示已录用,0 表示未录用,它与 5.7% 已录用 (1) 不平衡,这使得基线准确度为 94.3% 我正在尝试构建预测员工是否会被录用的模型。在我完成 EDA、特征工程(处理 NA、编码分类变量、标准化数值变量)后,我使用 80/20 作为分割规则,并使用 rank_position、hourly_price、num_work_completed、work_category_dummy 构建随机森林

clf=RandomForestClassifier(n_estimators=100,class_weight=balanced)
clf.fit(X_train,y_train)
y_pred=clf.predict(X_test)

然而,模型的准确度(测试准确度)为 93%,而基线为 94.3%。
训练准确率为 99%。与测试准确率 94.3% 相比,我认为没有过拟合问题逻辑回归也有同样的问题。基于相关印迹,大多数自变量与小于 +/- 0.3 的目标变量的关系非常弱。接下来我应该做什么来提高我的模型准确性?我尝试了参数调整,但没有太大帮助。

2个回答

这是罕见事件建模的常见问题,您的选择相对有限(至少据我所知)。很可能您使用的功能在预测这些结果方面信息量不是很大。

主要问题是,在此模型的上下文中,您的预测变量信息量不是很大。该模型试图平衡假阳性和假阴性,但由于真阳性如此之少,任何错误预测的阳性结果都会对您的分类准确性产生很大影响。

在这种情况下,您的预测器似乎没有提供足够的信息来很好地预测结果。你可能已经达到了这个模型所能做的上限。这可能是您的数据集中“雇用”结果的稀有性造成的,或者可能只是这些预测变量与结果之间的关系很弱。

有几个选项,涉及使用不同的技术(如 Firth 回归,专为罕见事件建模而设计)。但是,如果可能的话,使用不同的预测变量可能是最好的选择。并非每个事件都可以使用任意一组特征很好地建模,而且您可能已经找到了其中的一个。

作为对 Upper_Case 答案的补充,您可以随机打乱您的标签,然后再次使用这些错误的标签进行训练。如果结果仍然没有改变(它应该会变得更糟),这意味着您的输入实际上可能不是很丰富。