我是机器学习的新手,但在过去 2 天里我读了很多关于强化学习的文章。我有一个获取项目列表的应用程序(例如从 Upwork)。有一个主持人手动接受或拒绝项目(基于下面解释的一些参数)。如果一个项目被接受,我想发送一个项目建议,如果它被拒绝,我会忽略它。 我希望用 AI 替换该主持人(除其他原因外),所以我想知道我应该为此使用哪种强化算法。
参数:
下面列出了一些应该决定代理是接受还是拒绝项目的参数。假设我只想接受与 Web 开发相关的项目(特别是后端/服务器端),这里是参数应该如何影响代理。
我认为 Q-Learning 或 SARSA 可以帮助我,但我看到的大多数例子都与 Cliff Walking 问题有关,其中状态相互依赖,这不适用于我的情况,因为每个项目都不同于前一个。
注意:我希望代理能够自我学习,这样如果将来我也开始为前端项目奖励它,它应该学习这种行为。因此,建议采用“纯”监督学习算法是行不通的。
编辑 1:我想补充一点,我有 3000 个项目的数据(部门、类别、职位、雇主评级等)以及该项目是被我的主持人接受还是拒绝。
最佳答案
您的问题应该可以使用 Q-learning 轻松解决。这仅取决于您如何设计问题。强化学习本身是一种非常健壮的算法,它允许代理从环境中接收状态,然后根据这些状态执行操作。根据这些行为,它将获得相应的奖励。对于您的问题,结构将如下所示:
状态
状态:3 x 1 矩阵。 [行业、类别、雇主评级]
扇区状态都是整数,其中每个整数代表一个不同的扇区。例如,1 = IT 部门、2 = 能源、3 = 制药、4 = 汽车等。
类别状态也可以是所有整数,其中每个整数代表一个不同的类别。例如:1 = Web 开发,2 = 硬件,3 = 等等。
雇主评级也是 1 - 5 之间的所有整数。其中州代表评级。
Action
行动:输出是一个整数。
Action 空间将是二元的。 1 或 0。1 = 接受该项目,0 = 不接受该项目。
奖励
奖励为您的系统提供反馈。在您的情况下,您只会在 action = 1 时评估奖励,即您接受了该项目。然后,这将使您的 RL 了解它在项目中所做的工作有多好。
Reward 将是一个看起来像这样的函数:
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 拿了这些项目,实际上会得到负奖励。我在这里避免这样做是为了避免进一步的复杂性。
您还可以在 future 编辑奖励函数,让您的 RL 学习新事物。例如使某些部门比其他部门更好等。
编辑:是的,关于 lejlot 的评论,它基本上是一个多臂老虎机问题,没有顺序决策。老虎机问题的设置与 Q-learning 减去序列部分基本相同。你所关心的是你有一个项目提案(状态),做出决定(行动),然后你的奖励。在您的情况下接下来会发生什么并不重要。
关于machine-learning - 使用哪种强化算法进行二元分类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51860263/