用于二元分类的强化算法



我是机器学习的新手,但在过去的两天里我读了很多关于强化学习的文章。我有一个应用程序可以获取项目列表(例如从Upwork(。有一个主持人手动接受或拒绝项目(基于下面解释的一些参数(。如果一个项目被接受,我想发送一个项目提案,如果被拒绝,我会忽略它。我希望用 AI 替换该主持人(以及其他原因(,所以我想知道我应该为此使用哪种强化算法。

参数: 下面列出了一些应决定代理是接受还是拒绝项目的参数。假设我只想接受与 Web 开发相关的项目(特别是后端/服务器端(,以下是参数应该如何影响代理。

部门
  • :如果项目与IT部门相关,则应该有更多机会被接受。
  • 类别
  • :如果项目属于Web开发类别,则应该有更多机会被接受。
  • 雇主评级: 评级超过 4(满分 5 分(的雇主应该有更多机会被接受。

我认为Q-Learning或SARSA能够帮助我,但我看到的大多数例子都与悬崖行走问题有关,其中状态相互依赖,这不适用于我的情况,因为每个项目都与前一个项目不同。

注意:我希望代理能够自我学习,这样如果将来我也开始奖励它为前端项目,它应该学习这种行为。因此,建议"纯"监督学习算法是行不通的。

编辑1:我想补充一点,我有3000个项目的数据(部门,类别,职称,雇主评级等(,以及我的版主是否接受或拒绝了该项目。

你的问题应该很容易用Q-learning来解决。 这只取决于你如何设计你的问题。 强化学习本身是一种非常健壮的算法,它允许代理从环境中接收状态,然后在给定这些状态的情况下执行操作。 根据这些操作,它将获得相应的奖励。 对于您的问题,结构将如下所示:

状态:3 x 1 矩阵。 [行业、类别、雇主评级]

扇区状态都是整数,其中每个整数代表一个不同的扇区。 例如,1 = IT 部门,2 = 能源,3 = 制药,4 = 汽车等。

类别状态也可以是所有整数,其中每个整数表示不同的类别。例如:1 = Web 开发,2 = 硬件,3 = 等。

雇主评级也是 1 - 5 之间的所有整数。 其中,州代表评级。

行动

操作: 输出是一个整数。

操作空间将是二进制的。 1 或 0。 1 = 接受项目,0 = 不要接受项目。

奖励

奖励为您的系统提供反馈。 在您的情况下,只有当操作 = 1 时,您才会评估奖励,即您接受了项目。 然后,这将使您的 RL 了解它在项目中所做的工作有多好。

奖励将是一个看起来像这样的函数:

def reward(states):
sector, category, emp_rating = states
rewards = 0
if sector == 1:   # The IT sector
rewards += 1
if category == 1:   # The web development category
rewards += 1
if emp_rating = 5:   # Highest rating
rewards += 2
elif emp_rating = 4:   # 2nd highest rating
rewards += 1
return rewards

为了增强此奖励功能,您实际上可以给某些部门负奖励,因此如果RL接受这些项目,它实际上将获得负奖励。 我在这里避免了这一点,以避免进一步的复杂性。

您还可以在将来编辑奖励功能,以允许您的 RL 学习新事物。 例如使某些部门比其他部门更好等。

编辑:是的,关于Lejlot的评论,这基本上是一个多臂强盗问题,没有顺序决策。 老虎机问题的设置与Q学习减去顺序部分基本相同。 你所关心的只是你有一个项目提案(状态(,做出决定(行动(,然后是你的奖励。 在您的情况下接下来会发生什么并不重要。

最新更新