本書共有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