- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563279 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174207
- 相册
- 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 也不错5 ?1 A" m3 U8 ]2 h8 M& b3 i2 S
4 K: t; A5 V# [7 m
可用来做人工智能建模预测的工具非常多,比如Python, R, SAS,SPSS等,其中Python由于简单易学、丰富的数据科学库、开源免费等特点备受欢迎。但是对于不太熟悉数据建模算法的程序员来说,使用Python建模还是比较复杂,很多时候拿到数据并不清楚该做怎样的处理,选择什么样的算法。其实,在做数据分析和数据建模时,SPL也是不错的选择,它比Python更简单易用,计算速度也快,交互式的界面对数据分析十分友好,同时还提供自动数据建模功能和一些数据处理以及统计学函数,用起来也很方便。! t+ V) L; i4 _5 |2 } o( o
" T& T7 x9 x: q' N& t8 Z下面就以一份用户贷款违约预测的数据为例,使用SPL手把手的进行数据建模预测。1 B6 \+ k1 R/ |, S! l2 C
* h; T/ p5 D% r; s: E( T1. 确定目标,准备数据& U. q i( W" ^0 Z; p6 D
建模预测就是从历史数据中挖掘出规律,然后使用规律对未来可能发生的事情做出预测。这个规律就是一般所说的模型。
s( Z( G! B C- y8 J7 ~& M7 W% p a. w" O% L: w* }* O6 s
历史数据通常是一张我们俗称的宽表,比如在用户贷款违约预测的例子中历史数据是如下图这样的Excel表格:6 f6 v# e$ a$ N! y+ h+ C
, d W5 q- j+ t! ?
首先,宽表中一定要包括我们想预测的事情,通常称作预测目标,上图中的预测目标就是历史用户的违约行为,也就是图中y那一列,yes表示违约,no表示不违约。预测目标还可以是一个数值,比如产品的销量、售价……,或者是预测属于什么种类,比如预测产品质量是优、良、合格还是差。有时目标在原始数据里就有,可以直接使用,有时目标还需要人工标注。
* m1 O3 R, f% l
! J8 U4 l& ?: O; Q# T/ {/ f6 d9 L除了预测目标外,这里还需要很多信息,如表中的用户年龄、工作,房产,贷款情况……,这里的每一列称为变量,也就是和贷款人将来是否违约可能会相关的信息,原则上能收集到的变量越多越好。例如预测客户是否会购买产品,可以搜集客户的行为信息,购物偏好,以及产品的特征信息,促销力度等;预测汽车保险理赔风险,需要保单数据,车辆信息、车主交通习惯以及历史理赔情况等等,如果是预测健康险还需要一些被保人的生活习惯,身体状况,就医看病的信息;预测商场超市的销售情况,需要历史的销售订单,客户信息,商品信息;预测不良产品,需要生产的工艺参数,环境,原料情况等数据。总之,收集到的相关信息越多,预测效果也会越好。
& x$ Y. I$ L) c. k4 t7 W l) F: s' b' w0 ^0 u0 c
采集数据时,通常会截取某一段时期的历史数据来制作宽表,比如我们想预测7月份用户的违约情况,可以采集1-6月份的数据来训练建立模型。数据采集的时间范围并不是固定的,可以灵活操作,例如也可以是近1年或者近3个月等等。; t( l% M: o, F* K: ~# I
% [2 Q+ {; r3 E6 b& i5 p
准备好的宽表可以是Excel格式或csv格式,第一行是标题,后面每一行都是一条历史记录。
5 A {! V5 `+ d6 K# U8 `% @
3 K# e( [ p, e4 H0 \; Y9 e' W3 C如果企业有建设好的信息系统,那可以找IT部门要这些数据,很多企业的BI系统中可以直接导出这种数据。3 i9 a7 q& K* _" ~
# _9 `% N' n( U. C4 o2. 下载软件,配置建模外部库
: [8 j" d5 S- HSPL 在易明建模外部库的配合下可以提供全自动化的建模预测功能。
7 H3 U- o! B% d4 r1 a2 M
5 I7 A6 f& H6 v7 m! x3 ~- q(1)下载安装集算器(SPL)和易明建模软件( x6 Z: p1 t) W5 d; Z2 q8 p
集算器下载:
: n( v) y, E5 d# ]0 h) ?" K Y) {" N“http://c.raqsoft.com.cn/article/1595816810031”6 L9 \% }6 R) I& u
) ?* B: }8 Q( _- g, i! a
易明建模下载: “http://www.raqsoft.com.cn/download/download-ymodel”+ K2 ^: o" Q/ H" K
+ \% I) T0 A' l, H安装集算器和建模软件,并记录安装目录,比如:C:\Program Files\raqsoft\ymodel5 M5 h2 H1 K) }9 `" ^+ h
v/ R) F4 @- r. H) e
( G3 @* ^5 g$ i0 l, Y4 n2 c7 |1 S
(2)在SPL中配置外部库
. }' w) w' f& U) |+ I(a)复制外部库所需要的文件
! g4 y3 h6 |0 M T, p3 ~% U在易明建模的安装目录下找 YModelCil 和 lib 文件夹0 ~& I5 y: S& ?! h8 |
" A3 ?6 N/ i7 W/ ?" i7 d
( B8 E4 y( H6 Z/ U. n- Y) [
. \% e7 i2 X x; T3 d0 m( l! }" D然后去这两个文件夹里找到建模外部库所需要的文件,复制到集算器目录(【安装根目录】\esProc\extlib\YModelCil),比如C:\Program Files\raqsoft\esProc\extlib\YModelCli。
: h5 @, y5 m' u* n9 o5 K% B3 l1 E7 K5 C; }0 y
建模外部库所需的文件有:
4 F r% z$ p8 o! ?1 U
# X# B3 H) w1 W- c8 Z- ^! Q, ]1>易明建模目录的YModelCil中含有以下jar和xml
6 S% p$ w+ t8 s. q
8 `9 w5 z$ r) E5 D4 I# b6 ?! ~ant-1.8.2.jar, Z: J5 _1 V' w& T/ `
commons-beanutils.jar- A8 Y9 P6 n1 u3 i
commons-lang-2.6.jar- w8 p6 z& d8 l8 Z) g& f. ?
ezmorph-1.0.2.jar9 u, [7 k1 e& u& H: l
json-lib-1.1-jdk13.jar
4 g ?0 O+ [9 o9 ]; M/ Sraq-ymodel-cli-2.10.jar
4 z: A) ?3 z) s! k4 h, v- Euserconfig.xml7 Y1 O, t$ P: m" Y4 J d O
" X$ G0 y% o% j2 i4 x! E: M7 Q2>易明建模的lib中含有以下jar4 z$ Q- T: f6 G. N
7 ]$ S8 x( h* w. M$ @# J
commons-io-2.4.jar
( h( P; j1 U9 |8 V' L' Nesproc-ext-20211104.jar* ?! A2 y* d5 _! {1 s: Q
fastjson-1.2.58.jar$ p; w6 q7 J8 G. ? g
gson-2.8.0.jar
; f/ B; \3 c% D% D& h3 Ojackson-annotations-2.9.6.jar
$ ^2 Y7 a$ ^2 C+ Ljackson-core-2.9.6.jar) O4 Q H; T4 |3 t) K V2 k
jackson-databind-2.9.6.jar/ f* g2 J' N! u! a* a* R0 J# r$ e7 J
jackson-databind-2.9.6-sources.jar
& p* f6 k2 w0 Z* rjackson-dataformat-msgpack-0.8.14.jar
$ M) }- Y0 R( p' I. W" \0 H5 V0 l. cmining.jar. D/ I6 i, N6 X$ f! M6 z. k R
msgpack-0.6.12.jar
" a. W" P. w9 z( mmsgpack-core-0.8.16.jar
5 G7 T b& f4 `% K/ B
* f! f5 C+ J/ l. W(b)设置userconfig.xml文件参数: l$ e' k# U/ R' t" G* W3 o4 c$ W& R
在集算器目录esProc\extlib\YModelCil下的userconfig.xml文件中设置参数
6 {8 Y& l ]; }
/ A5 k) d0 T4 b1 J- s$ a* @% Q0 u名称 参数说明, r- B9 Y& w, G# C# a. y
sAppHome 易明建模的安装目录" Q- s7 h1 N. R4 l" V) D
sPythonHome 易明建模目录的Python路径 Windows: raqsoft\ymodel\Python37 Linux: raqsoft/ymodel/Python37/bin/python3.7
9 G/ a! a- `0 P4 }) T! T& XiPythonServerPort Python服务网络端口
) }( F: ?5 V$ w9 wiPythonProcessNumber Python进程数8 K! L. f5 T M/ B1 l5 g) S: n
bAutoDecideImpute 是否智能补缺3 l& I2 J3 g! o) H! b7 w7 r
iResampleMultiple 重抽样次数- ?7 v* H( m7 M! g% U$ n6 J
其中必须要配置的参数为sAppHome和sPythonHome,其他参数可以采用默认值,有需要再进行修改。比如可以配置参数如下,加粗部分是必须要配置的,根据自己的安装路径。
# o8 ?( L. U$ W {7 {; Z6 ?, c% z0 c( | c* C7 }. k( I7 ?/ X% L3 p
<?xml version="1.0" encoding="UTF-8"?>
4 J! p( \4 `( S( d7 I2 F' D% L2 A<Config Version="1">7 \$ g0 u p0 S) c6 E: A
<Options>
2 E+ e- n$ p, d7 \: Q& P. z <Option Name="sAppHome" Value="C:\Program Files\raqsoft\ymodel"/>
2 e: _$ s" l, }# D <Option Name="sPythonHome" Value="C:\Program Files\raqsoft\ymodel\Python37\python.exe"/>& f+ k/ C: I( g, Z6 V) z
<Option Name="iPythonServerPort" Value="8510"/>
3 ^$ Z+ s: c8 @5 }4 _/ W( x <Option Name="iPythonProcessNumber" Value="2"/>
. |9 M0 O+ j( L" Q: N5 \ <Option Name="bAutoDecideImpute" Value="true"/>
' N* F5 r" T j3 x. z; e <Option Name="iResampleMultiple" Value="150"/> ! O( Z- t6 M# q& _, m1 m! ~( B
</Options>
% j/ U" z0 ]6 u</Config>- C) o1 e2 s% x1 E0 ^3 f6 h
1" t# d' W. ]/ m
2, i+ ?3 H2 y8 ]( I
3* Q8 n4 m7 c" \, C4 q9 u
4
0 P8 b/ U, [6 z: Z5
/ n# F! p: Q$ o# U0 M Z- E4 c- r68 _& [0 u, z/ c7 Q3 m) t2 c
7
* s& j$ }6 j2 J$ z' Q8! A$ J: ^4 K5 c; {& J2 l
9
2 \0 ]) W0 e# S, |* c. U6 \3 K# }10% J& e$ S* e3 c& X+ N) k
11$ o( g4 |9 y6 u7 E. s
其实,从这里可以看出,易明建模也是基于Python写的,但它将Python算法做了封装后,程序员就不必再理解算法的数学原理和运行细节了。
' I; n) G- g9 ?( P
* y* B8 x1 m% J8 x(c)SPL环境配置
3 @6 \2 @* P0 R! M! X& D% G1>. 配置外部库& X1 T7 o5 x s3 Y/ P! U" }7 R
/ M4 U1 \4 P5 b
打开SPL,在选项菜单里,外部库选择里勾选YModelCli,使其生效。外部库的路径为第(1)步骤中集算器YModelCli的安装路径。
: ^# `# k. M/ J0 T
' M" l/ ?$ i9 q! j
5 {9 L1 L9 a, K9 D* E* e
# T9 S* G# L7 j ~8 F% e- m在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置外部库路径和名称。
. {/ G9 {% h- L+ y" L2 U; R6 u& f+ P. T, K4 n% b
<extLibsPath>外部库路径) z' O/ u N3 e4 G+ h# g6 f
& {6 N3 r, K3 l$ B<importLibs>外部库名称(可多个)
2 L, L7 c/ R+ [( B9 [! f, n% N% b1 p/ l. C& B
2>. 线程数设置7 i6 R) {% s* }
6 N2 D: Q. g" g如果有并发预测,还需要在SPL设置“最大并行数”,也就是线程数。设置多少用户根据需求和机器情况自行设定。
) ?: g6 x) j; v3 \4 S& b! p# L b- P" D, ~1 t, t- }; F; r( ~
3 X8 x5 x! e' p( c1 o9 R3 h: e7 s/ e" r/ B
在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置。
! c! {2 z/ c+ w) Q
0 n. k" c6 [5 V& R<parallelNum>最大并行数
6 M" L, {9 {7 J1 i& Q0 L; U$ N+ _7 ^7 ^2 r
到此,环境配置完成。
" R% z" X$ q: ^+ O7 w4 D7 b5 q
) `1 _( U4 ?: W. l' R+ O$ i: |3. 建模和预测
C/ B+ O& h& [! @( B, f(1)加载数据
2 D r4 e" m6 i6 h) a; gSPL能支持csv,excel或数据库中的数据用于建模,这里以csv为例,其它数据源类似。
' K. v0 e0 M3 L3 v1 {4 m& M- K ^+ B4 d0 s, T8 h: D
设有一个贷款违约数据表如下,需要建模来预测新用户是否会发生违约行为。
9 K/ ~- `$ b4 g6 d, d2 |8 Q$ y' f
; y3 k) w. [/ P* \) b* {9 f+ @9 H+ x% Y2 S4 e H' C0 y |
2 z" u, u* `, a, x文件命名为bank-full.csv;$ o' n* c* `' r' `
* c2 `+ a1 b3 C* xA
! h- G4 K2 x) J% g) V9 N1 =file("bank-full.csv").import@tc()
1 ?, ~- I$ L6 [2 L7 q; f& X2 =ym_env()' z5 o' _7 ?, T6 {8 P8 D- _2 r
3 =ym_model(A2,A1)
/ d7 ~# M+ D. e. F+ dA1 导入建模数据,读成序表: e% p0 X$ x$ G6 j
' z3 _! B8 w# I" |
* j \- j: O/ s4 H( y U5 b
' l! c: |* ?# B6 l8 S! ] X& _% x
A2 初始化环境,执行A2后会在易明建模的安装目录下生成store目录及子目录用以保存数据及结果文件。. s$ j% Q6 P" S7 h/ z% x8 g
7 z: V* I8 L9 DA3 加载建模文件,生成md对象
7 v! O2 D, N- A- o' h, _$ m
; Q2 a! A! c, h6 y$ `# Y c- Q(2)目标变量设置和变量统计7 z% S6 _. T. R8 w# b
数据加载进来后要设置目标变量# G$ Y$ b7 x, V2 t: {% H
7 D# V9 j6 W' f' h! s: F) CA" q; l# C3 t' L# @' Q
… …
; r$ L3 ^- s$ @+ w9 u( Z4 =ym_target(A3,"y")% ~2 z; ]; b1 ~5 M6 |% a. o% ]
5 =ym_statistics(A3,"age")9 R2 a+ \& [3 M: y
6 =A1.fname().(ym_statistics(A3,~)) |4 [7 V0 K5 V
A4 表示将字段“y”设置为目标变量,目标变量可以是二值变量或数值型变量。; u S4 ^; I, X0 O4 |; q
5 f2 b/ W5 X6 i( L9 k% W$ h5 N
A5 查看某个变量的统计指标,比如 “age”,返回值中可以看到缺失率,最大最小值,异常值,数据分布图等参数。& G! Q# t1 X% h; q+ Z
4 b V/ A6 R7 Y' t; @ ^. }
- _/ X6 D: w% G
7 {, q# C8 i3 G! V9 K8 aA6 循环变量名查看所有字段的统计信息,返回包含所有字段的统计信息二级序列。
, P3 x7 H& S+ b1 n1 l. O, B( k; K* x
1 M" J5 E, E+ ?0 n/ @0 u h( B
! m) P9 |5 l2 K) ^6 X, O
8 q5 U7 R3 ? _(3)建立模型和模型表现
( `% O/ V) p {A+ K0 }/ F) s( C% ?% Y, C" `
… …
, v7 I z8 K0 n& C A- ?, L" _7 =ym_build_model(A3)( J4 l/ k% [. V
8 =ym_present(A7) u& B4 S" w( z; ^
9 =ym_performance(A7)$ s" n" b9 a/ Y, z' ~( U
10 =ym_importance(A7).sort@z(Importance); O% h( _( T0 }/ x6 z
A7 使用建模函数建立模型,执行后在后台会进行全自动化数据预处理和建模过程,此过程会耗费一些时间,时间长短取决于数据量。结果返回pd模型对象。# G9 }! b9 c7 n1 P: c! t) T
( |+ w p6 a) H模型建好后,可以调用pd模型对象查看模型信息、模型质量和重要度。8 s& Y X/ S) b+ |. m
- u5 e- P& W8 M) r
A8 返回模型AUC值及参数
9 |: w2 w5 |' S, y) d
' ^* K9 p, J/ w9 R8 U) \7 y( R, M0 b- d8 u+ E, C& T
% J3 T: D: p' {9 J; kA9 返回多种模型指标和图形,诸如AUC,ROC, Lift……
3 G& M# M& Q) M8 ~" j5 A0 n
0 d( s6 Z) `' G* h/ e) o7 z# ?, e! D6 s# }
$ a) ?* Q$ U( P8 L. E5 c( t4 y比如点击A9的第6条记录的Value,然后点击右上角“图形浏览”图标,数值字段选择“Lift”,就可以查看Lift曲线
8 N" l# `$ F% V B6 i) [* I8 V. o/ x/ N* v3 s7 t% u% z
' r" X0 M- N4 i0 K/ G. D8 e6 |, b3 z
" j ~9 f, S$ iA10 会返回每个变量对目标变量的影响程度并且按照重要度降序排列。数值越大对目标变量的影响程度越大。降序排列分析起来更加直观。 a1 Q/ S" k& V/ m/ f2 @
( n1 S: V7 h3 b) x& C [- K8 {% x" \0 d" d( y
) t0 a9 ^" m: P2 @: G; w
(4)保存模型/ c7 K/ k9 G8 h& ^3 O( i0 g
A& V' n/ ?. z" t: h7 @# A3 N' @! M
… …2 |# h7 \& j# W; P
11 =ym_save_pcf(A7,"bankfull.pcf")
- @/ b G" P" M' g. Z" K12 =ym_json(A7)# m- x. f7 @7 b- k8 j3 r
13 >ym_close(A2)
- ?4 m4 u! s6 R' D! ~* _2 cA11 将模型保存为”bankfull.pcf”,默认保存路径为[sAppHome]/store/predict。
8 j) K9 Z- X4 m1 |
% ?- T2 |4 `; ]) Y4 l6 FA12 将模型信息以json串形式返回。json内容详解可参考在线文档《json参数说明》2 D0 r, \3 o! U! E) F+ G$ ?
: H' u6 Y! V& L$ O
A13 关闭环境,释放资源。
3 E1 I7 a, x9 ~3 a1 U' g2 W2 k2 F1 N
(5)预测
f7 p/ _% o4 ?2 X& S' {8 j预测之前需要有pcf模型文件和预测数据集# \+ ?% u j7 s! P: T
/ Y8 u4 c5 Z; `5 |- K: Z9 {$ @
A# i) Q$ W0 L4 |6 d) V" I/ i
1 =ym_env()
6 m' B7 {' r/ R$ P9 k1 u2 =ym_load_pcf("bankfull.pcf")7 X5 x7 L% f5 [" y; @+ G
3 =file("bank-full2.csv").import@tc()
: K) [4 d0 P0 q- O- A% V7 `6 ~5 I4 =ym_predict(A2,A3)# q/ K& W% o/ g4 F
5 =ym_result(A3)5 k1 j. R& a* P/ G% B2 A
6 =file("bank-full_result.csv").export@tc(A4)% l: Z. G" j$ j7 T- P' s y5 I* f
7 >ym_close(A1)$ J, p* I; L8 d2 s, V ?
A1 初始化环境
2 H4 Q9 M% ~' E1 n4 G+ E% S
# L! |% V0 T; w5 dA2 导入pcf模型文件,生成pd模型对象。
1 u ]7 \8 T' d/ o# C6 @! |& ~
2 y4 B* U$ {; s+ vA3 导入预测数据集,读成序表" B2 L* [& b9 O: l
4 N4 [$ K3 x0 w8 K# zA4 对序表数据执行预测。除序表外,还支持游标、csv文件和mtx文件,比如A4也可以直接写成ym_predict(A2,“bankfull2.csv”), {! x* b Y; N7 d' U$ B
% S8 Q. N* A) _& c3 D3 C5 q
A5 获取预测结果. q: r: d8 r2 w1 m& A8 j/ g. E7 i
p2 K8 x G( i0 aA6 将预测结果导出,在本例中预测结果为用户发生违约行为的概率。0 V$ o8 z7 p b. E8 R
! ?. z C" R0 u( g" b8 W+ X; f- M- |& p
A7 关闭环境,释放资源
0 t' z' _" ]6 p; k# D0 Y% S
( K0 A- H2 `- I: G1 L; Y- O: U1 N4. 集成调用
# I9 w9 z, K7 mSPL还可以被上层应用集成调用,比如SPL可以嵌入到Java应用,详情请参考:http://c.raqsoft.com.cn/article/16157653465608 R3 x+ _1 O1 a0 [+ _4 F4 _
! S* u; A+ ~: e9 d% s
总结5 `; D% r. A( L, p. P
使用SPL配合易明建模来实现数据建模预测非常简单,程序员不需要理解深奥的数学原理,只要准备好训练数据,简单几步就可以完成数据建模任务了。而且还可以轻松地把这个功能嵌入到应用程序中,高深的人工智能不再是少量数据科学家的专利。
( W8 N3 O$ {/ i; I2 M$ T( ~* J8 p/ R, @+ T
SPL本来就超强的数据处理能力,能更方便地完成人工智能算法之前的数据准备工作,同时也提供了丰富的数学函数: SPL Math 例程,有些数学基础想自己实现建模过程的同学也可以进一步研究。
3 D2 @$ n0 p) G+ T. ^! |————————————————% I5 B$ `8 G5 [/ _3 }3 _
版权声明:本文为CSDN博主「java李杨勇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。$ P$ r, N1 @! @
原文链接:https://blog.csdn.net/weixin_39709134/article/details/126698462
+ c. x. h' O4 w+ D3 B/ M8 U) W( A G4 X
" R2 C" j$ z9 e! l
|
zan
|