- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565664 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174922
- 相册
- 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 也不错 }% ^0 X A0 o4 [( N. @) R) a
+ i* F3 `/ l+ W" t! _
可用来做人工智能建模预测的工具非常多,比如Python, R, SAS,SPSS等,其中Python由于简单易学、丰富的数据科学库、开源免费等特点备受欢迎。但是对于不太熟悉数据建模算法的程序员来说,使用Python建模还是比较复杂,很多时候拿到数据并不清楚该做怎样的处理,选择什么样的算法。其实,在做数据分析和数据建模时,SPL也是不错的选择,它比Python更简单易用,计算速度也快,交互式的界面对数据分析十分友好,同时还提供自动数据建模功能和一些数据处理以及统计学函数,用起来也很方便。" k! {( W* B9 |) ^) i/ h3 v
, E( `9 q" L3 q+ W* I% P
下面就以一份用户贷款违约预测的数据为例,使用SPL手把手的进行数据建模预测。
, u" k/ d# ~/ j) q9 A
# d8 j- Q. S8 m) [. H1. 确定目标,准备数据1 g2 K5 ^ @* c) b( u
建模预测就是从历史数据中挖掘出规律,然后使用规律对未来可能发生的事情做出预测。这个规律就是一般所说的模型。9 n N" ^5 ~# P4 R0 @
5 T5 S5 v3 d% g( y$ ^& [历史数据通常是一张我们俗称的宽表,比如在用户贷款违约预测的例子中历史数据是如下图这样的Excel表格:
7 f) k, M7 u L2 X, O3 k4 `- h% M9 v2 [+ U7 w
首先,宽表中一定要包括我们想预测的事情,通常称作预测目标,上图中的预测目标就是历史用户的违约行为,也就是图中y那一列,yes表示违约,no表示不违约。预测目标还可以是一个数值,比如产品的销量、售价……,或者是预测属于什么种类,比如预测产品质量是优、良、合格还是差。有时目标在原始数据里就有,可以直接使用,有时目标还需要人工标注。 O" ^# z( O5 a: N9 I# `7 ^
1 D, G) v+ y, w2 ~' C [, |* ^除了预测目标外,这里还需要很多信息,如表中的用户年龄、工作,房产,贷款情况……,这里的每一列称为变量,也就是和贷款人将来是否违约可能会相关的信息,原则上能收集到的变量越多越好。例如预测客户是否会购买产品,可以搜集客户的行为信息,购物偏好,以及产品的特征信息,促销力度等;预测汽车保险理赔风险,需要保单数据,车辆信息、车主交通习惯以及历史理赔情况等等,如果是预测健康险还需要一些被保人的生活习惯,身体状况,就医看病的信息;预测商场超市的销售情况,需要历史的销售订单,客户信息,商品信息;预测不良产品,需要生产的工艺参数,环境,原料情况等数据。总之,收集到的相关信息越多,预测效果也会越好。9 B9 D: M$ g$ b$ q& d
" D% I/ w% A$ v. N# F
采集数据时,通常会截取某一段时期的历史数据来制作宽表,比如我们想预测7月份用户的违约情况,可以采集1-6月份的数据来训练建立模型。数据采集的时间范围并不是固定的,可以灵活操作,例如也可以是近1年或者近3个月等等。; ]- |5 A$ a1 _& F+ m
5 [# W8 [+ A e; j1 t准备好的宽表可以是Excel格式或csv格式,第一行是标题,后面每一行都是一条历史记录。; G" B n. p# q; a* K
! E2 y6 J& m( b
如果企业有建设好的信息系统,那可以找IT部门要这些数据,很多企业的BI系统中可以直接导出这种数据。
( |( F- I8 ~; L- J% Y8 M5 O: l) R6 T% O9 Y: n( y) d
2. 下载软件,配置建模外部库
+ V/ {5 U( n* x! ? Q' v4 {3 JSPL 在易明建模外部库的配合下可以提供全自动化的建模预测功能。
8 r- Z. t5 x% j: I7 F7 ]
3 H5 F% {) l# r# F% A3 }(1)下载安装集算器(SPL)和易明建模软件/ W6 M# P9 c. l* a
集算器下载:7 i4 D' N" g& O4 e" z2 {
“http://c.raqsoft.com.cn/article/1595816810031”$ z* a# V1 q ^9 \7 d
- N+ T) A9 J1 f$ V易明建模下载: “http://www.raqsoft.com.cn/download/download-ymodel”
3 Z2 n& C* Z* z/ z+ H
% K6 D9 T+ o# [6 {安装集算器和建模软件,并记录安装目录,比如:C:\Program Files\raqsoft\ymodel
# O2 @' g+ m( f* e
l* J# l3 C% | h/ Z' I) q( k) h; I; T# }
$ b6 {. R" H2 f(2)在SPL中配置外部库
, { |; r g* d" h* s(a)复制外部库所需要的文件 q6 a8 N9 P0 Y1 g w
在易明建模的安装目录下找 YModelCil 和 lib 文件夹: S3 l5 b) z& u8 i4 Y4 H0 p
/ f+ t" G7 @2 C# Y, s3 Q) V% c& w
' r, T/ Y6 w" I9 [' `2 g, P" p3 y4 g* ?* \8 J7 R( r0 ]" R
然后去这两个文件夹里找到建模外部库所需要的文件,复制到集算器目录(【安装根目录】\esProc\extlib\YModelCil),比如C:\Program Files\raqsoft\esProc\extlib\YModelCli。( V. Y' }3 W* w4 z4 X- Y; R1 }
7 i# |2 @# L9 x5 b: E建模外部库所需的文件有:: I/ L4 e' v# e+ S3 Y
0 c% S7 n- [- v0 [8 {% d. U1>易明建模目录的YModelCil中含有以下jar和xml
; O; e. t- F3 Z; D
% i C1 F. C& T. J$ ]3 Nant-1.8.2.jar
/ ~8 Q/ U0 u/ C/ {6 o" u4 Ccommons-beanutils.jar
[* K2 u+ F7 z fcommons-lang-2.6.jar/ d" W, C! e. N, H
ezmorph-1.0.2.jar8 [$ T4 b7 b+ A$ `0 ]
json-lib-1.1-jdk13.jar! Z" U- O3 Q8 m9 E7 M
raq-ymodel-cli-2.10.jar6 m3 Z/ b7 L! e4 @
userconfig.xml! Z2 U$ W! w1 d* V7 b; Q
4 r* q7 y: @* N; z& {
2>易明建模的lib中含有以下jar
0 H! H$ @5 k5 ^1 X- u& o' [
! Q5 r4 H% D/ q8 D. tcommons-io-2.4.jar) e: O$ Q# X f, ^, _! ^
esproc-ext-20211104.jar" @4 X0 W! O1 u5 P0 f
fastjson-1.2.58.jar
' R5 J3 H; J/ ^! jgson-2.8.0.jar& w' E4 M# d: L9 ?$ P/ u# A0 W
jackson-annotations-2.9.6.jar7 v' d& D# p, W( f9 j/ Z H* u
jackson-core-2.9.6.jar) D3 `1 W$ N S
jackson-databind-2.9.6.jar
' Y. b) F. B0 Y* o4 P1 ljackson-databind-2.9.6-sources.jar3 v& x/ K& i" i! }/ X
jackson-dataformat-msgpack-0.8.14.jar% b; K8 E8 Y/ y" j2 N
mining.jar
3 G- {$ a( ~. \/ V& n$ Ymsgpack-0.6.12.jar
2 z# Y, U/ @* Y3 @0 zmsgpack-core-0.8.16.jar3 K1 I9 n4 M: Q$ t& J5 O
$ ~7 Q/ R0 F: {& D' D0 o(b)设置userconfig.xml文件参数: p: H4 N0 _5 J8 ~! u- j- @
在集算器目录esProc\extlib\YModelCil下的userconfig.xml文件中设置参数 F* A- l+ d: J. E3 r0 g
8 y( V5 J1 ]* R p5 p" A
名称 参数说明% F* z3 }; u/ A# u: N& q0 H' ]
sAppHome 易明建模的安装目录: ?% V% b2 u8 g" i9 p* w
sPythonHome 易明建模目录的Python路径 Windows: raqsoft\ymodel\Python37 Linux: raqsoft/ymodel/Python37/bin/python3.7
8 ?% f2 D/ V1 diPythonServerPort Python服务网络端口% h0 [8 E( D/ ~1 @
iPythonProcessNumber Python进程数/ v+ u& ` {* Z' ~' q$ z7 x
bAutoDecideImpute 是否智能补缺7 e+ F4 q3 b! z4 A) S
iResampleMultiple 重抽样次数
% ~4 u& ^( u! K9 }* D- O其中必须要配置的参数为sAppHome和sPythonHome,其他参数可以采用默认值,有需要再进行修改。比如可以配置参数如下,加粗部分是必须要配置的,根据自己的安装路径。0 J( h. f* S3 @ {6 D, |
$ n1 Z) r5 D, l* W3 J5 e( }( w7 n<?xml version="1.0" encoding="UTF-8"?>4 ?! k2 d7 I; l L( U% l
<Config Version="1">
1 N$ c9 T$ ^! m! F8 l, _0 k1 }5 b <Options>
' ?% }+ Y5 u1 y8 X1 [) C# @" b <Option Name="sAppHome" Value="C:\Program Files\raqsoft\ymodel"/>
2 ?+ V2 j1 d7 C: C+ n; o <Option Name="sPythonHome" Value="C:\Program Files\raqsoft\ymodel\Python37\python.exe"/>* S( x% ` C8 Z% K: C
<Option Name="iPythonServerPort" Value="8510"/>' o+ U% ]3 p$ K; W) H
<Option Name="iPythonProcessNumber" Value="2"/>% c: w& Z3 {# r; a, N3 R
<Option Name="bAutoDecideImpute" Value="true"/>
. Q( m8 ?) f. L7 m' l3 b <Option Name="iResampleMultiple" Value="150"/>
& j+ B' f% a3 |6 \: U) F </Options>' ]' T& ?; S/ r3 k n# o
</Config>0 ~5 B4 F2 ?' G2 B( l) n+ x
13 w1 |/ v0 J/ K3 s8 ]
2
5 b0 o7 k& [: k# R5 F# d8 ?5 y, E) r35 ?8 s: M, L. B, S9 U+ k' I: F L. B
4
& ]7 V, G& ~, o8 ?0 t$ z' k5
2 u c0 {4 {- D# _6. L3 j+ V8 A! p
75 f2 p7 B# o N& i7 m. ^1 ?7 t
8
; E0 f6 @" c! Q5 _9 t9
; c% S0 `! i, Y+ M- Y* N' }. `101 [+ i% t$ b! k* R
112 I% G( R |' n* E+ D9 n
其实,从这里可以看出,易明建模也是基于Python写的,但它将Python算法做了封装后,程序员就不必再理解算法的数学原理和运行细节了。
. [; }+ C; H% n1 t( ^1 J, V" b% D; J& _- Z! D2 a2 b
(c)SPL环境配置
" |) M8 V! D4 g1>. 配置外部库
2 [' ^$ t" N4 _8 A, o* U# [/ b
7 |) x. Z$ u6 u+ @打开SPL,在选项菜单里,外部库选择里勾选YModelCli,使其生效。外部库的路径为第(1)步骤中集算器YModelCli的安装路径。
* G- y% v( E. d1 A% Q: `) M$ V6 o3 p, h3 P& @) I
# Z: x8 U5 g1 D; x6 ]" m, u# n4 Q; p8 c/ Q
在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置外部库路径和名称。
5 C- u9 J" V! R6 j- k/ ?% `
! s& v( W6 L3 a( }* s<extLibsPath>外部库路径/ V# S) p% j4 T' ?6 v! c
, s/ v9 z$ w e; V
<importLibs>外部库名称(可多个); k3 R0 V' Y& }8 L) O8 s
, q( Q$ y' v7 j/ T, c! K5 N* J# H
2>. 线程数设置7 J* g, s1 p' i
+ v7 `" _6 @+ d7 i! j9 e如果有并发预测,还需要在SPL设置“最大并行数”,也就是线程数。设置多少用户根据需求和机器情况自行设定。0 x M; z; }$ b) p
. I( Q9 Q* ~: U' a" _
) Q4 I+ |9 O$ { ^5 v+ ~" M' y) C- [* P' V4 u0 u8 E. c( C
在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置。( p7 `5 ]- N' W( J& C
b) f8 G4 Z6 f<parallelNum>最大并行数
N! D8 {: s9 m1 z$ _ T: D3 p! c2 I( G2 }' A) P# _
到此,环境配置完成。* T5 F( a* Q B. B1 M: a8 m; K
, C% e' O% l; S3. 建模和预测; h2 M3 o2 u0 U1 h% D
(1)加载数据2 u L5 y7 _+ k, ?
SPL能支持csv,excel或数据库中的数据用于建模,这里以csv为例,其它数据源类似。- K9 x- u. d' W- l- J7 X2 u
6 U3 m8 G) A. X1 x& b; ^
设有一个贷款违约数据表如下,需要建模来预测新用户是否会发生违约行为。$ m: i5 }& H! \9 N+ S
# K4 K2 O4 q! ?6 O- U# }3 `" C! F9 U1 |
9 e* h1 o& f" {' D: d1 g# U/ d' X! G, L. |. A. v0 {
文件命名为bank-full.csv;
) j3 U. X6 M' \' \" e
3 q# d) V! V6 TA
* H& X! Q9 Z, k# k. W) H1 =file("bank-full.csv").import@tc()( A+ U9 a& K" O
2 =ym_env()
e, g/ X" y% v3 c3 =ym_model(A2,A1)$ ]1 p( g+ f% \ V9 e/ ^
A1 导入建模数据,读成序表
2 U: q5 g) V' {8 J9 f
! z$ Z7 [/ E9 `8 J. ?; U
: O% F2 C2 g0 V5 _
7 I1 A" P9 W1 l; L& K. x6 ^4 rA2 初始化环境,执行A2后会在易明建模的安装目录下生成store目录及子目录用以保存数据及结果文件。 ^! I5 r+ c# Q" ?5 R
& A( G# |5 I$ I$ i# R, T- aA3 加载建模文件,生成md对象
1 e2 p# h Z. a( S# T8 O" I/ X
* W% i0 D* A G/ ?0 B(2)目标变量设置和变量统计
* k- `8 {% P( @; F4 U数据加载进来后要设置目标变量
" `% d& ~! K- U1 W% `
! {0 @+ P0 z5 |A
, V* [3 K" T2 S5 f… …
2 u( Q: p& q+ O: J/ j) B4 =ym_target(A3,"y")7 q+ F1 X4 \* ^# D8 ?
5 =ym_statistics(A3,"age"): w6 [1 Y/ R( k" o
6 =A1.fname().(ym_statistics(A3,~))/ N0 S' A0 v. }) d7 X9 E* D
A4 表示将字段“y”设置为目标变量,目标变量可以是二值变量或数值型变量。
. a3 M! n+ ~2 l. `+ A# a! o' M- ]6 E+ w, }4 b+ I( P
A5 查看某个变量的统计指标,比如 “age”,返回值中可以看到缺失率,最大最小值,异常值,数据分布图等参数。$ r9 x4 j1 _8 z$ Y
# g2 V# a6 ?3 X* P" P* p& D- I/ P, c
5 F3 C1 e# g o0 U: F
9 p% o4 e+ {+ f& Z0 X1 u& \A6 循环变量名查看所有字段的统计信息,返回包含所有字段的统计信息二级序列。
) E4 |; v0 d1 k" D1 F+ \; q0 U& w3 e9 P8 x, X8 n2 }
% R! F. f; d1 n; w: C, z1 f
/ t/ b: U, H1 F: `& r& v(3)建立模型和模型表现) c) l4 V; L9 }8 k
A' n2 g( I G8 D- b
… …0 A! L3 {) t1 d6 o1 v# ^
7 =ym_build_model(A3)9 f: I4 B! m9 k$ O4 _" V4 g
8 =ym_present(A7)6 z* I+ T/ y8 }6 s4 G# W/ B9 l0 _
9 =ym_performance(A7)" b, Q' C5 r$ I4 f
10 =ym_importance(A7).sort@z(Importance)
1 N( }$ c. K0 v6 AA7 使用建模函数建立模型,执行后在后台会进行全自动化数据预处理和建模过程,此过程会耗费一些时间,时间长短取决于数据量。结果返回pd模型对象。
7 S+ h$ w4 u; U& J+ W
/ X8 k6 w+ M2 I$ j模型建好后,可以调用pd模型对象查看模型信息、模型质量和重要度。
9 Y# h) E- w& u4 L0 q6 [2 ^/ e# o& K! q$ y5 Q( x7 S
A8 返回模型AUC值及参数7 Z! H6 u' C. j1 ]
8 W1 N7 v" d1 e6 l
3 \" I7 M! A5 y$ t2 R) q6 i! \3 U' e4 b5 C4 b. _. ?$ X
A9 返回多种模型指标和图形,诸如AUC,ROC, Lift……8 a! z8 _ R+ P- g( \
2 {, O# I/ v( }0 h
: U. Z2 D$ r1 h0 G; _
9 k. i7 \" Q% t1 Q. A' N9 R' ]! e$ l比如点击A9的第6条记录的Value,然后点击右上角“图形浏览”图标,数值字段选择“Lift”,就可以查看Lift曲线
$ z8 D2 h, F- S1 \# w0 P
4 H$ e+ B2 w6 O$ v) h
3 F- i' O: y$ R+ ~7 g$ k; I1 d2 |" Y% a0 R
A10 会返回每个变量对目标变量的影响程度并且按照重要度降序排列。数值越大对目标变量的影响程度越大。降序排列分析起来更加直观。* F9 G7 @2 D: Y
' D" |3 J2 V& F% x
4 [# J2 c) @ {, o- Q& w1 C2 ~
# R: p& G0 Y5 E9 C(4)保存模型% b* }" H5 N1 z3 c
A
; _& A- h3 H6 E. m% M… …: {, N/ K$ D+ {9 e; d C
11 =ym_save_pcf(A7,"bankfull.pcf")$ u+ v9 h' a7 I G, Z( `6 [9 ?/ d
12 =ym_json(A7)
- G( w( M* s0 c/ G13 >ym_close(A2)
9 ?5 y0 M$ K+ ~2 H; l/ b" k, x1 vA11 将模型保存为”bankfull.pcf”,默认保存路径为[sAppHome]/store/predict。
6 c& W+ s' R6 Q3 g8 {
# d% u# n) t8 C, R( {+ {A12 将模型信息以json串形式返回。json内容详解可参考在线文档《json参数说明》1 ?/ G* S4 n! D# Q
: r" X/ `" a, a! pA13 关闭环境,释放资源。# L K* O: J P+ z0 q# Y( B+ E. l
I u% H" s# Z' }7 Q. |6 f(5)预测
& L k# p: E6 ~4 Y! X" \; O预测之前需要有pcf模型文件和预测数据集. S4 L, h* G/ }# f$ z
% w- j! D) @5 e7 pA8 @4 n* _% `3 X7 o; a9 U
1 =ym_env()$ v( w- o5 d* H1 u
2 =ym_load_pcf("bankfull.pcf")
4 c5 F. A' C. W; f3 =file("bank-full2.csv").import@tc()
/ M1 @# K3 z% K" L4 =ym_predict(A2,A3)
# N* L. }3 e" ?% K$ \5 =ym_result(A3)( W: K; a# k& b8 _# C8 {% ]
6 =file("bank-full_result.csv").export@tc(A4)2 o5 M4 n! O z' A5 C. G7 v
7 >ym_close(A1). G/ d: K9 j1 p; ]: j0 O6 n3 Y
A1 初始化环境
4 ~8 K2 Q6 z5 A5 s8 u0 B' `6 z6 w
A2 导入pcf模型文件,生成pd模型对象。
2 \, U3 @6 `3 Z; i% m
/ C9 x+ o& y# [A3 导入预测数据集,读成序表 |! E4 R8 D; g6 _% x# w! d
, w+ W; e1 R! T, |* P1 ?, i
A4 对序表数据执行预测。除序表外,还支持游标、csv文件和mtx文件,比如A4也可以直接写成ym_predict(A2,“bankfull2.csv”); A5 G# @4 l( _
: w1 e$ u2 D4 m7 _
A5 获取预测结果
# S2 ]/ a6 W5 d/ n; g% x5 T0 F9 m. H' z1 z
A6 将预测结果导出,在本例中预测结果为用户发生违约行为的概率。0 n" e% H3 ~7 b, W! W2 Y
9 s d3 K# y9 ]6 r
3 D- F" |5 T' |A7 关闭环境,释放资源
) v; x3 z- N& |& _4 s
7 h5 S) r5 v& Q& ~/ H3 ]4. 集成调用: ~) H3 j: N. R
SPL还可以被上层应用集成调用,比如SPL可以嵌入到Java应用,详情请参考:http://c.raqsoft.com.cn/article/1615765346560
: [9 s: K# D; ]7 }' H- c6 t5 M+ V4 A3 F4 S, u! f9 O
总结0 z/ I$ o9 o9 @; Z1 J# s
使用SPL配合易明建模来实现数据建模预测非常简单,程序员不需要理解深奥的数学原理,只要准备好训练数据,简单几步就可以完成数据建模任务了。而且还可以轻松地把这个功能嵌入到应用程序中,高深的人工智能不再是少量数据科学家的专利。
5 R- N) A& H# _, U8 F. A
/ J# P9 b' A, V- Y- C" X7 ?, rSPL本来就超强的数据处理能力,能更方便地完成人工智能算法之前的数据准备工作,同时也提供了丰富的数学函数: SPL Math 例程,有些数学基础想自己实现建模过程的同学也可以进一步研究。
; B# `* w+ D& V; p9 E8 ~; G————————————————, }7 X. W( g' }9 q) O& K
版权声明:本文为CSDN博主「java李杨勇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
- ?/ z& f/ [5 u) P l! B: O原文链接:https://blog.csdn.net/weixin_39709134/article/details/126698462 y. l" S/ O% z8 u8 j) z. D, _9 y+ {
% p4 o; y/ q- e1 [; E+ v
$ u. k# i" o9 g. T: K. | |
zan
|