是否有任何代码可以将excel中的原始数据修改为流程挖掘所需的事件日志
Is there any code to modify raw data in excel to event log which is required for process mining
我遇到的问题是想对一组数据进行过程挖掘。但是我很难将 excel 中的原始数据隐藏到任何进程挖掘 software.is 所需的事件日志中,有任何方法可以修改 excel 中的数据以转换为事件日志。
如果您的数据是 CSV 格式,您可以使用 "convert csv to xes" 插件在 ProM/ProMLite 中将其转换为 XES。
这根本不是一件小事。然而,它遵循的方法在典型的数据科学家的工具箱中并不常见:)在这里,我解释一下基本思想!
很多过程挖掘论文都提到,现有的信息系统大多是PAIS(process-aware information system),因此有资格对其进行过程挖掘。这是事实,但是,这并不意味着您可以开箱即用地获取数据!
有什么解决办法?您可以将现有数据(通常来自业务解决方案的关系数据库,例如 ERP 或 HIS 系统)转换为流程挖掘可以理解的事件日志。
它的工作原理是这样的:您查看 table,其中包含例如患者注册数据。您需要此 table 的患者 ID 和每个 ID 的注册时间戳。您为事件日志创建一个空的 table,通常称为“Activity_Table”。您考虑根据业务上下文为每个 activity 命名。在我们的示例中,“Patient Registration”将是一个声音名称。您将所有患者 ID 及其各自的时间戳插入 Activity_Table,后跟所有行的相同 activity 名称,即“患者注册”。结果如下所示:
|Patient-ID | Activity | timestamp |
|:----------|:--------------------:| -------------------:|
| 111 |"Patient Registration"| 2021.06.01 14:33:49 |
| 112 |"Patient Registration"| 2021.06.18 10:03:21 |
| 113 |"Patient Registration"| 2021.07.01 01:20:00 |
| ... | | |
恭喜!你有一个事件日志 activity。其余的都是一样的。您为数据库中具有时间戳的每个重要操作创建相同的 table,例如“诊断完成”、“要求实验室测试”、“治疗 A 完成”。
|Patient-ID | Activity | timestamp |
|:----------|:-----------------:| -------------------:|
| 111 |"Diagnose finished"| 2021.06.21 18:03:19 |
| 112 |"Diagnose finished"| 2021.07.02 01:22:00 |
| 113 |"Diagnose finished"| 2021.07.01 01:20:00 |
| ... | | |
然后你联合所有这些迷你 tables 并根据 Patient-ID 然后按时间戳对它们进行排序:
|Patient-ID | Activity | timestamp |
|:----------|:--------------------:| -------------------:|
| 111 |"Patient Registration"| 2021.06.01 14:33:49 |
| 111 |"Diagnose finished" | 2021.06.21 18:03:19 |
| 112 |"Patient Registration"| 2021.06.18 10:03:21 |
| 112 |"Diagnose finished" | 2021.07.02 01:22:00 |
| 113 |"Patient Registration"| 2021.07.01 01:20:00 |
| 113 |"Diagnose finished" | 2021.07.01 01:20:00 |
| ... | | |
如果您注意到,最后两行具有相同的时间戳。这在处理真实数据时很常见。为了避免这种情况,我们需要一个名为“排序”的额外列,它可以帮助流程挖掘算法根据底层业务的性质了解具有相同时间戳的活动的“正常”顺序。在这种情况下,我们可以很容易地知道注册发生在诊断之前,因此,我们为所有“患者注册”活动分配一个低值(例如 1)。 table 可能如下所示:
|Patient-ID | Activity | timestamp |Order |
|:----------|:--------------------:|:-------------------:| ----:|
| 111 |"Patient Registration"| 2021.06.01 14:33:49 | 1 |
| 111 |"Diagnose finished" | 2021.06.21 18:03:19 | 2 |
| 112 |"Patient Registration"| 2021.06.18 10:03:21 | 1 |
| 112 |"Diagnose finished" | 2021.07.02 01:22:00 | 2 |
| 113 |"Patient Registration"| 2021.07.01 01:20:00 | 1 |
| 113 |"Diagnose finished" | 2021.07.01 01:20:00 | 2 |
| ... | | | |
现在,您有一个进程挖掘算法可以理解的事件日志!
旁注:
已经有很多尝试使事件日志提取过程自动化。如果您想关注这个话题,“Eduardo González López de Murillas”的作品真的很有趣。我还可以推荐 Eduardo 等人的这篇开放获取论文。 2018:
“连接数据库与流程挖掘:元模型和工具集”(https://link.springer.com/article/10.1007/s10270-018-0664-7)
我遇到的问题是想对一组数据进行过程挖掘。但是我很难将 excel 中的原始数据隐藏到任何进程挖掘 software.is 所需的事件日志中,有任何方法可以修改 excel 中的数据以转换为事件日志。
如果您的数据是 CSV 格式,您可以使用 "convert csv to xes" 插件在 ProM/ProMLite 中将其转换为 XES。
这根本不是一件小事。然而,它遵循的方法在典型的数据科学家的工具箱中并不常见:)在这里,我解释一下基本思想!
很多过程挖掘论文都提到,现有的信息系统大多是PAIS(process-aware information system),因此有资格对其进行过程挖掘。这是事实,但是,这并不意味着您可以开箱即用地获取数据!
有什么解决办法?您可以将现有数据(通常来自业务解决方案的关系数据库,例如 ERP 或 HIS 系统)转换为流程挖掘可以理解的事件日志。
它的工作原理是这样的:您查看 table,其中包含例如患者注册数据。您需要此 table 的患者 ID 和每个 ID 的注册时间戳。您为事件日志创建一个空的 table,通常称为“Activity_Table”。您考虑根据业务上下文为每个 activity 命名。在我们的示例中,“Patient Registration”将是一个声音名称。您将所有患者 ID 及其各自的时间戳插入 Activity_Table,后跟所有行的相同 activity 名称,即“患者注册”。结果如下所示:
|Patient-ID | Activity | timestamp |
|:----------|:--------------------:| -------------------:|
| 111 |"Patient Registration"| 2021.06.01 14:33:49 |
| 112 |"Patient Registration"| 2021.06.18 10:03:21 |
| 113 |"Patient Registration"| 2021.07.01 01:20:00 |
| ... | | |
恭喜!你有一个事件日志 activity。其余的都是一样的。您为数据库中具有时间戳的每个重要操作创建相同的 table,例如“诊断完成”、“要求实验室测试”、“治疗 A 完成”。
|Patient-ID | Activity | timestamp |
|:----------|:-----------------:| -------------------:|
| 111 |"Diagnose finished"| 2021.06.21 18:03:19 |
| 112 |"Diagnose finished"| 2021.07.02 01:22:00 |
| 113 |"Diagnose finished"| 2021.07.01 01:20:00 |
| ... | | |
然后你联合所有这些迷你 tables 并根据 Patient-ID 然后按时间戳对它们进行排序:
|Patient-ID | Activity | timestamp |
|:----------|:--------------------:| -------------------:|
| 111 |"Patient Registration"| 2021.06.01 14:33:49 |
| 111 |"Diagnose finished" | 2021.06.21 18:03:19 |
| 112 |"Patient Registration"| 2021.06.18 10:03:21 |
| 112 |"Diagnose finished" | 2021.07.02 01:22:00 |
| 113 |"Patient Registration"| 2021.07.01 01:20:00 |
| 113 |"Diagnose finished" | 2021.07.01 01:20:00 |
| ... | | |
如果您注意到,最后两行具有相同的时间戳。这在处理真实数据时很常见。为了避免这种情况,我们需要一个名为“排序”的额外列,它可以帮助流程挖掘算法根据底层业务的性质了解具有相同时间戳的活动的“正常”顺序。在这种情况下,我们可以很容易地知道注册发生在诊断之前,因此,我们为所有“患者注册”活动分配一个低值(例如 1)。 table 可能如下所示:
|Patient-ID | Activity | timestamp |Order |
|:----------|:--------------------:|:-------------------:| ----:|
| 111 |"Patient Registration"| 2021.06.01 14:33:49 | 1 |
| 111 |"Diagnose finished" | 2021.06.21 18:03:19 | 2 |
| 112 |"Patient Registration"| 2021.06.18 10:03:21 | 1 |
| 112 |"Diagnose finished" | 2021.07.02 01:22:00 | 2 |
| 113 |"Patient Registration"| 2021.07.01 01:20:00 | 1 |
| 113 |"Diagnose finished" | 2021.07.01 01:20:00 | 2 |
| ... | | | |
现在,您有一个进程挖掘算法可以理解的事件日志!
旁注: 已经有很多尝试使事件日志提取过程自动化。如果您想关注这个话题,“Eduardo González López de Murillas”的作品真的很有趣。我还可以推荐 Eduardo 等人的这篇开放获取论文。 2018: “连接数据库与流程挖掘:元模型和工具集”(https://link.springer.com/article/10.1007/s10270-018-0664-7)