机器学习目标:给定 100,000 名学生,预测一组 3,000 人,并最小化该组的中位数

数据挖掘 Python 分类 回归 强化学习 xgboost
2022-02-27 05:11:33

换句话说,我希望预测学生在失学之前会失学。数据包括社会经济地位和其他相关变量。

我已经尝试过 XGB 二进制分类(树和森林),但问题是它不会惩罚严重错误的答案(预测学生的成绩将在最低 3%,但他们实际上是 A+学生们)。结果是预测学生的平均成绩相当低,但中位数成绩实际上并没有那么差——有一些非常差的学生拉低了平均成绩,但没有降低中位数。

我尝试过 XGB 回归(树和森林),但问题是我无法让模型专注于底部的 3%。它旨在减少所有预测的错误。我不在乎区分 A 学生和 B 学生之间的区别,我只需要始终识别底部的 3%ile。

我在想也许这可以用于强化学习而不是监督,但我对强化一无所知......是否有可能建立一个强化模型,其目标是最小化预测的 3% 学生的中位数? 或者是否有任何其他机器学习技术可行?

2个回答

尝试为回归模型编写自定义损失函数!

例如,Keras 的神经网络支持这一点。https://stackoverflow.com/q/43818584/745868

(但许多其他库也对此提供支持)

关于您的自定义损失函数的唯一特别之处在于,如果 min(pred_y, actual_y) >= THRESHOLD 它不会累加数据点的错误

编写自定义损失函数可能很方便,但尝试将其视为回归模型的类平衡问题可能更简单。对于初学者,只需尝试对所有高中和中等成绩进行抽样,直到它们与失败的学生接近平衡。鉴于您的数据点和特征的数量,您可能仍然可以只扔一个随机森林并做得很好。