- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 567286 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 175409
- 相册
- 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 也不错
, _8 l& W/ E) q7 P, g: I8 o4 B+ D
可用来做人工智能建模预测的工具非常多,比如Python, R, SAS,SPSS等,其中Python由于简单易学、丰富的数据科学库、开源免费等特点备受欢迎。但是对于不太熟悉数据建模算法的程序员来说,使用Python建模还是比较复杂,很多时候拿到数据并不清楚该做怎样的处理,选择什么样的算法。其实,在做数据分析和数据建模时,SPL也是不错的选择,它比Python更简单易用,计算速度也快,交互式的界面对数据分析十分友好,同时还提供自动数据建模功能和一些数据处理以及统计学函数,用起来也很方便。. {# u8 ~: W( e1 e& O
' y: V; { t# T
下面就以一份用户贷款违约预测的数据为例,使用SPL手把手的进行数据建模预测。5 @, @/ x) ]& h" _& ^- ?
- y5 w# [" O7 b3 l9 r
1. 确定目标,准备数据
# B1 R8 a: S) x* Z5 y建模预测就是从历史数据中挖掘出规律,然后使用规律对未来可能发生的事情做出预测。这个规律就是一般所说的模型。
) z5 e5 G% b1 `! o7 A7 k9 W; K$ \1 I; w: [. [3 b. F
历史数据通常是一张我们俗称的宽表,比如在用户贷款违约预测的例子中历史数据是如下图这样的Excel表格:
( _2 s: b" w3 a2 L2 Z' V9 t& h* N
" i% F4 x: R& t# `首先,宽表中一定要包括我们想预测的事情,通常称作预测目标,上图中的预测目标就是历史用户的违约行为,也就是图中y那一列,yes表示违约,no表示不违约。预测目标还可以是一个数值,比如产品的销量、售价……,或者是预测属于什么种类,比如预测产品质量是优、良、合格还是差。有时目标在原始数据里就有,可以直接使用,有时目标还需要人工标注。& z1 n# P$ o' d5 P7 _7 \, a
) Y6 `9 t) N f& r$ n除了预测目标外,这里还需要很多信息,如表中的用户年龄、工作,房产,贷款情况……,这里的每一列称为变量,也就是和贷款人将来是否违约可能会相关的信息,原则上能收集到的变量越多越好。例如预测客户是否会购买产品,可以搜集客户的行为信息,购物偏好,以及产品的特征信息,促销力度等;预测汽车保险理赔风险,需要保单数据,车辆信息、车主交通习惯以及历史理赔情况等等,如果是预测健康险还需要一些被保人的生活习惯,身体状况,就医看病的信息;预测商场超市的销售情况,需要历史的销售订单,客户信息,商品信息;预测不良产品,需要生产的工艺参数,环境,原料情况等数据。总之,收集到的相关信息越多,预测效果也会越好。5 \& p% a) W& i2 T) H
E' h9 I3 S- n4 Y& j
采集数据时,通常会截取某一段时期的历史数据来制作宽表,比如我们想预测7月份用户的违约情况,可以采集1-6月份的数据来训练建立模型。数据采集的时间范围并不是固定的,可以灵活操作,例如也可以是近1年或者近3个月等等。
# e9 @8 T6 N, j, F* S- O% L9 t9 a
6 R. O' P# z+ ^) {$ y1 Y准备好的宽表可以是Excel格式或csv格式,第一行是标题,后面每一行都是一条历史记录。
4 x) m5 D+ y* |8 P) Z/ ^
8 o# |( g0 B, r& g) X3 L0 H1 q! y, I如果企业有建设好的信息系统,那可以找IT部门要这些数据,很多企业的BI系统中可以直接导出这种数据。9 o, b0 r8 y+ `' e: P9 I
5 _- i+ [( w1 I J* u3 {. @4 U
2. 下载软件,配置建模外部库6 C" B3 c$ x, ?: t! K0 B( a
SPL 在易明建模外部库的配合下可以提供全自动化的建模预测功能。+ N/ v* ~( {2 I$ ~7 s& Y
8 `4 `4 q. H: H% \
(1)下载安装集算器(SPL)和易明建模软件
a K. b3 R6 y, @集算器下载:
/ |) {& e/ F2 c# ^5 L) j“http://c.raqsoft.com.cn/article/1595816810031”
. C! ?. A% X U6 `% B7 O# A3 a' n3 H" a2 x
易明建模下载: “http://www.raqsoft.com.cn/download/download-ymodel”
- q% [! f: l* x0 x7 w+ v
! l2 c' i: z) v+ D) X2 J安装集算器和建模软件,并记录安装目录,比如:C:\Program Files\raqsoft\ymodel+ |3 `$ @( y' K: J. d$ Z
9 L" d& c3 c0 a# Y: o/ v" q; G3 e2 m
$ B" s3 m' \7 [% x9 Q* x
# M7 S8 N8 N2 G& `(2)在SPL中配置外部库
( S) E4 O4 B$ W! _8 s: N/ d7 U(a)复制外部库所需要的文件/ U0 ^& f3 ` A/ B7 h
在易明建模的安装目录下找 YModelCil 和 lib 文件夹
/ o2 K5 A* r# G
9 u. e8 s& W* S
8 H2 f" [; O1 E6 s$ w, {+ r! {" ?- s5 g9 B" n' G: b9 R
然后去这两个文件夹里找到建模外部库所需要的文件,复制到集算器目录(【安装根目录】\esProc\extlib\YModelCil),比如C:\Program Files\raqsoft\esProc\extlib\YModelCli。 r& n& P" q$ y0 X( ~* A
4 k S) Y. x+ t) H( S2 ?
建模外部库所需的文件有:
8 ?+ x+ V/ @- O' e% d* G; R y* n6 [7 I L- S0 ^1 I) U- P
1>易明建模目录的YModelCil中含有以下jar和xml
. k a& R' |* Y1 x1 @! Y9 A
* C |) U' A: Kant-1.8.2.jar
$ N/ L: X ?" Hcommons-beanutils.jar
+ G; j* ^ [( j, |commons-lang-2.6.jar& E, P% f$ G( S, m+ }
ezmorph-1.0.2.jar
$ @( K7 q2 J3 X1 J6 S5 h+ mjson-lib-1.1-jdk13.jar# z* Y) \& [: q/ o4 H8 Z4 y
raq-ymodel-cli-2.10.jar- J- H! Y/ j; h' M6 |7 t
userconfig.xml3 q. c9 H9 N4 W( P! a
7 U9 B, ]3 H1 k9 r6 C2>易明建模的lib中含有以下jar% y. a& F% F% n& d
9 p( c! {/ A( Y: o0 N# wcommons-io-2.4.jar
R" J1 i6 z' Z* z7 y; n6 G7 lesproc-ext-20211104.jar
2 K! F0 ]; S8 X7 O; }) I' rfastjson-1.2.58.jar
! z' v% k" A. M6 M. d1 Zgson-2.8.0.jar2 f. Y, N! `6 b
jackson-annotations-2.9.6.jar* G8 d: O4 Q" Q0 Q
jackson-core-2.9.6.jar" B' s1 n$ _6 }; O0 S
jackson-databind-2.9.6.jar2 _9 W0 [/ K g' h
jackson-databind-2.9.6-sources.jar- c" u1 F9 ~/ {0 Q9 N: u
jackson-dataformat-msgpack-0.8.14.jar
& W0 l2 }% u' mmining.jar
9 F( F) G$ g* h* i5 V' m; o( I/ zmsgpack-0.6.12.jar
7 { p1 O, q( _. O, F3 O% rmsgpack-core-0.8.16.jar
- ^/ J/ t% P5 B4 ~! F- b
2 X" p8 N# v# y q1 S7 a+ C; z(b)设置userconfig.xml文件参数6 i$ e* q8 o7 N2 P( I6 Q, i! a
在集算器目录esProc\extlib\YModelCil下的userconfig.xml文件中设置参数
7 }$ _! ?7 w5 |4 ]
& O8 N6 L! W/ C R& n! d8 j }8 Y名称 参数说明
& p7 Z% j! Z5 ]( f* B: qsAppHome 易明建模的安装目录. m0 y4 z7 z x- i1 @; B$ @9 u' r
sPythonHome 易明建模目录的Python路径 Windows: raqsoft\ymodel\Python37 Linux: raqsoft/ymodel/Python37/bin/python3.7! W E) h+ M: N6 `2 C
iPythonServerPort Python服务网络端口
8 E" G" }3 n6 X1 [- }& uiPythonProcessNumber Python进程数
0 e/ k* ~& F- u, X; P% CbAutoDecideImpute 是否智能补缺" g" w% J' u: g% f1 j2 B
iResampleMultiple 重抽样次数8 C( S* _' a! F6 \6 G
其中必须要配置的参数为sAppHome和sPythonHome,其他参数可以采用默认值,有需要再进行修改。比如可以配置参数如下,加粗部分是必须要配置的,根据自己的安装路径。. j8 Q7 L, M0 ^% A) J
2 X7 |* y' }9 w5 S, u2 g7 X
<?xml version="1.0" encoding="UTF-8"?>, ]3 d; M0 y' G5 ^, Z
<Config Version="1">3 [$ ?. I% H1 ]2 E# w1 H
<Options>
3 o: k5 q$ ^3 m2 O2 V <Option Name="sAppHome" Value="C:\Program Files\raqsoft\ymodel"/>8 _: M8 R2 u' b+ @$ H
<Option Name="sPythonHome" Value="C:\Program Files\raqsoft\ymodel\Python37\python.exe"/>4 t' u/ Q* s$ d! {2 u% |. a, p% q1 w
<Option Name="iPythonServerPort" Value="8510"/>
, E4 M- D/ _; t8 Y <Option Name="iPythonProcessNumber" Value="2"/>4 K; u8 y- o2 E8 I/ {: c, j% q
<Option Name="bAutoDecideImpute" Value="true"/>& `" T% F, I& \$ Y1 m/ Q
<Option Name="iResampleMultiple" Value="150"/>
9 Y9 i4 G% l$ d </Options>
! h" z4 @; V& E1 l</Config>+ | Q" Z! M; V# V; K, N* j
1* F! I6 j8 y4 T+ _2 q
2
/ M7 G" ^* I" [& I( n' p( n3
. e( |5 A0 W' L4
7 H d' O: k& P& U4 c) K5
) _9 E8 h& }* V/ R- n; V, M6( m! _1 i. Y3 `9 h: H. c3 g
7
) Y0 W; ~- h6 [8 A5 D5 c" Y8 X
94 O' M0 Z8 u" e& U2 f; z
10$ Y0 u, Y8 P- I, n% \- l$ [
11
: r" W# x- R$ B; o7 V( Y4 v其实,从这里可以看出,易明建模也是基于Python写的,但它将Python算法做了封装后,程序员就不必再理解算法的数学原理和运行细节了。4 P+ E \- x! ?( |5 w. \6 r) ~
) g4 a+ ]7 U3 S6 B/ o, S! C7 w) i(c)SPL环境配置3 K8 [* x% _9 }5 o. W
1>. 配置外部库& z' I2 C. }" j% W) ?3 p
7 h) {9 A+ n3 q4 {: j+ a7 e1 s+ n打开SPL,在选项菜单里,外部库选择里勾选YModelCli,使其生效。外部库的路径为第(1)步骤中集算器YModelCli的安装路径。
( y- }9 ~; t- U# Y/ F! g: W. j) X
- O' A. C* Z1 k7 K6 b! C
# s# L5 ~5 S$ h) X; l在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置外部库路径和名称。
9 R. j8 [- o6 A6 W" s: ^
9 f# K+ o) C7 o2 T% ?) \. v! n- [5 P3 C<extLibsPath>外部库路径
* g X r8 H& y# O7 W4 f; d( W7 e5 A) s+ A9 ~
<importLibs>外部库名称(可多个)* t% X- M; c4 c' A& a" k) h
$ F0 |, |) z# D5 O# }! R% o9 y2>. 线程数设置
# k& W! P$ l2 m/ B1 F; R& i. y7 J4 F0 T5 e3 c
如果有并发预测,还需要在SPL设置“最大并行数”,也就是线程数。设置多少用户根据需求和机器情况自行设定。% \! U4 v; ?( Y# [* f A4 A* R; C
$ U3 M* F. ^: G" \6 o. P) c0 i p
4 O W& \/ \' n# e- |8 y" }0 m
6 A+ e* ]/ N% k- A1 o, r5 W& {1 n* l在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置。
+ c' d0 F X$ v' q) s3 o# \( p+ D/ I& Q# o, Z0 \6 ~
<parallelNum>最大并行数' S/ a4 l F/ Z6 |% P# d6 P4 J% G5 E
7 ?7 ]3 _5 z, M/ h" W到此,环境配置完成。
4 Y3 a: P7 Q6 U' h' w; \9 ^+ @5 B* N6 A6 M& S R3 E9 ]
3. 建模和预测
, Z. G j& D) f(1)加载数据0 J/ o$ P; U3 [& c6 G% v5 O, H
SPL能支持csv,excel或数据库中的数据用于建模,这里以csv为例,其它数据源类似。" b' p1 k- g, i. a
1 f& W1 E' H, K; I0 n- M6 x
设有一个贷款违约数据表如下,需要建模来预测新用户是否会发生违约行为。' o* T# }, d/ B$ D9 f
8 W; E7 e& }* U1 `4 N- [7 j t m [
2 }$ L3 \! {+ E+ E文件命名为bank-full.csv;( K2 j5 S2 a) j1 b/ z
6 e! u$ \- n3 p, N, L! I' t0 J: y5 O
A3 u3 x! Y0 a1 c/ j2 R
1 =file("bank-full.csv").import@tc()
& K3 H, l/ B4 Y8 F2 =ym_env()
- y" Q# [; y! _# ~4 [ U3 =ym_model(A2,A1)
6 i2 m) `9 W1 v! PA1 导入建模数据,读成序表5 k8 L# Q: e6 t9 g" Z9 Z
% t5 ^4 o% b3 x* r; f3 T" k/ p' S
* N; I, N; q9 f. x: N" ^! _ u6 R" s" v
A2 初始化环境,执行A2后会在易明建模的安装目录下生成store目录及子目录用以保存数据及结果文件。
7 S4 x- E7 l* V7 l+ S. P
m3 i7 ]" v7 x+ lA3 加载建模文件,生成md对象
: f( X" Q9 e5 R5 u. m7 n
' f; ]. n( s2 {8 v(2)目标变量设置和变量统计
) ~) i2 M8 z$ c" g% Z+ I数据加载进来后要设置目标变量
0 q, l" X) V! x4 q2 P0 V" z3 X5 h, [/ @7 C$ Y7 ?/ R% I8 v3 t$ _; z
A
# n7 {$ b) u( w… …6 m" O% [7 x( l9 m* [' H% c+ u
4 =ym_target(A3,"y")
! Z, g) b& J8 Q" F5 =ym_statistics(A3,"age")
$ x' ^5 I- r: M5 ~* f' `6 =A1.fname().(ym_statistics(A3,~))& u# S! Y1 Q0 }9 c' ^3 f
A4 表示将字段“y”设置为目标变量,目标变量可以是二值变量或数值型变量。
6 D+ v5 j. o6 ~# v" u# ~- Z( n; l4 A0 v8 l b1 F$ a
A5 查看某个变量的统计指标,比如 “age”,返回值中可以看到缺失率,最大最小值,异常值,数据分布图等参数。, f6 N k, [, n
9 |& F2 v! M, e* m: ^
! l0 h3 L6 d$ U8 n2 J3 x; _
2 {. @0 m/ e v3 T# Y" b* oA6 循环变量名查看所有字段的统计信息,返回包含所有字段的统计信息二级序列。& d- z6 ]1 I" ]; n! z+ d: r, D0 J
8 e, u' Q- u) X W
! k8 g+ R! y& R& o( m
1 T) m" y% P. ^2 n
(3)建立模型和模型表现 b x' v! z6 n& y* u1 q
A/ e K9 |! _3 F! K& v2 ~3 b
… …
8 A% y% w4 _7 R* e/ _7 =ym_build_model(A3)
# a2 J8 P/ ?' ?8 =ym_present(A7) Z( P4 y& Q# N5 c$ U8 _% R
9 =ym_performance(A7)
; A. r& K8 c; f3 U, N2 e# ]10 =ym_importance(A7).sort@z(Importance)$ P9 L h* T" {7 \9 E
A7 使用建模函数建立模型,执行后在后台会进行全自动化数据预处理和建模过程,此过程会耗费一些时间,时间长短取决于数据量。结果返回pd模型对象。
! C9 X) m( }# ]8 O1 M$ [% R1 p) E
* ^% t5 l- ]5 X% u模型建好后,可以调用pd模型对象查看模型信息、模型质量和重要度。
# \: ^) i1 M. }- z" F
# [, i, z" Z( s2 V+ n9 t, |2 OA8 返回模型AUC值及参数* ~7 i' P5 q1 ^" o9 u+ [% a. V; r* x3 P
- r+ n8 b. I4 J; e7 w6 e
0 o8 V# v& ]' F# A$ k" T
/ V9 M8 p2 ?' H' G: L7 Q* R$ L
A9 返回多种模型指标和图形,诸如AUC,ROC, Lift……/ q/ J2 m5 d" \! t+ |, F
, |& I3 }( D) f( Y# q' }
, z; X; T4 `! ]- o
0 l$ k% y( s9 \1 G/ q" @& U比如点击A9的第6条记录的Value,然后点击右上角“图形浏览”图标,数值字段选择“Lift”,就可以查看Lift曲线+ p$ O# h1 I5 t9 ^9 _
# v9 L, U: _6 }! w% |8 @# @( f% Q/ M
5 D j: D/ d1 g* j# H( O( E& }" d% F
5 Q4 ?7 N H) ^* bA10 会返回每个变量对目标变量的影响程度并且按照重要度降序排列。数值越大对目标变量的影响程度越大。降序排列分析起来更加直观。6 \7 ?+ r6 a5 ?" A! Y3 E' c
X, O$ E1 j% j0 O+ K
$ g5 A; b! ?8 K% g% u! `3 ^
7 L) c# }3 E% {. J! }2 k2 @
(4)保存模型) Y# b. M; p. \, q# ~
A
) v5 i) | u8 Q9 v, W… …; F: M5 A# ^* o
11 =ym_save_pcf(A7,"bankfull.pcf")7 ?1 a1 d) F6 E0 N9 z: \) T3 f
12 =ym_json(A7)% _6 U- O! V0 W
13 >ym_close(A2)
, w @6 t& l* p; p# j- QA11 将模型保存为”bankfull.pcf”,默认保存路径为[sAppHome]/store/predict。
: p5 d4 m. I. ?3 e; e* r4 I
. X( _3 c" \" _/ EA12 将模型信息以json串形式返回。json内容详解可参考在线文档《json参数说明》% ^% f' W% O( Y* F4 U
; z9 L6 m' {# O6 n8 v3 l: {1 V6 S( K, P* vA13 关闭环境,释放资源。
% o% \: p" y% L" `- X* a m
E6 G, l h6 M2 X1 j. U(5)预测" f) w, q- U8 u
预测之前需要有pcf模型文件和预测数据集
/ z3 d; x8 l Y4 J7 @
) |0 ]8 H, e' F4 ]A
3 U* Z- k9 C' {( ^1 a1 =ym_env(): i% S; M% P; p; n6 z
2 =ym_load_pcf("bankfull.pcf")
, G, Z0 J; Q8 w0 _, d3 =file("bank-full2.csv").import@tc()
, _8 X" ]* k7 l4 r( D4 =ym_predict(A2,A3)+ ^* m5 l# s7 k# [9 k8 H% i5 V
5 =ym_result(A3)9 s0 Z3 y# [; B' n
6 =file("bank-full_result.csv").export@tc(A4)
% R1 r. q$ [5 p8 O9 Z# [5 j7 >ym_close(A1)1 O: n+ s8 V2 e; a/ x
A1 初始化环境
7 _5 \+ Y/ _9 V* m) C6 L4 g( E4 W; V% W
A2 导入pcf模型文件,生成pd模型对象。
/ @6 g$ K2 Q3 i% D: q) a* {) [0 \" o
3 C3 u7 x U0 `% b4 eA3 导入预测数据集,读成序表
, g3 f, g; `% F; I, Q) ~
: h. v) [$ l& Z% i3 }% RA4 对序表数据执行预测。除序表外,还支持游标、csv文件和mtx文件,比如A4也可以直接写成ym_predict(A2,“bankfull2.csv”)
. \- d: t& N' j; S# n
/ L& ]3 {2 b' N+ w6 IA5 获取预测结果
! `' Y( a( j- ~7 Y, m0 S* U/ U0 D' l5 F! \) u
A6 将预测结果导出,在本例中预测结果为用户发生违约行为的概率。
; x2 _- V' w/ }/ \+ B# y4 z [6 U( \; Y" X" t) X- a; U3 J
* l6 ^$ z4 q2 D5 k2 n+ U
A7 关闭环境,释放资源1 N: |" ]! k* r E6 G
; K; k) M$ e9 M/ j- g0 Y
4. 集成调用8 z( o8 b& j0 F
SPL还可以被上层应用集成调用,比如SPL可以嵌入到Java应用,详情请参考:http://c.raqsoft.com.cn/article/1615765346560
1 ~/ F: Q& Q3 ~- ]! I1 _1 x
7 G9 \* g$ ]7 T% ^8 D }: f总结, n- [4 B7 u0 G1 O! j: Z: C
使用SPL配合易明建模来实现数据建模预测非常简单,程序员不需要理解深奥的数学原理,只要准备好训练数据,简单几步就可以完成数据建模任务了。而且还可以轻松地把这个功能嵌入到应用程序中,高深的人工智能不再是少量数据科学家的专利。4 O" ]: y( p. c. ^
4 C! [! u% J U! [- G U! XSPL本来就超强的数据处理能力,能更方便地完成人工智能算法之前的数据准备工作,同时也提供了丰富的数学函数: SPL Math 例程,有些数学基础想自己实现建模过程的同学也可以进一步研究。 Y% I: J. P6 B8 ?
————————————————
5 d' c' `# x3 m2 F" u$ f( v版权声明:本文为CSDN博主「java李杨勇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
2 }0 I% F8 I5 Z& G原文链接:https://blog.csdn.net/weixin_39709134/article/details/126698462
/ q5 e) f6 u1 {2 d
9 J& ~0 a9 ~1 ^& j4 m! E% _3 [: h5 P8 R j, \1 a
|
zan
|