搞 AI 建模预测都在用 Python,其实入门用 SPL 也不错
可以用来做人工智能建模预测的工具非常多,比如Python, R, SAS,SPSS等,其中Python由于简单易学、丰富的数据科学库、开源免费等特点备受欢迎。但是对于不太熟悉数据建模算法的程序员来说,使用Python建模还是比较复杂,很多时候拿到数据并不清楚该做怎样的处理,选择什么样的算法。其实,在做数据分析和数据建模时,SPL也是不错的选择,它比Python更简单易用,计算速度也快,交互式的界面对数据分析十分友好,同时还提供自动数据建模功能和一些数据处理以及统计学函数,用起来也很方便。
下面就以一份用户贷款违约预测的数据为例,使用SPL手把手的进行数据建模预测。
1. 确定目标,准备数据
建模预测就是从历史数据中挖掘出规律,然后使用规律对未来可能发生的事情做出预测。这个规律就是一般所说的模型。
历史数据通常是一张我们俗称的宽表,比如在用户贷款违约预测的例子中历史数据是如下图这样的Excel表格:
首先,宽表中一定要包括我们想预测的事情,通常称作预测目标,上图中的预测目标就是历史用户的违约行为,也就是图中y那一列,yes表示违约,no表示不违约。预测目标还可以是一个数值,比如产品的销量、售价……,或者是预测属于什么种类,比如预测产品质量是优、良、合格还是差。有时目标在原始数据里就有,可以直接使用,有时目标还需要人工标注。
除了预测目标外,这里还需要很多信息,如表中的用户年龄、工作,房产,贷款情况……,这里的每一列称为变量,也就是和贷款人将来是否违约可能会相关的信息,原则上能收集到的变量越多越好。例如预测客户是否会购买产品,可以搜集客户的行为信息,购物偏好,以及产品的特征信息,促销力度等;预测汽车保险理赔风险,需要保单数据,车辆信息、车主交通习惯以及历史理赔情况等等,如果是预测健康险还需要一些被保人的生活习惯,身体状况,就医看病的信息;预测商场超市的销售情况,需要历史的销售订单,客户信息,商品信息;预测不良产品,需要生产的工艺参数,环境,原料情况等数据。总之,收集到的相关信息越多,预测效果也会越好。
采集数据时,通常会截取某一段时期的历史数据来制作宽表,比如我们想预测7月份用户的违约情况,可以采集1-6月份的数据来训练建立模型。数据采集的时间范围并不是固定的,可以灵活操作,例如也可以是近1年或者近3个月等等。
准备好的宽表可以是Excel格式或csv格式,第一行是标题,后面每一行都是一条历史记录。
如果企业有建设好的信息系统,那可以找IT部门要这些数据,很多企业的BI系统中可以直接导出这种数据。
2. 下载软件,配置建模外部库
SPL 在易明建模外部库的配合下可以提供全自动化的建模预测功能。
(1)下载安装集算器(SPL)和易明建模软件
安装集算器和建模软件,并记录安装目录,比如:C:\Program Files\raqsoft\ymodel
(2)在SPL中配置外部库
(a)复制外部库所需要的文件
在易明建模的安装路径下找到下列jar包,复制到外部库路径比如“C:\Program Files\raqsoft\esProc\extlib\Ym2Cli”
(b)SPL环境配置
1>. 配置外部库
打开SPL,在选项菜单里,配置外部库路径,勾选易明建模外部库,重启后生效。
在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置外部库路径和名称。
<extLibsPath> 外部库路径
<importLibs> 外部库名称(可多个)
2>. 线程数设置
如果有并发预测,还需要在SPL设置“最大并行数”,也就是线程数。设置多少用户根据需求和机器情况自行设定。
在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置。
<parallelNum> 最大并行数
到此,环境配置完成。
3. 建模和预测
(1)用易明建模软件生成mcf文件
在用SPL建模之前,需要借助易明建模软件来完成数据加载,目标变量设置,变量选择,模型配置等内容,并将其保存为mcf文件。易明建模的使用方法请参考相关说明:文档总览 (raqsoft.com.cn)
设有一个贷款违约数据表如下,需要建模来预测新用户是否会发生违约行为。
文件命名为bank-full.csv。
首先使用易明建模将数据导入,选择“y”为目标变量(预测目标),保存为bank-full.mcf。
(2)导入mcf文件,建立模型
打开SPL,导入配置好的mcf文件就可以建模了
A |
|
1 |
=ym2_env("C:/Program Files/raqsoft/ymodel") |
2 |
=ym2_mcfload("bank-full.mcf") |
3 |
=ym2_model(A2) |
4 |
=ym2_pcfsave(A3,"bank-full.pcf") |
A1 初始化环境。ym2_env(appPath, configFile, pythonPath),appPath:易明建模的安装路径,configFile: userconfig.xml配置文件。默认的情况下,后两个不用设,
A2 导入配置好的mcf文件
A3 建立模型
A4 保存模型文件
(3)查看模型表现
A |
|
… |
… |
5 |
=ym2_pcfload("C:/Users/29636/Desktop/tmp/bank-full.pcf") |
6 |
=ym2_result@p(A5) |
7 |
=ym2_result@r(A5) |
8 |
=ym2_result@i(A5) |
9 |
>ym2_close() |
A5 导入模型文件
A6 返回多种模型指标和图形,如Gini,AUC,ROC, Lift……
比如点击A6的第6条记录的Value,然后点击右上角“图形浏览”图标,数值字段选择“Lift”,就可以查看Lift曲线
A7 返回模型算法信息和参数
A8 返回每个变量对目标变量的影响程度,简称重要度
A9 关闭建模服务,释放资源
注:A6,A7,A8的内容也可返回为json串格式,在选项后加j即可,例如“ym2_result@pj()”
(4)预测
预测之前需要有pcf模型文件和预测数据集
A |
|
1 |
=ym2_env("C:/Program Files/raqsoft/ymodel") |
2 |
=ym2_pcfload("bank-full.pcf") |
3 |
=ym2_predict(A2,"bank-full.csv") |
4 |
=ym2_result(A3) |
5 |
=file("bank-full_result.csv").export@tc(A4) |
6 |
>ym2_close() |
A1 初始化环境
A2 导入pcf模型文件,生成pd模型对象。
A3对csv文件执行预测。除csv外,还支持txt、游标、序表和mtx文件
A4 获取预测结果
A5 将预测结果导出,在本例中预测结果为用户发生违约行为的概率。
A6 关闭环境,释放资源
4. 集成调用
SPL还可以被上层应用集成调用,比如SPL可以嵌入到Java应用,详情请参考:
https://c.raqsoft.com.cn/article/1647044897121#toc_h2_3
总结
使用SPL配合易明建模来实现数据建模预测非常简单,程序员不需要理解深奥的数学原理,只要准备好训练数据,简单几步就可以完成数据建模任务了。而且还可以轻松地把这个功能嵌入到应用程序中,高深的人工智能不再是少量数据科学家的专利。
SPL本来就超强的数据处理能力,能更方便地完成人工智能算法之前的数据准备工作,同时也提供了丰富的数学函数:SPL Math 例程,有些数学基础想自己实现建模过程的同学也可以进一步研究。
英文版:Although AI modeling and prediction in Python is popular, SPL is also a good alternative to get started (raqsoft.com)