模型创建时特征不可用的分类

数据挖掘 分类 预言 时间
2022-03-03 13:50:01

我有问题陈述来预测根据多个功能解决任务的概率,例如创建任务的时间、完成任务所需的时间等 请找到附加的虚拟片段

task_id  date_time_open    time_needed   day_created  time_created   status 

aa      12/09/2019             20 hrs     Tuesday        3 pm      done  
cc      17/10/2019             4 hrs      Friday        10 pm      not_done

我知道我可以运行分类模型来识别类别。但是,当我向其中添加时间维度时,事情变得复杂了,因为数据集现在获得了一个对状态有很大影响的附加功能

假设在晚上 7 点扫描任务,并在晚上 7 点添加了一个新功能

task_id  date_time_tsk_open    time_needed     day_created  time_created    status_7pm     status            

    aa      12/09/2019               20 hrs     tuesday       3pm              done           done 
    cc      17/10/2019               4 hrs      friday        10 pm            done           not_done
    dd      19/10/2019               6 hrs      friday        2 pm             done          done 
    ff      19/10/2019               9 hrs      Monday        4 pm             not_done      not_done 

以 1 小时的固定间隔再次扫描任务 ID,并向数据添加新功能

task_id  date_time_tsk_open    time_needed     day_created  time_created    status_8pm     status            

    aa      12/09/2019               20 hrs     tuesday       3pm              done         done 
    cc      17/10/2019               4 hrs      friday        10 pm            not_done     not_done
    dd      19/10/2019               6 hrs      friday        2 pm             done            done 
    ff      19/10/2019               9 hrs      Monday        4 pm             not_done        not_done 

status==resolved/un_resolved的最终预测在我的理解中应该基于status_7pm和status_8pm等特征。

训练这种分类模型的数据结构应该如何分别在晚上 9 点为样本任务 ff 生成预测

  task_id  date_time_tsk_open    time_needed     day_created  time_created    status_7pm status_8pm     status            


    ff      19/10/2019               9 hrs      Monday        4 pm            not_done           not_done      not_done 

我假设分类模型应该在所有 status_1、status_2 ....status_8pm 上进行训练以对状态进行分类。或者,一旦模型每小时获得一个新的列更新状态,它是否会每次在内存中进行训练

2个回答

有几种不同的方法可以将“解决任务的概率”问题表述为分类或回归。每个公式都需要您稍微转换您的数据,以使其与模型尝试执行的操作相匹配。这里有一些想法:

预测一项新任务总体需要多长时间

对于模型训练,您只能对已完成的任务进行训练,并删除仍在处理的任务。这里的推理是,仍然not_done(根据定义)的任务还没有“他们工作了多长时间”。每当创建新任务时,您都可以预测总体需要多长时间。

例如,任务 A 在下午 6 点创建,您预测它需要 2 小时。然后,在晚上 8 点,系统应该认为它已经“完成”(或关闭!)。

这里的一个替代回归问题是预测一个任务还需要多少工作,因为它已经完成了多少工作。在这种情况下,您预测的是“此任务还需要 15 分钟”,而不是“此任务总共需要 45 分钟”。

预测任务是否会在下一小时内完成

由于您每小时都在扫描任务,听起来您可能想知道“此任务会在下一次扫描发生时完成吗?” 这意味着将问题重新表述为二元分类问题。对于每个任务,您可以有几个训练示例:

  • 任务 A 晚上 7 点开始,晚上 8 点未完成 (0)
  • 任务 A 晚上 7 点开始,晚上 9 点完成 (1)
  • 等等

然后 - 在晚上 8 点,您想要预测所有not_done任务,看看哪些任务应该在晚上 9 点之前完成。

似乎最简单的方法是在“时间创建”之后的每个时间步建立一条线。使用“status_n-1”、“status_n”。这将允许处理行中时间的概念。您可能还想:

  • 相对处理时间:您可能希望处理自任务创建以来的状态,而不是考虑给定时间的状态。

  • 您将需要以一种或另一种方式处理任务考虑(更长的任务将获得更多行)。您可以根据 1/(预期长度)在模型中添加一些考虑。

  • 添加一些功能:对我来说,不清楚您使用什么功能进行预测。照原样,您似乎正在尝试根据开始时间/预期长度来预测完成时间。除了哪些任务超出预期/某些日常影响之外,您不会学到太多东西。我认为这可以通过简单的统计数据更有效/更清楚地实现。