前言
有幾件事促使我寫了這本書。我是個(gè)超級(jí)科幻迷,我癡迷于奇幻的用戶界面,就是電影和電視節(jié)目中常被用作情節(jié)設(shè)計(jì)的界面。如果做得很好,它們會(huì)完美地滿足演員的需要,一目了然地傳達(dá)一個(gè)狀態(tài),一個(gè)轉(zhuǎn)變,然后是一個(gè)新的狀態(tài)。我花了幾年的時(shí)間尋找工具包來幫助我制作更像這些的真實(shí)界面。隨著我在編程方面做得越來越好,我意識(shí)到不能只依賴于主題化的通用工具包,為美學(xué)和情節(jié)專門設(shè)計(jì)界面是非常有意義的。我也不得不承認(rèn),我要尋找的工具包并不會(huì)馬上出現(xiàn)。
當(dāng)我將奇幻的界面分解成通用的組件和邏輯時(shí),我意識(shí)到它們并不是那么復(fù)雜,而且很多組件是通用的。然而,這些奇幻的界面確實(shí)打破了許多規(guī)則。為了表現(xiàn)情節(jié)中的轉(zhuǎn)變,它們展示的內(nèi)容也會(huì)發(fā)生變化。數(shù)據(jù)流入并影響狀態(tài)。整個(gè)部分以我們通常在儀表板中不會(huì)做的方式移動(dòng)或轉(zhuǎn)換。Stephen Few 等人對(duì)于儀表板的傳統(tǒng)觀點(diǎn)是它們應(yīng)該一眼就能傳達(dá)出現(xiàn)狀。當(dāng)所有東西同時(shí)在運(yùn)動(dòng)和變化時(shí),這是很難做到的。在儀表板基本功能的傳統(tǒng)觀點(diǎn)之外,儀表板真正的價(jià)值在于它滿足了不同的需要。如果我們不再將我們的接口只局限于與現(xiàn)有用途的儀表板進(jìn)行比較,那么我們可以設(shè)置新的規(guī)則。
最近的一個(gè)例子可以在 HBO 的《西部世界》的奇幻世界中看到(見圖1)。劇中的模擬用戶界面,代表了技術(shù)的未來,并顯示了與閾值和規(guī)范相比較的當(dāng)前信息。它看起來很神奇,并且在工作系統(tǒng)實(shí)現(xiàn)也是一個(gè)令人鼓舞的目標(biāo)。
至今,我大部分時(shí)間都在從事技術(shù)工作。我看到很多問題是通過查看原始數(shù)據(jù)流解決的,但是在過去的 20 多年里,我并沒有看到這方面有什么變化。日志、事件或消息都在控制臺(tái)中被處理成流,最多被過濾并高亮顯示在內(nèi)聯(lián)信息中。你必須在顯示內(nèi)容的時(shí)候看著屏幕,如果錯(cuò)過了,它可能就會(huì)出現(xiàn)在明天的日?qǐng)?bào)中。對(duì)于控制臺(tái)中每分鐘一行信息的系統(tǒng)來說,這是可以接受的,但是對(duì)于今天的系統(tǒng)來說,這是行不通的,因?yàn)楝F(xiàn)在通常每秒鐘有數(shù)千行信息。即使是在這種量級(jí)下,我仍看到通過瀏覽流日志來解決問題的情況,這些日志不會(huì)出現(xiàn)在日?qǐng)?bào)中,因?yàn)樵谶@些報(bào)告中,信息過于抽象和聚合。經(jīng)過多年的觀察,我希望做一個(gè)可行的解決方案,它介于控制臺(tái)日志和一目了然的儀表板之間。
技術(shù)本身并沒有進(jìn)步。我真正想要的是與系統(tǒng)更加互動(dòng)。增強(qiáng)現(xiàn)實(shí)感的東西是實(shí)用的、不引人注目的、有幫助的。當(dāng)我想到需要做什么的時(shí)候,我會(huì)一直關(guān)注阻礙我前進(jìn)的東西,在到達(dá)目的地之前必須跨過的墊腳石。需要克服的一個(gè)主要技術(shù)難題是理解系統(tǒng)做了什么決定。當(dāng)人工智能為我做決定時(shí),我想知道為什么這么做。我越是研究某件事為什么被決定并且能夠糾正這些假設(shè)時(shí),我就越信任這個(gè)系統(tǒng)。Netflix 在推薦節(jié)目方面做得很好,它會(huì)告訴你為什么推薦某個(gè)節(jié)目,以及推薦的可信度是多少,但你無法糾正這個(gè)算法,這不是互動(dòng)。它觀察,施魔法,然后你看到結(jié)果。
我們?yōu)榱丝缭郊夹g(shù)的某個(gè)點(diǎn),將不得不后退幾步,并糾正這一點(diǎn)。我們必須重新設(shè)計(jì)一些東西,讓人們在這些決策中更多地成為合作伙伴。這在今天是很困難的,因?yàn)榇蠖鄶?shù)系統(tǒng)都集中為你做出決定。算法是通用的。如果類型和語言是推薦相似電影的關(guān)鍵因素,那么它就是為每個(gè)人做的。在我知道的任何地方,我都無法增加令人驚嘆的奇幻用戶界面和新穎的宇宙飛船設(shè)計(jì)的權(quán)重,來幫我找到可能讓我感興趣的電影。這種級(jí)別的定制要求智能更個(gè)性化或多層次。
能夠理解并改變機(jī)器決策的重要性遠(yuǎn)遠(yuǎn)超出了娛樂。人工智能算法通過你看到的信息徹底影響你的觀點(diǎn),它們決定了你的互聯(lián)網(wǎng)搜索結(jié)果。當(dāng)你在線訪問信息時(shí),安全設(shè)備會(huì)決定哪些信息是安全的(對(duì)“安全”的定義非常寬松但不靈活)。為了保證物理方面的安全,我們有算法來決定誰在監(jiān)視名單上,誰可能犯罪。類似的復(fù)雜算法在信用評(píng)分評(píng)估中是不被允許的,因?yàn)樗鼈儽仨氃诜ㄍド虾苋菀邹q護(hù)。這就是問責(zé)和理解所有自動(dòng)化決策需要達(dá)到的程度。
最后,我開始開發(fā)自己的工具和組件,以適應(yīng)我一直在運(yùn)行的數(shù)據(jù)展示領(lǐng)域。經(jīng)過多年的思考,我意識(shí)到這是一個(gè)很少被探索的問題。我遇到的大多數(shù)組織都被他們每天的報(bào)告搞得不知所措。他們并沒有思考如何通過更快地應(yīng)對(duì)某些事件和取得進(jìn)展來改善工作。從新想法到實(shí)際解決方案需要一些新的想法、案例研究,以及更多類似的東西。我希望本書有助于推動(dòng)這一進(jìn)程。
本書面向讀者
如果你是一名設(shè)計(jì)師或開發(fā)人員,基于事件的數(shù)據(jù)對(duì)你的目標(biāo)有重要意義,你會(huì)在這里找到一些感興趣的內(nèi)容。這些主題介于設(shè)計(jì)和開發(fā)之間,因?yàn)樗鼈冊谡故究衫斫獾臄?shù)據(jù)時(shí)是不可或缺的。
如果你已經(jīng)嘗試在控制臺(tái)中滾動(dòng)來查看數(shù)據(jù),或者你已經(jīng)放棄在控制臺(tái)中滾動(dòng)數(shù)據(jù)因?yàn)樗黄鹱饔,本書將給你提供一些探索的方法。
如果你有興趣為你的需求創(chuàng)建一個(gè)系統(tǒng),以揭示在不透明過程中發(fā)生的事情,本書將讓你了解如何提高系統(tǒng)的可見性。
本書的組織結(jié)構(gòu)
本書是從“如何構(gòu)建它”的角度來組織的。本書的寫作有很多可能的出發(fā)點(diǎn)。如果你已經(jīng)準(zhǔn)備好了要顯示的格式化的流數(shù)據(jù),那么可以跳過關(guān)于展示的章節(jié)。許多組織還沒有達(dá)到這一點(diǎn)。它們的數(shù)據(jù)本質(zhì)上是基于事件的,但沒有很好的連接方式。本書也貫穿了這些要點(diǎn),以及它們之間的一切。一些主題,如機(jī)器學(xué)習(xí),只是互補(bǔ)和可選的。圖2 代表了組件和過程的邏輯進(jìn)展,這些組件和過程涉及將流數(shù)據(jù)可視化到集成分析人員,并在復(fù)雜系統(tǒng)中進(jìn)行自動(dòng)處理。這個(gè)工作流就是本書章節(jié)的順序。
本書內(nèi)容約定
本書使用以下排版約定:
斜體(Italic)
表示新術(shù)語、網(wǎng)址、電子郵件地址、文件名和文件擴(kuò)展名等。
等寬字體(Constant width)
表示程序代碼以及段落內(nèi)用于引用的代碼內(nèi)容,如變量或函數(shù)名、數(shù)據(jù)庫、數(shù)據(jù)類型、環(huán)境變量、聲明語句和關(guān)鍵字等。
使用代碼示例
更多補(bǔ)充資料(包括示例代碼、練習(xí)等)可以從這里下載https://github.com/SuddenDevelopment/Visualizing-Streaming-Data。
本書的目的是幫助你完成工作任務(wù)。通常,對(duì)于書中提供的示例代碼,你可以直接在自己的程序和文檔中使用,無須聯(lián)系我們獲取授權(quán),除非你要再次分發(fā)大量示例代碼。舉例來說,如果你在編寫程序時(shí)使用了本書提供的一部分代碼,不用擔(dān)心授權(quán)問題;但如果你要以CD-ROM 等方式銷售或分發(fā)O’Reilly 系列圖書中的示例代碼,則需要獲得我們的授權(quán);在解答問題時(shí)如需引用本書提供的代碼,你不需要取得授權(quán);但如果你在自己的產(chǎn)品文檔中使用本書的任意代碼,則必須獲得授權(quán)。
我們不強(qiáng)制要求版權(quán)聲明,但我們感謝你能夠引用本書。引用格式一般包含書名、作者、出版商和ISBN,例如:“Visualizing Streaming Data by Anthony Aragues(O’Reilly)。Copyright 2018 Anthony Aragues,978-1-492-03185-7 ”。
如果你認(rèn)為在使用示例代碼時(shí)超出了合理范圍或上述許可范圍,請(qǐng)隨時(shí)與我們聯(lián)系: permissions@oreilly.com。
O’Reilly 在線學(xué)習(xí)平臺(tái)(O’Reilly Online Learning)
近40 年來,O’Reilly Media 致力于提供技術(shù)和商業(yè)
培訓(xùn)、知識(shí)和卓越見解,來幫助眾多公司取得成功。
我們擁有獨(dú)一無二的專家和革新者組成的龐大網(wǎng)絡(luò),他們通過圖書、文章、會(huì)議和我們的在線學(xué)習(xí)平臺(tái)分享他們的知識(shí)和經(jīng)驗(yàn)。O’Reilly 的在線學(xué)習(xí)平臺(tái)允許你按需訪問現(xiàn)場培訓(xùn)課程、深入的學(xué)習(xí)路徑、交互式編程環(huán)境,以及O’Reilly 和200 多家其他出版商提供的大量文本和視頻資源。有關(guān)的更多信息,請(qǐng)?jiān)L問http://oreilly.com。
聯(lián)系我們
歡迎向出版社反饋有關(guān)本書的評(píng)論和問題:
美國:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中國:
北京市西城區(qū)西直門南大街2號(hào)成銘大廈C座807室(100035)
奧萊利技術(shù)咨詢(北京)有限公司
我們?yōu)楸緯峁┝藢iT的網(wǎng)頁,用于發(fā)布內(nèi)容勘誤、范例和其他相關(guān)信息。
你可以通過這里訪問http://bit.ly/visualizing-streaming-data。
有關(guān)本書的任何評(píng)論或技術(shù)問題,請(qǐng)發(fā)送電子郵件至bookquestions@oreilly.com。
了解與本書相關(guān)的更多信息、課程、會(huì)議和新聞,請(qǐng)?jiān)L問我們的網(wǎng)站http://www.oreilly.com。
我們的Facebook: http://facebook.com/oreilly。
我們的Twitter: http://twitter.com/oreillymedia。
我們的YouTube: http://www.youtube.com/oreillymedia。
致謝
Bob Page 仔細(xì)審閱了我在這個(gè)主題上的所有細(xì)節(jié),并將他在大型企業(yè)數(shù)據(jù)方面的專業(yè)知識(shí)提供給我。他還把我介紹給對(duì)這份材料有重大影響的人。
Antonio Figueiredo 在流數(shù)據(jù)處理和可視化方面有很多實(shí)際經(jīng)驗(yàn)。他對(duì)這個(gè)主題的熱情以及愿意討論一切相關(guān)問題的意愿對(duì)我初期的工作產(chǎn)生了巨大的鼓勵(lì)。
Sven Krasser 是一位老同事,也是著名的機(jī)器學(xué)習(xí)專家。通過與他的合作,我認(rèn)識(shí)到有必要讓人們在機(jī)器學(xué)習(xí)過程中更具互動(dòng)性。
Brett Meyer 幫助我探索了將流數(shù)據(jù)可視化應(yīng)用到機(jī)器學(xué)習(xí)上的各種方法。他的專業(yè)知識(shí)幫助我找到正確的術(shù)語,并理解它們在這方面的作用。
Georges Grinstein 是著名的數(shù)據(jù)可視化專家,包括實(shí)時(shí)數(shù)據(jù)和流數(shù)據(jù)。他對(duì)我以前沒有考慮過的一些事情有著學(xué)術(shù)觀點(diǎn),并給我看了一些我自己也找不到的相關(guān)的有趣的項(xiàng)目。
Casey Rosenthal 創(chuàng)建了一個(gè)最有用、最相關(guān)的案例研究,我可以從自己的經(jīng)驗(yàn)之外學(xué)到一些東西。他樂于分享這些經(jīng)驗(yàn),并討論這個(gè)小眾領(lǐng)域應(yīng)該走向何方。
Weidong Yang 基本上就是不以本書為主題的。他的公司創(chuàng)建了互動(dòng)裝置,以創(chuàng)造性的方式收集和呈現(xiàn)數(shù)據(jù)。他幫助我分享這些經(jīng)驗(yàn),也有助于驗(yàn)證這個(gè)話題在當(dāng)前有市場。
Raffael Marty 無意中成為我寫本書的催化劑。我參加了他的安全數(shù)據(jù)可視化研討會(huì),我很喜歡,我希望有一天我也能教類似的課。
目錄
前言 1
第1 章 概述 9
為什么要可視化 10
標(biāo)準(zhǔn) 11
術(shù)語 12
數(shù)據(jù)格式 13
數(shù)據(jù)可視化應(yīng)用 14
假設(shè)和設(shè)置 15
第2 章 目標(biāo) 17
展示目標(biāo) 18
預(yù)批處理分析 24
分析人員決策隊(duì)列 25
數(shù)據(jù)管道可視化 26
展示地圖上的運(yùn)動(dòng) 27
提出新問題 27
考慮頻率和順序 28
第3 章 數(shù)據(jù)源 31
數(shù)據(jù)源類型 32
流式處理的對(duì)象 32
數(shù)據(jù)存儲(chǔ)注意事項(xiàng) 33
管理多個(gè)源 35
第4 章 流式處理數(shù)據(jù) 39
如何流式處理數(shù)據(jù) 40
緩沖區(qū) 43
流式處理最佳實(shí)踐 45
第5 章 為可視化處理流數(shù)據(jù) 47
批處理 47
內(nèi)聯(lián)處理 48
處理模式 48
查找 53
標(biāo)準(zhǔn)化事件 55
提取值 56
JSON Collection Decorator 57
處理清單 58
流統(tǒng)計(jì)信息 60
記錄上下文清單 63
擴(kuò)展數(shù)據(jù)流 63
展示處理 66
第6 章 開發(fā)客戶端 69
原生或基于瀏覽器開發(fā) 70
框架和庫 71
常用方法 71
從示例客戶端應(yīng)用程序開始 72
客戶端庫 73
代碼結(jié)構(gòu) 74
替代方法 76
第7 章 展示流數(shù)據(jù) 79
顯示流數(shù)據(jù) 80
儀表板 83
視覺元素和屬性 84
數(shù)據(jù)密度 95
劃分時(shí)間 96
存活時(shí)間 97
上下文 99
視覺語言 101
適當(dāng)顯示 103
第8 章 可視化組件 107
記錄 107
統(tǒng)計(jì)數(shù)據(jù) 109
可視化 112
常見可視化的流選項(xiàng) 114
流可視化技術(shù) 119
條形圖示例 123
靜態(tài)信息 126
第9 章 流分析 129
視覺干擾 130
視覺欺騙 130
認(rèn)知偏差 132
分析模型 133
視覺分析 135
流分析工作流 136
上下文感知 138
異常值示例 139
第10 章 工作流可視化 143
更新處理 144
與可視化交互 145
存儲(chǔ)決策 147
第11 章 流數(shù)據(jù)儀表板 151
布局 152
流向 157
組件移動(dòng) 159
自動(dòng)駕駛 161
第12 章 機(jī)器學(xué)習(xí) 163
機(jī)器學(xué)習(xí)入門 163
機(jī)器學(xué)習(xí)與流數(shù)據(jù)可視化 166
展示機(jī)器學(xué)習(xí)結(jié)果 166
監(jiān)督學(xué)習(xí)與持續(xù)調(diào)優(yōu) 171
展示未預(yù)期情況 173
機(jī)器學(xué)習(xí)決定顯示什么 174
第13 章 協(xié)作 177
為什么協(xié)作 177
分享 180
第14 章 導(dǎo)出 183
配置 184
數(shù)據(jù)集 187
流回放報(bào)告 187
靜態(tài)報(bào)告 188
提交數(shù)據(jù)提要的處理更新 190
第15 章 用例 191
安全性 192
機(jī)器學(xué)習(xí)交互 192
智能設(shè)備(又稱物聯(lián)網(wǎng)) 193
品牌監(jiān)督 194
輿論 194
應(yīng)用程序數(shù)據(jù) 195
錯(cuò)誤監(jiān)控 195
協(xié)作 196
工作流 197
分析人員的輸入 197
數(shù)據(jù)探索 198
示例 199
第16 章 總結(jié)與參考 205
提到的鏈接 205
數(shù)據(jù) 205
轉(zhuǎn)換與過濾 206
展示儀表板和組件 207
交互和操作 207
系統(tǒng)之外 208