- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565647 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174917
- 相册
- 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 也不错) D5 a# @1 m5 M1 F W" n: g# W
1 B: {) z( o5 P可用来做人工智能建模预测的工具非常多,比如Python, R, SAS,SPSS等,其中Python由于简单易学、丰富的数据科学库、开源免费等特点备受欢迎。但是对于不太熟悉数据建模算法的程序员来说,使用Python建模还是比较复杂,很多时候拿到数据并不清楚该做怎样的处理,选择什么样的算法。其实,在做数据分析和数据建模时,SPL也是不错的选择,它比Python更简单易用,计算速度也快,交互式的界面对数据分析十分友好,同时还提供自动数据建模功能和一些数据处理以及统计学函数,用起来也很方便。6 h. s% u# s* q9 f2 f/ J
7 c9 n8 E- z) r1 H0 y
下面就以一份用户贷款违约预测的数据为例,使用SPL手把手的进行数据建模预测。5 p# u+ U, V) Y7 f
3 ^6 c, l0 F( t# b1 O' a1. 确定目标,准备数据' V$ N9 G* w E B% `! g
建模预测就是从历史数据中挖掘出规律,然后使用规律对未来可能发生的事情做出预测。这个规律就是一般所说的模型。
2 \" |( m% Y3 i9 }# @2 t% X, A9 s# | {( ], |+ e7 w
历史数据通常是一张我们俗称的宽表,比如在用户贷款违约预测的例子中历史数据是如下图这样的Excel表格:
# `) }/ g) Q) p; |! c3 m+ ~3 b& A3 O: z& E! {& w
首先,宽表中一定要包括我们想预测的事情,通常称作预测目标,上图中的预测目标就是历史用户的违约行为,也就是图中y那一列,yes表示违约,no表示不违约。预测目标还可以是一个数值,比如产品的销量、售价……,或者是预测属于什么种类,比如预测产品质量是优、良、合格还是差。有时目标在原始数据里就有,可以直接使用,有时目标还需要人工标注。
5 M+ m8 x+ ~/ {: m$ y9 G
0 ^; L0 Y* F: @8 h* X除了预测目标外,这里还需要很多信息,如表中的用户年龄、工作,房产,贷款情况……,这里的每一列称为变量,也就是和贷款人将来是否违约可能会相关的信息,原则上能收集到的变量越多越好。例如预测客户是否会购买产品,可以搜集客户的行为信息,购物偏好,以及产品的特征信息,促销力度等;预测汽车保险理赔风险,需要保单数据,车辆信息、车主交通习惯以及历史理赔情况等等,如果是预测健康险还需要一些被保人的生活习惯,身体状况,就医看病的信息;预测商场超市的销售情况,需要历史的销售订单,客户信息,商品信息;预测不良产品,需要生产的工艺参数,环境,原料情况等数据。总之,收集到的相关信息越多,预测效果也会越好。6 X4 g0 c' ^7 r" m: R8 D- \9 G
0 ]- E! B& S8 I) O7 ~* B/ j6 D
采集数据时,通常会截取某一段时期的历史数据来制作宽表,比如我们想预测7月份用户的违约情况,可以采集1-6月份的数据来训练建立模型。数据采集的时间范围并不是固定的,可以灵活操作,例如也可以是近1年或者近3个月等等。, m3 \! u- V7 [8 z- ]
5 t$ n# o9 l0 D& i; K! {5 [
准备好的宽表可以是Excel格式或csv格式,第一行是标题,后面每一行都是一条历史记录。
# }2 h/ h6 E' S, N* `' c- F# B: G, ^3 w }
如果企业有建设好的信息系统,那可以找IT部门要这些数据,很多企业的BI系统中可以直接导出这种数据。
) P% l9 z& j& p6 N1 |! Y, c/ X. X: r5 T; j; K4 u3 `# O; k3 I+ {
2. 下载软件,配置建模外部库5 L2 }. X4 Y2 p5 t/ f) ^7 N
SPL 在易明建模外部库的配合下可以提供全自动化的建模预测功能。
; Y% G+ @5 d: N& e8 b' f1 |- _$ F+ { D% S( F# J
(1)下载安装集算器(SPL)和易明建模软件) m0 M. n7 i/ `, [: {& `1 ^3 r; U# ^4 B
集算器下载:8 e7 i) ~1 v* n& I) W8 ?
“http://c.raqsoft.com.cn/article/1595816810031”
% q& p- @- |8 D) G9 O6 b% ]; t# u* i, a1 y' ^$ q C
易明建模下载: “http://www.raqsoft.com.cn/download/download-ymodel”
# g1 o+ D$ ^* z3 g5 ?- t& [4 f1 U, M$ z0 D% _# H& m( b/ k- R' Q$ U
安装集算器和建模软件,并记录安装目录,比如:C:\Program Files\raqsoft\ymodel
# W. x; q; u' w, U4 r1 N; Q
! ]5 e# k: Y5 d2 G6 f
D4 g6 |0 J- O" O |' T: x. h! @
' ]/ D6 Z$ ~0 r/ L8 K, P(2)在SPL中配置外部库
( Y' x: \9 [: G$ @! c' }(a)复制外部库所需要的文件0 k" ?* w" m! C5 Z( A" _ |
在易明建模的安装目录下找 YModelCil 和 lib 文件夹& w$ E& f1 b; A7 ~7 W# t2 N
* C9 I. r& i& y
4 m/ y J- R+ h) F1 @) m
' W9 n y2 J4 {1 Q+ ?
然后去这两个文件夹里找到建模外部库所需要的文件,复制到集算器目录(【安装根目录】\esProc\extlib\YModelCil),比如C:\Program Files\raqsoft\esProc\extlib\YModelCli。
9 k3 r" e( i6 l( d( v+ J9 J, s1 X& J$ L4 V& ~" N6 A
建模外部库所需的文件有:
/ m: ?7 c w u1 h8 M' H! v, [
4 D- {4 j: ]8 U/ S1 ]7 H" Z; s5 A1>易明建模目录的YModelCil中含有以下jar和xml/ Z0 C, P8 Q+ B! G @8 Q# K ?: J" j
! p3 D. M Z3 r# t9 G. z% B1 m" aant-1.8.2.jar9 p+ d% a$ C( f) r
commons-beanutils.jar+ P7 w& t" }1 x8 R7 J# H) ]
commons-lang-2.6.jar
) b8 _ F7 W6 K8 h7 h/ ]ezmorph-1.0.2.jar
' t4 |8 B4 y' U Q# r4 P7 Bjson-lib-1.1-jdk13.jar
2 {" j, @6 x k4 f, Kraq-ymodel-cli-2.10.jar
' C1 E4 i* f# ? V' xuserconfig.xml
4 D; e5 j4 T f0 A J( p; z. z$ ]* s
2>易明建模的lib中含有以下jar+ w% g6 k2 t' E
+ ]4 q& g& r4 _/ j+ Mcommons-io-2.4.jar
- d) {; l1 Q3 ~% D1 Sesproc-ext-20211104.jar3 i/ Y8 Y+ b2 D, j' Z7 O
fastjson-1.2.58.jar2 G7 k; P9 i4 d) n% A) n2 C
gson-2.8.0.jar
# V& V9 j" U6 H* U1 i, s% c6 bjackson-annotations-2.9.6.jar( \# s- h% ^. U% G) z
jackson-core-2.9.6.jar2 f! t- ~% o$ O, |& u
jackson-databind-2.9.6.jar& [. o% s+ w5 C5 `6 o. p
jackson-databind-2.9.6-sources.jar0 h& }) `9 f# }& b8 W
jackson-dataformat-msgpack-0.8.14.jar
& ?( L. R* x( u4 Z# o# U5 R& gmining.jar
) C& b% b. j2 g5 Wmsgpack-0.6.12.jar
0 z( D8 n) V+ B i. Lmsgpack-core-0.8.16.jar+ q" s/ R m) K( ?# A6 f. a
4 F9 Y7 M, n$ {- ~& }
(b)设置userconfig.xml文件参数$ A" x5 _( l' N$ c2 N: Y, K: S
在集算器目录esProc\extlib\YModelCil下的userconfig.xml文件中设置参数
4 t2 k4 m5 n. U0 a* ]
( e$ a$ U0 |2 Q" C: \1 l名称 参数说明
8 m5 U9 Y% g9 B: z4 H; IsAppHome 易明建模的安装目录
2 Y9 a9 g2 y/ e: u: x# ?sPythonHome 易明建模目录的Python路径 Windows: raqsoft\ymodel\Python37 Linux: raqsoft/ymodel/Python37/bin/python3.7$ E- z1 u7 }3 X/ C5 z% Z/ b
iPythonServerPort Python服务网络端口
) r) p( {( t$ V7 e, L+ z3 q+ giPythonProcessNumber Python进程数
2 R. d2 J! l# W1 TbAutoDecideImpute 是否智能补缺
, I; p* |9 K; }( C0 yiResampleMultiple 重抽样次数
/ B% j/ e9 \( P2 m! Z其中必须要配置的参数为sAppHome和sPythonHome,其他参数可以采用默认值,有需要再进行修改。比如可以配置参数如下,加粗部分是必须要配置的,根据自己的安装路径。
1 R- J y4 o+ |7 K3 y
. r& H$ M3 J7 a7 p( ~<?xml version="1.0" encoding="UTF-8"?>1 v2 e8 y! P* T/ `
<Config Version="1">2 ]# I. H: ]7 Q+ }$ t5 Z) g( D
<Options>4 J) ~# {. Q2 I5 ?, g
<Option Name="sAppHome" Value="C:\Program Files\raqsoft\ymodel"/>* h) w [6 y7 |
<Option Name="sPythonHome" Value="C:\Program Files\raqsoft\ymodel\Python37\python.exe"/>
% }* f2 D2 A, E3 h$ k9 ^8 `, h <Option Name="iPythonServerPort" Value="8510"/>( B% `: ^- D" c% O" @: X7 z( J
<Option Name="iPythonProcessNumber" Value="2"/>2 `& A8 J0 t7 N& i7 z1 k
<Option Name="bAutoDecideImpute" Value="true"/>$ A* w4 A. k" @& E
<Option Name="iResampleMultiple" Value="150"/> ; u3 i3 X7 P8 ?4 X) e2 ?( E
</Options>
# ^8 f4 ~, k4 v: p( `</Config>
, ?1 }. K! E5 ~6 C$ Z1 I+ A0 V) e5 u1+ ]4 ? g. P; m+ A, ]* F
2
2 ~9 c, R0 q% P0 k4 ^3 q6 A, q; _3% Q6 H$ j3 v. {2 o
4
- { L( p k: j. J1 L5
* `4 g$ p+ n" i8 _; ]6 _( r( b. x6
' O, E" a+ }5 P2 j+ J$ }4 v7
, d; [8 n/ A8 m+ W85 @7 K/ p, z! [
9
0 ~ _( G3 V3 ?10$ B( t; h% W' O& N: V" D
11) j3 B1 J5 Q5 b4 p& d w
其实,从这里可以看出,易明建模也是基于Python写的,但它将Python算法做了封装后,程序员就不必再理解算法的数学原理和运行细节了。& }& z! J9 L" N- k( T9 D2 t9 d
# Q2 H( p7 c1 s! A, H6 x: [
(c)SPL环境配置
* l; K; |. ^5 w, ]5 B1>. 配置外部库
2 e& [: }* r! D0 z0 U. m" Y6 Z, N+ g9 e3 p0 L v0 M: @* H: l
打开SPL,在选项菜单里,外部库选择里勾选YModelCli,使其生效。外部库的路径为第(1)步骤中集算器YModelCli的安装路径。
3 b% A9 |- n X. J0 x" I ]1 B: v5 k6 |. J2 s/ k' _
4 K3 m0 p4 U' g
* f8 ?. k1 b* Z- e7 w+ r c( J在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置外部库路径和名称。/ }4 t9 h( W8 Z- i
% l& w9 }( [2 ]/ @<extLibsPath>外部库路径
$ ]' A8 ^8 J0 \- V, I/ ^+ `& I4 c& q! R5 X1 G0 j( O
<importLibs>外部库名称(可多个)
* @2 i: m$ a+ c8 S$ B7 E' ^6 H, `! K. a' o$ y* W: \
2>. 线程数设置
0 w- m6 g- }8 S
( b" b/ O/ k, Z+ ~如果有并发预测,还需要在SPL设置“最大并行数”,也就是线程数。设置多少用户根据需求和机器情况自行设定。
* G* ?9 d4 r2 C9 ]4 r7 n
$ G3 Q/ q i- A2 c; b7 j0 \) z! x& X$ ]9 o7 |4 e; a6 j' w; H
! W6 K" t8 ^$ n) s
在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置。
R+ i- M4 i3 |: f
# J# r- }1 [9 e& E ?+ o; F/ M1 a1 K<parallelNum>最大并行数
& l$ y/ h+ A; {' i8 b7 z6 v
, G2 O, F" F9 j2 |, B& r0 j到此,环境配置完成。
6 A- e& B/ T& A' H2 n0 a2 n
' u0 B T& j; ^/ O3. 建模和预测
+ k+ ]# C h8 w# M# y; I/ U(1)加载数据
- J- h! o* C' ZSPL能支持csv,excel或数据库中的数据用于建模,这里以csv为例,其它数据源类似。, f! ~) j* ?' K4 B
3 |( w1 `: ~- r: P
设有一个贷款违约数据表如下,需要建模来预测新用户是否会发生违约行为。0 i+ @+ l* L) i& F- b
3 o8 I; S% |- `/ o% R8 K* T
: m5 D! V4 a+ H3 G( T( \
) f8 ]/ U7 W# ^( J
文件命名为bank-full.csv;* q" q* n: t0 w; i/ w: l
9 r K1 r0 R+ J& i' ?/ I( F# A+ _
A
B) R8 o! L8 j# [1 =file("bank-full.csv").import@tc()9 `. a2 m* J( w
2 =ym_env()
0 P3 p' t9 f6 x5 q9 t, n3 =ym_model(A2,A1)
) S2 |+ D: N# y: |1 E9 h; ]) n& U6 hA1 导入建模数据,读成序表
! @1 H; f1 C @! I ^& E, q* O9 ~, _* B2 t- S
7 ^/ q$ z, U+ J9 }2 d y7 f6 b6 k* p+ ~8 d: D% `
A2 初始化环境,执行A2后会在易明建模的安装目录下生成store目录及子目录用以保存数据及结果文件。* c% [7 g5 K9 H R
# k7 v- d; t& d" NA3 加载建模文件,生成md对象
b* K4 K$ H' ?) B! v/ k* {
- x* |& N3 S% J4 h. [- r3 G' e(2)目标变量设置和变量统计
: Z3 | C. ]& L" v6 S! s5 x数据加载进来后要设置目标变量
6 V4 J7 J+ x8 l, `* r7 b5 `% C0 s+ K
A" c" Q( l% D y
… …
; H: p! Z2 X7 i4 Q3 U, Z. o' m4 =ym_target(A3,"y")* F N+ g* ^, Y
5 =ym_statistics(A3,"age")
' A* I9 k+ r5 S* n6 =A1.fname().(ym_statistics(A3,~))
/ |) P2 @# s2 u: R) s0 sA4 表示将字段“y”设置为目标变量,目标变量可以是二值变量或数值型变量。
* s8 ~; D4 j, C/ u# a& h/ Q7 k( ~ m2 m9 v! Y8 e% i. U" h7 O- M
A5 查看某个变量的统计指标,比如 “age”,返回值中可以看到缺失率,最大最小值,异常值,数据分布图等参数。/ d _( d* L8 K8 r
}7 E" q7 h- v( Z
7 u9 h3 \0 ]% e) Y v6 \" Y9 M. ~, Z4 Q2 D: i$ I6 `, N) S
A6 循环变量名查看所有字段的统计信息,返回包含所有字段的统计信息二级序列。" w! t- b/ _ [* D, G
/ c! v/ m# r) c
% m' J# ~* M8 C) g; r: U. J
7 ~% S/ v- f8 o* N& G6 l(3)建立模型和模型表现5 @+ k& F. C8 t# d2 k
A
% [3 J1 C( D3 w) g0 s. ?2 G… …: ~5 u# L! o9 {2 M6 b4 J
7 =ym_build_model(A3)) e+ L: A$ D; u, J6 K+ V5 P* S2 w
8 =ym_present(A7)
! I6 s- s& b6 V9 =ym_performance(A7)
& f) y# q& l$ Q5 ~9 \, ]10 =ym_importance(A7).sort@z(Importance)
6 u, J& d0 y; R0 ?A7 使用建模函数建立模型,执行后在后台会进行全自动化数据预处理和建模过程,此过程会耗费一些时间,时间长短取决于数据量。结果返回pd模型对象。6 O8 a" k. G5 U- ^% a/ s! t$ H
$ v2 n+ ?* w* t9 ^% ~模型建好后,可以调用pd模型对象查看模型信息、模型质量和重要度。8 x+ @ D- j# a$ Y) Y: t" O$ `3 u
1 E. X5 ]9 m; s: p6 x# H8 hA8 返回模型AUC值及参数; D, G' _/ N' s: A6 \
9 e4 F- V7 z1 w7 A1 \1 J
' s% H! o% x/ a0 M* J- X4 E ~# o4 Q$ x4 Z' t& e& M! P) `
A9 返回多种模型指标和图形,诸如AUC,ROC, Lift……9 L) z) T2 {( H5 S- i4 R8 u/ S
9 y4 \9 u8 ?8 s2 M+ M- |6 d4 \" v% J) R3 C' a! c
6 @1 C. g. g' W. D( t, |
比如点击A9的第6条记录的Value,然后点击右上角“图形浏览”图标,数值字段选择“Lift”,就可以查看Lift曲线, Q' @, `" B6 `0 j
: v6 Q, S" X- R0 C5 R/ X' e G/ M# Q* f* m$ l* R
z& N4 e! B4 P- |
A10 会返回每个变量对目标变量的影响程度并且按照重要度降序排列。数值越大对目标变量的影响程度越大。降序排列分析起来更加直观。6 |* h* C( K$ s2 w3 X3 h' H$ S
0 S% `3 S$ ^! u+ B, S" A% p" ^4 T2 f3 x
5 F2 [0 P% r: `! x- l! x0 j) z. x(4)保存模型
7 O6 N! J4 L& G3 OA
# J/ }; K& r5 W3 Y/ }: C6 V… …
/ F8 Q2 |' J3 _* K" g5 ]' s9 X11 =ym_save_pcf(A7,"bankfull.pcf"); \7 N7 q, U, z2 c# i
12 =ym_json(A7)
2 S) q; c& Q n+ p/ e; h13 >ym_close(A2)
) Z) v: Q0 P. tA11 将模型保存为”bankfull.pcf”,默认保存路径为[sAppHome]/store/predict。$ R% Y! Z$ J2 e" ?3 W
, e3 k9 z4 [4 l+ A& R: s qA12 将模型信息以json串形式返回。json内容详解可参考在线文档《json参数说明》8 T0 C8 w6 G3 X( Y' Y4 n
$ G* }* }7 H/ R+ FA13 关闭环境,释放资源。- |7 K" m) c$ M8 p4 u4 \
/ S O1 C0 m% }9 w; m% L
(5)预测7 M- c$ ^9 g# ~2 I) }+ G
预测之前需要有pcf模型文件和预测数据集, A! A( V$ {+ P
/ X! K2 j: C$ m+ J- w9 A7 HA
" @5 ~9 X/ a& T1 =ym_env(). u' U. _1 |; y( Y( j
2 =ym_load_pcf("bankfull.pcf")% D6 j2 ?! P+ P5 {% @+ L8 z! ^5 x
3 =file("bank-full2.csv").import@tc()9 X* T. n/ m1 P |- r3 G
4 =ym_predict(A2,A3)' S9 X; M8 t, B( c9 o k; A1 u! M9 M
5 =ym_result(A3): Y+ s$ L" u* C1 ^
6 =file("bank-full_result.csv").export@tc(A4)) ?) p: f3 |* l
7 >ym_close(A1)
6 A- X+ `8 b' |5 \9 dA1 初始化环境
' t- |2 s# R' M7 S
0 Q4 @( b6 c; ^7 \A2 导入pcf模型文件,生成pd模型对象。
: `2 j6 g, g' l# Z+ x) g+ y
# o, c* E8 u! e. y( ~# ^A3 导入预测数据集,读成序表
# c [5 ]8 ^% I
% B; {1 S: |# R+ }. K0 R. H. qA4 对序表数据执行预测。除序表外,还支持游标、csv文件和mtx文件,比如A4也可以直接写成ym_predict(A2,“bankfull2.csv”)
7 c( C7 E9 `5 S9 G! d5 M+ k8 G5 w3 y+ X
A5 获取预测结果
T9 k/ s; U4 I6 e% Q
2 I+ E8 H( t$ o! W2 B! _3 o7 }! b9 WA6 将预测结果导出,在本例中预测结果为用户发生违约行为的概率。
0 b, g1 i# A' O% \3 B
& ^$ \3 z3 G) ~% G! v$ ~; W( C* K8 T, |6 U
A7 关闭环境,释放资源
! t( E @2 i4 Y* Q w+ [! G0 T0 r' m. i* b7 }+ c5 k7 |7 M4 [
4. 集成调用9 t( W8 `( `+ R3 a3 _6 o
SPL还可以被上层应用集成调用,比如SPL可以嵌入到Java应用,详情请参考:http://c.raqsoft.com.cn/article/1615765346560: `; m7 Y0 {, ~5 `; c4 }& S
- G1 Z) h% z4 t( p
总结
* z: C! O0 G# V使用SPL配合易明建模来实现数据建模预测非常简单,程序员不需要理解深奥的数学原理,只要准备好训练数据,简单几步就可以完成数据建模任务了。而且还可以轻松地把这个功能嵌入到应用程序中,高深的人工智能不再是少量数据科学家的专利。& L7 F, j% z0 d) z, n R" z
@5 h/ b7 t2 {/ S- WSPL本来就超强的数据处理能力,能更方便地完成人工智能算法之前的数据准备工作,同时也提供了丰富的数学函数: SPL Math 例程,有些数学基础想自己实现建模过程的同学也可以进一步研究。4 ?4 R- w+ r. n, g5 m; M
————————————————
% e5 B' t X5 ?" `' g1 T版权声明:本文为CSDN博主「java李杨勇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。9 w% r) p) A" Q, v
原文链接:https://blog.csdn.net/weixin_39709134/article/details/126698462. c. O- ?/ n) u1 c3 |
9 z& G8 P( m3 X8 `- M" [: {; z
9 [9 B" Q* O+ r
|
zan
|