IBM SPSS Collaboration and Deployment Services (IBM SPSS CaDS) 是 IBM SPSS 数据挖掘与预测分析产品家族中重要的组成部分。CaDS 构建了一个面向企业级用户的数据资产的智能部署和集中管理的平台。在此之上,CaDS 提供了对于数据资产集中的,安全的,可追踪的存储,以及对于预测分析模型完整生命周期的自动化管理及运行等功能。
CaDS 的主要功能包含:
存储库:CaDS 为 SPSS 产品家族其他产品提供存储库功能,支持的产品涵盖 IBM SPSS Modeler, IBM SPSS Statisitics, IBM SPSS Analytical Decision Management 和 IBM SPSS Data Collection。除了常规的存储及交互,CaDS 还支持版本控制及标签管理,以及多用户访问权限和运行权限的控制。
模型自动运行:基于作业机制,预测分析模型可以实现在 CaDS 中的自动运行。整个运行过程可以完全参数化以及可调度,运行结果可以通过多种媒介动态的展现给最终用户。
模型管理:CaDS 提供了对于模型完整生命周期的自动化管理,包括模型的自动刷新,自动评估,自动比较;所有结果都可以从多个维度进行展现。
实时预测分析:借助 CaDS 的评分系统,分析师可以根据输入数据实时得到预测分析的结果。
数据集成:CaDS 支持从多种类型的数据源中读取并使用数据,用以进行数据挖据与预测分析。
数据资产备份与恢复:面向企业级测试及生产环境,CaDS 提供多种数据备份和恢复机制,保证数据的完整性及安全性。
集群与负载均衡:基于应用服务器,CaDS 提供了强大的集群及负载均衡机制,保证系统的高性能及高可靠性。
系统集成与二次开发:CaDS 提供标准的 web Service API 以及 Python API。CaDS 中的所有操作都可以用 API 来实现,方便进行二次开发及扩展。同时,CaDS 提供了 Development Toolkits 开发包,利用该工具包用户可以进行 CaDS Server 的客户端调用,将 CaDS 的部分功能集成进客户现有应用系统。
图 1. CaDS 产品架构
CaDS Server: 架设在应用服务器及数据库之上的 CaDS Server 处于核心地位,上文提到的功能在此实现。
CaDS Deployment Manager: CaDS C/S 客户端组件。
CaDS Deployment Portal: CaDS 基于浏览器的 B/S 客户端,在此之上,可以对于数据资产进行基本的操作及结果展示。
CaDS Deployment Manager Web: 基于浏览器的系统配置客户端,可以在此之上进行常规的系统配置。
CaDS Remote Process Server: CaDS 远程运行服务器,允许用户远程执行 CaDS 的作业功能。
CaDS Remote Scoring Server: CaDS 远程评分服务器,提供远程执行实时预测分析的功能。
图 2. CaDS 与其他产品的连接
回页首
CaDS Scoring Service(评分系统)是 CaDS 的核心功能之一。在评分过程中,用户通过 CaDS 的评分系统为预测模型提供输入数据,并实时生成预测分析的结果。关于评分系统的详细介绍,请参见 DeveloperWorks 相关文章:
如何使用 IBM SPSS Collaboration and Deployment Services 进行实时预测分析
传统的部署方式下,CaDS Scoring Service 是集成在 CaDS Server 中。同时,如本文所探讨的,Scoring Service 也可以独立于 CaDS Server 之外,作为独立的组件提供评分功能。与 CaDS Server 集成的评分系统相比,Remote Scoring Server 具有如下的特点及优势:
为了获得最大的灵活度,Remote Scoring Server 与 CaDS Server 仅需要 web Service API 以及 JMS 消息进行通信,两者不需要文件共享及数据库资源共享。CaDS Server 与 Remote Scoring Server 之间的网络架构及通信机制如下图所示:
图 3. CaDS Server 与 Scoring Server 之间的通信
回页首
在 CaDS 6.0 release 中,CaDS Scoring Server 可以部署在主流的应用服务器如 WebSphere,WebLogic, JBoss。在基本安装结束后,为了应对不同应用服务器的差异,需要较复杂手工部署来完成整个的安装及配置。从 CaDS 7.0 release 开始,Scoring Server 支持更加灵活的部署到 WebSphere Liberty 中。这种架构利用了 WebSphere Liberty 的轻量与灵活,使得 CaDS Scoring Server 的安装与部署变得简单且高效。Scoring Server 与 CaDS Server 一样,支持多种主流操作系统。下面的步骤及截图详细介绍了在 Windows 平台上利用 IBM Installation Manager 来安装 CaDS Scoring Server 的整个过程。
步骤一:启动 IBM Installation Manager ( 图形模式,命令行模式,静默安装均可 )。在 repository 中配置 CaDS 的安装媒体(必选),modeler adapter 的安装媒体(必选)及 decision management 的安装媒体(可选)。
备注 1:Scoring Server 需要 pmml adapter 以及 modeler adapter 来针对 pmml 以及 modeler stream 提供评分服务。使用 Installation Manager 安装时,可以将几个相关的产品同时选中进行安装
图 4. Scoring Server 安装 - 选择软件包
步骤二:阅读并接受软件许可协议。
图 5. Scoring Server 安装 – 软件许可协议
步骤三:配置安装路径
图 6. Scoring Server 安装 – 配置安装路径
步骤四:确认在“Deployment Options”中选择”Easy Deploy”。在这种部署方式下,Scoring Server 会自动部署到其集成的 WebSphere liberty 中。
备注 2:如果 Scoring Server 部署在 WebSphere liberty,则与之对应的 CaDS Server 必须部署在 WebSphere,否则二者无法进行通信。
图 7. Scoring Server 安装 – 部署方式选择
步骤五:配置 CaDS Server 的相关信息,使得 Scoring Server 与 CaDS Server 正确建立连接。
url 是指 CaDS Server 对外服务的 url。
Username 和 password 是指登陆到 CaDS Server 的管理员账户和密码。
Sib endpoint port 是指 CaDS Server 所在的 WebSphere profile 的 sib endpoint port。
备注 3:WebSphere profile 的 sib endpoint port 一般可以在 WebSphere 控制台查到。
图 8. Scoring Server 安装 – 评分服务器配置
步骤六:检查以上配置并点击 install 按钮。安装结束。
图 9. Scoring Server 安装 – 摘要信息
安装好的 Scoring Server 的文件系统如下图所示:
图 10. Scoring Server 安装 – 文件系统
步骤七:启动 Scoring Server on WebSphere Liberty Profile。到 [Scoring Server 安装目录 ]/bin 底下运行”startScoringServer.bat”即可启动 Scoring Server;运行”stopScoringServer.bat”即可停止 Scoring Server。
备注 4:Scoring Server 启动及运行时的日志信息可以查看 [Scoring Server 安装目录 ]/ /wlp/usr/Servers/cdsScoringServer/logs/ScoringServer.log
回页首
下面的章节将重点介绍,在企业级的实时预测分析中如何方便的使用部署在 WebSphere Liberty 之上的 Scoring Service。
目前 Scoring Service 提供了两种从外部调用的方式 Web Service 和 POJO,以便能够快速的把 Scoring 的功能整合到企业级的解决方案之中。
简单来讲,Web Service 是一组分布式的部署在网络上的功能的集合,使用普通的通信协议进行交互。它就像一座桥梁,提供了一套标准的数据结构以及标准的通信协议,以实现应用程序和客户端之间的无障碍交互。而部署在 WebShpere Liberty 上的 IBM SPSS CaDS Scoring Server 正是遵循了 Web Service 的开发标准,并使用远程过程调用(aka.RPC) 的调用方式。
图 11. Web Service 系统框架
部署在 Webshpere Liberty 上的 Scoring Service 仅仅具有实时预测打分以及查询 CADS Server 相关资源配置的功能,不具有对数据资源进行创建和管理的能力,这一点从它所支持的 API 也可以看出:
以下代码示例描述了如何获取 Web Service 客户端:
public static ScoringV2 getScoringService() throws Exception{ ScoringV2 Scoring = null; try{ URL hostURL = new URL("http://[Liberty Scoring Server IP]:[Port]"); URL url = new URL(hostURL,""/Scoring/Services/Scoring.HttpV2""); ScoringServices Service = new ScoringServices(); Scoring = Service.getHttpV2(); JaxwsClientHelper.setEndpointAddress(stub, url.toString()); WSSecurityUtil.addUsernameToken(stub, userObj.getUsername(), userObj.getPassword()); } catch(Exception ex){ throw new Exception(ex.getMessage()); } return Scoring; }
在成功获取里客户端代理类后,就可以来调用 Web Service API 了,示例 getScore() API 如下:
public void testGetScore(){ ScoringV2 = getScoringService(); // 创建 ScoreRequest 实例 ScoreRequest request = new ScoreRequest(); request.setId(ScoringConfigurationId); RequestInputTable inputTable =new RequestInputTable(); RequestInputRow inputRow = new RequestInputRow(); Input input_Age = new Input(); input_Age.setName("Age"); //// 必须与 Scoring Configuration 里边 Input Data 的列名一致 input_Age.setValue("35"); inputRow.addInput(input_Age); Input input_Sex = new Input(); input_Sex.setName("Sex"); //// 同上 input_Sex.setValue("F"); inputRow.addInput(input_Sex); inputTable.addRequestInputRow(inputRow); request.addRequestInputTable(inputTable); ScoreResult result = Scoring.getScore(request); }
POJO(Plain Ordinary Java Object)作为简单的 Java 对象通常可认为就是普通的 JavaBeans,拥有一些属性和一系列的 getter 和 setter 方法,不包含任何业务逻辑。因此 Liberty Scoring Service 所支持的 POJO API 就是以若干 POJO 对象做为参数,其功能与相同的 Web Service API 一致,如下:
客户端代码需要遵循 OSGi 标准开发,最终部署在 WebShpere Liberty 之中的,而 Liberty 是一个基于 OSGI 内核的轻量级 WebShpere 应用服务器。也就是说如果要在调用这个 POJO API,那么对于调用的客户端来讲需要有以下几方面的考虑:
public static IScoringServiceLocal getLibertyScoring() throws Exception{ IScoringServiceLocal libertyScoring; InitialContext context = new InitialContext(); libertyScoring= (IScoringServiceLocal)context.lookup("blueprint:comp/IScoringServiceLocalRef"); return libertyScoring; }
创建一个 POJO 类如下:
public class TestPOJO { private String Age; private String Sex; public void setAge(double age){ this.Age = age; } public double getAge(){ return this.Age; } public void setSex(String sex){ this.Sex = sex; } public String getSex(){ return this.Sex; } }
调用 getScore() POJO API:
public void testGetScore(){ //// 创建 TestPojo 实例 TestPOJO pojo = new TestPOJO(); pojo.setAge(35); pojo.setSex("F"); //// 构建 getScore pojo 参数 List<Object> list = new ArrayList<Object>(); list.add(pojo); Map<String,Collection<?>> scoreInputs = new HashMap<String, Collection<?>>(); scoreInputs.put(BOMClassId,scoreInputs); IScoringServiceLocal libertyScoring = getLibertyScoring(); ScoreResult result = libertyScoring.getScore(scoreConfigurationId, scoreInputs); }
回页首
下面的章节将通过一个银行业的典型场景,展示利用 CaDS 及 Scoring Server 完成的企业级实时预测分析的解决方案。
商业银行作为金融市场的核心主体,一直以来都承受着金融市场交易所带来的压力,尤其随着社会经济的全球化发展,商业银行推出的信贷业务(个人信贷、商业信贷等)层出不穷,信贷利差为银行带来了高额的利润,但随之所引发的信贷风险也备受关注。当客户申请办理信贷业务时,如何判断该客户是否具有偿还能力、最小化信贷风险尤为重要。
幸运的是,通常商业银行拥有大量的历史信贷数据,利用这些历史数据,IBM SPSS CaDS Scoring Server 结合其 IBM SPSS 家族产品 IBM SPSS Modeler,为这类问题提供了完整的解决方案。下面将介绍 IBM SPSS CaDS Scoring Service 如何利用对历史信贷数据对信贷风险进行评估。
IBM SPSS Modeler 提供了许多数据挖掘工具,本例中主要利用 Bayesian 网络根据信贷客户的借贷信息对其贷款偿还能力进行预测。图 1 为信贷风险评估模型。
图 12. 信贷风险评估模型
图 12 展示了 模型预测所需的客户信息,其中包括客户当前的债务情况、收入情况等,字段 loanRisk 为预测目标,表示此次信贷申请的风险。
图 13. 模型的输入数据
将建立的模型部署到 CaDS 存储库中,用以实施信贷风险预测分析。在 IBM SPSS Modeler 客户端上右击该模型,选择 Deployment 这一选项,就可以看到部署模型的详细设置,如下图所示。选择相应的部署类型、评分节点等,点击存储并输入相应的 CaDS 服务器信息和用户认证信息即可。
图 14. 模型部署
图 15. 连接 CaDS 服务器
图 16. 登陆 CaDS 服务器
将模型部署到 CaDS 存储库以后,对模型配置评分,利用评分配置对信贷风险进行实时预测并分析。登陆 CaDS 存储库,右击该模型,选择 Configure Scoring …启动评分配置向导。CaDS 对文件有着严格的版本控制,不同的版本可通过标签进行区分,最新版本标签为“LATEST”。
图 17. 创建模型评分配置
点击 Next 进行数据提供设置,CaDS 支持多种数据提供定义。Data Access Plan 通过 Analytic Data View 提供数据,Data Provider Definition 通过 Enterprise View/Analytic View/Data Provider Defintion 来提供数据,详情请参考 IBM SPSS CaDS 文档,此处不再详述。由于 POJO 仅支持 Analytic Data View,因此此处数据提供设置选择 Data Access Plan,即通过 ADV 提过数据。关于 ADV 的创建和使用,请参考 IBM SPSS CaDS 帮助文档,此处不再赘述。
图 18. 数据提供程序设置
点击 Next 进行输入数据输入顺序调整。用户可根据自己的习惯对输入数据的顺序进行调整,选中需要调整的项,点击 Up 或 Down 进行调整。
图 19. 输入数据顺序
点击 Next 进行返回输入数据设置,选中的项目将在预测完成后在预测结果中返回该项目的输入值。
图 20. 输入数据返回设置
点击 Next 进行返回输出数据设置,选中的项目将在预测完成后在预测结果中返回该项目的输出值。
图 21. 输出数据返回设置
当评分配置完成后,该模型就可以正式投入生产环境中,根据信贷客户数据对信贷风险进行实时预测。当客户提出信贷申请时,银行可根据历史信贷数据及该客户的经济能力等信息,通过 getScore() API 对此次信贷申请风险作出评估,getScore() 中将会指定此次信贷申请客户的详细信息,具体如表 1 所示。关于如何 getScore() 设定客户信息,请参考本文“IBM SPSS CaDS Scoring Server 使用”这一小节的内容。
表 1. 信贷申请客户信息
age | ed | employ | address | income | debtinc | creddebt | othdebt | loanRisk |
---|---|---|---|---|---|---|---|---|
41 | 3 | 17 | Obere Str. 57 | 176 | 9 | 11 | 5 | 1 |
Scoring Server 根剧用户信息对此次信贷风险进行打分。表 2 为所得的评估结果。
表 2. 评分结果
TAN | Markov | MarKov-FS | $BP-loanRisk |
---|---|---|---|
1 | 0 | 0 | 0.818 |
根据评分结果显示,此次信贷的风险较低,说明该客户能够偿还贷款的可信度较高,此时银行可考虑批准此次信贷申请;反之,若得到的评分分值较低,则说明此次信贷具有很高风险,此时银行可选择拒绝此次申请,或是推荐其他更适合此客户情况的信贷产品。
回页首
本文以成熟的 IBM SPSS 预测分析框架为基础,结合最新的 WebSphere Liberty 平台,通过详细的讲解及截图,展示了从环境的搭建到实际的应用,如何构建一个快速的,轻量级的,跨平台的企业级实时预测分析解决方案,对相关的案例和场景有很强的借鉴意义。