【IT168 技术】IBM SPSS Modeler Entity Analytics (EA) 是在 IBM SPSS Modeler 14.2 预测分析的基础上添加到 IBM SPSS Modeler 15.0 的全新功能。Entity Analytics 和传统的 Modeler 相比,对数据预测有着全新的维度。IBM SPSS Modeler 预测的重点在于根据过去的数据预测未来的行为。而 Entity Analytics 重点在于通过解析已有的数据,在不同的已有数据源中,解析自身的身份冲突,从而来提高当前数据的连贯性和一致性。
功能介绍
EA 基本配置
如果我们有下面的两条数据,来自美国某银行的数据 A,和来自另一银行的数据 B:
表 1. 数据 A
| 记录编码 | 姓名 | 地址 | 税参考 | 驾驶执照 | 信用卡 |
| 70001 | Jon Smith | 123 Main Stree | 555-00-1111 | 0001133107 | 10229127 |
表 2. 数据 B
| 记录编码 | 姓名 | 出生日期 | 电话 | 信用卡 | 电子邮件 | IP地址 |
| 9103 | JOHNATHAN Smith | 06/17/1934 | 555-1212 | 10229128 | jls@mail.com | 9.50.18.77 |
单纯的从这两条数据看,我们发现数据 A 和数据 B 除了名字和信用卡号略为相似以外,没有任何一样甚至相似的地方。数据 A 重点统计了一个用户的住址,税参考和驾驶执照。而数据 B 重点统计了一个用户的出生日期,点好号码,电子邮件和 IP 地址。只通过这样两条来自不同银行的数据,我们没有办法定义数据 A 和数据 B 所描述的用户之间有任何的关系。
随着我们的进一步的扩充我们的数据源,我们获得了来自摩根银行的第三条数据 :
表 3. 数据 C
| 记录编码 | 姓名 | 电话 | 驾驶执照 | 信用卡 |
| 6251 | Jon Smith | 555-1212 | 0001133107 | 102291328 |
这第三条数据虽然只简单地包括了姓名,电话,驾驶证号码,信用卡号码这么 4 个部分,但是它强而有效的把数据 A 和数据 B 联系到了一起。数据 A 和数据 C 的姓名都是 JOHN SMITH, 驾驶证号码都是 0001133107; 数据 B 和数据 C 的电话号码都是 555-1212,信用卡号码都是 102291328. 因此,我们可以推断,实际上数据 A 和数据 B 其实描述的是同一个人。如果将来我们发现数据 A 里的 john smith 有诈骗嫌疑,我们就可以迅速的推断,他也可能在花旗银行和摩根银行实施同样的行为。这早期的推断会对后期的预防有非常重要的影响。
如果只有这样简单的一两条数据,我们可以随意的眼观就发现数据之间的相关性。但是当你的数据成千上万,当你的数据来自几百种不同的数据来源,当你的数据里面夹在了恶意的假数据时,人力的检测就会微不足道至完全没有用武之地。而使用我们 IBM SPSS Modeler 15 的 Entity Analytics 新功能,我们用不同的输入节点把来自各个数据源的数据收集到一起,然后通过 Entity Analytics 的输出接点全部插入到我们 Entity Analytics 的专属数据库中。在每次有了新数据来源的时候,我们通过 Entity Analytics 的处理节点把它和所有数据库里的已知数据进行不同设置的对比,从而判定他们是不是有相关关系,甚至是推断有怎样的相关关系。除此以外, Entity analytics 还可以帮助用户把信息进行有效的合并。比如之前我的数据,在合并后就会有如下这些数据:
表 4. 数据 D
| 姓名 | 地址 | 税参考 | 驾驶执照 | 信用卡 | 出生日期 | 电话 | 信用卡2 | 电子邮箱 | IP地址 |
| Jon Smith | 123 Main Street | 555-00-1111 | 0001133107 | 10229127 | 06/17/1934 | 555-1212 | 10229128 | jls@mail.com | 9.50.18.77 |
这样,我们对用户 Jon Smith 的资料掌握就更全面了,全面的资料库会对后期的营销策略等都产生强大的积极影响。
关于产品的详细资料我们可以通过帮助文档获取,这里就不多提了。今天,我们重点想和大家讲讲它在商业分析中具体的应用案例。
首先来介绍一下我们的数据源,这个数据包括 850 行,28 列,是由我们根据美国信用卡机构的数据组件模式自行创造的数据。在这个数据里,有很小一部分的人可以通过传统匹配来进行识别。在软件设置为传统匹配的模式下,被判定为同一个人的数据会自动标示成同一个 EA-ID。
简单的数据预览截屏如下:

