- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 564504 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174574
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
搞 AI 建模预测都在用 Python,其实入门用 SPL 也不错+ x2 n/ U6 D6 c. ^9 x% _0 _; y
: q6 U. q1 N, ?2 L# U可用来做人工智能建模预测的工具非常多,比如Python, R, SAS,SPSS等,其中Python由于简单易学、丰富的数据科学库、开源免费等特点备受欢迎。但是对于不太熟悉数据建模算法的程序员来说,使用Python建模还是比较复杂,很多时候拿到数据并不清楚该做怎样的处理,选择什么样的算法。其实,在做数据分析和数据建模时,SPL也是不错的选择,它比Python更简单易用,计算速度也快,交互式的界面对数据分析十分友好,同时还提供自动数据建模功能和一些数据处理以及统计学函数,用起来也很方便。
" U6 d) O% X* V; Y C) o t
- L" P5 |! f" q6 E0 _+ D下面就以一份用户贷款违约预测的数据为例,使用SPL手把手的进行数据建模预测。
' p" s) {% T, |% R) a& s" R% ^0 B4 D8 Z
1. 确定目标,准备数据/ H* ?7 X* Y x' Q% V# p* V
建模预测就是从历史数据中挖掘出规律,然后使用规律对未来可能发生的事情做出预测。这个规律就是一般所说的模型。% h% M! h6 s1 W0 ~4 O# s/ p1 H
& f% x" m* V. q6 c; [- ~
历史数据通常是一张我们俗称的宽表,比如在用户贷款违约预测的例子中历史数据是如下图这样的Excel表格:
. ]5 ]; U' W) x2 h: f- h+ J1 F
) I- ?2 O0 L5 {2 g: w9 [首先,宽表中一定要包括我们想预测的事情,通常称作预测目标,上图中的预测目标就是历史用户的违约行为,也就是图中y那一列,yes表示违约,no表示不违约。预测目标还可以是一个数值,比如产品的销量、售价……,或者是预测属于什么种类,比如预测产品质量是优、良、合格还是差。有时目标在原始数据里就有,可以直接使用,有时目标还需要人工标注。5 ~" {$ b6 ~: ~: D' G% {1 t
% Y2 S5 T3 [; n
除了预测目标外,这里还需要很多信息,如表中的用户年龄、工作,房产,贷款情况……,这里的每一列称为变量,也就是和贷款人将来是否违约可能会相关的信息,原则上能收集到的变量越多越好。例如预测客户是否会购买产品,可以搜集客户的行为信息,购物偏好,以及产品的特征信息,促销力度等;预测汽车保险理赔风险,需要保单数据,车辆信息、车主交通习惯以及历史理赔情况等等,如果是预测健康险还需要一些被保人的生活习惯,身体状况,就医看病的信息;预测商场超市的销售情况,需要历史的销售订单,客户信息,商品信息;预测不良产品,需要生产的工艺参数,环境,原料情况等数据。总之,收集到的相关信息越多,预测效果也会越好。! j3 N% K& m: ^# Z: k( Z3 a
c/ r3 ]+ R5 i* M采集数据时,通常会截取某一段时期的历史数据来制作宽表,比如我们想预测7月份用户的违约情况,可以采集1-6月份的数据来训练建立模型。数据采集的时间范围并不是固定的,可以灵活操作,例如也可以是近1年或者近3个月等等。% N$ ]9 a% X7 \. t" u. e
% v& g- E! H# g6 C' o0 y! H准备好的宽表可以是Excel格式或csv格式,第一行是标题,后面每一行都是一条历史记录。
2 L; ~ r# z* e9 ]3 z5 F9 x/ U2 _* v" J; |8 Z0 a& W
如果企业有建设好的信息系统,那可以找IT部门要这些数据,很多企业的BI系统中可以直接导出这种数据。
: `4 Y* S3 d0 v. L" o/ q9 w0 h; s1 r' w7 u$ d) q
2. 下载软件,配置建模外部库( A5 u$ a$ X& `1 i! Q) @' ^
SPL 在易明建模外部库的配合下可以提供全自动化的建模预测功能。0 S: m+ T5 `& B$ z* [! s( }( H* c3 ?
3 u: K; R; O3 W7 Z2 A, w0 @* l" ]9 L
(1)下载安装集算器(SPL)和易明建模软件
8 K' q" B- _+ s7 A3 a6 ?: v$ E$ _! t集算器下载:
, T i7 ?$ P) M+ j9 D# k“http://c.raqsoft.com.cn/article/1595816810031”+ l5 I( `7 Q3 ?6 I- S j
5 q* H% r2 o- k& V易明建模下载: “http://www.raqsoft.com.cn/download/download-ymodel”/ n# J- R9 {3 B, W7 P. t: Y7 a* H
* R5 V" z. \6 y, w: j) U- f0 q安装集算器和建模软件,并记录安装目录,比如:C:\Program Files\raqsoft\ymodel
! e' q& n2 j/ p/ F; I% P/ M2 F
* d# O: T+ T: ~' [( M2 X
- I- L0 a3 m' V" X/ n: ](2)在SPL中配置外部库 w! ]) P3 D$ w u6 H3 F6 Y; g
(a)复制外部库所需要的文件. B* H) c7 ~. V; E% ~* K
在易明建模的安装目录下找 YModelCil 和 lib 文件夹. _; r. n: T; d
% n8 _; m4 M' l0 S% G3 _9 P" v
5 S {, f4 N5 |' @# {0 d% ]1 b( J1 O* x4 [/ _
然后去这两个文件夹里找到建模外部库所需要的文件,复制到集算器目录(【安装根目录】\esProc\extlib\YModelCil),比如C:\Program Files\raqsoft\esProc\extlib\YModelCli。# a5 }$ }. b$ f- `1 p4 D7 l
- G4 K" s$ Q* P3 Z {8 F7 q W+ y建模外部库所需的文件有:1 _% o* t, F2 M7 b5 b' ]7 W# c
& ]* S* [6 C$ g. s" d( U! w, p
1>易明建模目录的YModelCil中含有以下jar和xml
4 R' w) H& [# {" v, l# ~1 f- y4 @: M3 t m
ant-1.8.2.jar& m6 [! }( W; z( \# p, w6 b
commons-beanutils.jar$ ^1 l: t1 @/ p% r
commons-lang-2.6.jar ]; R n& }+ E! b" T
ezmorph-1.0.2.jar
$ b( ^8 E/ g! ^' k$ Njson-lib-1.1-jdk13.jar& f2 {) x7 z( O: k: N5 s$ T+ o
raq-ymodel-cli-2.10.jar
6 ^3 b- U# D$ ^# N8 Auserconfig.xml, ?- l+ F7 ?, d1 O+ [
* q; u1 R! j( U+ C
2>易明建模的lib中含有以下jar
* V5 K7 N" Z; j3 K( f2 W% u, Z5 G+ t% h& U. }4 R* \
commons-io-2.4.jar2 k" H. v5 a* e
esproc-ext-20211104.jar
8 O* n! k4 }4 m j2 ^fastjson-1.2.58.jar
# j }5 Q6 S/ k- U! tgson-2.8.0.jar8 i' ~: V' }* S% g3 V
jackson-annotations-2.9.6.jar
4 i, Q, v! C! yjackson-core-2.9.6.jar
& e7 M5 Y0 P2 Yjackson-databind-2.9.6.jar# z" S ~; Q7 v3 s3 G$ I ]
jackson-databind-2.9.6-sources.jar
1 W% F _- Q* n; q& ojackson-dataformat-msgpack-0.8.14.jar
# _1 P$ q# ?( n# l) fmining.jar# t" H4 o& N( ^% V5 ?
msgpack-0.6.12.jar
/ G: ~1 t: h, R8 O! lmsgpack-core-0.8.16.jar: a- f1 @7 L$ g( z; j: I
* \2 l p/ g3 `1 z- T1 I(b)设置userconfig.xml文件参数
6 \& m4 s$ c. G在集算器目录esProc\extlib\YModelCil下的userconfig.xml文件中设置参数
5 T* y' z/ a0 N/ Q- J/ D1 X- [) a" | H$ H7 ` R0 N+ o# I9 p4 T
名称 参数说明
V+ h% r: @6 @& o4 {5 ~$ a, zsAppHome 易明建模的安装目录3 F. {& h: ~0 K. t: \
sPythonHome 易明建模目录的Python路径 Windows: raqsoft\ymodel\Python37 Linux: raqsoft/ymodel/Python37/bin/python3.7
9 P3 M8 e( ^% I0 N! u& I1 AiPythonServerPort Python服务网络端口
$ \+ v7 K% v5 Y$ n) k) `8 Y5 p# LiPythonProcessNumber Python进程数
, K. i3 @6 H! s8 P, I" XbAutoDecideImpute 是否智能补缺
' v& I* R6 g" o% Z$ Y1 x% t' e6 fiResampleMultiple 重抽样次数9 N M) W; T& G
其中必须要配置的参数为sAppHome和sPythonHome,其他参数可以采用默认值,有需要再进行修改。比如可以配置参数如下,加粗部分是必须要配置的,根据自己的安装路径。
2 ^# G% J6 c+ V! _" ~! K( a( ^! Q+ K8 H% I
<?xml version="1.0" encoding="UTF-8"?># p9 m/ _: s) g
<Config Version="1">
# ~4 c& G c% V3 Y1 \ g+ X' F <Options>
5 A! W! H+ L5 J: N' ]" h9 Q <Option Name="sAppHome" Value="C:\Program Files\raqsoft\ymodel"/>. S! p2 f; Z, A/ U+ |& b" W# h
<Option Name="sPythonHome" Value="C:\Program Files\raqsoft\ymodel\Python37\python.exe"/>
; G! |" Y& U! P* z7 M, y# X, d <Option Name="iPythonServerPort" Value="8510"/>
) Z: g9 V5 ~3 S) M% N |4 X3 G' U; S <Option Name="iPythonProcessNumber" Value="2"/>
! V+ z q. K1 H K' v2 @) F- K <Option Name="bAutoDecideImpute" Value="true"/>: ? j t" \; \5 Z, J1 R& a
<Option Name="iResampleMultiple" Value="150"/>
9 d4 U3 d/ [6 P1 F8 y </Options>7 Z T5 `5 s% `, i
</Config>, O0 r9 v! a( |, n' f2 v* ^; ^
18 ?$ q) z5 P: I8 v
2
( d) a8 ]4 v" \1 w% j+ ~% f3& Y D0 r [, c
4: x' _( O2 u+ G3 _
5
8 t. x/ D: b4 u, |- @6: y& T/ @; z; c) q# \+ S3 ^: D
7
: Q! K! k; z) X2 n$ h3 i- W87 S/ v: b' z3 s _
91 b v4 _7 W9 E
10
: j4 U8 \- l6 m3 l' T. _( f11
: V" j! A( B' t% t$ T其实,从这里可以看出,易明建模也是基于Python写的,但它将Python算法做了封装后,程序员就不必再理解算法的数学原理和运行细节了。/ \& ^# R& S, f
" ?+ }* v, U: M9 V4 }
(c)SPL环境配置+ v+ ~5 x! z9 \: N7 ~
1>. 配置外部库4 C2 D/ A7 H: O' t: c! b
8 h) `# _. M1 a7 g( T% g打开SPL,在选项菜单里,外部库选择里勾选YModelCli,使其生效。外部库的路径为第(1)步骤中集算器YModelCli的安装路径。
" C$ W0 q9 }! N. ?! [2 T- v& w; z- n/ C) Y- J5 J. ]
, o. K. t4 i0 J4 S- _/ h' R# j9 e+ a5 y' D% v+ X& K
在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置外部库路径和名称。( p5 I1 e& d' g
8 X/ s* D# [" W0 E( q: B0 H
<extLibsPath>外部库路径, q; u% o9 X% l2 w2 `* W8 d3 L
/ z* O( v9 r' y+ ?6 b) P
<importLibs>外部库名称(可多个)' P4 u: `) P# q
8 Z0 V3 {) [6 v8 f3 P4 X2>. 线程数设置( O1 H2 A1 y4 Y5 z, {- i+ L
! G4 |- o' t' N/ |9 u! O9 p
如果有并发预测,还需要在SPL设置“最大并行数”,也就是线程数。设置多少用户根据需求和机器情况自行设定。
$ T: B7 @) r$ c/ X% |* f$ ~
* _2 _% A; N$ w/ p5 F
0 \1 d. ^: @( ?+ b7 L; ^! }: V' D2 g
在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置。% n6 B) @- K2 f5 i
8 B. R+ ~9 S# o* W0 y' x% G3 }2 P% g<parallelNum>最大并行数
2 C c' ]3 f3 X: }" x
- K. n ]2 m: U2 G' |到此,环境配置完成。
2 a5 N2 w- t8 ?' ]$ q% a4 x+ ?, T2 X; O7 z5 _% @2 a
3. 建模和预测
+ \9 W- [" o9 o0 N" p(1)加载数据+ h- w9 @% ]3 G5 V3 X8 s) N! d5 S% {
SPL能支持csv,excel或数据库中的数据用于建模,这里以csv为例,其它数据源类似。5 Z( f' L: Y; [/ e. ] M: i
4 x, q7 y/ ], r3 P4 U! `
设有一个贷款违约数据表如下,需要建模来预测新用户是否会发生违约行为。
8 \: B% f' G0 G- b
, k' M% ~0 P% p6 A0 O0 t2 y( R1 f8 I5 B* ~* D
4 a2 q% {: k: a! D& x1 [, y4 z2 [* n文件命名为bank-full.csv;
4 Q4 s- G2 ~% o7 l# T: W
% X" ?7 D# O. ~& H/ G% i$ E1 wA' O, u$ F6 i6 G. q1 @/ w
1 =file("bank-full.csv").import@tc()8 ?+ m4 q5 C1 z
2 =ym_env()4 o' M% L- F7 V" Q }
3 =ym_model(A2,A1)* s6 O0 P- ]+ }! N; W
A1 导入建模数据,读成序表
; f9 o2 @4 c. w( Y4 c4 n9 B
) h, p. i- W9 R2 Y: k8 w9 {; ]2 u+ x! c+ Z3 p
4 l6 v7 `5 D2 ?. S' YA2 初始化环境,执行A2后会在易明建模的安装目录下生成store目录及子目录用以保存数据及结果文件。
+ V! h8 D4 S4 p: v; U8 Q7 x9 G0 D2 l- e; j4 A' q. u0 W
A3 加载建模文件,生成md对象/ T5 V9 R' X, }8 t: C) j
9 I9 |& {; S Y! m(2)目标变量设置和变量统计0 b [7 ^9 u$ ?
数据加载进来后要设置目标变量
6 z( f8 k+ H2 z* V7 `7 p" Q- s% L1 A3 X8 {- R8 K
A
0 \9 D+ R4 ~% `5 J) P… …
0 ?; e$ f7 l3 k+ I$ T+ J4 =ym_target(A3,"y")
4 Q* n) v. n8 g9 M5 =ym_statistics(A3,"age")! b) W& R* P) ?1 c
6 =A1.fname().(ym_statistics(A3,~)); S$ ^& }" j$ h, P
A4 表示将字段“y”设置为目标变量,目标变量可以是二值变量或数值型变量。
! P9 a7 w: g9 p3 c3 }
# j" P& H+ g6 c( U+ g8 vA5 查看某个变量的统计指标,比如 “age”,返回值中可以看到缺失率,最大最小值,异常值,数据分布图等参数。
$ d, d5 U7 N* B6 i! M) B( y( z9 ]; y
: f: ]: I: k- }2 d$ j: a% e* q
& a" | M5 R& k( z: Z( bA6 循环变量名查看所有字段的统计信息,返回包含所有字段的统计信息二级序列。
% ?" b5 W$ w" B/ ?5 G+ }( m) l# _8 ^, W' @' i9 h1 H! G
. K* E; T" C }3 R J, I/ b, p
(3)建立模型和模型表现4 h- V3 `! p5 j# b4 u+ ?
A5 X5 d. |, z Q+ u% M& W6 S
… …& D. t7 f: D" z T
7 =ym_build_model(A3)! C: y" D8 i$ x
8 =ym_present(A7)( h, O! ~, H7 S1 j
9 =ym_performance(A7)
/ s4 x% v5 l v6 h10 =ym_importance(A7).sort@z(Importance)
8 S2 c/ f8 @5 }. _8 o7 j( O8 ~0 rA7 使用建模函数建立模型,执行后在后台会进行全自动化数据预处理和建模过程,此过程会耗费一些时间,时间长短取决于数据量。结果返回pd模型对象。
% v0 U( T8 \0 i* l! L' q( t8 L
) L/ c% {" ]* R4 [模型建好后,可以调用pd模型对象查看模型信息、模型质量和重要度。 a7 d f/ q4 e. N. z( Z
7 [" Y5 |1 L, d" R6 x4 M g
A8 返回模型AUC值及参数
1 n8 ?! ^* J8 S- X8 \, `( p: N. w( W$ C+ H& k) o- c
. l3 S) O* L1 b8 T
$ w$ \7 n( w( ^5 ~) C$ p
A9 返回多种模型指标和图形,诸如AUC,ROC, Lift……
& V1 g+ I& f0 w- d Q @% a% r* ]* X$ M$ j2 f
1 X5 v# {* ]* n- c3 S1 R# ~! L3 J% L4 |2 Z( V
比如点击A9的第6条记录的Value,然后点击右上角“图形浏览”图标,数值字段选择“Lift”,就可以查看Lift曲线
2 A$ i- `6 R- p2 C9 e# N0 a
7 R5 ~/ F: Q5 q! A( y( X: ~; d J) M: ?. Z- T [+ g! u
0 ^) z) n8 |" k5 U# I3 t+ _" \
A10 会返回每个变量对目标变量的影响程度并且按照重要度降序排列。数值越大对目标变量的影响程度越大。降序排列分析起来更加直观。% x9 y% k& c! W5 G6 n. l
4 O) [. g+ g3 _: n2 `
2 T! u' v( {% e5 `
1 t2 }( R/ W9 g4 j* x* P) ](4)保存模型
1 Q/ M3 J2 [0 \, D, uA
4 @: x- \( O6 D5 r9 B4 ?- Y… …7 v8 w. A1 {( `( d
11 =ym_save_pcf(A7,"bankfull.pcf")* @6 ^6 A @4 f8 b
12 =ym_json(A7)
; a: j! a& H6 ?* c13 >ym_close(A2)$ b G4 V- I9 m8 u" z
A11 将模型保存为”bankfull.pcf”,默认保存路径为[sAppHome]/store/predict。
. H) E3 P6 `& F0 p8 j' d; I6 M; f D. d) v, m
A12 将模型信息以json串形式返回。json内容详解可参考在线文档《json参数说明》5 w1 _7 h% {- T/ c
2 T& |- \6 c: X3 J
A13 关闭环境,释放资源。( T" u8 S( P8 F
1 r# w1 R$ L7 E: q(5)预测/ N9 z5 ?$ h9 I0 p$ L! ?$ z: B1 X
预测之前需要有pcf模型文件和预测数据集6 K3 X" u8 j( \) W# E5 H+ k
j- A2 K7 Y- {1 U- ^A1 {" a! t- i( k
1 =ym_env() p3 l7 {+ `/ O$ t& M% K; J: c
2 =ym_load_pcf("bankfull.pcf")
" k+ z6 @/ c6 G0 c9 K, m3 =file("bank-full2.csv").import@tc()
* L" A8 d" g$ M: n5 }, L4 =ym_predict(A2,A3)
: ?8 W4 ?& v/ W3 V! ]' H5 =ym_result(A3)
; D' Y7 F. @) Q2 ]4 F( x6 =file("bank-full_result.csv").export@tc(A4)
) Q( c5 O9 p7 h1 ? ]" v7 Z* i7 >ym_close(A1)& a, e; b; l! J3 G3 ]# {1 Q# m
A1 初始化环境
& u2 G9 i2 M0 h1 x/ x/ q
6 x& H' w* w0 l4 U0 c F% L8 QA2 导入pcf模型文件,生成pd模型对象。
0 G7 T' y" T7 x/ o7 }4 `$ k/ p& a. I" J- {9 [+ u9 [ q, J
A3 导入预测数据集,读成序表; C$ |$ _5 c8 p
: Y: {! G5 a& U- `A4 对序表数据执行预测。除序表外,还支持游标、csv文件和mtx文件,比如A4也可以直接写成ym_predict(A2,“bankfull2.csv”)1 u5 z9 `; `+ l; X
% p4 `- b! s d9 KA5 获取预测结果
9 p" S4 v* P3 n6 o! f, r- r+ \. \9 P l
) c+ y0 Q- o# _0 T( T- c) n w( G/ t* DA6 将预测结果导出,在本例中预测结果为用户发生违约行为的概率。
H7 x) ~2 @( Z0 }1 D
. |9 {; q; h2 u3 v/ i% g; G1 h
8 K9 D. j8 Y- f$ d! l& F! [' T: a% hA7 关闭环境,释放资源
5 E! l" l( C* `2 [
9 @3 Z+ @$ g! @; D2 e+ v+ ?/ ^; r4. 集成调用
" U/ y6 M, B8 T* S( b+ r$ _, [; \SPL还可以被上层应用集成调用,比如SPL可以嵌入到Java应用,详情请参考:http://c.raqsoft.com.cn/article/1615765346560
' o1 w: L" m8 e# e
3 |4 y# v9 v' v. [$ N8 L: {总结
W" p4 Y4 ~* V9 P. Y$ Q6 p使用SPL配合易明建模来实现数据建模预测非常简单,程序员不需要理解深奥的数学原理,只要准备好训练数据,简单几步就可以完成数据建模任务了。而且还可以轻松地把这个功能嵌入到应用程序中,高深的人工智能不再是少量数据科学家的专利。! H2 r. i# t& u, z/ N4 m
; C+ j2 r* n9 F6 n: C: o+ s$ e' N5 l
SPL本来就超强的数据处理能力,能更方便地完成人工智能算法之前的数据准备工作,同时也提供了丰富的数学函数: SPL Math 例程,有些数学基础想自己实现建模过程的同学也可以进一步研究。% ]4 d3 y$ ]: b
————————————————7 a; Q- T+ d3 R7 j% c$ y! @( s
版权声明:本文为CSDN博主「java李杨勇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
# a- G7 F9 @( W9 o8 w* b原文链接:https://blog.csdn.net/weixin_39709134/article/details/126698462
6 S; r+ `1 O2 h' K
0 k4 O* C, ]$ B5 w8 ]% F5 H$ C1 D8 D; ~; S0 g' P% I5 h* [! \
|
zan
|