过程挖掘(Process Mining)5——事件日志(Event Logs)(1):数据源与事件日志
为何有过程挖掘5没有4?过程挖掘4讲数据挖掘的内容,实际上我们在流程分析时,数据挖掘也是重要的工具,是必须掌握的;其次,很多技术用到的思想是相通的,流程发现、一致性检验等技术,都会用到数据挖掘中一些基本的思想。然而,数据挖掘大家可以找到很多好的资料学习,或者大家都已经会了,以后我会再补充一些重要的数据挖掘算法和技术。
数据源
没有数据就不可能进行数据挖掘,进行流程挖掘的基础就是获得流程数据。通常在利用流程挖掘时,我们需要考虑我们的目标(期望从流程挖掘中获得什么信息,主要就是提问题)、获取数据、 流程挖掘与分析、流程改进与优化等。
目标可能与我们的流程挖掘项目息息相关。典型的流程挖掘目标可以是回答运行流程的以下的问题:
• 流程中过去真正的发生是什么?(What really happened in the past?)
• 为什么会这样发生?(Why did it happen?)
• 未来可能发生什么?(What is likely to happen in the future?)
• 何时且为何组织或人员发生偏离?(When and why do organization and people deviate?)
• 如何更好地控制流程?(How to control a Process better?)
• 如何重设计一个流程以改进其性能?(How to redesign a Process to improve its performance?)
获取需要的数据是流程挖掘的关键。原始数据可能来自多个数据源的多种数据格式(Excel表、交易日志、数据库表等),我们需要提取(extract)可以利用的数据内容,而进行流程挖掘需要结构化的事件日志,这意味着数据还需要一个转换(transform)的步骤,最后我们将得到的结构化数据加载(load)到目标系统中(如数据仓库或关系数据库等)。下图是典型的流程挖掘工作流,可以看出获取数据的提取、转换和加载操作(Extract,Transform,Load,ETL)。
流程挖掘工作流
在BI和数据挖掘的语境下,ETL这个词组被用来描述这样的流程:
(1)从外部数据源提取数据;
(2)转换提取的数据以符合后面的操作需要(比如解决语法上或语义上的问题,以保证达到预定义的数据质量要求);
(3)将转换的数据装载到目标系统(如数据仓库、关系数据库,以方面后续利用)。
在上面工作流程图中,ETL后面还有提取(extract)和过滤(filter)操作。新的提取操作是生成事件日志格式的数据,以符合我们进行流程挖掘的目标,比如,对流程(执行)的定义,在医疗机构中,我们流程挖掘可能关注患者的治疗路径,也可能关注用药流程(比起前者我们仅关注药物),这时候我们需要从数据仓库中提取的数据可能是不一样的。在提取需要的数据之后,过滤掉一些不是我们关注点的数据,比如一家企业的内部流程,我们关注它的销售部部门的流程,于是滤掉其他部门的数据;又或者我们关注前几种最频繁出现的流程行迹,它们最能代表实际流程的执行,从而我们需要过滤掉低频率的流程行迹。
总之,流程挖掘的数据获取是一个重要而复杂的工作,需要确定要提取到什么数据(来源、转换和存储),在使用流程挖掘解决问题时,也需要考虑不同的角度,从而去更好地利用事件数据。
事件日志(Event Logs)
一直提到事件日志,这是由于流程挖掘对数据又结构上的要求,事件日志是流程挖掘的输入。下表是我们前面用到的流程图的事件日志片段案例,从表头我们可以看出事件日志的结构。“Case id”用于区分流程的每一次执行;每一个“Event id”从属一个“Case id”,用于指明流程执行中的每一次活动的发生;“Timestamp”指明事件发生的时间,它是流程中活动顺序的依据;“Activity”指示事件执行的活动名称,“Resource”在这里表明了事件的处理人,“Cost”指明事件产生的代价。
事件日志案例片段
由这个日志案例作为引子,我们对事件日志提出几个基本假设:
•一个流程包含很多案例(cases)(流程执行)。
•一个案例包含很多事件(events),每个事件只能属于一个案例。
•一个案例中的事件是有顺序的(ordered)。
事件可以包含其他属性(时间、活动、代价和资源等)。
事件不是必须都含有相同的属性集,并且不是必须都要有取值的,不过对于同一活动的不同事件,通常它们拥有相同的属性集合。
为了能够定义日志的概念,明确事件日志的要求,下面形式化几个概念。
定义1(事件Event,属性Attribute) 令ℰ是事件域,即所有可能事件标识的集合。事件可以由一些不同的属性来表示,如一个事件可能有一个时间戳,对应一个活动,被一个特定的人执行,以及包含代价等。令 AN 是一个属性名的集合。对任意一个事件e∈ℰ和属性名n∈AN,#n(e)为事件e的属性n的取值(value)。如果一个事件e没有属性n,则#n(e)=⊥(空值,null)。
为了方便我们假设事件拥有以下几个标准(standard)属性:
• #activity(e):事件e关联的活动。
• #time(e):事件e的时间戳。
• #resource(e):事件e关联的资源。
• #trans(e):事件e关联的事务类型,如调度(schedule)、启动(start)、完成(complete)和挂起(suspend)。
这些属性只是对事件属性的一些例子,并非强制的。我们还会为这些标准属性做一些方便的假设,比如时间戳在事件日志中要求是非递减的。事务类型#trans(e)可以用来表示事件e的生命周期,下图是一个标准事务生命周期模型。
标准事务生命周期模型
在流程中,活动结点以标签来表示,从事件的属性中获得标签,这是分类器(classifier)的作用。一个分类器就是将一个事件的属性映射到一个标签的函数,标签是用在流程模型上的。理论上分类器可以有多个,但是在一个流程模型上通常只能使用一个分类器。我们用符号e来表示事件e在流程模型中的名称(name),下面给出其定义。
定义2(分类器,classifier) 对任意事件e∈ℰ,e是该事件的名称。
我们将e=#activity(e)作为默认分类器,在未来的例子中都这样使用。
分类器是一个重要概念。我们知道,事件是依附流程案例的,每个事件都是独一的,但是我们从事件日志中挖掘的流程模型是体现了活动的联系,因此需要获得事件的活动信息,分类器就是将事件映射到活动名的一个函数。也可以定义分类器将事件映射为事件执行人,从而从事件日志中挖掘社会网络。通常,分类器是取事件的某个或某些属性,然后利用这个属性来映射事件,比如上面的分类器分别取的是事件的活动名和执行人(文章中例子指resource)。
在介绍流程案例(行迹)之前,我们先介绍序列的一些概念。
序列(sequence)
•序列(sequence,或者串string)是事件日志中行迹的最自然的表示形式。
•对于一个给定集合A,A*是定义在A的所有有效序列的集合。
•一个定义在A的长度为n的有限序列是一个映射σ ∈ {1,…,n} →A。这样的序列以一个串表示,即σ=<a1,a2,…,an>,其中ai=σ(i),1≤i≤n。
•σ的长度以|σ|表示,即|σ|=n。
•σ⊕a’=<a1,a2,…,an,a’>,即将a’追加在σ的末尾处。类似地σ1⊕σ2将σ2追加到σ2上,其结果长度为|σ1|+|σ2|。
•hdk(σ)=<a1,a2,…,amin{k,n}>,表示序列σ的前k个元素的子序列(如果长度大于等于k,长度小于k结果为原序列σ)。规定hd0(σ)是一个空序列。pref(σ)={hdk(σ)|0≤k≤|σ|}表示σ的前缀集合。
•类似的,tlk(σ)=<amax{n−k+1,1},ak+2,…,an>,表示序列σ的后k个元素的子序列(如果长度大于等于k,长度小于k结果为原序列σ)。规定hd0(σ)是一个空序列。
•σ↑X表示将σ投影到A的子集X上(X ⊆ A)。如<a,b,c,d,b,d>↑{a,b}=<a,b,b>。
•∂set(σ)={a1,a2,…,an},和∂multiset(σ)=[a1,a2,…,an]。∂set将一个序列转换为一个集合(元素不重复),∂multiset则将一个序列转换为一个多重集(元素个数保持不变,但失去顺序信息,∂multiset(σ)也称为σ的Parkh向量)。如∂set(<a,b,c,d,b,d>)={a,b,c,d},∂multiset(<a,b,c,d,b,d>)=[a1,b2,c1,d1]。
一个事件日志包含案例(cases),而案例包含事件。一个案例的事件以一个行迹(trace)来表示,即一个不同事件的序列。和事件一样,案例也有属性。
定义3(案例、行迹、事件日志,case、trace、eventlog) 令
过程挖掘(Process Mining)5——事件日志(Event Logs)(1):数据源与事件日志相关推荐
- [过程挖掘 Process Mining] Demo scenario 演示场景(一)
[过程挖掘 Process Mining] Demo scenario 演示场景 文章目录 [过程挖掘 Process Mining] Demo scenario 演示场景 我们首先来看一个采购过程的 ...
- 以太坊:事件日志 (Event Logs)
事件日志相关 API,接口的参数说明请参考Etherscan API 约定, 文档中不单独说明. [Beta] The Event Log API was designed to provide an ...
- 移动端事件--touch事件的分类、touch事件的event对象、 其他触摸事件
一.touch事件的分类 1.1 触摸事件(touch) .box {width: 150px;height: 150px;background-color: red;margin: 20px aut ...
- 【过程挖掘算法4】Alpha Miner及其系列算法
Alpha算法是最早应用于过程挖掘的过程发现算法,在2002年被过程挖掘之父Wil van der Aalst提出,后续并被很多研究学者所完善,提出了一系列的扩展alpha算法,比如alpha+.Ts ...
- 记录-MySQL中的事件调度Event Scheduler
下面是自己的实例 /*查询event是否开启(查询结果Off为关闭 On为开启)*/ show variables like '%sche%'; /*开启/关闭命令(1开启--0关闭)*/ set g ...
- mysql数据库什么是事件_MySQL数据库之mysql 事件(Event) 总结
本文主要向大家介绍了MySQL数据库之mysql 事件(Event) 总结 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 1 事件简介 事件(event)是MySQL在相应的时 ...
- mysql 事件调度器_【MySQL】事件调度器 (Event Scheduler)
一 event 介绍 事件调度器是定时触发执行的,在这个角度上也可以称作是"临时的触发器".触发器只是针对某个表产生的事件执行一些语句,而事件调度器则是在某一个(间隔)时间执行一些 ...
- 事件对象event及其相关属性
事件对象event 一.什么是事件对象 二.事件对象的属性 1.事件对象的兼容性 2.事件对象的type属性 3.target 与currentTarget 4. 事件对象的keyCode属性 5.c ...
- 用php实现登录日志,利用Laravel事件系统如何实现登录日志的记录详解
本文介绍的是利用Laravel事件系统实现登录日志记录的相关内容,分享出来给大家参考,下面来看看详细的介绍: 明确需求 记录一个登录日志,通常需要下列信息: 客户端Agent信息 客户端IP地址 访问 ...
最新文章
- Java程序猿的JavaScript学习笔记(12——jQuery-扩展选择器)
- 《动手学深度学习》中文第二版预览版发布
- 盛大游戏回归A股进入倒计时:估值近300亿 腾讯年初曾入股
- mysql 暴力破解 root账号密码
- [Err] ORA-00979: not a GROUP BY expression
- 猿课python 第三天
- Java Swing Mysql实现的汽车租赁租车管理系统源码附带设计报告及视频导入运行教程
- JS判断当前DOM树是否加载完毕
- Zabbix监控Dell服务器主机和网络设备
- 如何将git分支上的标记移动到其他提交?
- 玩人工智能的你必须知道的语音识别技术原理
- The Entity Framework tools version升级
- CXF框架介绍及Spring集成
- linux mint 检测网卡驱动,使用linux mint 安装无线网卡驱动
- unity3d利用pano2VR实现全景视图效果
- TapTap 发布游戏
- 2023年南开大学税务专硕考研上岸前辈备考经验指导
- DSP6657打印ti.sysbios.heaps.HeapMem,内存问题
- 无人机技术的发展与应用
- 腾讯跟阿里两位王者之间的对比
热门文章
- java异常统一处理_Java 代码中的全局异常处理
- HTML flex遇到white-space:nowrap
- 2022精选博客书签
- 2. MariaDB激活二进制日志
- 高性能是什么?其本质是什么东东?
- 小米开源文件管理器MiCodeFileExplorer-源码研究(4)-文件操作工具类FileOperationHelper
- selenium 滑块问题解决
- Excel破解工作表编辑保护密码
- BP神经网络matlab工具箱实现
- TF基本概念,TF是Transformations Frames的缩写。在ROS中,是一个工具包,提供了坐标转换等方面的功能。