我是顺序学习(和机器学习)的新手。我试图了解如何使用条件随机字段来解决我的问题。
我有一个数据集,它是&的顺序日志。我的应用程序的最终用户在哪里工作。例如,以下数据集仅包含User1
的值User Facility Weekday
User1 FacilityA Monday
User1 FacilityB Tuesday
User1 FacilityC Wednesday
... ... ...
我正在尝试解决以下问题: 给定用户工作的工作日和设施,什么设施&平日他们会继续工作吗?
为了解决这个问题,我开始研究条件随机字段,但是现在很难让任何库使用它。
我尝试使用以下库: 1. PyStruct(https://pystruct.github.io/) 但由于这个问题,这对我不起作用:Index out of bounds: Fitting SSVM using Pystruct
所以我转向另一个图书馆.. 3. CRF ++(https://taku910.github.io/crfpp/)
我能够安装CRF ++&也能够运行他们发行版中给出的示例。但是,我需要一些帮助,了解如何修改模板文件以适应我的用例......
另外,我认为我的标签将是来自上述数据集的工作日+工作日的串联字符串。
我是序列学习的新手。目前正在努力研究如何解决这个问题...
任何建议都会非常有用,因为我似乎有点卡在这里..
谢谢!
答案 0 :(得分:1)
是的,因为您正在尝试预测两个标签(工厂和日),所以需要连接标签。另外,您还可以学习2种不同的模型来预测每个标签(见第3点)。
我认为你应该研究这个问题的回归模型而不是CRF。
我认为数据的排列应该能够轻松学习用户的日志历史。你能否告诉我“任何”用户的“最低”历史记录(最后3次登录?5次登录?7次登录?)?
假设您有每个用户的最后3次登录。然后,如果在您的位置,我将以不同的方式安排数据并学习2个不同的模型,一个用于预测日期,另一个用于预测设施。用于预测日期的数据和模板文件的排列示例是here。 您同样地,将周日的名称更改为设施名称,并学习预测设施的模型。您也可以考虑并为我建议的功能添加更多功能。如果您有更多用户数据(比如职业或年龄等),那么您一定要尝试在培训数据中添加更多列,并将这些列添加为模板文件中的功能。 请记住,测试文件的排列方式应与训练文件相同(最后一列可以为空/缺失,因为它是测试期间模型预测的标签)。
如果你想继续在一个模型中预测两个标签,你可以尝试连接(在我给你的例子中,现在将成为day_facility。)