▲ 数据预览截屏
预览只显示十条数据,但是所有的列都会被显示。如图所示,我们的数据源包括,编号,名,中间名,姓,出生日期,死亡日期,性别,家庭住址,城市,国家,邮编,电话,邮箱,网页,社会安全号码,社保号后四位,驾照号码,和护照号码等等美国常用的资料信息。
这里虽然只是一个数据源,但是在实际应用中,我们可以把不同的数据源通过 MODELER 的结合源点联系到一起以后再进行分析处理。
现在,我们就发现重复用户这个具体案例来进行详细的讲解。
对于初次使用者来说,第一步应该做的就是创建一个专们使用的实体数据库。
首先,放一个 EA (Entity Analytics) 的输出结点在屏幕上。如下图所示:

▲EA 导出节点
双击点开该节点,得到下图所示的跳出窗口:

▲EA 导出对话框
我们用鼠标点击实体数据库右边的箭头,会得到一个下拉菜单。在下拉菜单里选择浏览,会跳出一个连接数据库的窗口,如下图所示:

▲ 实体存储库
选择创建数据库,数据库创建窗口跳出,如下图:

▲ 数据库创建窗口
请输入用户名和密码,下一步键会被激活,按下一步键,创建第二步窗口跳出,如下图:

▲ 数据库创建窗口 2
在第二步窗口输入你希望的数据库名称。再次作者使用 TEST,点击正确键。看到创建数据库条形窗口闪动,如下图所示:

▲ 条形窗口
创建成功,返回实体数据库窗口,如下图所示:

▲ 实体存储库 2
如上图可以看到,现在我们成功的创立了一个用户名为 aaa 的叫做 TEST 的数据库。此数据库内现有记录为 0 条。这个页面下我们还可以进行的操作有刷新,清除数据库,删除整个数据库和配置数据库。
刷新键用来刷新数据库里的数据。如果有建成的流重新拿来使用,打开实体数据库页面的时候,现实的会是上次刷新的数字,这时候重新刷新就很有必要。
清除数据库,顾名思义,清除数据库里所有的现有源数据。清理完毕以后,刷新出来的结果将为 0 条数据。这项操作只删除数据,可以保留所有数据库配置的详细信息。
删除整个数据库。点击这个键,会删除当前存储库的所有内容和所有之前进行过的配置信息。 简单的说,就是清空所有。
配置数据库。点击配置数据库键,会跳出配置当前存储库的窗口,具体的操作我们会在后面详细介绍。
好的,截止目前为止我们有一个可以使用的实体数据库了。这个数据库将会是我们所有操作实际处理的地方。Entity Analytics 的全部三个结点,都可以连接到这个数据库中。它将会是我们分析处理最核心的部件。
实体数据库建立完整以后,我们就可以开始建立计算流了。
首先我们连接一个合适的数据源。在这篇文章里,我们选取的是可变文件数据源节点。当然, EA 的输出结点和 Modeler 其他的输入源节点都可以连接使用。不论你的数据源是数据收集文件,Cognos,Excel 还是统计格式文件,都可以做下文所有类似的处理。
我们先把我们的可变文件数据源和 EA (Entity Analytics 的简称,下文同理 ) 的输出结点连接到一起。如下图所示:
上图的命名为 EA Export 的节点就是 EA 输出结点,下图的节点为表格输出结点,用来观察原始数据源的。
双击 EA 的输出节点,我们会得到上文提到过的 EA 输出节点页面。这里,我已经在节点中进行了相应的配置,如下图所示:

▲EA 输出节点窗口
源标记默认值为 TEST,但是如果需要,你可以点击下拉菜单创建新的,自己根据需要命名的源标记。这里的源标记相当于我们平时用的数据库中的表格。实体类型是存储库中的特征集。 选择不同的实体类型,下面表格中可以映射的功能就会自动有区别。我们有 4 种已建好的不同实体类型供您使用。但是如果有特别的用处,可以拉下拉菜单创建新的特征。唯一键,是个非常关键的选项,用来记录数据里的独一数据,要避免使用比如性别或者姓这种大量重复的值。
如果你的数据里没有这样一条独一的数据,可以用 derive 节点生成一个 ID 排序,在这里可以用这个 ID 来当唯一键。
此窗口最下面的表格是映射表。通过此表,我们可以把每个输入字段映射到储存库中的相应特征里。如果所选实体类型不存在适合的特征,您可以创建新的特征。
在设置全部完成以后,点击运行键。 如下图:
如上图所示,当源节点和输出节点之间的连接线变成绿色的。而前端又跳出一个执行窗口的时候,输出就在正常运作中。根据数据的大小,执行时间会有所不同。
运行完成后,执行窗口会自动关掉,我们现在通过把 EA 的源节点和 Modeler 的输出表格节点连接到一起(如下图所示)并在 EA 源节点里面挑选正确的实体储存库,来看一下输出后的被处理的信息是什么样的。
双击源节点,选择实体储存库,如下图:

