- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565670 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174924
- 相册
- 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 也不错$ L) z. w2 g6 j, J
3 S6 d- L& T0 P8 q# }0 _- x! _
可用来做人工智能建模预测的工具非常多,比如Python, R, SAS,SPSS等,其中Python由于简单易学、丰富的数据科学库、开源免费等特点备受欢迎。但是对于不太熟悉数据建模算法的程序员来说,使用Python建模还是比较复杂,很多时候拿到数据并不清楚该做怎样的处理,选择什么样的算法。其实,在做数据分析和数据建模时,SPL也是不错的选择,它比Python更简单易用,计算速度也快,交互式的界面对数据分析十分友好,同时还提供自动数据建模功能和一些数据处理以及统计学函数,用起来也很方便。
9 n- m, U( U+ D% z" F: s+ w9 E$ F7 U, g
下面就以一份用户贷款违约预测的数据为例,使用SPL手把手的进行数据建模预测。
% y/ u, U% s7 g2 z, P( c. e R4 I1 I+ C- _
1. 确定目标,准备数据% \3 ?5 O" b4 F, T
建模预测就是从历史数据中挖掘出规律,然后使用规律对未来可能发生的事情做出预测。这个规律就是一般所说的模型。$ S0 E; ~. ?: D$ h8 P- a& \& X
4 u* j- t6 q- l3 [
历史数据通常是一张我们俗称的宽表,比如在用户贷款违约预测的例子中历史数据是如下图这样的Excel表格:
" I* T: _6 T# k' }5 y- g8 O* g6 W3 F" j$ a$ I
首先,宽表中一定要包括我们想预测的事情,通常称作预测目标,上图中的预测目标就是历史用户的违约行为,也就是图中y那一列,yes表示违约,no表示不违约。预测目标还可以是一个数值,比如产品的销量、售价……,或者是预测属于什么种类,比如预测产品质量是优、良、合格还是差。有时目标在原始数据里就有,可以直接使用,有时目标还需要人工标注。% [" j" \2 y! ?4 p0 K
/ ^& g1 ^2 @% {除了预测目标外,这里还需要很多信息,如表中的用户年龄、工作,房产,贷款情况……,这里的每一列称为变量,也就是和贷款人将来是否违约可能会相关的信息,原则上能收集到的变量越多越好。例如预测客户是否会购买产品,可以搜集客户的行为信息,购物偏好,以及产品的特征信息,促销力度等;预测汽车保险理赔风险,需要保单数据,车辆信息、车主交通习惯以及历史理赔情况等等,如果是预测健康险还需要一些被保人的生活习惯,身体状况,就医看病的信息;预测商场超市的销售情况,需要历史的销售订单,客户信息,商品信息;预测不良产品,需要生产的工艺参数,环境,原料情况等数据。总之,收集到的相关信息越多,预测效果也会越好。
0 X0 G2 _: _8 D1 f2 z! {+ W1 ]' r
9 D) X/ I% x$ Q3 G1 G采集数据时,通常会截取某一段时期的历史数据来制作宽表,比如我们想预测7月份用户的违约情况,可以采集1-6月份的数据来训练建立模型。数据采集的时间范围并不是固定的,可以灵活操作,例如也可以是近1年或者近3个月等等。
; g6 I! p$ U7 E$ v: F
' v t2 N8 u. t7 K' i1 B5 ?准备好的宽表可以是Excel格式或csv格式,第一行是标题,后面每一行都是一条历史记录。, p# N8 p! `1 a+ n1 d/ x9 f' J
( p1 S% q% |$ G1 p; {" R; t4 T如果企业有建设好的信息系统,那可以找IT部门要这些数据,很多企业的BI系统中可以直接导出这种数据。8 T& C# M5 N! @! o- @) @
4 X; u3 u3 h6 A. m# I
2. 下载软件,配置建模外部库
" t+ r8 c9 U* }0 O1 U! P' S: @SPL 在易明建模外部库的配合下可以提供全自动化的建模预测功能。
: b5 s2 H' H# K0 I
1 a# n2 |$ u! D, m. Y(1)下载安装集算器(SPL)和易明建模软件
, d7 ]* `# |# `5 ? d* F1 B集算器下载:& o1 T) T( t2 _- Q+ h
“http://c.raqsoft.com.cn/article/1595816810031”* E2 [. v! m: j
4 g R$ w+ _" |0 z5 K2 G
易明建模下载: “http://www.raqsoft.com.cn/download/download-ymodel”0 r4 W" R6 L0 ~$ v6 f8 H( d% a. ?
; g, K/ V7 c" a) b4 f8 U
安装集算器和建模软件,并记录安装目录,比如:C:\Program Files\raqsoft\ymodel8 q; F; y; _6 Q7 P
( s1 r3 T z8 H' e/ Q3 r
^: ~# X! n- d1 L; `. v
- x! p \/ c- ^ a2 N5 R: M. G(2)在SPL中配置外部库
! j& L$ h/ y# Z' j(a)复制外部库所需要的文件
: ^! H' ^5 C" k% l# [在易明建模的安装目录下找 YModelCil 和 lib 文件夹8 u) }: B8 r: U& h! P3 f
$ H1 K, d; H3 y$ Y' Z* t+ F5 B2 @
4 d5 H) ]; c6 X" m Q
: W2 [2 H4 L: i" k1 l: z6 x然后去这两个文件夹里找到建模外部库所需要的文件,复制到集算器目录(【安装根目录】\esProc\extlib\YModelCil),比如C:\Program Files\raqsoft\esProc\extlib\YModelCli。
4 a# h0 y- l i$ g( h+ R8 t$ l: o! @
" a: `$ X, L( V3 l建模外部库所需的文件有:6 ?9 _2 a# x) y+ _
" P: f% u4 i4 j3 x8 Q1>易明建模目录的YModelCil中含有以下jar和xml$ H1 N) V0 `/ {2 E
2 ^+ X3 o" I. A# b: f9 S0 I Nant-1.8.2.jar/ C% z! f7 V! \/ C( Q# z. a
commons-beanutils.jar
' S( E2 o) `8 W% e0 G. K0 Xcommons-lang-2.6.jar) \5 z. D4 e+ d! ~* L
ezmorph-1.0.2.jar
! T; T( |$ O) Y4 C( N# L" \- s' vjson-lib-1.1-jdk13.jar- a/ A+ u$ @) I2 R. r# C b
raq-ymodel-cli-2.10.jar' M ~1 \' x1 ]& S2 q# t
userconfig.xml
, F( m1 s7 l: F! b; j: }2 K; X
9 c: D* E' D, _- }2>易明建模的lib中含有以下jar0 m# ]9 ]4 f0 i( }, u% [" n/ U+ S9 `
! o1 `& B$ I, ?) {commons-io-2.4.jar
/ E" T# Q( K' W# D5 ]* lesproc-ext-20211104.jar$ g f' a& M' W% D
fastjson-1.2.58.jar/ R0 K$ ]7 F6 j, u6 ^: H
gson-2.8.0.jar
5 Y" i! v4 E3 O- p$ Y1 j. l' m, sjackson-annotations-2.9.6.jar; u( @( t8 c$ c7 w
jackson-core-2.9.6.jar# C8 }5 P0 h( z( A; t7 y3 ^1 m
jackson-databind-2.9.6.jar
: D+ ~* G5 a2 C& j( l3 k. d' ^jackson-databind-2.9.6-sources.jar
/ R! ^: k: [# F$ S/ r! `% {jackson-dataformat-msgpack-0.8.14.jar- Z1 B8 g7 B( c& Y" o" X A
mining.jar
9 J1 V$ U% T4 [! N5 k% Qmsgpack-0.6.12.jar( N1 o7 @" Y4 L
msgpack-core-0.8.16.jar
# ]: q4 H4 \8 X" |/ k; y6 s% Y4 Y: K. g4 L3 B4 |' B& y
(b)设置userconfig.xml文件参数
/ [- N) N" g% V# D在集算器目录esProc\extlib\YModelCil下的userconfig.xml文件中设置参数9 k. c6 N2 w* K% A6 [5 [
% T: ]. Q, ]. n/ Z
名称 参数说明
! M$ v: S# s0 D" M5 U. N/ bsAppHome 易明建模的安装目录
& ]( |% F3 _0 `8 w- }sPythonHome 易明建模目录的Python路径 Windows: raqsoft\ymodel\Python37 Linux: raqsoft/ymodel/Python37/bin/python3.7
: N# F: z9 V7 h, I4 _" O l1 OiPythonServerPort Python服务网络端口. T; s P) o- Q7 e" p4 W
iPythonProcessNumber Python进程数
) I+ [% D& J: pbAutoDecideImpute 是否智能补缺
/ y* f2 |: a' L) X2 i, qiResampleMultiple 重抽样次数) r9 q& C& O0 |4 ~8 N2 [
其中必须要配置的参数为sAppHome和sPythonHome,其他参数可以采用默认值,有需要再进行修改。比如可以配置参数如下,加粗部分是必须要配置的,根据自己的安装路径。7 {& }3 o$ v5 _2 Z; y. K7 W
6 D, u1 z: |8 Q& C
<?xml version="1.0" encoding="UTF-8"?>
1 N: ?& C9 F) S& C) {<Config Version="1">& }. K% x- H* |" m* c- i! ]( n& B
<Options>) i. Z2 B) `% `9 q$ W
<Option Name="sAppHome" Value="C:\Program Files\raqsoft\ymodel"/>. k5 e3 x D3 V4 `
<Option Name="sPythonHome" Value="C:\Program Files\raqsoft\ymodel\Python37\python.exe"/>
/ \, n; [7 c% |* t" b+ l3 y <Option Name="iPythonServerPort" Value="8510"/>! E) N: h/ p* g4 f$ M* j8 z6 ?
<Option Name="iPythonProcessNumber" Value="2"/>
! Z/ I4 h; W. B; e# x9 u <Option Name="bAutoDecideImpute" Value="true"/>
; M' h1 a$ l7 O9 a! a" j+ O, z0 t <Option Name="iResampleMultiple" Value="150"/> / e( p; V5 f8 w* f7 Q2 }
</Options>
4 [8 C& x- W5 ^/ r- p: p</Config>
; [* o5 Q4 a6 n+ W1
3 t/ i$ F1 ~5 U4 j2) Z9 A! G$ S* y7 W! a. `0 E% s
3
3 Z& L3 U& G, }" p" K: K2 S2 y4
( r% B5 \# v4 q. m! X+ u, G1 m5
5 ~9 F& E1 }- k/ m0 Q$ P" U6
% }5 W5 F- M7 Q9 M+ h78 L5 T2 m8 P( f0 j! W f
89 e2 f, a" v7 h- L& E, k
9
5 L. o- R* v' |" ]106 o- g. \4 {+ U& l3 y& Y; w
11+ l7 K9 r5 t- n5 a" d
其实,从这里可以看出,易明建模也是基于Python写的,但它将Python算法做了封装后,程序员就不必再理解算法的数学原理和运行细节了。- i1 j- a8 @" K
" t F$ ]4 C7 Z, ?/ ^(c)SPL环境配置) \, @! ^5 D5 I, g# h! q. C
1>. 配置外部库4 R: s9 {7 i4 d+ s. o& \
# F. e+ g) T( m2 c: g/ [
打开SPL,在选项菜单里,外部库选择里勾选YModelCli,使其生效。外部库的路径为第(1)步骤中集算器YModelCli的安装路径。
# Q2 G5 z1 m* b
P$ ?6 [7 l; T2 p& @$ W$ u" D6 u4 }1 ]. f+ s$ r5 y- l# Q# a
' h. y0 |- m. Z: Z
在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置外部库路径和名称。
5 U6 Q5 O' J3 x
/ \- h7 M3 {4 p" ]* t& ~<extLibsPath>外部库路径2 F% E# Q2 a" T( U
" R$ s* d2 k; V5 r<importLibs>外部库名称(可多个)
h; g7 j" `/ p* p
9 ]5 \* P- w" f: A2>. 线程数设置" Y% @; N+ [0 Z9 a5 L) Y" j
# u' F: o0 `( y如果有并发预测,还需要在SPL设置“最大并行数”,也就是线程数。设置多少用户根据需求和机器情况自行设定。' k2 O8 d6 v& \0 D F; O1 @, v
9 ?- u% B5 |( G2 u
) G$ K2 A: `- ^4 X5 x. e' c
# }$ X/ \3 ^/ u# z& Q+ v% S' @在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置。" z' \6 W O. y9 m; @7 a+ \0 A5 W
8 ~6 Z: j. n- {
<parallelNum>最大并行数
9 `) E0 j9 T. N; _1 t# D5 U" ~" k) S& T( ]
到此,环境配置完成。
6 ^$ _* j+ A/ Y# C) e# n3 D K3 `$ L
3. 建模和预测: s0 u7 E; s0 T& E6 e0 }) G0 l
(1)加载数据3 P4 d7 C8 G b$ t9 i
SPL能支持csv,excel或数据库中的数据用于建模,这里以csv为例,其它数据源类似。
& }5 U- K. L/ Q
2 g! `- O; U7 r+ G设有一个贷款违约数据表如下,需要建模来预测新用户是否会发生违约行为。
3 J8 Q& a, c, O. B" ^ Q
8 v0 X$ R- z. n5 c: F U5 o1 p: ?# \3 [: D( p
& l) e+ {; ]* u) w$ U文件命名为bank-full.csv;2 i. U0 L5 p+ ~2 I2 o* b
* _/ T4 ^- W; `A7 E1 {* B3 S4 {$ T
1 =file("bank-full.csv").import@tc(). [1 @) g4 X* f1 F1 y1 V* } U5 u( V
2 =ym_env()
0 c7 t! D, _% }; Z7 ^% X3 =ym_model(A2,A1)+ r; C. m- |) I/ _: w2 i
A1 导入建模数据,读成序表
) M: x: G/ M2 u. h/ {, I; Z! g: j. T8 a
% E( C$ D8 E& n* r
& n4 K! K/ w- ~! UA2 初始化环境,执行A2后会在易明建模的安装目录下生成store目录及子目录用以保存数据及结果文件。' W; S# v& i7 O6 [" y
- V1 M& ~4 ^7 e# JA3 加载建模文件,生成md对象0 e* \* [+ _9 D5 d8 u- }7 m
3 ?3 ~. {( |/ ~% K
(2)目标变量设置和变量统计2 F8 I) o' z2 {8 \/ h6 ?& U
数据加载进来后要设置目标变量4 \+ c$ y9 c3 Y2 T# m2 U! k6 R
8 S( `2 @% Q$ Y" u; m1 HA2 `. C' `# E9 k" H( Q$ d, U( E# u
… …, ?8 R8 D6 Y, d3 `7 J, P) I- \+ r- K3 J3 A
4 =ym_target(A3,"y")) H9 X# q1 X2 V. x) w
5 =ym_statistics(A3,"age")
; W0 S# W- `" U' I) n6 =A1.fname().(ym_statistics(A3,~))+ N. z$ m2 c2 p$ |; G$ ?7 }
A4 表示将字段“y”设置为目标变量,目标变量可以是二值变量或数值型变量。
" d+ O5 @( p& u
3 k/ T9 u: o8 _- ^$ I2 [A5 查看某个变量的统计指标,比如 “age”,返回值中可以看到缺失率,最大最小值,异常值,数据分布图等参数。
' b4 o$ u; r/ D( l' @* @& E. B6 \' C+ l9 c. {2 D& v- H
1 o8 r. f2 I! \0 ^% j' w
9 L& U# N. Q7 I6 {' p- C: J8 z
A6 循环变量名查看所有字段的统计信息,返回包含所有字段的统计信息二级序列。
3 X9 {" S% E9 h2 H( G4 E* m
$ p3 ~ r6 ^ R+ p& I/ T: R. s
1 Y, _, W5 P; Y" h G$ N3 W7 _; y& G1 z& ?/ {# h2 ^% z
(3)建立模型和模型表现
! ~( X9 V w1 e3 B- A6 |* k& b" v" m, uA
4 q' f# a5 Q* p4 {… …1 V' O# h$ @8 Y. y$ G" N) L" P
7 =ym_build_model(A3)$ w- y. r8 J7 s2 c, I! Q
8 =ym_present(A7)1 K* c( f0 E% p1 `0 {2 L
9 =ym_performance(A7)% p/ r$ \ Q3 m" B1 {# E
10 =ym_importance(A7).sort@z(Importance)6 \8 g3 E2 Z7 j; B6 w) i
A7 使用建模函数建立模型,执行后在后台会进行全自动化数据预处理和建模过程,此过程会耗费一些时间,时间长短取决于数据量。结果返回pd模型对象。5 K H2 Q( Q$ }: y
8 }7 J/ i& b$ J8 D3 U
模型建好后,可以调用pd模型对象查看模型信息、模型质量和重要度。
" O4 m X/ s& ]! l! H$ c1 G/ @5 r) z5 g' K! z3 Q( c
A8 返回模型AUC值及参数
7 @* W+ @( X! x6 P
8 D4 r! ~3 U& Z* j1 \) ~$ X2 @- M5 [! G6 ]4 R6 l
5 U- a, g. ^/ p8 s2 z! _A9 返回多种模型指标和图形,诸如AUC,ROC, Lift……
* _/ ~+ y+ V6 b
/ Z( I- ]& G- s5 ^* W1 J
% c8 b+ `9 E; `8 L; \% V1 _
6 q! t" k, o/ l0 {$ p: h比如点击A9的第6条记录的Value,然后点击右上角“图形浏览”图标,数值字段选择“Lift”,就可以查看Lift曲线
* ?2 `& P& t5 Z; W: [
( Y9 q9 q2 [1 m" u+ m* {
1 E0 Q: l/ `, i. S8 ~
; C# M: j- F& E y( m, r" y) Z8 D6 K' uA10 会返回每个变量对目标变量的影响程度并且按照重要度降序排列。数值越大对目标变量的影响程度越大。降序排列分析起来更加直观。
# V; T" H! C8 P l& { V$ e9 u. M+ c+ G- \. ~5 s
4 [! I% T p0 J) V
5 M, @) `/ u* E7 _ T" p, L E(4)保存模型
8 Y3 |4 F1 g' ~% h( L' Q/ c% ZA6 i7 G H7 n, g
… …0 O9 P5 s% c0 a1 A3 G
11 =ym_save_pcf(A7,"bankfull.pcf")1 {3 u3 b* Y" r8 q" u0 O
12 =ym_json(A7)
# I- e' g4 P7 R. v, P5 T13 >ym_close(A2)
7 _8 R9 X4 t A+ U1 FA11 将模型保存为”bankfull.pcf”,默认保存路径为[sAppHome]/store/predict。
4 q; D" h; W) R$ x* n1 f+ j3 Q/ J( Z! f) v/ D+ w
A12 将模型信息以json串形式返回。json内容详解可参考在线文档《json参数说明》
% r" H) A! C" t5 u5 F* E* o t! _4 l) I6 O0 s
A13 关闭环境,释放资源。4 q d2 k& r9 `& g+ Z: Z6 P
9 i( Y* W$ B' f$ i8 g
(5)预测
* {: e/ E$ p! D+ C; w0 ?/ {预测之前需要有pcf模型文件和预测数据集, e4 W" y6 W) ]) d3 |5 b* [+ F8 V
& G. F! l' h- b; t4 T
A
o" }, A6 G4 o# z+ n' _8 v8 B- ^1 =ym_env()
+ Q; ~" Z; r5 S8 P- p x/ _5 |2 =ym_load_pcf("bankfull.pcf")+ [. o( S8 k* \* \$ V1 F5 V
3 =file("bank-full2.csv").import@tc()0 e; _) J3 R P* o
4 =ym_predict(A2,A3)
2 B4 l. f6 c4 R5 =ym_result(A3)
; F0 E" n4 I# a+ C0 o- y0 a% p6 =file("bank-full_result.csv").export@tc(A4)# U. N1 s8 Z+ k) d7 N
7 >ym_close(A1)
/ b$ x' [; e: A( T$ t1 xA1 初始化环境8 G9 l0 j G) e5 t1 |; O
' A4 @* G* q( iA2 导入pcf模型文件,生成pd模型对象。$ s! H, n) Z8 h" m* U
( `' T1 H `# }; CA3 导入预测数据集,读成序表+ E# h# G( ]. Y! T! }% r3 L
e/ x- p" ?2 Q6 r
A4 对序表数据执行预测。除序表外,还支持游标、csv文件和mtx文件,比如A4也可以直接写成ym_predict(A2,“bankfull2.csv”)
+ ]0 `" y5 _8 u$ R/ }( ~! g
+ p \% P$ l& D4 T: s. t. |5 _A5 获取预测结果. y- T* T" u0 n% ~
& \, p, @9 o' A1 bA6 将预测结果导出,在本例中预测结果为用户发生违约行为的概率。( ^- |" x r: z5 Y- d5 i. X4 M
6 w3 F: y e; A Z* A, j( Z* ^+ q
A7 关闭环境,释放资源, {% {9 ^- S8 U) q( `
- E: f/ y2 |( J
4. 集成调用7 B5 |# } Z7 Y" k3 _
SPL还可以被上层应用集成调用,比如SPL可以嵌入到Java应用,详情请参考:http://c.raqsoft.com.cn/article/16157653465600 q4 R) H* k* [3 d& f1 w
! O' q% l/ x% j9 y) k, X总结
# B$ L8 n, ^ l" p使用SPL配合易明建模来实现数据建模预测非常简单,程序员不需要理解深奥的数学原理,只要准备好训练数据,简单几步就可以完成数据建模任务了。而且还可以轻松地把这个功能嵌入到应用程序中,高深的人工智能不再是少量数据科学家的专利。
8 C4 X7 r U2 _$ F; a
) L+ N1 w3 Q2 ?- x! \& c7 BSPL本来就超强的数据处理能力,能更方便地完成人工智能算法之前的数据准备工作,同时也提供了丰富的数学函数: SPL Math 例程,有些数学基础想自己实现建模过程的同学也可以进一步研究。
. \, O& \4 ?: D, U! l" d% N, y————————————————
2 _, v( |- O5 D9 Z& ?7 I版权声明:本文为CSDN博主「java李杨勇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。9 |3 _4 w, L0 {$ \
原文链接:https://blog.csdn.net/weixin_39709134/article/details/126698462
* f9 m1 S+ h) {. N3 N8 W; |3 t2 x4 u! O! N6 B: C! G8 y: V
9 g% J/ n1 s3 @" j; R! V1 J/ K y) I
|
zan
|