- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563416 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174248
- 相册
- 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 也不错, j" M8 s1 ] y) n1 \: D6 `0 q% B
: w1 O' _, y! A5 r可用来做人工智能建模预测的工具非常多,比如Python, R, SAS,SPSS等,其中Python由于简单易学、丰富的数据科学库、开源免费等特点备受欢迎。但是对于不太熟悉数据建模算法的程序员来说,使用Python建模还是比较复杂,很多时候拿到数据并不清楚该做怎样的处理,选择什么样的算法。其实,在做数据分析和数据建模时,SPL也是不错的选择,它比Python更简单易用,计算速度也快,交互式的界面对数据分析十分友好,同时还提供自动数据建模功能和一些数据处理以及统计学函数,用起来也很方便。& ^4 X/ F" G7 l1 p6 `' c& M
, n# x: N A% t( |
下面就以一份用户贷款违约预测的数据为例,使用SPL手把手的进行数据建模预测。
7 k, g: S: N0 V
& S$ y# E1 I1 H, m1 O/ O9 P6 \1. 确定目标,准备数据
# S5 A; o5 o) g8 I# V i' U! a: ^建模预测就是从历史数据中挖掘出规律,然后使用规律对未来可能发生的事情做出预测。这个规律就是一般所说的模型。# o$ L$ P. Q7 Z% O# F+ [
6 u1 W& y$ c: P% C" q# A" g, h历史数据通常是一张我们俗称的宽表,比如在用户贷款违约预测的例子中历史数据是如下图这样的Excel表格:
. x) g; ~8 E( g$ }0 w! F2 L! v" [ _& b+ m. {+ q
首先,宽表中一定要包括我们想预测的事情,通常称作预测目标,上图中的预测目标就是历史用户的违约行为,也就是图中y那一列,yes表示违约,no表示不违约。预测目标还可以是一个数值,比如产品的销量、售价……,或者是预测属于什么种类,比如预测产品质量是优、良、合格还是差。有时目标在原始数据里就有,可以直接使用,有时目标还需要人工标注。
/ |& a# K' C5 N2 j/ {& E% b1 h3 R- T i: t* T5 r1 e
除了预测目标外,这里还需要很多信息,如表中的用户年龄、工作,房产,贷款情况……,这里的每一列称为变量,也就是和贷款人将来是否违约可能会相关的信息,原则上能收集到的变量越多越好。例如预测客户是否会购买产品,可以搜集客户的行为信息,购物偏好,以及产品的特征信息,促销力度等;预测汽车保险理赔风险,需要保单数据,车辆信息、车主交通习惯以及历史理赔情况等等,如果是预测健康险还需要一些被保人的生活习惯,身体状况,就医看病的信息;预测商场超市的销售情况,需要历史的销售订单,客户信息,商品信息;预测不良产品,需要生产的工艺参数,环境,原料情况等数据。总之,收集到的相关信息越多,预测效果也会越好。& y6 j1 t1 [0 \0 s* J& B( k
@' ?4 a O0 E7 Q* A8 f采集数据时,通常会截取某一段时期的历史数据来制作宽表,比如我们想预测7月份用户的违约情况,可以采集1-6月份的数据来训练建立模型。数据采集的时间范围并不是固定的,可以灵活操作,例如也可以是近1年或者近3个月等等。
; z7 \% F) p/ u+ P" l% ]* ^. f' [' d7 m$ v' F- ~# o
准备好的宽表可以是Excel格式或csv格式,第一行是标题,后面每一行都是一条历史记录。: A# a' A+ _. ]3 d+ [/ S3 d& t
9 M) U# g) k3 [/ T3 r如果企业有建设好的信息系统,那可以找IT部门要这些数据,很多企业的BI系统中可以直接导出这种数据。/ A, e0 D7 b+ f1 i: }; H* f: N
C$ k0 K' v5 U3 V3 v2. 下载软件,配置建模外部库
6 P6 V/ t' E8 `7 ]1 SSPL 在易明建模外部库的配合下可以提供全自动化的建模预测功能。9 Y. ~+ q- q+ x) ~# J
- x7 I, p6 s# ~4 j7 k* T. @
(1)下载安装集算器(SPL)和易明建模软件
- X+ Q$ X! O C: J集算器下载:
0 H2 {" A# }5 ]% E3 u* y' [“http://c.raqsoft.com.cn/article/1595816810031”
b( N; R/ u7 l( _) {; I
* Y, D* ], Z3 o6 Z. j5 B易明建模下载: “http://www.raqsoft.com.cn/download/download-ymodel”
1 h/ n2 e1 t2 l& e* ~' g7 B+ ?: ? m" T, ]# c, \0 K
安装集算器和建模软件,并记录安装目录,比如:C:\Program Files\raqsoft\ymodel
. u5 F6 F5 E8 c: O9 ?+ [
( L6 L; O+ O' _: u; }; P% `! j D7 a3 w- F% ]. A) t D( Q! B
' X6 T" c2 A. q+ u* o6 k! T
(2)在SPL中配置外部库' x( ~) T M. l
(a)复制外部库所需要的文件
/ f3 @+ d. G2 x% Z在易明建模的安装目录下找 YModelCil 和 lib 文件夹
( X2 T# @5 q7 D' s' o& U
( A) a9 |& L0 w$ ~ V7 a
8 X! Q: \& C$ m1 Z' Y- |: ^1 Z$ T4 U- h0 {8 }) y
然后去这两个文件夹里找到建模外部库所需要的文件,复制到集算器目录(【安装根目录】\esProc\extlib\YModelCil),比如C:\Program Files\raqsoft\esProc\extlib\YModelCli。2 C [1 O8 s# V3 `. z' b% e* L
: W* o# L7 m) y# b建模外部库所需的文件有:
* u+ r+ B1 q- G" C G" q8 F: k! K$ B3 y4 B
1>易明建模目录的YModelCil中含有以下jar和xml+ B$ N: s" w1 x( e0 Y
7 O9 w- ?7 G/ |6 b. Pant-1.8.2.jar8 @, Y+ U9 Q8 V5 W- W( X: q
commons-beanutils.jar
, t/ k0 K- c- l! y5 y" o, P1 j8 Xcommons-lang-2.6.jar' E" J6 P5 }) Y6 ?+ M1 L( A
ezmorph-1.0.2.jar
' Y2 N% ^8 Q- S* n9 F' ~. ljson-lib-1.1-jdk13.jar. G! s. l4 g. v2 o: O, v
raq-ymodel-cli-2.10.jar0 ?6 x% f9 H8 [
userconfig.xml+ g6 O. v' n* J @( t% H
7 a; c% e+ z8 G1 q3 \2>易明建模的lib中含有以下jar
7 x) v6 {5 s0 S1 z2 j7 d5 y8 y1 D- j x7 h& N5 {: g
commons-io-2.4.jar
/ C! j- i4 v; W( D1 U3 w$ }3 Qesproc-ext-20211104.jar( l4 z9 x& Q' l! i3 O" g
fastjson-1.2.58.jar4 b/ ~" H/ d0 `5 P
gson-2.8.0.jar
0 V7 E. d" N; z: \( \/ N2 Cjackson-annotations-2.9.6.jar3 s: u; w) c/ J
jackson-core-2.9.6.jar
! X- l8 F8 V6 d N! O2 Bjackson-databind-2.9.6.jar5 n+ ?: ~: @4 _+ ~
jackson-databind-2.9.6-sources.jar. W+ k- H8 l; y( x* C" Q4 i* j
jackson-dataformat-msgpack-0.8.14.jar
! u( ?; L5 }; |# u$ Y. I: X: _mining.jar
4 S6 w4 w6 }. U& a/ F8 `msgpack-0.6.12.jar, y$ \6 n% w% I) C' n
msgpack-core-0.8.16.jar
( L, L. I' t3 P
6 |3 i' N \/ y# z(b)设置userconfig.xml文件参数2 ]/ I4 v" l% l
在集算器目录esProc\extlib\YModelCil下的userconfig.xml文件中设置参数
3 h) M( k) g+ R4 P3 R7 g5 K+ ]: e Y
名称 参数说明
; a% k( K S0 M3 t) X- l/ @sAppHome 易明建模的安装目录
7 g: R7 L- v1 {9 `7 P% ]0 FsPythonHome 易明建模目录的Python路径 Windows: raqsoft\ymodel\Python37 Linux: raqsoft/ymodel/Python37/bin/python3.7
. Y% C( K+ x* t2 X- A$ x! RiPythonServerPort Python服务网络端口
7 h. P. f1 ?! G ^# z6 iiPythonProcessNumber Python进程数
6 X! b- U6 T/ b( v0 ybAutoDecideImpute 是否智能补缺
8 k& O* X: I Z0 g) siResampleMultiple 重抽样次数
; A$ V9 l4 g' G* w& \! X" V3 }其中必须要配置的参数为sAppHome和sPythonHome,其他参数可以采用默认值,有需要再进行修改。比如可以配置参数如下,加粗部分是必须要配置的,根据自己的安装路径。
* S; g8 p1 n) Q+ P- u7 v. s( H$ z8 @" [7 k
<?xml version="1.0" encoding="UTF-8"?>
$ w2 o' W8 E5 m0 ~, u% l9 c! D) |. E<Config Version="1"># F7 j2 I+ B8 Y+ W+ o1 c
<Options>
3 @; \( B j6 F- n% m u( O <Option Name="sAppHome" Value="C:\Program Files\raqsoft\ymodel"/>" q- m6 g" l6 o( p
<Option Name="sPythonHome" Value="C:\Program Files\raqsoft\ymodel\Python37\python.exe"/>
+ {, W2 U* q0 d+ R8 M <Option Name="iPythonServerPort" Value="8510"/>
$ G0 V* Z% n( n. \4 C: D <Option Name="iPythonProcessNumber" Value="2"/>
) t* C5 J8 G8 }- t( L <Option Name="bAutoDecideImpute" Value="true"/>, V' i" i7 I5 e
<Option Name="iResampleMultiple" Value="150"/> ! q3 I3 v! I0 w$ W" K$ z# L) x
</Options>
9 y- w& e# n4 e7 I# @- B/ k</Config>9 a" \7 ^9 B N: l
1' _- k& }+ d: X; C: h7 ?6 @
2
3 ^+ r9 `6 A0 G3
4 O1 ~ T% R* N9 V/ w- J+ g6 t4# p% T O+ E( [0 W2 U/ `) T
5
& w5 i" e- P* L& l6
( D. I8 `; E) Q0 S" r7
1 N4 n! c5 X3 m& c( h84 _' |' o( |) d, G$ t4 I
91 L% a/ P/ {5 A9 b
10
/ I# d/ A9 c- J11
( q: R- J, i, I其实,从这里可以看出,易明建模也是基于Python写的,但它将Python算法做了封装后,程序员就不必再理解算法的数学原理和运行细节了。
% Q) M+ s, @$ r. |
7 X2 O) s( s9 S: p1 o(c)SPL环境配置
/ b, m5 h+ E/ J1>. 配置外部库
; k3 T2 v& K8 S8 x/ [$ E+ h! A$ n8 f# k' v
打开SPL,在选项菜单里,外部库选择里勾选YModelCli,使其生效。外部库的路径为第(1)步骤中集算器YModelCli的安装路径。! }; Q5 \$ b% h3 [. h/ w, P# e
' Q5 m* T) [+ O
3 d8 b: a. c0 Y9 ]) w
* L2 \8 n, x- Z8 X
在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置外部库路径和名称。( w" ], |5 f( B) S. J- I1 ^
# h" Z2 a$ @$ r<extLibsPath>外部库路径# `: q1 ?* F% U) H7 t% w q
% W/ N+ b, b) I0 A& ?0 g<importLibs>外部库名称(可多个)! V6 [7 g1 g$ j& C! h2 A' s9 Z
% s$ E7 s' P- w [# ~( T% {# B I2>. 线程数设置' h0 W& \+ o! [+ ?# k' M1 P
: u4 c/ d" k4 C& v* Z( U2 P4 U( S
如果有并发预测,还需要在SPL设置“最大并行数”,也就是线程数。设置多少用户根据需求和机器情况自行设定。/ y% u1 ~. a/ J9 H3 @2 { |: c: d
4 f6 J6 Y; h( {, h# m( N
/ B2 `7 O6 d( O- K% ]( a
}" [5 X. X# M" J( ~' k" G在无图形界面的服务器中去集算器的安装目录下esProc\config\raqsoftConfig.xml文件中进行配置。6 w7 a4 P; a, y8 i" I e
: R" ?0 x6 U+ }0 S+ x6 t) Z<parallelNum>最大并行数
. S: _2 |/ e ]: K! Q/ j! T/ i. \7 \9 K* {
到此,环境配置完成。 H0 C. S3 M9 \3 y
$ s9 Z! x, j7 c0 c: N: V/ S# G3. 建模和预测
/ M) Z) ]( M' ~8 Q1 G2 ?$ ~(1)加载数据
; E0 U# o1 Q$ n" Q; w. hSPL能支持csv,excel或数据库中的数据用于建模,这里以csv为例,其它数据源类似。
9 E% ^6 x* `7 ?& t8 r/ W/ W3 T/ H. n/ ?# X, W* {4 B
设有一个贷款违约数据表如下,需要建模来预测新用户是否会发生违约行为。
. ^4 Y! f2 q' ^8 p2 v! G. `7 G3 N
2 r* V( p1 ^ v: k- t& p2 [) Y
5 b4 \+ O8 s; K4 V, `& E) w8 t7 m2 S) w/ f4 Q! h/ L, \
文件命名为bank-full.csv;
# I2 e; O& K: f4 t/ J7 x
8 x+ C7 ^7 {( `& _) X8 OA
A; L) j+ }4 U+ ?1 =file("bank-full.csv").import@tc()7 I. r8 @: ^! T2 W# _& c' T5 L
2 =ym_env(), ?! N! ?) l8 z1 d5 [
3 =ym_model(A2,A1)
* Y" B7 U6 g, R. f! U8 fA1 导入建模数据,读成序表# a5 i2 j# R! |2 N2 \
& m3 h D K! D! L/ w/ Y/ {
. E4 p9 X4 m2 D f
. t3 H- ~; ~ g( s$ e( d7 p4 t0 XA2 初始化环境,执行A2后会在易明建模的安装目录下生成store目录及子目录用以保存数据及结果文件。
6 R+ h8 D# S0 v( ^: W
. ~% b/ M( V0 W; S, }$ V) i+ HA3 加载建模文件,生成md对象3 b) D4 p( Y+ @8 r
7 d; O5 {, C% a2 A: _) R0 I* |
(2)目标变量设置和变量统计
( u7 I+ {1 e6 _& S6 t" O% p# g数据加载进来后要设置目标变量
( R: k" A5 A" q0 Z% Z& f& A
6 B8 _9 n1 U7 s0 cA# o9 _" d0 l7 Z/ o; f$ [* }
… …
# R6 |. A: d" S/ `- S# L4 =ym_target(A3,"y")
3 I; D3 p' {7 A* b& R. V5 x' ]# r5 =ym_statistics(A3,"age")
: y/ U& Q) o; A. m. [# W+ G6 =A1.fname().(ym_statistics(A3,~))
5 u3 F3 g2 v% |( s0 u3 k2 wA4 表示将字段“y”设置为目标变量,目标变量可以是二值变量或数值型变量。
1 V0 H, I( m {- Z, k, t" D
6 i* R8 k5 `0 r6 f9 B: XA5 查看某个变量的统计指标,比如 “age”,返回值中可以看到缺失率,最大最小值,异常值,数据分布图等参数。" r+ |" k. c7 s) n
* R$ j5 c3 E5 M* p/ R' j$ P8 C6 \& E0 h
* n7 x; ^7 F/ q, y/ c+ R- xA6 循环变量名查看所有字段的统计信息,返回包含所有字段的统计信息二级序列。
' P$ }2 d/ N, G' C- ^9 A& G- L- p1 ^5 V4 }* G+ [0 v
5 t7 u5 G6 |! E
( e+ C- X; o; E" N/ b8 P
(3)建立模型和模型表现0 K: g: g# ~* a* q# a
A
% F: H G( [9 S0 s; ?' K- ]* O. }… …! a% c4 G4 d- L0 P" \; |3 u- K
7 =ym_build_model(A3)- Y# { Q8 k3 e; {
8 =ym_present(A7)
6 O6 d. p" W+ n# V E. G9 =ym_performance(A7)
2 f7 W' i5 S; r/ w7 G, a10 =ym_importance(A7).sort@z(Importance)/ ?/ w% N4 I7 [6 b
A7 使用建模函数建立模型,执行后在后台会进行全自动化数据预处理和建模过程,此过程会耗费一些时间,时间长短取决于数据量。结果返回pd模型对象。
( U# O. m j, b' E7 l2 V+ J B0 S
模型建好后,可以调用pd模型对象查看模型信息、模型质量和重要度。
- u0 e, R2 ~+ U6 C0 J5 `7 }1 Z7 q* K8 k" g8 f. Q7 {
A8 返回模型AUC值及参数
{& W% k6 r. h Y# C9 b' i
- ]+ f; f1 H/ X% Q
5 k# F! d8 Y- g. D) h/ p- p
4 c: Y0 s* p6 X( A5 AA9 返回多种模型指标和图形,诸如AUC,ROC, Lift……' z9 R4 Z. t3 _/ ~% H
9 ^: o0 ?7 w! ^. D; }' R: g) A' ?% f" W" |1 y
; Q* l% ?' N6 m D G( _比如点击A9的第6条记录的Value,然后点击右上角“图形浏览”图标,数值字段选择“Lift”,就可以查看Lift曲线
# k6 }/ v- R( K- [0 k. z' h$ Q
( k5 H. G$ E; ~. m5 j: O# A F% b! |! A
3 c+ o2 w9 @* M+ B5 JA10 会返回每个变量对目标变量的影响程度并且按照重要度降序排列。数值越大对目标变量的影响程度越大。降序排列分析起来更加直观。
7 b7 B, g7 L3 W- p. b- r! a! ]% ~$ d* S4 l6 C% ]0 S+ f
$ }- J6 f. c& J6 B& R: g6 y4 t. C
(4)保存模型- r7 L. A0 P- K# e4 Q' o
A
& x6 o4 B* F8 I9 |, E3 t- ]… …4 H6 S: F) }( }: u6 B: ?' c
11 =ym_save_pcf(A7,"bankfull.pcf")
0 L) m4 G6 B4 c/ F0 I4 ?5 f: u, j12 =ym_json(A7)
/ V: T7 c2 n& C( D' j, D( F6 e13 >ym_close(A2): c' z* Z# _: s! j- y5 G
A11 将模型保存为”bankfull.pcf”,默认保存路径为[sAppHome]/store/predict。
3 f+ [4 P! V7 d( k+ W1 W# R) R/ o
7 r# `9 C1 I7 {1 J) X, aA12 将模型信息以json串形式返回。json内容详解可参考在线文档《json参数说明》
3 W+ u; A) \, }. [0 S6 Q( [5 ~# r' R" d$ C* A
A13 关闭环境,释放资源。
& N# A/ k' J1 l1 A6 u0 k, n
" x9 K: g, {6 ?4 y. N% i' G(5)预测" t! i( ^: L4 ?/ n. q1 V8 l
预测之前需要有pcf模型文件和预测数据集
' p+ q0 Y6 ]8 A5 i! l0 T! z1 N/ m+ T: F% Z" P, v7 Y
A. S5 t! U9 B U. L) v& z! S, Y
1 =ym_env(): n8 t6 M. a7 l. `
2 =ym_load_pcf("bankfull.pcf")
?. J! S( T* l, a. B! \3 =file("bank-full2.csv").import@tc()
' N" a! ]0 u- [$ N: k9 u; b4 =ym_predict(A2,A3)
4 ~' D: y' E! o7 [5 =ym_result(A3)/ V9 _% U( D* R, {! [" [0 Z
6 =file("bank-full_result.csv").export@tc(A4)7 e0 N9 t" \/ y) K0 g+ v
7 >ym_close(A1)
4 o) ~9 @; S* G3 |A1 初始化环境4 i$ P6 W) X5 Q. @
u4 O- {5 ?, D. t$ ]; n! L' p
A2 导入pcf模型文件,生成pd模型对象。7 [% K+ g5 j" V: y5 r
" b# W0 ]2 A( J2 x0 y
A3 导入预测数据集,读成序表
) T% ~4 I9 c2 H' U5 C
6 Z: |8 P3 \6 [0 }A4 对序表数据执行预测。除序表外,还支持游标、csv文件和mtx文件,比如A4也可以直接写成ym_predict(A2,“bankfull2.csv”)$ y$ N/ I: l8 \1 c& \1 J2 c
4 w [: @7 g$ X# OA5 获取预测结果
5 {' p+ s! M* \" J0 u$ s% g3 P, [! J) P% n
A6 将预测结果导出,在本例中预测结果为用户发生违约行为的概率。
; ?7 [1 n* L: A' f- s, l
) ?' ]" o$ K1 F. s, f7 Y7 ^
% a+ i0 i1 W' H( DA7 关闭环境,释放资源: E" N6 V9 W3 I5 D& A4 n3 Q
+ O1 o+ }+ g, z7 {3 h# d0 l' u' y
4. 集成调用! @" z1 b: ~/ U5 f. n% ~7 W/ _' ^+ Y
SPL还可以被上层应用集成调用,比如SPL可以嵌入到Java应用,详情请参考:http://c.raqsoft.com.cn/article/1615765346560 R- s& W3 v6 L
% i, [! D! k% R$ o; L+ _总结& `% ^7 Z# F+ N$ g- X
使用SPL配合易明建模来实现数据建模预测非常简单,程序员不需要理解深奥的数学原理,只要准备好训练数据,简单几步就可以完成数据建模任务了。而且还可以轻松地把这个功能嵌入到应用程序中,高深的人工智能不再是少量数据科学家的专利。
+ W E ~" E5 ?2 s2 f0 c
. J" x) k/ u, n" WSPL本来就超强的数据处理能力,能更方便地完成人工智能算法之前的数据准备工作,同时也提供了丰富的数学函数: SPL Math 例程,有些数学基础想自己实现建模过程的同学也可以进一步研究。: Z/ t, }, }4 u7 G( H. U4 T
————————————————2 ]* o9 e1 z; R; N
版权声明:本文为CSDN博主「java李杨勇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
" _& l- }8 F# q' F. t原文链接:https://blog.csdn.net/weixin_39709134/article/details/126698462
; p! i% k- I! `3 I
2 u1 O- ], S- G4 v- G
. L/ a+ A9 r7 | |
zan
|