▲EA 节点窗口
鼠标单击右边的下拉菜单。所有已经建好的存储库将在这个列表中显示。我们在这里选我们之前输出数据的 TEST 储存库。选择了需要的实体储存库以后,下面的表里就会显示所有的源记录。在这里,用鼠标点方形的选择栏就可以。列表会显示存储库里所有的源记录表,我们可以根据实际需要单选或者多选用于分析。此外,在选择了所需的存储库以后,数据记录也会自动更新。单击确定键跳出窗口。
现在回到刚才建好的数据流。单击表格输出结点确认选择,按右键选择运行,生成的表格预览如下:

▲ 预览数据
经过 EA 输出结点处理的数据已经和我们原始的输入数据大不相同了(源数据,请参考第 3 页)。源数据有 28 列,而现数据只有 3 列:$EA-ID,$EA-SRC, $EA-KEY。Entity Analytics 在把数据源的数据读取到存储库后,自动对她进行了分析,并为每个记录添加一个名为 $EA-ID 的标识符字段。根据身份识别,ENTITY ANALYTICS 自动给这条数据分配的一个号码。如果 EA 软件认为这两条数据是同一个人,将会分配相同的 $EA-ID 给这条数据。$EA-SRC 反映了数据源的名称 .$EA-KEY 则是按照顺序给他们分配的数据库新 ID。下面我们来举个简单的例子帮助大家更好地理解这个问题。如果我们有下面几条数据。
EA 基本功能
表 5. 外部数据
| 姓名 | 电话 | 信贷风险 |
| Mike | 555-1234 | 560 |
| Joe | 555-4567 | 780 |
表 6. 员工
| 姓名 | 地址 | 电话 |
| Michael | 1234 5thStreet | 555-1234 |
| Fred | 543 1st Avenue | 555-9876 |
表 7. 客户
| 姓名 | 地址 | 储蓄 |
| Susan | 1234 5thStreet | $1234 |
| Joe | 777 Oak Street | $5 |
表 8. 贷款
| 姓名 | 电话 | 地址 | 储蓄 |
| Susan | 1234 5thStreet | 555-1234 | $10,000 |
| Joe | 777 Oak Street | 555-4567 | $50,000 |
在这四组来自不同来源的数据里,表格上的名字就是他们的数据源名称。通过 EA 把他们导出后,新组成的存储库为下表所示。
表 9. 汇总
| $EA-ID | $EA-SRC | 姓名 | 电话 | 地址 | 信贷风险 | 储蓄 | 贷款 |
| 1 | 员工 | Michael | 555-1234 | 1234 5th St | |||
| 1 | 外部数据 | Mike | 555-1234 | 560 | |||
| 2 | 客户 | Joe | 777 Oak Street | $5 | |||
| 2 | 外部数据 | Joe | 555-4567 | 780 | $50,000 | ||
| 2 | 贷款 | Joseph | 555-4567 | 777 Oak Street | |||
| 3 | 员工噢乖 | Fred | 555-9876 | ||||
| 4 | 客户 | Susan | 1234 5th St | $1234 | |||
| 4 | 贷款 | Sue | 555-1234 | 1234 5th St | $10,000 |
我们可以看到,Entity Analytics 系统根据共同的电话号码确定了外部数据集中的 MIKE 与员工数据集中的 Michael 是同一个人,因此给了他们相同的 $EA-ID 号— 1 号。而外部数据集中 Joe 的情况会相对复杂一些。他和客户集中名字相似但是没有其他公共信息的的 Joe 会是同一个人吗?这是我们必须引入我们的第三个数据源 ---- 贷款数据源。贷款数据源中有一个人名在为 Joseph。他的电话和外部数据元中得 JOE 一样,因此,我们给了这三条数据一样的 $EA-ID 编码。这只是个简单的应用说明,希望可以帮助大家理解。
EA 在 Modeler 中的应用
回到我们最初的公式流,当我们把数据输出到实体存储库的时候,其实我们的软件已经对它进行了初步的分析处理。可是我们有 850 条数据,凭借肉眼很难找出究竟哪条或者那些条数据是指向了同一个人,因此我们现在把它和 Modeler 里面其他的节点联系到一起,帮助我们更直观的看到结果。下面建了一条简单的数据流,如图所示:
这条流只有简单的 4 各节点,中间的汇总节点和排序节点是这条计算流的核心。在汇总节点,我们需要做以下设置:

