- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563318 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174218
- 相册
- 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 也不错
: W$ G; U( X8 H& `- x4 c" D! k4 @+ M2 o3 X$ A
可用来做人工智能建模预测的工具非常多,比如Python, R, SAS,SPSS等,其中Python由于简单易学、丰富的数据科学库、开源免费等特点备受欢迎。但是对于不太熟悉数据建模算法的程序员来说,使用Python建模还是比较复杂,很多时候拿到数据并不清楚该做怎样的处理,选择什么样的算法。其实,在做数据分析和数据建模时,SPL也是不错的选择,它比Python更简单易用,计算速度也快,交互式的界面对数据分析十分友好,同时还提供自动数据建模功能和一些数据处理以及统计学函数,用起来也很方便。9 i5 J' Q- W+ b: } q, V7 E
5 Q. t1 M4 X6 ?6 S/ j
下面就以一份用户贷款违约预测的数据为例,使用SPL手把手的进行数据建模预测。8 C+ ~- q5 {1 d. ^# m! L
3 b+ L) \: U' B/ e1 z6 {4 M9 m5 S# w1. 确定目标,准备数据
( f1 y W9 w6 b, @" k建模预测就是从历史数据中挖掘出规律,然后使用规律对未来可能发生的事情做出预测。这个规律就是一般所说的模型。- m( z( K$ _0 \( G
/ s+ W: w' w# X2 `) J
历史数据通常是一张我们俗称的宽表,比如在用户贷款违约预测的例子中历史数据是如下图这样的Excel表格:2 a- T2 q* y, M8 ?
9 e3 y+ c: y7 S/ B# q0 f
首先,宽表中一定要包括我们想预测的事情,通常称作预测目标,上图中的预测目标就是历史用户的违约行为,也就是图中y那一列,yes表示违约,no表示不违约。预测目标还可以是一个数值,比如产品的销量、售价……,或者是预测属于什么种类,比如预测产品质量是优、良、合格还是差。有时目标在原始数据里就有,可以直接使用,有时目标还需要人工标注。0 _3 l& s6 |: P4 s9 O: j- s v
8 x! J+ F0 K# i* a8 |+ J除了预测目标外,这里还需要很多信息,如表中的用户年龄、工作,房产,贷款情况……,这里的每一列称为变量,也就是和贷款人将来是否违约可能会相关的信息,原则上能收集到的变量越多越好。例如预测客户是否会购买产品,可以搜集客户的行为信息,购物偏好,以及产品的特征信息,促销力度等;预测汽车保险理赔风险,需要保单数据,车辆信息、车主交通习惯以及历史理赔情况等等,如果是预测健康险还需要一些被保人的生活习惯,身体状况,就医看病的信息;预测商场超市的销售情况,需要历史的销售订单,客户信息,商品信息;预测不良产品,需要生产的工艺参数,环境,原料情况等数据。总之,收集到的相关信息越多,预测效果也会越好。
/ d% Z2 P! A6 P( I) c/ m9 Q/ F
& h, _8 b% a V2 A) M: d采集数据时,通常会截取某一段时期的历史数据来制作宽表,比如我们想预测7月份用户的违约情况,可以采集1-6月份的数据来训练建立模型。数据采集的时间范围并不是固定的,可以灵活操作,例如也可以是近1年或者近3个月等等。8 S" N) h1 Y$ z! ?/ x% E
. Z# d- I3 Q" p$ p准备好的宽表可以是Excel格式或csv格式,第一行是标题,后面每一行都是一条历史记录。
4 f6 K- _+ D3 d) H3 E, g
1 {" o6 b) y. x- z如果企业有建设好的信息系统,那可以找IT部门要这些数据,很多企业的BI系统中可以直接导出这种数据。) S* E4 h; [' _- n5 J9 b/ c5 n! |
) y. {# F+ ] c! I2. 下载软件,配置建模外部库* j2 k2 y/ i& J R0 {- K- X' H
SPL 在易明建模外部库的配合下可以提供全自动化的建模预测功能。4 \8 V- J* g! B: J
, O" w1 \ g0 i1 P
(1)下载安装集算器(SPL)和易明建模软件
* e* M. D& T: ?* B/ E( g2 L集算器下载:
0 j, T. i' E% `. D; C“http://c.raqsoft.com.cn/article/1595816810031”
6 `1 f- y4 M a# Q& h. x/ G* X2 W! r- |/ Y
易明建模下载: “http://www.raqsoft.com.cn/download/download-ymodel”
# U. [* f) N V' t. P5 w& h- k: [9 F6 s
安装集算器和建模软件,并记录安装目录,比如:C:\Program Files\raqsoft\ymodel
% Y3 }8 K% R) `3 a
& k0 W. Y. g: P. `0 `/ r
3 L& r5 p% L& m" h$ K9 e3 b6 A4 v8 b, v/ U
(2)在SPL中配置外部库3 Z6 ]' b* @2 F6 h% n. C, o. \+ n
(a)复制外部库所需要的文件
% H( W" W: G1 X; ]5 d在易明建模的安装目录下找 YModelCil 和 lib 文件夹
/ X, c' ?0 m5 n3 O+ m8 J) Q' j5 Z2 k7 Z, q, k
! l6 p, u( a3 Q7 G- u9 `3 s$ D# [' m( T# _0 ?8 M0 e: I
然后去这两个文件夹里找到建模外部库所需要的文件,复制到集算器目录(【安装根目录】\esProc\extlib\YModelCil),比如C:\Program Files\raqsoft\esProc\extlib\YModelCli。8 D) f% H$ b1 H, |0 S% l
' D9 M3 a9 ^1 o" B+ {$ \9 K" q
建模外部库所需的文件有:
, }- C! ?5 I s% y
5 Z6 s' g! j3 ]+ p7 l8 X3 R1>易明建模目录的YModelCil中含有以下jar和xml
. E3 x m' s6 @ Z1 ?- m: @6 v4 J7 @( C: F
ant-1.8.2.jar
1 O. r+ |+ M$ |2 d0 X) s$ rcommons-beanutils.jar
! ]3 l) ]5 V3 q+ acommons-lang-2.6.jar7 D, U6 V$ p8 v; j
ezmorph-1.0.2.jar# |6 s' T) i' G- ~
json-lib-1.1-jdk13.jar
, q; [% J1 ]: O6 Uraq-ymodel-cli-2.10.jar6 X7 [3 K0 ~( A5 T7 t# _* {
userconfig.xml
4 S4 v# z% [4 y* x& @) N% L% U- D* `) Z# T! T
2>易明建模的lib中含有以下jar
b1 J3 X" _' O7 |2 k3 v
6 }9 W a: Y: z! h( W# L+ X& f) u, Qcommons-io-2.4.jar$ h/ s5 X, D$ { N$ @
esproc-ext-20211104.jar
, N% t2 J0 P& ]9 b) v" _8 d9 bfastjson-1.2.58.jar9 o4 d7 b- A6 X: H. X
gson-2.8.0.jar
; ~" `" [9 Z& J4 S6 ]) i3 h% J A1 hjackson-annotations-2.9.6.jar. v$ {# e7 p7 ` ]. Y+ A
jackson-core-2.9.6.jar3 }6 v4 p( y. v% ?1 f$ J
jackson-databind-2.9.6.jar
& i8 d! `& e, R. C/ |# |jackson-databind-2.9.6-sources.jar
' z- S' P2 _6 D" m3 Xjackson-dataformat-msgpack-0.8.14.jar% F4 \- D+ y5 k$ ~- Q
mining.jar
! C- g; u, \' v& Lmsgpack-0.6.12.jar
; l. v" Z6 b! A' nmsgpack-core-0.8.16.jar
. ?1 o( y4 e1 {2 G
* Z& }3 J' U8 {(b)设置userconfig.xml文件参数& Y& z! l& v4 d* g( j' W! y' V. m
在集算器目录esProc\extlib\YModelCil下的userconfig.xml文件中设置参数
) n5 \$ i$ O6 g# t% z, q8 { r1 n) T# i) K
名称 参数说明
! | A8 [8 `- _: wsAppHome 易明建模的安装目录7 ^; K( I; |; T- T" @- w! V
sPythonHome 易明建模目录的Python路径 Windows: raqsoft\ymodel\Python37 Linux: raqsoft/ymodel/Python37/bin/python3.7) [/ {4 R( C! r' N
iPythonServerPort Python服务网络端口
, e( i3 J+ i: h( c0 ]' m/ T$ HiPythonProcessNumber Python进程数# Q8 S+ j* ?! y6 R- f1 f
bAutoDecideImpute 是否智能补缺$ u" W9 W2 V2 m8 _2 k. O! d* f2 V
iResampleMultiple 重抽样次数5 d& K; S$ ?8 f6 `
其中必须要配置的参数为sAppHome和sPythonHome,其他参数可以采用默认值,有需要再进行修改。比如可以配置参数如下,加粗部分是必须要配置的,根据自己的安装路径。
# J' j {" y$ O9 p( n% _
) |+ X# |, m, y( K* b<?xml version="1.0" encoding="UTF-8"?>
6 u: I' h v9 f" `1 |<Config Version="1">% X0 Y b3 D1 O
<Options>
! D! {. }! h( k# t( B <Option Name="sAppHome" Value="C:\Program Files\raqsoft\ymodel"/>
( d' _8 @/ E" ?. j' D$ I3 n <Option Name="sPythonHome" Value="C:\Program Files\raqsoft\ymodel\Python37\python.exe"/>
2 _6 g: d4 v0 |# `+ d <Option Name="iPythonServerPort" Value="8510"/>
, V3 O. J; Y$ Y3 p' N! _9 x <Option Name="iPythonProcessNumber" Value="2"/>, n. |- t( x1 {8 D* b- Q* ?, y$ ~
<Option Name="bAutoDecideImpute" Value="true"/>
6 U1 i7 }5 h) T& _5 U. R$ g' Y5 u; u <Option Name="iResampleMultiple" Value="150"/> 4 }9 o- ?8 y- v* g. t% I6 a
</Options>9 p5 Y$ e: {) k' T$ r
</Config>
* h: w/ H& m6 J6 W4 }+ P4 l1 p1
! R6 C4 h7 c9 Z) p, d# o7 I2) a, m# D- f1 u3 m
3& r* `% q7 f0 Z& Q
46 d) {' U) ~9 V# i: ~7 M3 a
5/ Y" h4 Z& C5 C+ g' }" g) \
6
3 T8 y, d+ H) D+ G7# }# E+ T! E8 U+ ]9 t( ~5 X- U
80 F4 X# t, T1 c: \9 B$ J
9
$ O" T7 k( v( X4 X! U10
) w4 Q/ }7 i1 ]7 s( B116 I/ J7 [% Y5 R+ A
其实,从这里可以看出,易明建模也是基于Python写的,但它将Python算法做了封装后,程序员就不必再理解算法的数学原理和运行细节了。3 q* K- z3 y+ N1 q' ?
$ {6 B; V7 g0 q; H% T3 `; a' K
(c)SPL环境配置7 g& ^" J" v* u6 i
1>. 配置外部库
0 j) P) P! p9 w0 k
+ h, O+ A1 j& o; ?: }打开SPL,在选项菜单里,外部库选择里勾选YModelCli,使其生效。外部库的路径为第(1)步骤中集算器YModelCli的安装路径。
3 t( x, [2 a$ S7 L- a- I' e
) w% k+ r' h, Z( F( x0 [' A/ r/ E3 j& _' |6 L
' p% y! B) O0 t0 D" |+ b
在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置外部库路径和名称。
2 F. q* g: k* c1 v# P/ q
: E8 G( W+ H& W3 P# C' C<extLibsPath>外部库路径
; H1 b) o6 F. l1 K' ?+ E
( ~; b. l% J" O" M$ X<importLibs>外部库名称(可多个)
& j7 t* @% l% e% U0 f
/ Z; W9 ^ G1 g2 V2>. 线程数设置
. m+ A7 r- z* d# }/ d+ a+ w: s2 [. X
如果有并发预测,还需要在SPL设置“最大并行数”,也就是线程数。设置多少用户根据需求和机器情况自行设定。
) T% @+ h7 [3 B+ X. W/ A' X2 H3 m8 W
& ^ l0 ]; {7 H) ~. M6 l% X# J F# x: d2 K3 M
在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置。
% K: S7 f: I& D5 p/ l
P2 E5 G# l3 w6 e" P<parallelNum>最大并行数
; }3 D$ g- |% I( [( e' C: r5 D+ o. W# L5 n! [ o
到此,环境配置完成。
) _% B: g& b% D2 b: f7 B. b5 w2 F! m9 J' f" F
3. 建模和预测
7 G. O0 m1 |5 M' J: n( l9 ]/ \(1)加载数据
/ U! M$ {/ g+ d" F6 g6 YSPL能支持csv,excel或数据库中的数据用于建模,这里以csv为例,其它数据源类似。1 Y% x# K* l8 E; t: |6 Q: a
9 y) z8 S/ N1 Z
设有一个贷款违约数据表如下,需要建模来预测新用户是否会发生违约行为。
* i7 J6 y( [3 r- f1 L
7 m) Z7 D% v& h, q9 c H; k8 A2 b3 v \6 I) x
* Q" u3 v+ @7 y& |文件命名为bank-full.csv;
( @: V; C+ E1 @; w8 V* e3 F
4 v& X% B. Z6 Z# A) TA D' ]8 P9 ~- |/ `
1 =file("bank-full.csv").import@tc()2 q7 i( `1 B S- }. u j3 g0 S) Z
2 =ym_env()8 D) O9 ~9 f {" A2 E1 ]5 S
3 =ym_model(A2,A1)( n e: q. E6 u
A1 导入建模数据,读成序表
5 l/ ~( c" W6 D" O/ l
5 r3 _$ |- ^+ s3 ]6 M0 I0 ^, n) W, j) R3 E" B
! _6 J4 J, l7 W) S" qA2 初始化环境,执行A2后会在易明建模的安装目录下生成store目录及子目录用以保存数据及结果文件。 [- J9 A0 i8 [4 Y" l1 r( F
3 S4 F$ I. Z9 Y) N. |/ E5 m; |. |
A3 加载建模文件,生成md对象" N G; M% m. W1 D; K
- t4 s( I: S* _+ Y; [, S# L$ ~+ L y
(2)目标变量设置和变量统计
2 s2 g Z! I2 O/ n数据加载进来后要设置目标变量
! b0 [. _ E1 ?, }& `* {! m2 u, o3 d
A% q# j* A+ C/ ~' O2 {! | \
… …& I8 }6 w1 U w( N
4 =ym_target(A3,"y")6 u$ D+ R# R3 C
5 =ym_statistics(A3,"age")! h8 q6 e' G5 r' l+ X
6 =A1.fname().(ym_statistics(A3,~))
, u m2 ?; T7 C, L1 U2 D& ZA4 表示将字段“y”设置为目标变量,目标变量可以是二值变量或数值型变量。
. f0 F8 g ]/ G! m: E+ O& w8 Y& h, }. v! `2 g @6 B9 m
A5 查看某个变量的统计指标,比如 “age”,返回值中可以看到缺失率,最大最小值,异常值,数据分布图等参数。
4 m% _. ^( u- v, b) D7 O/ U
/ C3 K9 ]% g) b; Z) h) k0 _9 E) j2 G, H" P' _( i
$ C# A, S9 D8 N+ @: e- g6 z% P
A6 循环变量名查看所有字段的统计信息,返回包含所有字段的统计信息二级序列。6 J4 B& d+ E7 n4 D
$ z1 N3 G' I# k; @1 U: w5 \
" r. ^" w4 X; d. G5 ^
$ I' p. H1 V! J; t, K0 K* [(3)建立模型和模型表现
8 ~0 U* [- |8 v& I$ W3 ^0 L& MA2 m8 }( k1 T) j* n6 @3 X+ a
… …6 F3 V6 W/ y1 Q0 @
7 =ym_build_model(A3)* j6 i- W' R$ f/ S( k8 R% W: v7 U
8 =ym_present(A7)9 h. Q1 \& E8 ?4 {& Y) H( x
9 =ym_performance(A7)( c+ c, u0 V' b& H2 ?
10 =ym_importance(A7).sort@z(Importance)
+ R& m1 ~) M. g) j z& _A7 使用建模函数建立模型,执行后在后台会进行全自动化数据预处理和建模过程,此过程会耗费一些时间,时间长短取决于数据量。结果返回pd模型对象。
% w b& V; |' J
R% P" v/ {2 y" q' g$ q8 l模型建好后,可以调用pd模型对象查看模型信息、模型质量和重要度。6 I {; a" N4 F( G
& x7 A& R5 e# N5 x) w; S
A8 返回模型AUC值及参数 H2 k1 _9 N8 l
& l) t% C" e y u- U; U X
# y- n0 B! D& t& T* V$ N
' c! H% m2 h6 v: ]* JA9 返回多种模型指标和图形,诸如AUC,ROC, Lift……
- \4 y$ K5 @! |* a
& o6 N" @ f; p/ E( k" Q9 s
' x" \2 A, j' k
5 i( L; Y9 p( b' p比如点击A9的第6条记录的Value,然后点击右上角“图形浏览”图标,数值字段选择“Lift”,就可以查看Lift曲线
" J i& r* l* }; z
) Q6 X, `' C3 f8 T) }# w( |# b, A0 e8 e4 M K
# O& m# r! d3 E( T
A10 会返回每个变量对目标变量的影响程度并且按照重要度降序排列。数值越大对目标变量的影响程度越大。降序排列分析起来更加直观。7 W" b7 a# R& F
: e, u- J; P5 t/ [( w- p( d! Y1 [+ Q9 W+ T$ I5 q; \
) Q. a' t g* M! M- G
(4)保存模型: }- G, N" a1 a* e( I
A' s0 @. }4 y' e4 Z8 H
… …
; j$ G" ?4 O& L* h) m8 V11 =ym_save_pcf(A7,"bankfull.pcf")
/ h. i# P" I% t, l5 s. G12 =ym_json(A7)
8 T/ \5 |+ A+ l% Y& x* t13 >ym_close(A2)
, i- S- W3 ~8 d7 YA11 将模型保存为”bankfull.pcf”,默认保存路径为[sAppHome]/store/predict。7 `5 b: O1 W2 R5 S
8 `7 V9 _$ g0 m! Q. ^, x% EA12 将模型信息以json串形式返回。json内容详解可参考在线文档《json参数说明》
( i9 q- X5 M2 u2 p2 a! S9 `& N2 z6 H# D7 d- {& \7 i
A13 关闭环境,释放资源。4 y) M* P* T U# H7 H8 I0 d* y
3 q! u. N$ l5 e+ |7 j! h. F(5)预测( o/ K/ R# ]' V! I
预测之前需要有pcf模型文件和预测数据集) {4 Z0 P$ Y7 l& r9 w/ Y
' C+ y ` a. {8 U9 ~
A' _) R2 d) ?# l2 w; V2 p
1 =ym_env()
4 A, f! k# L. Z1 `' y' y2 =ym_load_pcf("bankfull.pcf")& P5 u/ @. S8 r6 W" |
3 =file("bank-full2.csv").import@tc()7 H: I" `8 K1 z2 m
4 =ym_predict(A2,A3)
$ X1 ~( D" h( t# j: u5 =ym_result(A3)+ c w' d2 K+ [/ B2 b* d
6 =file("bank-full_result.csv").export@tc(A4)- R9 s$ q5 z+ f( d, E
7 >ym_close(A1)
, q' l0 q* E5 B X/ x" p. UA1 初始化环境
% J- o: G0 {/ l9 S8 W8 `2 F% [0 w" s
A2 导入pcf模型文件,生成pd模型对象。% G1 U/ g! K G5 n0 }
9 W& e! K; C; n$ ~ b, t6 [
A3 导入预测数据集,读成序表
2 F x/ q7 U b$ D U! G: l( D; | Q3 y3 @5 v
A4 对序表数据执行预测。除序表外,还支持游标、csv文件和mtx文件,比如A4也可以直接写成ym_predict(A2,“bankfull2.csv”)% z1 k, L- H6 }, ?: p- r
) i: d3 k& w& g, C7 t/ q2 b
A5 获取预测结果
" U, Q! x* `% X- W6 u# ]* B4 ]$ ~/ n+ M( }
A6 将预测结果导出,在本例中预测结果为用户发生违约行为的概率。
' x( G; P& b6 ] r1 \5 y& G% X- L' @6 N& t8 g1 P) s- t
! M5 z/ @1 h- D" U3 a4 `% ^A7 关闭环境,释放资源
' D- X7 _; o. t' F6 D2 B) c' D/ k
4. 集成调用+ T# M, t6 N& F9 o3 |
SPL还可以被上层应用集成调用,比如SPL可以嵌入到Java应用,详情请参考:http://c.raqsoft.com.cn/article/1615765346560" [: \5 k# Y7 D) K3 }
: e3 h2 a1 \! K/ }$ F( y总结) s5 }2 o8 V3 R0 w7 e0 G
使用SPL配合易明建模来实现数据建模预测非常简单,程序员不需要理解深奥的数学原理,只要准备好训练数据,简单几步就可以完成数据建模任务了。而且还可以轻松地把这个功能嵌入到应用程序中,高深的人工智能不再是少量数据科学家的专利。9 p& |+ `" p- h4 q+ K. ~- m) e% C
2 E* t2 S! y4 P! W6 g0 kSPL本来就超强的数据处理能力,能更方便地完成人工智能算法之前的数据准备工作,同时也提供了丰富的数学函数: SPL Math 例程,有些数学基础想自己实现建模过程的同学也可以进一步研究。; N" W: [: Z3 U
————————————————5 O$ R4 ] u8 v. g7 |
版权声明:本文为CSDN博主「java李杨勇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。& D; C8 r, A4 R1 a
原文链接:https://blog.csdn.net/weixin_39709134/article/details/126698462
" d5 x# I6 _9 J; c+ W. z
: D: E+ N6 X& U2 Q
) S9 l+ G; P& `* C U |
zan
|