- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563269 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174204
- 相册
- 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 也不错7 @& L% F' a$ ?. x1 |/ S: C
- m) z- \' |! `: p2 `/ p
可用来做人工智能建模预测的工具非常多,比如Python, R, SAS,SPSS等,其中Python由于简单易学、丰富的数据科学库、开源免费等特点备受欢迎。但是对于不太熟悉数据建模算法的程序员来说,使用Python建模还是比较复杂,很多时候拿到数据并不清楚该做怎样的处理,选择什么样的算法。其实,在做数据分析和数据建模时,SPL也是不错的选择,它比Python更简单易用,计算速度也快,交互式的界面对数据分析十分友好,同时还提供自动数据建模功能和一些数据处理以及统计学函数,用起来也很方便。
, x& M- X" R3 {& p, V# ^! j! K0 L0 a5 p9 s, X$ t& N
下面就以一份用户贷款违约预测的数据为例,使用SPL手把手的进行数据建模预测。
) S2 z& s3 ?: l5 r
) n" w, b4 o" H: f4 _1. 确定目标,准备数据
9 h3 b1 N8 l2 J1 ]建模预测就是从历史数据中挖掘出规律,然后使用规律对未来可能发生的事情做出预测。这个规律就是一般所说的模型。/ |" g) r& _0 U6 r
' [, F" J& T. g& M9 m# x: f6 ~6 d
历史数据通常是一张我们俗称的宽表,比如在用户贷款违约预测的例子中历史数据是如下图这样的Excel表格:
5 P; a( u. D. q) A; l' N4 Z B0 P, a' l, d- C, r
首先,宽表中一定要包括我们想预测的事情,通常称作预测目标,上图中的预测目标就是历史用户的违约行为,也就是图中y那一列,yes表示违约,no表示不违约。预测目标还可以是一个数值,比如产品的销量、售价……,或者是预测属于什么种类,比如预测产品质量是优、良、合格还是差。有时目标在原始数据里就有,可以直接使用,有时目标还需要人工标注。2 t. g- r6 o$ V4 p, v8 Q, O9 p9 D
7 A' d6 G" @' M9 c W
除了预测目标外,这里还需要很多信息,如表中的用户年龄、工作,房产,贷款情况……,这里的每一列称为变量,也就是和贷款人将来是否违约可能会相关的信息,原则上能收集到的变量越多越好。例如预测客户是否会购买产品,可以搜集客户的行为信息,购物偏好,以及产品的特征信息,促销力度等;预测汽车保险理赔风险,需要保单数据,车辆信息、车主交通习惯以及历史理赔情况等等,如果是预测健康险还需要一些被保人的生活习惯,身体状况,就医看病的信息;预测商场超市的销售情况,需要历史的销售订单,客户信息,商品信息;预测不良产品,需要生产的工艺参数,环境,原料情况等数据。总之,收集到的相关信息越多,预测效果也会越好。
Z( Y @3 R" @8 A; S+ U$ q1 n2 I7 [3 T' D8 a6 O
采集数据时,通常会截取某一段时期的历史数据来制作宽表,比如我们想预测7月份用户的违约情况,可以采集1-6月份的数据来训练建立模型。数据采集的时间范围并不是固定的,可以灵活操作,例如也可以是近1年或者近3个月等等。
; Q" ]( e. q$ F; g5 I3 Y7 P# x# o1 {3 U/ [7 z0 V0 |
准备好的宽表可以是Excel格式或csv格式,第一行是标题,后面每一行都是一条历史记录。 N/ ~+ @; u5 P/ t" w7 W
6 z3 q& X. T. w5 c4 X, Z如果企业有建设好的信息系统,那可以找IT部门要这些数据,很多企业的BI系统中可以直接导出这种数据。
- D8 I* K+ Z+ r$ K% q
& G6 p6 y. M4 O( x) H2. 下载软件,配置建模外部库0 a6 U" I- x3 f2 _
SPL 在易明建模外部库的配合下可以提供全自动化的建模预测功能。
7 F8 ]- c; ^# {* ~3 K' R4 w* \* o! {$ _$ L* c7 M
(1)下载安装集算器(SPL)和易明建模软件
. b6 F' P! g0 E1 g/ C集算器下载:. }$ M, a( L; _: G" F1 Q8 y1 a
“http://c.raqsoft.com.cn/article/1595816810031”
1 O, v( A; G' ~* x, x) j+ V" s. Q; J1 i% a K
易明建模下载: “http://www.raqsoft.com.cn/download/download-ymodel”
2 C% K3 `/ E7 g2 u' f7 _/ O2 E G% P7 a
- d' X% l! Y' D N9 c% ]安装集算器和建模软件,并记录安装目录,比如:C:\Program Files\raqsoft\ymodel. ]) T. o4 A ] v, m# O
- M" t) ]# y; F+ ~& N5 t: Q1 |7 K3 g- N" `
5 ~0 c9 U/ E/ g7 G(2)在SPL中配置外部库$ T. {% I/ j t. m) ?
(a)复制外部库所需要的文件0 m) y8 ^/ i$ A4 ^+ i/ b
在易明建模的安装目录下找 YModelCil 和 lib 文件夹
Z, W9 i4 X$ Z9 m
1 p1 g3 r4 U2 _
* ^" W9 t- `& V0 G! P; m; r* n4 d! l, z8 X9 _
然后去这两个文件夹里找到建模外部库所需要的文件,复制到集算器目录(【安装根目录】\esProc\extlib\YModelCil),比如C:\Program Files\raqsoft\esProc\extlib\YModelCli。
- x1 z8 J/ F7 M* D
+ N$ H, C& V5 A$ p建模外部库所需的文件有:# p) |$ i3 S- B3 P3 m
/ J6 ?/ {" `8 v0 g/ u5 o' z1>易明建模目录的YModelCil中含有以下jar和xml
- Y6 x4 U4 Q+ Z) X, [" R, K+ S
1 K, B, F% U ~, |' x/ Pant-1.8.2.jar
+ O1 o; t! m" Jcommons-beanutils.jar- o5 h5 ?: e; |0 S/ @. g
commons-lang-2.6.jar
) I7 b) X( M1 l4 M" eezmorph-1.0.2.jar
" r( {9 W: k6 h) Ajson-lib-1.1-jdk13.jar7 f9 S9 p* i# D) s
raq-ymodel-cli-2.10.jar
( H; Y9 V4 v2 c4 J$ u, ]7 luserconfig.xml9 |4 A& f6 K) o9 U3 m
. R9 E, s/ `; {' L9 `# [5 ~1 z2>易明建模的lib中含有以下jar8 X* c$ E3 M! g1 R2 I; r7 a* O
; S0 L2 J" L# J- \
commons-io-2.4.jar
' N* d5 O' _4 i/ R% H+ [esproc-ext-20211104.jar
; [0 e0 I( C' X/ kfastjson-1.2.58.jar+ n) L+ h7 ^* x7 i
gson-2.8.0.jar3 f& U! ~9 @2 |! }5 U8 T) m
jackson-annotations-2.9.6.jar& v9 O8 j5 B4 T/ P8 u
jackson-core-2.9.6.jar' C" W! L; {0 T" \( o# Z
jackson-databind-2.9.6.jar
* Y8 W. `1 K! {6 h: b! w1 Pjackson-databind-2.9.6-sources.jar
* S4 h1 g l! ?) M# P9 zjackson-dataformat-msgpack-0.8.14.jar
' x! V+ N5 R- p) r# }mining.jar/ G) \5 N% V1 V1 R
msgpack-0.6.12.jar
5 W0 n& q- A/ k, W7 omsgpack-core-0.8.16.jar
! D/ S/ y" i: f: Z+ X
% Z8 q3 a, L6 w" L1 y3 S' d8 c8 K(b)设置userconfig.xml文件参数( ` X+ H) h+ k; |- K
在集算器目录esProc\extlib\YModelCil下的userconfig.xml文件中设置参数
" E; ]0 s$ g6 c! D: [
/ y2 j1 D( E! B. ?6 A, l5 H- R名称 参数说明8 p$ q' I0 R* f% n
sAppHome 易明建模的安装目录
" X4 E* D# s+ usPythonHome 易明建模目录的Python路径 Windows: raqsoft\ymodel\Python37 Linux: raqsoft/ymodel/Python37/bin/python3.7
4 x, K8 q. o: S( K5 fiPythonServerPort Python服务网络端口" L! ?: a/ a; J' x3 O: X
iPythonProcessNumber Python进程数
) Y, k: C; r/ k: `; }9 Y3 o3 HbAutoDecideImpute 是否智能补缺
& _; b) I! c& u$ C( V9 e2 giResampleMultiple 重抽样次数
6 s5 y+ Z- X8 _7 ^# {其中必须要配置的参数为sAppHome和sPythonHome,其他参数可以采用默认值,有需要再进行修改。比如可以配置参数如下,加粗部分是必须要配置的,根据自己的安装路径。# n6 b, m3 A0 ?6 ~" k# |2 H
( c( C/ e& q1 Q& d. Y<?xml version="1.0" encoding="UTF-8"?>
* u ^/ T1 ~; l# T# R+ C# }<Config Version="1">
5 W4 g5 q: y4 x! g; l <Options>: f2 W0 c1 R9 |1 c; J I
<Option Name="sAppHome" Value="C:\Program Files\raqsoft\ymodel"/>! J5 j2 S8 f* ?3 B# L, ^7 w
<Option Name="sPythonHome" Value="C:\Program Files\raqsoft\ymodel\Python37\python.exe"/>
3 ^6 V) }, u6 v) l; D <Option Name="iPythonServerPort" Value="8510"/># r; ]% ]; t4 C
<Option Name="iPythonProcessNumber" Value="2"/>
2 n$ K, ~! F8 i" H <Option Name="bAutoDecideImpute" Value="true"/>
" S2 ^6 M5 A+ O' a5 |2 V3 O <Option Name="iResampleMultiple" Value="150"/>
5 C; |( Z! t: t1 Q" N7 w8 U' q </Options>
3 J8 w! F7 M1 F) d+ c$ g</Config>
+ w2 ~& v- q8 s+ D: f1
' t. L9 A0 i+ R& [9 E! T21 e) D5 f# t _) E7 N
37 G1 K9 @" N( Q' ]" g, S
4
& _8 Y( f# v! {3 Z- j5
" ^' N+ W: D& z60 w) U9 o0 f! m2 z: i
7
, k- C: @* Y; \0 n8/ ~/ a& v, n5 T4 u9 |! r5 e
9
+ A/ G) d) q7 ?" R10' I4 {9 } _0 `( X" I7 j" N1 ~
11: G8 y8 L6 O. Q6 H" ?
其实,从这里可以看出,易明建模也是基于Python写的,但它将Python算法做了封装后,程序员就不必再理解算法的数学原理和运行细节了。
4 T0 ?' m( S9 r* t
4 J0 B5 {( y5 J' p. _+ c* s& }/ X(c)SPL环境配置
4 U4 [' Y8 ]1 U8 k6 g1>. 配置外部库
, n ~4 d$ P3 u: f) O# }
' T% ~' ]5 `4 P3 v打开SPL,在选项菜单里,外部库选择里勾选YModelCli,使其生效。外部库的路径为第(1)步骤中集算器YModelCli的安装路径。7 Z. \& w6 u* q# W0 w9 F
4 P1 I* f! J/ g' `4 _0 l% f9 [
# k2 u# |$ ~' r0 G+ P% z- S' k. j0 d" p1 G: d {
在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置外部库路径和名称。
5 {- m; N( r, B, ^3 ?
: \' X5 [* @/ f<extLibsPath>外部库路径7 g7 C& g" h! z) ]8 N* D
@2 a" V! D; B/ u( @
<importLibs>外部库名称(可多个)) q( n: U! B4 ?3 w: B" f0 Y
* E9 t. U& b& @4 a
2>. 线程数设置( ~' C% [' m$ L6 c8 s; Y- U
' R4 K6 M: `; t如果有并发预测,还需要在SPL设置“最大并行数”,也就是线程数。设置多少用户根据需求和机器情况自行设定。9 R5 D8 N, `' _3 g6 h
# C# P* z5 M# w V. \- ~4 c; f
* U( Y! u9 X* S! M8 T$ R
4 ]' T8 t3 G9 E+ W0 U2 n在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置。
* [) U8 p2 \4 s% S0 W2 K- q$ L9 Q. `
<parallelNum>最大并行数' `$ G" S* Z/ w# E1 I0 ~9 J+ M' @/ o
& V; A& r% z" Q+ A' X到此,环境配置完成。
5 c: i. F& x. {) {3 W% q6 R0 U, T9 u! X3 Q7 _2 A0 p% |: [" S8 A; b
3. 建模和预测9 J! U- e4 c7 b( W! f8 D
(1)加载数据: u2 k3 Q0 i- i8 s* [8 f$ ^/ H
SPL能支持csv,excel或数据库中的数据用于建模,这里以csv为例,其它数据源类似。! ~4 L" @! [3 J0 x" D m
+ G+ F0 c; c7 d* i
设有一个贷款违约数据表如下,需要建模来预测新用户是否会发生违约行为。
- n6 w$ k/ Q& X' z( z. C- N. ~7 K4 ]
0 h. }' S4 i2 [$ C. K; o5 w. J( V
' G! B- C9 F1 I! o* q* R$ D( ~; p, g( ^) E
文件命名为bank-full.csv;
1 S! p! M9 E2 h+ w% ]! s, p$ A
9 n+ ?) M1 d- K$ lA/ C; v$ V7 K, B8 B7 E
1 =file("bank-full.csv").import@tc()3 k% H! R0 }- m s
2 =ym_env()
% F0 O/ B T, K# P* n1 x: r3 =ym_model(A2,A1)$ p3 o% ]# z/ d1 j q* j0 k
A1 导入建模数据,读成序表
$ a6 D) z0 t/ v- [, P D. |6 M( b7 C
# d4 }' B! G9 T8 e- W' n; D2 R
+ W: e) F9 t) }# p
) W* a7 ~* m+ E# Z) C: bA2 初始化环境,执行A2后会在易明建模的安装目录下生成store目录及子目录用以保存数据及结果文件。7 x7 V' m" n# T5 Q+ s
8 V, u: n( t, }$ m9 h: W$ E
A3 加载建模文件,生成md对象) h8 m7 I4 e7 [8 |8 }, A! X/ \! e$ f
& |5 ~2 Y o5 ?2 m- W
(2)目标变量设置和变量统计
- w* m" q3 p- v3 P3 |5 M# [! \. E* ~数据加载进来后要设置目标变量8 d9 v% y C( n" k; J
) y/ {0 G( j2 C- F1 E O
A
6 X, k6 P1 y7 o3 ]" S% A… …
/ l* L4 z" M9 t4 =ym_target(A3,"y")
7 u& H q7 s8 c1 i) `5 =ym_statistics(A3,"age")
, D# w% ]( _2 M; r" ?1 S6 =A1.fname().(ym_statistics(A3,~))8 a! x5 y) V# O0 J" c
A4 表示将字段“y”设置为目标变量,目标变量可以是二值变量或数值型变量。
* g$ ?% `* [* k4 @" h& t
* \' V/ K. R, R% h% `0 z, }A5 查看某个变量的统计指标,比如 “age”,返回值中可以看到缺失率,最大最小值,异常值,数据分布图等参数。& Q; K% d. K) X" \( S
0 y5 M5 T8 z, y, O+ X! @. k% X% X l0 _2 I+ u2 k% x
2 ]+ g+ q3 P. y3 A; i A3 [A6 循环变量名查看所有字段的统计信息,返回包含所有字段的统计信息二级序列。* z& \, h; h1 L1 O$ k; R* Y
7 N3 K o4 T: y3 C9 X' a" r! j. x, _$ O, c
, b; Y' |6 p2 \$ n
(3)建立模型和模型表现
) X2 Z# g& c; D$ o( EA8 A' @0 e; y. h5 Z0 z8 J" Y
… …
9 O' |& R4 l+ o) d' ^- _* g7 =ym_build_model(A3)+ ]( o" a0 C% l X- l8 ^! C1 W
8 =ym_present(A7)
4 r# {$ `: V/ T: I9 =ym_performance(A7)
3 n/ f& [, m7 E5 A10 =ym_importance(A7).sort@z(Importance)# y$ n& g2 ]% @6 ?( W
A7 使用建模函数建立模型,执行后在后台会进行全自动化数据预处理和建模过程,此过程会耗费一些时间,时间长短取决于数据量。结果返回pd模型对象。" F3 X, O" V/ N/ n. Y$ r c, d
" ~& E( ^3 X$ L3 \$ ]
模型建好后,可以调用pd模型对象查看模型信息、模型质量和重要度。" a4 C# d8 y5 H2 T# ~
- n+ J) X/ s9 ]9 V4 }0 h* K! uA8 返回模型AUC值及参数
|, K1 i$ j; B: R( ^* G0 s3 j: \( [! z. a9 S6 \5 C
0 [" z z' K( d8 Z3 f9 s
7 l) ~- y# O$ F: p8 ^% ]A9 返回多种模型指标和图形,诸如AUC,ROC, Lift……
5 v7 r1 D3 n% d/ ]" @! |( N0 }0 z4 [5 B3 U$ ?
# N& O8 S' U$ ^! c1 E# d3 o1 G
" q0 [8 N0 i7 E9 w( B: P3 F比如点击A9的第6条记录的Value,然后点击右上角“图形浏览”图标,数值字段选择“Lift”,就可以查看Lift曲线; v6 D' d! D" Z% q
; Q( C: O8 @" f
8 v9 U8 W: Z4 h! }' Y4 M2 v) d0 D3 q% ?- f9 N7 A+ N) ~0 ~
A10 会返回每个变量对目标变量的影响程度并且按照重要度降序排列。数值越大对目标变量的影响程度越大。降序排列分析起来更加直观。# |$ T( B' q8 C! {/ |- w4 y
* a! v( W0 c) _$ N; H3 O) s4 |
& h& Y% D ]* T) {- i n7 q$ {7 F2 z. p0 b- | ]' U( \, U# H$ D
(4)保存模型7 p. y3 y8 I" j! G3 r
A$ l* @/ ?+ k" S' a( T9 F* q
… …
! u" v! K$ B4 T; A6 ~% E" e11 =ym_save_pcf(A7,"bankfull.pcf")
! f) J' E6 D/ Y6 O3 D+ p12 =ym_json(A7)' r+ D2 K- \: |8 H
13 >ym_close(A2)
3 h7 ~2 x* c$ e, |! KA11 将模型保存为”bankfull.pcf”,默认保存路径为[sAppHome]/store/predict。
1 x) B6 M3 {0 @3 {7 T: O1 r
1 o% s( o, k0 F! d. LA12 将模型信息以json串形式返回。json内容详解可参考在线文档《json参数说明》9 C# o2 h, A* H2 A/ v+ s
: L) Q+ [+ W8 H# xA13 关闭环境,释放资源。# M- B Y! N' t2 `3 L0 `
: ]. `) ^; n" @, |8 T(5)预测 I6 X- F* A) c# k8 [2 M
预测之前需要有pcf模型文件和预测数据集
2 P# j. a8 q6 m
9 T$ U" S' @' c& H1 b- {A& _# P" r! B1 O( G, C. P
1 =ym_env(). Y6 [: o/ p }# B! [
2 =ym_load_pcf("bankfull.pcf")! d1 L9 h# H0 N: g" C- K% y
3 =file("bank-full2.csv").import@tc()6 b; w! v" |: \. F0 R6 C, L' | C
4 =ym_predict(A2,A3)
+ i3 i5 J% k' o2 {5 =ym_result(A3)$ B0 y: O8 i2 M/ k/ f
6 =file("bank-full_result.csv").export@tc(A4)
W5 a. B8 W& v) H7 [5 a7 >ym_close(A1)
% B7 a' p* D' n; ?/ B. N# E1 LA1 初始化环境) s& g" [+ E3 B h. g3 D
- V/ J+ V& i) A% G0 aA2 导入pcf模型文件,生成pd模型对象。
# _- c6 G0 A+ _$ X
$ i& A8 l# i7 Z1 LA3 导入预测数据集,读成序表7 u3 |, Y/ t4 ~0 \( V1 E: d( o: {
5 H1 ~7 M! m8 j( }! k+ b6 m
A4 对序表数据执行预测。除序表外,还支持游标、csv文件和mtx文件,比如A4也可以直接写成ym_predict(A2,“bankfull2.csv”)& H E7 _; M; y* ?! g7 @: }- F7 Y
: Q4 c! B. h# G2 O" A7 N9 y
A5 获取预测结果
! i' M/ H6 f; z* H7 f7 g: K
" n1 y* }7 U: J3 H' h3 lA6 将预测结果导出,在本例中预测结果为用户发生违约行为的概率。
# h$ W" I& j/ e; x
3 b% J$ `$ I" x; M! f \, f/ T0 J" {
A7 关闭环境,释放资源
, |- C2 c% N) i% H- K7 v
5 w/ X) G( a/ r0 t/ y0 L5 f4. 集成调用$ N* E( s' E, F( f
SPL还可以被上层应用集成调用,比如SPL可以嵌入到Java应用,详情请参考:http://c.raqsoft.com.cn/article/1615765346560) Q3 m: ?( u- _( v
" _# ^8 L& `: Q" c F$ I总结
8 Y$ m, ^7 a* R% m0 t使用SPL配合易明建模来实现数据建模预测非常简单,程序员不需要理解深奥的数学原理,只要准备好训练数据,简单几步就可以完成数据建模任务了。而且还可以轻松地把这个功能嵌入到应用程序中,高深的人工智能不再是少量数据科学家的专利。5 S! q( j4 C" [( g
2 u" M4 Y1 x/ N4 PSPL本来就超强的数据处理能力,能更方便地完成人工智能算法之前的数据准备工作,同时也提供了丰富的数学函数: SPL Math 例程,有些数学基础想自己实现建模过程的同学也可以进一步研究。1 q( m: x# w& u% P" M
————————————————$ @5 \+ l) w! H- d
版权声明:本文为CSDN博主「java李杨勇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
% b) `6 z3 j6 s s原文链接:https://blog.csdn.net/weixin_39709134/article/details/126698462
1 a" i/ T& K, |
/ b" d* e1 M; y2 m; M/ p
5 `$ M0 A4 ]7 l |
zan
|