▲Aggregate 节点
这样设置的目的是保留 $EA-ID 这一列,去掉其他列,同事加入一个命名为 record_count 的新列。这样新的一列里就会显示这一条数据重复出现的次数。因为数据还是很多,而没有重复的数据对我们来说并不重要。所以如果可以把所有的输出数据按照重复的次数来排序,结果就会非常的直观明了。
因此,我们需要在排序节点做如下的简单设置:

▲Sort 节点
我们在字段里选择了 Record_count,在顺序里选择的降序。意思是说我们所有的数据将会按照 record count 数值按从大到小的顺序进行排序。设置好后,点击确认键。
全部设置好以后,点击表格输出节点运作。我们会得到如下表的结果:

▲ 预览数据 2
这样我们可以看出,着 850 条数据里一共有 11 条数据分别有一条数据和它们描述的是同一个人,因此,最后我们也只剩了 839 条记录。以第一条记录为例子。$EA-ID 501 的值在这 850 条数据里一共有两个。为了确认我们的结果,我们可以建立一个新的数据流,如下图所示: count 数值按从大到小的顺序进行排序。设置好后,点击确认键。
在选择节点里,我们作如下的简单配置:

▲Select 节点
这样的配置告诉我们在所有的数据里面,我们只想挑出 EA-ID 为 501 的数据。运行得出的结果为:

▲ 结果
如图所示,我们可以发现 EA-ID 为 501 号的数据确实和我们从上一条数据流里显示的一样, 只有两条。这两条数据分别是原数据源里标号 REF00000501 and REF00000621 的。
为了更进一步的验证我们的结果,我们可以建立一个如下的数据流:
我们用文本数据源读入我们的初始数据,然后使用一个选择节点选出 REF00000501 and REF00000621 所对应的,下来我们会使用一个过滤节点,过掉一些没有什么意义的项目,最后,我们用一个表格输出结点显示出被认为同一个人的两条数据的详细资料。
选择节点的设置如下:

▲Select 节点 2
输出结果为:

▲ 结果 2
我们可以看出,这两条数据虽然编号不一样,但是生日,性别,家庭住址,城市等完全一样。 姓和名非常相似。名字一个是 Ruth 一个是 Ruthor,可以理解为同样的名字两种不同的叫法。 而中间名字,一个是 Carol,一个是 C, 我们可以理解为缩写,姓是完全一样的。这个结果再次的论证,Entity Analytics 实时分析软件确实根据我们的定义找出了它认为是同一个客户的两条不同数据。
那么,我们到底是怎么定义什么样的两条数据应该是同一个人呢?具体的条件设置当然是软件后端的实现秘密,不能在这里告诉大家啦。但是作为用户,我们可以做一些选择来达到不同的结果。具体设置会在实体数据库里选择,我在这里也和大家简短的介绍一下。
前面我们介绍过如何创建一个实体数据库,在创建过程中,我们可以通过任何一个 EA 节点进入到如下页面:

▲ 实体存储库 2
点击“配置数据库”,我们会进到如下页面:

▲ 实体库配置
在解析规则下选择“规则”:

▲ 实体库配置 2
在这里,我们可以选择三种解析规则:激进解析设置,默认解析设置和传统解析设置。如果能够找到很多的匹配项,我们应该选择保守解析,这样会按照最严格的标准来进行解析。如果在自己现有数据中不能够找到足够的匹配项,我们应该选择激进解析,这样会用可以接受的最宽松的方式进行匹配,也会给我们返回最多的匹配结果。一般情况下,在进行第一次解析的时候,我们都会选择默认解析设置。因为设置的不同,所以我们会得到不同的结果。用户可以根据具体的现有数据情况来选择。
小结
我们通过以上这个案例,更深刻的了解到 Entity Analytics 不仅可以识别掩藏在不同数据源的不同编码的数据其实指向的是同一个用户,也可以提前预知了该用户在银行贷款系统的其他使用途径,发现不同数据源之间的依赖关系,对存在的潜在风险进行提前预警。例如用户 A 在数据源 1 里有了不合理的贷款记录甚至于诈骗行为,就可以尽早防范用户 A 在其他的银行做类似的操作;如果是售后部门使用,通过对不同数据源的分析处理,对拥有潜在消费能力消费的用户进行评估预测。通过 EA 和 Modeler 在现有建模及数据处理功能的结合使用,更好更快更精准的处理数据挖掘和分析领域各种有关诈骗,关联性分析,赌场客户档案分析,市场用户消费预测,社会关系网连接等等各种问题。