- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 564505 点
- 威望
- 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 也不错, t3 d8 x* T/ e8 k R6 M
: }% T. k5 L" f" e& n
可用来做人工智能建模预测的工具非常多,比如Python, R, SAS,SPSS等,其中Python由于简单易学、丰富的数据科学库、开源免费等特点备受欢迎。但是对于不太熟悉数据建模算法的程序员来说,使用Python建模还是比较复杂,很多时候拿到数据并不清楚该做怎样的处理,选择什么样的算法。其实,在做数据分析和数据建模时,SPL也是不错的选择,它比Python更简单易用,计算速度也快,交互式的界面对数据分析十分友好,同时还提供自动数据建模功能和一些数据处理以及统计学函数,用起来也很方便。
+ ]0 |' }0 w1 S% ~! c
2 h4 J0 @0 N( S下面就以一份用户贷款违约预测的数据为例,使用SPL手把手的进行数据建模预测。6 J% Z2 k5 D, N$ X' j' ^
* V9 \7 h4 {! h1. 确定目标,准备数据8 R1 X( H# H6 p3 E
建模预测就是从历史数据中挖掘出规律,然后使用规律对未来可能发生的事情做出预测。这个规律就是一般所说的模型。' |! w: N& G% Q' z. E$ X, |: P
+ W$ C( Q4 G$ W- Z; q
历史数据通常是一张我们俗称的宽表,比如在用户贷款违约预测的例子中历史数据是如下图这样的Excel表格:
4 t! E& D2 e. M; K
; p/ m1 B d2 ^* Y首先,宽表中一定要包括我们想预测的事情,通常称作预测目标,上图中的预测目标就是历史用户的违约行为,也就是图中y那一列,yes表示违约,no表示不违约。预测目标还可以是一个数值,比如产品的销量、售价……,或者是预测属于什么种类,比如预测产品质量是优、良、合格还是差。有时目标在原始数据里就有,可以直接使用,有时目标还需要人工标注。
# E) \9 B* Q* h) s
& c( O6 Q4 v# e X1 Y* J除了预测目标外,这里还需要很多信息,如表中的用户年龄、工作,房产,贷款情况……,这里的每一列称为变量,也就是和贷款人将来是否违约可能会相关的信息,原则上能收集到的变量越多越好。例如预测客户是否会购买产品,可以搜集客户的行为信息,购物偏好,以及产品的特征信息,促销力度等;预测汽车保险理赔风险,需要保单数据,车辆信息、车主交通习惯以及历史理赔情况等等,如果是预测健康险还需要一些被保人的生活习惯,身体状况,就医看病的信息;预测商场超市的销售情况,需要历史的销售订单,客户信息,商品信息;预测不良产品,需要生产的工艺参数,环境,原料情况等数据。总之,收集到的相关信息越多,预测效果也会越好。
& J* K; o' O, x8 g
( _/ l2 t* D2 ]2 M4 D( C采集数据时,通常会截取某一段时期的历史数据来制作宽表,比如我们想预测7月份用户的违约情况,可以采集1-6月份的数据来训练建立模型。数据采集的时间范围并不是固定的,可以灵活操作,例如也可以是近1年或者近3个月等等。
5 A! ~# p) E3 e( M: q' x% c
" h7 \" K9 g0 R准备好的宽表可以是Excel格式或csv格式,第一行是标题,后面每一行都是一条历史记录。) I3 m+ `) G$ ?- A
2 v5 z/ h9 n" \# }; |: H/ \
如果企业有建设好的信息系统,那可以找IT部门要这些数据,很多企业的BI系统中可以直接导出这种数据。- t: d& _4 Y7 z( \3 T, ]' _8 M
$ D! L' G8 A; F$ O# E V6 A' N$ c
2. 下载软件,配置建模外部库
F5 G' Z9 v7 E0 Z0 |; D" N# vSPL 在易明建模外部库的配合下可以提供全自动化的建模预测功能。3 e7 ], j8 V$ Y0 \
, w! r J( m) [- U9 D(1)下载安装集算器(SPL)和易明建模软件
6 o* U4 l+ @! P; L7 Z集算器下载:- ?2 ~" s3 L& G T
“http://c.raqsoft.com.cn/article/1595816810031”5 c1 i8 c2 n* R+ t( u1 {* `
9 L7 H) L2 J5 D
易明建模下载: “http://www.raqsoft.com.cn/download/download-ymodel”7 p' T, w A# S7 }. T: i
" J6 W' V J) e5 J$ H& Z; |安装集算器和建模软件,并记录安装目录,比如:C:\Program Files\raqsoft\ymodel5 ~8 E. e0 l& h0 {' U
% `5 a* v0 l6 |7 F
7 _( A* ]9 v, j
- [# {$ ]0 { l1 q3 z2 W! b' E6 a C+ _(2)在SPL中配置外部库
w1 B9 l$ ]' X3 g# o(a)复制外部库所需要的文件# B; z" f8 p2 o& v
在易明建模的安装目录下找 YModelCil 和 lib 文件夹: m' B: _" d* V2 m+ U3 u* o
0 R1 q- p ]1 W* S& p
* M& Y+ l" p; ~) S# C; L5 x
, `/ {& c( X. a) t5 N+ [$ s+ P' q然后去这两个文件夹里找到建模外部库所需要的文件,复制到集算器目录(【安装根目录】\esProc\extlib\YModelCil),比如C:\Program Files\raqsoft\esProc\extlib\YModelCli。; Z" P# g- p! l! U% p; e$ B) D: M
. Q* N. _& H- Z6 h; |建模外部库所需的文件有:
8 _* |; T% v2 K6 y/ a5 M9 j( ^2 a/ z5 W5 _5 P0 _
1>易明建模目录的YModelCil中含有以下jar和xml
- {/ `7 N7 p0 f; J
7 b, k$ Z0 u) s( B) c) s) nant-1.8.2.jar- a3 w! a9 F! B( F6 X$ h3 _8 d
commons-beanutils.jar/ @% H1 l6 s/ e3 H" o$ v1 Q
commons-lang-2.6.jar
5 e% i1 {0 w5 m( ?- `% yezmorph-1.0.2.jar
8 Y5 @' C. h5 D# C2 rjson-lib-1.1-jdk13.jar: L# m9 X/ r. b2 p0 _
raq-ymodel-cli-2.10.jar0 {, r0 M1 ~& E) W2 x
userconfig.xml: L/ Y+ m& k$ e# W# W/ w
* u8 \0 p" c* N7 S# ]5 P
2>易明建模的lib中含有以下jar, I8 _ [$ A- ^. _- F2 A
) N$ [. q( v1 p' B, u
commons-io-2.4.jar ~: W/ q+ s$ v6 ~. e: T
esproc-ext-20211104.jar6 p; U( R6 a$ B# g _
fastjson-1.2.58.jar
! P' q% |, \5 z! j$ `& agson-2.8.0.jar+ d5 T) f7 v5 D, t R9 V
jackson-annotations-2.9.6.jar8 L# P7 G6 o& }
jackson-core-2.9.6.jar: V" r/ X, v) D) l
jackson-databind-2.9.6.jar3 }" K3 l3 E. {$ R: }) _1 t
jackson-databind-2.9.6-sources.jar6 M6 r0 t9 Y5 \+ M$ a
jackson-dataformat-msgpack-0.8.14.jar; W+ t8 O# l) l m
mining.jar: i+ |. F7 C2 Y! O/ p: @
msgpack-0.6.12.jar
7 {4 U; R- C3 A" ^$ bmsgpack-core-0.8.16.jar
$ @) @7 d! V9 B: a H
; e% X) j: S$ ]. R0 B3 n6 H(b)设置userconfig.xml文件参数
' Z0 t2 V# @/ }+ }( ^ O在集算器目录esProc\extlib\YModelCil下的userconfig.xml文件中设置参数% J$ X: Z9 K: ~4 B; k$ l5 A- L$ ]
6 z9 y2 m$ ]5 g5 R. k
名称 参数说明0 }& g7 P/ E7 [4 j0 S; j7 r N
sAppHome 易明建模的安装目录7 {; }) \6 I; n f$ [& @) r
sPythonHome 易明建模目录的Python路径 Windows: raqsoft\ymodel\Python37 Linux: raqsoft/ymodel/Python37/bin/python3.7
; [+ a% I$ ~; v& T( \4 NiPythonServerPort Python服务网络端口( Z. P7 s/ f: C
iPythonProcessNumber Python进程数
* Y I, a. F+ m% D+ ^" SbAutoDecideImpute 是否智能补缺
) I6 {& R) }$ GiResampleMultiple 重抽样次数1 A. S. w% Z! `7 y) d
其中必须要配置的参数为sAppHome和sPythonHome,其他参数可以采用默认值,有需要再进行修改。比如可以配置参数如下,加粗部分是必须要配置的,根据自己的安装路径。
1 _' o4 f! h( X! ~8 S; d- ]! ^9 Y8 V* z4 Q$ g8 _4 b0 l0 J
<?xml version="1.0" encoding="UTF-8"?>
7 a# m0 e$ g0 K! H$ c<Config Version="1">
0 e7 }, W7 v1 |$ ^ <Options>
, N# q4 K* `/ \* H: E6 ? <Option Name="sAppHome" Value="C:\Program Files\raqsoft\ymodel"/>
1 g K$ `' g7 k$ M+ G <Option Name="sPythonHome" Value="C:\Program Files\raqsoft\ymodel\Python37\python.exe"/>+ _" j9 b$ ^# r$ O3 ~ w
<Option Name="iPythonServerPort" Value="8510"/>% B$ |) ]9 i- G" [! z6 @7 X4 ?
<Option Name="iPythonProcessNumber" Value="2"/>4 m" f( z/ F! n+ w
<Option Name="bAutoDecideImpute" Value="true"/>; @1 t/ o. F" [2 n S* j6 r
<Option Name="iResampleMultiple" Value="150"/> ( S3 D6 o. D5 V' ]% {# }) u
</Options>8 o1 ]8 o K2 C
</Config>3 p5 i& d8 i( B( ]
1
. `. e8 r2 ?. {5 G7 Z) c26 h6 |7 E; P y: \
3
! X# ~- E U9 M4. T* G/ s; `1 [, G9 r6 D, G
5
. ?+ r' `5 @. x4 S3 u, i$ R* R6, A& E" w/ Q& ~
77 a& S+ t" T8 {! N
8
7 L' ^- v1 m1 e) M: N( B9 h- W0 q99 B+ Y, U3 t" u' E+ y
10
$ [/ T* \+ v2 K i& r! S11
+ D4 t. o9 f! }* I9 n其实,从这里可以看出,易明建模也是基于Python写的,但它将Python算法做了封装后,程序员就不必再理解算法的数学原理和运行细节了。" `. r! x# K3 K$ @" m+ B4 S) ^( a
. v, G- @/ J0 r2 p3 U# g
(c)SPL环境配置
; ], {4 q9 b$ d. P z1>. 配置外部库6 {: B- |1 c- k9 Z7 E
' l) ^4 o) u: X( @
打开SPL,在选项菜单里,外部库选择里勾选YModelCli,使其生效。外部库的路径为第(1)步骤中集算器YModelCli的安装路径。
; ^/ v( ]0 f1 w2 @5 N3 v0 m' l: Z/ P' D
% _" q. g0 z: K
6 h$ B( D3 l7 s+ ]4 l/ [在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置外部库路径和名称。
# ?: ?; z2 u% a$ m+ X6 J
+ N( Z6 J$ |& {8 J- _8 j- F' v& X- [<extLibsPath>外部库路径
1 w. Q3 l$ h6 K$ [! M
( _, e% G/ v# P- u1 V- f8 n<importLibs>外部库名称(可多个)4 ~& Z+ z2 P1 @5 _* L4 P
" F& U0 f3 v" k' e6 ]- e2>. 线程数设置+ A# ?0 ]+ [% z& P% x$ S
5 x7 E; A8 P" f1 @9 Z如果有并发预测,还需要在SPL设置“最大并行数”,也就是线程数。设置多少用户根据需求和机器情况自行设定。- q6 ?, \" d) j3 j$ S1 S
8 n# S8 c. B; o% x* k
$ H2 r t1 o7 F- e$ U3 e# U2 D
6 n3 ]+ |# `3 e7 A6 c, h& X* M
在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置。
1 h8 z# U, c G
0 ?$ | v1 a, s1 i1 S" O6 L/ v<parallelNum>最大并行数
% C$ S- o' N' i. G5 i* w7 W
3 s+ a$ P/ T7 u" }6 c+ U到此,环境配置完成。
0 [& y# t. j) b
6 z9 m: i; J: g3. 建模和预测( s& K G9 f+ j9 T$ `
(1)加载数据; H: t! j, L! @0 ?5 R# R
SPL能支持csv,excel或数据库中的数据用于建模,这里以csv为例,其它数据源类似。
% f5 y4 l! J% n5 b& a* p$ G3 i1 _( H c7 X' z2 D) k( `
设有一个贷款违约数据表如下,需要建模来预测新用户是否会发生违约行为。
& h+ h4 X t+ T. w2 @' m, C+ W- }6 D: o5 A5 [! |% Z1 Z( g
4 Y5 A/ {# s' ]3 ?" i4 w
& d$ ? T% o2 f8 _" p
文件命名为bank-full.csv;9 j. J( ]- J. B4 j3 m9 }( z. F
! p, p+ R/ c' B6 X u' }. d
A
- Z3 p6 ^/ c/ Q* Y5 d8 ]5 F1 =file("bank-full.csv").import@tc()
3 F% z1 v G w7 G$ H6 M2 =ym_env()& _# m" M) E$ N/ ]
3 =ym_model(A2,A1)7 M" }! ?- f; K2 i+ D& ^7 h2 o$ A
A1 导入建模数据,读成序表
: y3 k; k/ P2 l- \8 p* O
# n9 d6 m2 O1 G5 q! z0 {7 \+ {& F( N' n' Q7 ]
3 K+ R1 m T7 G9 d8 wA2 初始化环境,执行A2后会在易明建模的安装目录下生成store目录及子目录用以保存数据及结果文件。* U! ~' l+ P* \
9 Q9 V, s8 |- t" y' l I5 ~A3 加载建模文件,生成md对象5 G. v9 Y6 M, j* k; ]- a
" E1 W p, d) l+ r! {8 S) ]4 g(2)目标变量设置和变量统计
9 x# j; S/ K5 G5 {( ]! g数据加载进来后要设置目标变量
! |2 R5 q: L" t u! G S/ A; J( U' |& R6 i
A7 n5 O7 o8 E, P" k
… …- T# e2 m; ^# d7 z
4 =ym_target(A3,"y")
- U; G0 W1 W1 u, l5 =ym_statistics(A3,"age")
. a( u/ {3 l, D6 =A1.fname().(ym_statistics(A3,~))
! a8 P2 A( n7 }0 Q! D9 n5 }A4 表示将字段“y”设置为目标变量,目标变量可以是二值变量或数值型变量。+ `5 ?6 r& K. X; A5 c/ v
. ?9 E/ b7 g2 w. I& I; G' M
A5 查看某个变量的统计指标,比如 “age”,返回值中可以看到缺失率,最大最小值,异常值,数据分布图等参数。& z- \/ f' T: j( W4 I
3 L5 ^- y& P8 ~' J; |5 \2 A1 U, d) G; A$ A
$ n- V4 {- q& J5 q! D {A6 循环变量名查看所有字段的统计信息,返回包含所有字段的统计信息二级序列。
2 O& k! l3 V. C3 n# @8 R- {! H7 o8 z* y; u$ x# S# X) J
' Q/ I# d! h+ I. R) F7 _/ e2 R$ c1 r
(3)建立模型和模型表现, s# S# D; x4 y' @2 B/ q0 G5 U
A
1 H' E, I( i1 u% }… …9 [4 K# c4 t, F+ l! r- E0 g
7 =ym_build_model(A3)
" L% s) e4 n$ K) z6 W8 =ym_present(A7)% l) `. U) Q- y+ F' N/ n
9 =ym_performance(A7)
! I+ Y- K. S5 b10 =ym_importance(A7).sort@z(Importance)0 j" J6 H0 }( x' ]+ F
A7 使用建模函数建立模型,执行后在后台会进行全自动化数据预处理和建模过程,此过程会耗费一些时间,时间长短取决于数据量。结果返回pd模型对象。
$ v7 r3 h- ^! p/ Y( r+ D% D4 l0 w9 m+ h
模型建好后,可以调用pd模型对象查看模型信息、模型质量和重要度。# X& M3 U9 f; g2 @! G4 C/ Q
6 @0 |+ {6 Y0 @% xA8 返回模型AUC值及参数
. h! h |7 j( \) v6 R
5 w- N, u* M+ C) u6 w# v t+ J# I% @9 q& L
% X6 h5 s: Z& k* v0 {
A9 返回多种模型指标和图形,诸如AUC,ROC, Lift……
$ s. t S: v7 p4 }5 l' ]6 G
) @" w4 o, ?8 {8 f1 ]- h; |. j
( Q( r) E4 Z( B6 |. D: n, H+ `1 u
; i/ E4 S! J9 h+ i比如点击A9的第6条记录的Value,然后点击右上角“图形浏览”图标,数值字段选择“Lift”,就可以查看Lift曲线
" u4 d+ m1 R; p/ {6 j' S% m4 t
3 ]0 ~0 [2 p. i3 }# q8 A& w Q' L" f" |8 }
/ t) Z& r; j2 J6 h; V4 ZA10 会返回每个变量对目标变量的影响程度并且按照重要度降序排列。数值越大对目标变量的影响程度越大。降序排列分析起来更加直观。% g) ^" a \* ] U2 z i* k# o
5 G# `, i; e5 h- S7 N' W+ x
: N- W4 M2 y; q3 c
$ V# ]& |! s; u7 u" }: }
(4)保存模型
: H6 z' |9 @* k' |/ zA9 r0 u) u$ F4 ^/ q, E( Z
… …
+ h9 C6 X U1 Q3 ~11 =ym_save_pcf(A7,"bankfull.pcf")
. r8 F3 ^+ D0 Y- P" v' A12 =ym_json(A7); W1 M/ d3 `, J) J, K/ T5 c
13 >ym_close(A2)
8 K1 n* x+ D! B3 L6 [6 @6 bA11 将模型保存为”bankfull.pcf”,默认保存路径为[sAppHome]/store/predict。
$ e* B/ W! Y( @7 v. b y
5 _/ R7 p5 z; F9 q, z; X* U, @A12 将模型信息以json串形式返回。json内容详解可参考在线文档《json参数说明》
8 c- W/ M' N* R/ q4 j6 {1 ]7 X. A1 t/ A$ Z
A13 关闭环境,释放资源。) u1 v. W. \7 I6 E2 O- v
, l! H& f0 G9 k. G4 U(5)预测
8 C9 t1 q) _- p9 e- X/ f预测之前需要有pcf模型文件和预测数据集
- U0 X9 L) q, U4 i, t
! L3 _) u$ f% q! X$ SA' k G& G: W' S+ w5 u
1 =ym_env()
: f2 L+ z/ i: ?& [2 =ym_load_pcf("bankfull.pcf")
9 U) U1 H2 c3 d% }; S M1 Q& B3 =file("bank-full2.csv").import@tc()
, a2 i9 x' k$ m& u+ H _/ e1 q& ~. Z2 |4 =ym_predict(A2,A3)9 q/ I W" L6 I+ @8 @1 y& ^5 r* l
5 =ym_result(A3)* J/ {) l3 V- i0 w$ W
6 =file("bank-full_result.csv").export@tc(A4)/ @& J" [# y0 n
7 >ym_close(A1)
) D6 @. m; G) p! _* \; A! ^2 QA1 初始化环境4 \! J& J9 F/ {; b$ g+ J( ?
# M9 ?: R( Z M) D+ b( tA2 导入pcf模型文件,生成pd模型对象。
- }4 H6 V" x: a+ e4 |5 C( m/ L- |
! I+ o( l% x- G" _- g5 }1 z IA3 导入预测数据集,读成序表, ^+ V4 o$ B+ ~( Q x
- C6 n$ s c5 J5 g- [, B
A4 对序表数据执行预测。除序表外,还支持游标、csv文件和mtx文件,比如A4也可以直接写成ym_predict(A2,“bankfull2.csv”)0 b, `- k0 h/ ^% {; ~; N+ x K+ P
- @7 ?1 J2 @1 s0 O; l& PA5 获取预测结果
( Z0 |/ Q! _- [, a7 G" h5 O) n3 I& g
A6 将预测结果导出,在本例中预测结果为用户发生违约行为的概率。
! j& T! }0 G; k! z- Q4 w: S: C- z$ }& d7 X: d5 @' B7 u
; ]; T+ D% H! C* C2 _) G2 s! G
A7 关闭环境,释放资源" D0 w8 l3 t- F. Y+ x5 {
- G. d4 b3 Z5 ?; U
4. 集成调用
( w9 x3 R- K# I. ySPL还可以被上层应用集成调用,比如SPL可以嵌入到Java应用,详情请参考:http://c.raqsoft.com.cn/article/1615765346560* k: g4 ^8 _, w7 m0 l! d
' D4 e t) ?# S. s5 A总结9 E! x3 c0 f4 J |# C
使用SPL配合易明建模来实现数据建模预测非常简单,程序员不需要理解深奥的数学原理,只要准备好训练数据,简单几步就可以完成数据建模任务了。而且还可以轻松地把这个功能嵌入到应用程序中,高深的人工智能不再是少量数据科学家的专利。' q, v4 E; J. P9 E7 Q% X
! ~: F/ i: S! Y0 z5 b( K$ C
SPL本来就超强的数据处理能力,能更方便地完成人工智能算法之前的数据准备工作,同时也提供了丰富的数学函数: SPL Math 例程,有些数学基础想自己实现建模过程的同学也可以进一步研究。
: F4 p7 O$ D- \/ \————————————————
1 K0 [4 L: x5 H+ O版权声明:本文为CSDN博主「java李杨勇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
' [ q/ m& |3 L. _原文链接:https://blog.csdn.net/weixin_39709134/article/details/126698462 X6 B1 b& T5 l! o4 z3 W9 N, @8 F
5 [4 j; y7 N" {3 T) G! E/ t; F# i% Q) d' p0 r) E3 z9 q+ K) b* L
|
zan
|