为具有接近机会最优性能的问题选择机器学习算法

数据挖掘 机器学习 Python 深度学习
2022-02-26 16:30:50

我是机器学习的新手,所以我会用两个例子来总结我的问题,而不需要技术(因为我不能)。

狗与猫的分类示例是可以解决的,因为人类可以确定地告诉你它是狗还是猫。许多机器学习算法能够复制人类的表现并几乎可以确定地识别狗或猫。

对于我的问题,没有确定性,只是比随机预测略好。我试图预测一个最近被释放的人是否会在明年内犯罪。让我们假设重新犯罪的实际机会约为 50/50。如果我可以使用机器学习做出比随机预测稍微好一点的预测,那对我来说将是一个巨大的胜利。更具体地说,如果 50/50 是随机猜测,那么如果我能够达到55%成功60%率,那将被认为是非常成功的。

我知道这项任务是可能的,因为我使用了一个数据集(具有大约 50 个特征和 100,000 个观察值)来进行“人造”线性回归,该回归在样本中实现了大约 52%。

我尝试过 SKLearn 的逻辑回归和 XGBoost,但它们的性能低于我的man-made尝试。我假设这是因为这些算法并不是要处理对大部分随机事件的预测。

鉴于我正在处理一个主要是随机事件的预测,并且我只是希望实现比随机预测稍微好一点,那么您是否可以推荐一种机器学习算法/策略来最好地解决这个问题?

2个回答

听起来您有很好的数据 - 50 列和 100,00 行!

我会进行探索性数据分析 (EDA) 并寻找与响应变量(重新犯罪)相关但彼此不相关的变量(列)。如果您能找到其中的一小部分(约 10 个),那么您就可以构建一个出色的回归模型。

其他可以尝试的技术可能包括随机森林和聚类分析。两者都可以在 Python 中快速完成,因此您可以比较许多不同的超参数迭代。

抱歉,这不是一个具体的答案,但我可以提供一些建议。

听起来你有很多弱关系的问题。在这种情况下,我认为 xGBoost 或 RandomForest 会产生比逻辑回归更好的结果。

还要记住,预处理数据和创建新功能可能比选择不同的算法更有帮助。考虑将分类变量编码为数字的不同选项。查看 pythoncategory_encoders并尝试留一法、响应编码等。考虑缺失数据的插补策略 - 使用 -99999 缺失数据可能适用于 xgBoost,但不适用于回归。考虑使用 logloss 作为优化指标,或者至少是 AUC。(不仅仅是准确性)

最重要的是——看看你是否能找到更多的数据。例如 -

  • 加入其他免费提供的数据:即如果您的数据有邮政编码,您可以通过邮政编码加入经济数据以添加更多功能吗?
  • 利用您“忽略”的数据:即您有自由格式的文本数据吗?尝试使用 TF-IDF 将其解析为稀疏矩阵。

最后,xGBoost 模型是否整体表现不佳,或者它们是否过度拟合并且在您的坚持中表现不佳?寻找诸如 CrossFold Validation 之类的技术。