本书共有9章,旨在全面快速地介绍SASViya,让更多用户学习和使用SAS的*新平台和技术,能够快速利用SASViya开发自己的大数据分析和人工智能应用并进行可视化展现。
第1章主要阐述了SASViya的架构和基本组成,第2章阐述了SAS应用开发的基本概念,旨在帮助读者从整体上理解SASViya以及基于Viya的应用开发。建议每一位读者都仔细研读这两章。
第3章和第4章,介绍了CAS的数据读写和管理以及数据处理。需要利用SASViya处理数据的读者可仔细阅读这两个章节。
第5章的目的在于保证本书结构的完整性,介绍了SASViya中的数据探索和展现。熟悉SAS9的读者可以略过本章。
第6章是关于用SASViya进行数据分析的章节。SASViya在数据分析方面添加了很多机器学习和深度学习的方法,建议分析建模领域的读者仔细阅读。本书的后续版本也会继续加强这方面的内容。
有很多的SAS用户有着长期使用SAS9的宝贵经验,在SAS9.4系统上也开发部署了很多成熟的应用。为此,第7章专门阐述了SASViya和SAS9之间的集成和交互。
第8章是关于CAS编程语言的介绍。利用CAS编程语言可以*灵活且*大限度地利用SASViya所有的数据分析和处理功能。建议需要直接调用action以实现灵活自由且功能齐全的数据分析和处理的读者仔细研读本章。
第9章阐述了如何用Java、Lua、Python开发基于SASViya的应用。介绍了SASViya作为一个开放系统,如何支持第三方开发语言,让更多的数据分析开发者借助于SASViya的分析和处理能力,使用他们自己熟悉的开发语言建立满足自己需求的应用。
本书特色:
SASViya是SAS公司推出的一个以大数据、人工智能以及数据可视化为导向的、全新的统一平台和环境。既集中提供了大数据、人工智能以及数据可视化所需要的专业功能,也提供了支持这些专业功能所必需的高性能、可扩展性和开放性。
本书开篇介绍了SASViya的架构和基本组成,并且给出了SASViya应用开发的概览。在读完这部分内容后,读者将会对SASViya的架构和基于Viya的应用开发有一个基本了解,从整体上掌握SASViya。
书中详细描述了用SASViya实现数据分析的各个环节,包括数据访问和管理、数据探索和数据展现,以及数据分析。并且配有详细的示例阐述描述性分析、主成分分析、聚类分析,回归分析和支持向量机等。读者在学完这部分后,可以具备使用SASViya进行全面的数据处理和数据分析的能力。
对已经有丰富的SAS9经验的专家,本书详细介绍了SAS9和SASViya之间的交互,SAS9的宏语言以及SAS过程等如何在SASViya中使用。帮助读者整合现有的SAS9系统和SASViya。
SASViya是一个充分开放的分析平台,提供了对主流开发语言Java、Lua、Python的支持。本书也详细介绍了如何运用这些语言开发基于SASViya的分析应用,并提供了详细的样例,帮助读者快速掌握使用这些语言调用SASViya的强大分析能力的技术。
本书将不断推出新的版本,及时详细介绍SASViya的发展和变化。
首次系统全面阐述SAS*新分析平台SAS Viya的整体架构和技术细节,深入细致展现灵活运用SAS Viya强大分析能力的多种方式和详细步骤
Preface前言
为什么要写这本书
大数据、数据挖掘和机器学习、人工智能以及数据可视化发展到了一个全新的阶段,开始影响着企业、组织和个人理解数据并进行决策的各个方面。这些概念并不是代表崭新的理论或突然出现的实际需求,而是经历了长时间的理论发展和实际应用探索之后的必然结果。
关于海量数据及数据挖掘的概念与理论,乃至相应的产品和工具,早在至少二十年之前就已出现,即使在国内,也已经不算是新生事物了。至于人工智能,更是人类很早就梦想要突破的领域,无须检索任何文献去考查究竟是在何时开始探索这一领域的,仅凭笔者个人的经验,就可以追溯到20世纪90年代。彼时,我的研究生导师华克强老师,就已经开始带领实验室的老师和学生们探讨如何把诸如神经网络、遗传算法、模糊数学、支持向量机等算法运用于水下机器人的控制当中。数据可视化,更全面地说,数据分析过程和方法的可视化,以及分析结果的可视化,也是一直都存在并且为业界所努力发展的领域。就SAS而言,从最初主机上的命令行运行方式,到出现图形化界面的版本,到提供集成的开发环境,再到出现了分析专家和业务专家都可以使用的可视化分析和建模产品,一直到现在的全线产品与技术可视化,其一直在可视化的道路上前进和发展着。
时至今日,在运算方法上以迭代与分步为特征的数据分析,包括机器学习,从单机处理(SMP)模式到大规模并行处理(MPP)模式的突破、GPU的出现及其在数据分析领域的广泛应用,使得更为庞大的数据处理、更为复杂的深度学习和更为广泛的可视化用户,都得到了很好的计算支撑。在这个过程中,SAS作为领导者和推动者,一直在引领数据分析各个领域的潮流,包括大数据、可视化以及机器学习。其新一代分析平台SASViya正是SAS公司在这些领域所做贡献和突破的集中体现。
SASViya是一个以大数据、人工智能以及数据可视化为导向的、全新的统一平台和环境。既集中提供了大数据、人工智能以及数据可视化所需要的专业功能,也提供了支持这些专业功能所必需的高性能、可扩展性和开放性。从而可以利用人工智能的优势,并结合传统的分析方法来有效地处理大数据,并且使得这一切在可视化的环境和方法下得到实现。
继上一本书《深入解析SAS:数据处理、分析优化与商业应用》全面介绍SAS9,帮助国内广大的用户学习和使用SAS之后,本书旨在全面快速地介绍SASViya,让更多用户学习和使用SAS的最新平台和技术,能够快速利用SASViya开发自己的大数据分析和人工智能应用并实现可视化展现。本书在保证全面讲解各技术点的基础之上,包含了必要的细节,使得读者能够迅速系统地了解SASViya,并为进一步深入学习提供良好的开端。
请注意,本书是基于SASViya3.1编写的,在功能上,SASViya的新版本会不断提高和增强,这些也会在本书的后续版本中不断得到体现。
读者对象
本书主要适合于以下读者:
使用和学习SAS的科技工作和工程技术人员。
需要使用第三方开发语言调用SASViya提供的分析功能的工程技术人员。
使用SASViya进行大数据平台规划和建设的管理和技术人员。
使用SAS进行项目规划、实施和管理的系统架构师、系统管理员和项目管理人员。
团队的工作涉及SAS产品与技术的管理人员。
如何阅读本书
本书共有9章,下面介绍各个章节的主要内容,以方便大家查阅。
第1章主要阐述了SASViya的架构和基本组成。第2章阐述了SAS应用开发的基本概念,旨在帮助读者从整体上理解SASViya以及基于SASViya的应用开发。建议每一位读者都仔细研读这两章。
第3章和第4章,介绍了CAS的数据读写和管理以及数据处理。需要利用SASViya处理数据的读者可仔细阅读这两章。
第5章的目的在于保证本书结构的完整性,介绍了SASViya中的数据探索和展现。熟悉SAS9的读者可以略过本章。
第6章是关于用SASViya进行数据分析的章节。SASViya在数据分析方面添加了很多机器学习和深度学习的方法,建议分析建模领域的读者仔细阅读。本书的后续版本也会继续加强这方面的内容。
有很多的SAS用户有着长期使用SAS9的宝贵经验,在SAS9.4系统上也开发部署了很多成熟的应用。为此,第7章专门阐述了SASViya和SAS9之间的集成和交互。
第8章是关于CAS编程语言的介绍。利用CAS编程语言可以最灵活且最大限度地充分利用SASViya的所有数据分析和处理功能。如果读者期望能够直接调用CAS中的ACTION,进行灵活自由且功能齐全的数据分析和数据处理,建议仔细研读本章。
第9章阐述了如何用Java、Lua、Python开发基于SASViya的应用。介绍了SASViya作为一个开放系统,如何支持第三方开发语言,让更多的数据分析开发者借助于SASViya的分析和处理能力,使用他们自己熟悉的开发语言建立满足自己需求的应用。
致谢
忙碌繁杂的日常工作之余,其实是不适合写书的。为了让需要学习的读者能够得到一个正确的路线图,为了让系统性的知识可以得到完整的传播,本书的每一位作者都做出了不懈的努力。
特别感谢机械工业出版社华章公司的杨绣国编辑(LisaYang)和SAS出版社的主编JuliePlatt。他们的帮助和宝贵建议,促成了本书的完成。
夏坤庄(KansunXia)
中国,北京,2017年7月
……
潘红莲,《深入解析SAS:数据处理、分析优化与商业应用》作者之一。现任索信达(北京)数据技术有限公司高级技术经理,提供基于大数据分析、数据挖掘和机器学习,以及知识图谱的风险和营销解决方案。曾先后就职于SAS软件研究开发(北京)有限公司和SAS中国公司,分别担任软件分析师和高级咨询顾问,提供SAS解决方案和产品的技术验证和*佳实践、售前支持和专业实施服务。在SAS Viya和SAS 9智能平台其架构、系统管理、安全性、可用性规划和实现等方面有着丰富的知识和经验。参与过多家银行大数据分析平台、反欺诈系统和营销平台的规划和实施。
杨光辉,SAS软件研究开发(北京)有限公司解决方案架构师。对SAS基于内存分析和基于Hadoop的高性能分析的产品的架构有着深入和独到的理解。对SAS产品的企业级应用和部署有丰富的经验。在承担研发工作的同时为SAS项目在中国市场的实施提供技术支持,为多个大型银行Hadoop大数据项目提供了专家级的支持和帮助。在加入SAS研发(北京)之前,有丰富的基于Linux系统的开发经验,对Linux操作系统架构有深入的理解。
张涛,现为SAS软件研究开发(北京)有限公司高级经理。在承担产品研发工作同时,负责提供SAS解决方案对本地市场的支持,负责SAS解决方案项目在中国本地市场的咨询与实施;并且为国内外多个客户解决方案项目提供了咨询与实施服务。对SAS解决方案和SAS技术实现有着丰富的知识和经验。有超过10年SAS研发工作经验。在加入SAS研发(北京)之前,有多年J2EE开发经验。
夏坤庄,《深入解析SAS:数据处理、分析优化与商业应用》*一作者, SAS软件研究开发(北京)有限公司客户职能部总监,在SAS的技术与产品领域拥有丰富的经验。在承担大量研发工作的同时,夏坤庄及其团队负责对非英语市场提供技术支持,并且与SAS在其它地区的团队一起对SaaS客户提供实施和运营服务,同时致力于提供和验证关于SAS产品和技术的*佳实践。在加入SAS研发之前,夏坤庄就职于SAS中国公司,历任资深咨询顾问、项目经理、首席顾问、咨询经理,为SAS的金融行业客户成功实施了众多深受好评的项目。而且在近年领导团队成功实施和支持了非金融行业的多个大数据分析项目。
目 录?Contents
前 言
第1章 SAS Viya 的架构和基本组成 1
1.1 SAS Viya的架构 1
1.1.1 SAS Viya平台的组成部分 2
1.1.2 SAS Viya平台的部署架构 7
1.1.3 基于SAS Viya的产品 8
1.2 CAS的数据访问 8
1.2.1 客户端访问数据 10
1.2.2 服务器串行访问数据 10
1.2.3 服务器并行访问分布式数据源 11
1.2.4 服务器并行访问HDFS 11
1.3 CAS的监控和管理 12
1.3.1 系统状态 13
1.3.2 配置 14
1.3.3 资源监控 16
1.4 CAS的安全性 17
1.4.1 CAS中的身份和角色 17
1.4.2 认证 18
1.4.3 授权 19
1.4.4 加密 22
1.4.5 审计日志 22
1.5 CAS数据容错 23
1.6 本章小结 23
第2章 SAS Viya应用开发概览 24
2.1 如何运行SAS代码 24
2.1.1 SAS程序的基本组成 25
2.1.2 SAS Studio 27
2.1.3 批处理、交互式行模式及如何执行操作系统命令 39
2.2 SAS Viya中开发应用的基本概念 40
2.2.1 CAS会话 41
2.2.2 数据访问 45
2.2.3 CAS语言 55
2.2.4 SAS选项 56
2.3 SAS Viya中的编码 62
2.3.1 SAS Viya的UTF-8编码 63
2.3.2 语言/区域选项LOCALE= 64
2.4 SAS代码在哪里执行 65
2.4.1 DATA步 66
2.4.2 CAS语言 66
2.4.3 SAS Viya的基本过程 67
2.4.4 SAS可视化数据建模和机器学习过程 67
2.4.5 DS2语言 67
2.4.6 SAS函数和CALL例程 68
2.4.7 格式和输入格式 68
2.4.8 宏 68
2.5 SAS Viya与SAS 9协同开发 69
2.6 第三方开发语言开发SAS Viya应用 70
2.7 本章小结 70
第3章 CAS 的数据读写和管理 71
3.1 CAS会话、CASLIB和CAS引擎逻辑库 71
3.2 CAS中的数据类型 71
3.3 加载数据到CAS服务器 73
3.3.1 加载客户端文件到CAS服务器 73
3.3.2 加载CAS端文件到CAS服务器 76
3.3.3 CAS端文件的串行加载与并行加载 79
3.4 管理CAS数据 81
3.4.1 查看CAS数据的属性 81
3.4.2 保存CAS服务器中的数据 84
3.4.3 卸载CAS服务器中的数据 87
3.4.4 删除文件 87
3.4.5 复制文件 88
3.4.6 全局化CAS表 89
3.5 本章小结 91
第4章 CAS中的数据处理 92
4.1 DATA步在SAS Viya中的执行 92
4.1.1 DATA步的执行会话 93
4.1.2 DATA步在CAS中的单线程和多线程处理 96
4.2 DATA步的VARCHAR字符类型 101
4.2.1 LENGTH语句创建VARCHAR字符变量 101
4.2.2 字符变量类型转换 102
4.2.3 字符串处理函数 104
4.3 CAS数据的分区和排序 104
4.3.1 DATA步的BY组处理和排序 105
4.3.2 DATA步的PARTITION=和ORDERBY=数据集选项分区和排序 106
4.3.3 使用CASUTIL过程的LOAD语句进行分区和排序 107
4.3.4 查看CAS表的分区信息 108
4.4 ACTION DATASTEP.RUNCODE执行DATA步代码 108
4.5 在CAS中应用格式进行数据处理 110
4.5.1 FORMAT过程创建格式逻辑库 111
4.5.2 CAS中自定义格式的应用 112
4.5.3 FORMAT语句为变量指定格式 112
4.5.4 CAS中带格式变量的处理 115
4.5.5 CAS格式逻辑库的管理 117
4.5.6 CAS格式逻辑库搜索列表管理 122
4.6 本章小结 124
第5章 SAS Viya 中的数据探索和展现 125
5.1 SAS Viya展现数据的方法:列表 125
5.2 SAS Viya展现数据的方法:图形 127
5.2.1 SGPLOT 128
5.2.2 SGPANEL 131
5.2.3 SGSCATTER 134
5.2.4 图形的类型 137
5.3 图形化展现CAS服务器的分析结果 152
5.3.1 示例1:图形化展示聚类分析中误差平方和的下降过程 152
5.3.2 示例2:图形化展示数据的统计结果 153
5.4 本章小结 155
第6章 用SAS Viya进行数据分析 156
6.1 SAS Viya中数据挖掘和机器学习过程步概述 156
6.2 SAS Viya中数据挖掘的一般流程 158
6.3 确定业务问题和数据准备 159
6.4 数据处理 160
6.4.1 数据抽样 161
6.4.2 数据探索 161
6.4.3 数据加工 179
6.5 数据建模 186
6.5.1 模型的建立 186
6.5.2 模型的评估 195
6.5.3 模型的实施 210
6.6 本章小结 211
第7章 SAS Viya 与 SAS 9 执行环境的交互 212
7.1 SAS Viya与SAS 9的差异 212
7.2 SAS/CONNECT 214
7.2.1 SAS/CONNECT介绍 214
7.2.2 SAS会话编码的兼容性 218
7.3 SAS Viya与SAS 9的协作 218
7.3.1 从已有的SAS 9平台到新的SAS Viya平台 219
7.3.2 从新的SAS Viya平台到已有的SAS 9平台 222
7.4 本章小结 224
第8章 CAS编程语言介绍 226
8.1 CASL简介 226
8.2 开始使用CASL 228
8.2.1 最简单的CASL代码 229
8.2.2 调用ACTION进行多线程分析的CASL代码 229
8.3 CASL编程 230
8.3.1 变量 230
8.3.2 表达式和运算符 235
8.3.3 数组 237
8.3.4 字典 240
8.3.5 过程控制 241
8.3.6 ACTION 246
8.3.7 函数 255
8.3.8 输出 261
8.4 本章小结 261
第9章 用 Java、Lua、Python 和REST API 开发基于 SAS Viya的应用 262
9.1 SAS Viya开放平台介绍 262
9.1.1 分析即服务和SAS Viya开放平台介绍 262
9.1.2 SWAT 架构介绍 263
9.1.3 基于ACTION及ACTION集合的数据挖掘和机器学习 264
9.2 用Java开发基于SAS Viya的应用 265
9.2.1 系统需求及开发环境配置 265
9.2.2 第一个ACTION调用:调用ServerStatus查看服务器状态 266
9.2.3 用Java将数据加载到CAS服务器 270
9.2.4 调用ACTION进行描述性统计分析 275
9.2.5 调用ACTION进行线性回归分析 277
9.2.6 对CAS服务器端事件的管理 279
9.3 用Lua开发基于SAS Viya的应用 284
9.3.1 系统需求及开发环境配置 284
9.3.2 第一个ACTION调用:调用ServerStatus查看服务器状态 285
9.3.3 用Lua将数据加载到CAS服务器 286
9.3.4 调用ACTION进行描述性统计分析 287
9.3.5 调用ACTION进行线性回归分析 288
9.4 用Python开发基于SAS Viya的应用 289
9.4.1 系统需求及开发环境配置 289
9.4.2 第一个ACTION调用:调用ServerStatus查看服务器状态 290
9.4.3 用Python将数据加载到CAS服务器 291
9.4.4 调用ACTION进行描述性统计分析 293
9.4.5 调用ACTION进行线性回归分析 294
9.5 用CAS REST API开发基于SAS Viya的应用 295
9.5.1 使用Java来调用通用类REST Services 296
9.5.2 使用Java调用REST Services进行描述性统计分析 299
9.5.3 使用Java调用REST Services进行线性回归分析 303
9.6 本章小结 305