R社群主持人、微軟最有價值專家 孫玉峰 專文推薦
LinkedIn 大數據總監 管其毅 齊聲推薦
Google、Facebook、IBM和美國聯邦航空總署等世界知名企業的開發者都在用!
跟上頂尖好手的腳步,學習簡單好上手的Julia,前進矽谷不是夢!
熱銷全台的《Julia程式設計》一書作者、Julia課程人氣講師的最新力作!
台灣第一本Julia進階運用教科書,內容豐富,包含機器學習、資料分析決策等熱門主題。
繼續來追程式語言新女神,全球最具潛力的程式語言新人王!
Facebook人工智慧實驗室主任、紐約大學教授LeCun直言:「深度學習需要比Python更靈活的程式語言。」而Julia的眾多優勢──免費、簡潔、快速且容易上手等,更促使它有極有可能成為未來最熱門的程式語言,與其盲目的追趕流行,我更推薦各位掌握趨勢的最前端,從學習Julia開始。
征服女神的第二步,勸你盡早來加入
♡本書適合有Julia 程式操作基礎,想更進一步深入資料科學、機器學習或科學計算等進階領域的人。
♡延續《Julia程式設計》的超直覺式步驟教學,只要照著做,就能夠學會,一起往資料科學的殿堂邁進!
♡作者在Julia教學上具有非常豐富的經驗,完全理解初學者的痛點。
♡除了程式教學外,更傳授資料科學領域所應具備的背景知識,一秒提升資料素養。
本書以資料的角度引入,介紹基礎的資料分析及統計相關知識和資料處理會應用到的方法。並結合玩具資料(toy data)的示範,讓讀者可以透過資料及實作體會資料科學的有趣之處。後半部分則會介紹基礎的科學運算及機器學習應用。最後介紹最佳化的方法和使用 CUDA 進行運算的相關套件。
Julia,為資料科學而生。
作者簡介:
杜岳華
Julia Taiwan 發起人,陽明大學生物醫學資訊所碩士,成功大學醫學檢驗生物技術學系及資訊工程學系雙主修,工研院人才培訓中心機器學習課程講師。熱愛數學、電腦科學及自然科學,希望成為計算生物學家,為開源軟體貢獻者。
胡筱薇
基督徒,Data Lab 創辦人,為中央大學資訊管理所博士,美國普渡大學克蘭納特管理學院訪問學者;現為東吳大學巨量資料管理學院副教授,且擔任台灣人工智慧學校講座師資;機器學習、資料探勘、社群網路、智慧商業為主要研究項目;近年來,致力於協助企業建立數據團隊並培育資料科學人才。
章節試閱
工業時代的科學基礎強調的是確定性和可預測性的機械論。但是從20世紀初開始,我們逐漸從工業時代進入資訊科技時代,再由資訊科技時代邁入資料科技時代(IT to DT),物理學家們意識到不連續性、不確定性是我們這個世界的本質,如果依然使用傳統機械論的方法解決問題,不僅會遇到各種限制,而且可能會出現認知偏差,。如果問你DT時代最顯著的特徵是什麼?你可能會說是計算機、智慧裝置、訊息過載、大數據、人工智慧等等,這些都沒有錯,但這些都是表象!其實,DT時代的最大特徵就是不確定性。如果工業時代的科學基礎強調的是確定性和可預測性的機械論,那麼在DT時代的科學基礎強調的是不確定性的資訊理論 (information theory)。資訊理論就是這半個世紀以來,人類對抗不確定性,最重要和有效的方法論。如同騰訊前副總裁、Google研究員吳軍博士吳軍老師說的,今天的人,已經無法通過掌握幾條不變的規律,工作一輩子;也難以通過理解幾條簡單的人生智慧,活好一輩子,一個通用規律就能解決一切問題,一個標準答案就能讓人一勞永逸的時代,一去不復返了。例如我們今天很多大學生畢業後不知道自己該繼續年研究所,還是去工作,又該選擇什麼樣的工作,好像之前校園裡教的經驗正在逐漸失效,這是因為,我們所處的時代充滿了不確定性。除了年輕人的學業和畢業的不確定性,對比我們這一代人的生活和上一代人父輩的生活,我們必須承認今天各種的不確定性大了很多。就拿理財來說,上一代人父輩們只要把錢存到銀行吃利息就可以了,它的收益非常確定,但是今天這顯然不是好的做法,而投資到任何地方都顯得非常不確定。當然有人會說過去也在變,但是牛頓時代大家看到的變化是連續的,而今天經歷的常常是非連續的,或者說是跳躍性的變化。不確定性加上跳躍式變化,才讓大家感到格外焦慮。
那對付不確定性的方法是什麼呢?
20世紀初機率論和統計學的成熟,使人們得以把握隨機性。而在1948年,另一位科學天才克勞德•香農(Claude Shannon)發表了論文《通信的數學原理》,他是資訊理論的創始人,資訊理論就是通信的理論,也是一種方法論。我們今天常說的大數據思維,其科學基礎就是資訊理論。我們知道,對於一個你一無所知的黑盒子,要想了解裡面的狀態,就需要資訊(Information),這是資訊理論最基本的思想。用比較專業一點的話講,叫做消除不確定性。今天人工智慧是一個熱門話題,其實就是在利用更多資訊,消除不確定性。計算機的智能是如何產生的?它在機理上其實和人類的智能沒有半點關係。
事實上,今天的計算機只是在那些能夠利用數據消除不確定性的問題上,表現得比比人類優異。例如大家所熟悉的應用「下圍棋」,對計算機來說,就是在最多361個點位選擇一個地方落子,是一個361選1的問題;而對於語音識別,就是在多個發音相似的單詞中選一個最相似的,人臉識別呢,則是在幾百萬人的頭像中選一個最相似的。至於新聞的推薦,也是從若干篇新聞中匹配一些你感興趣的。這些難題的答案其實都是從資訊理論中來的。上個世紀70—80年代,作為資訊理論專家Frederick Jelinek和他的同事們提出了數據驅動的解決人工智慧問題的方法,並且在識別語音、翻譯語言等領域獲得了巨大的成功。
當Dr. Claude Shannon找到了不確定性和信息的關係,從此為人類找到了面對不確定性世界時的方法論,也就是利用資訊消除不確定性,這是DT時代下最重要的方法論,是資料科學中最重要的理論之一,我們今天講的大數據思維,從本質上講,就是這種方法論的應用。在此基礎下,當我們回溯歷史,就可以理解數字和文字的誕生其實就是對資訊編碼的過程,而在今日充滿不確定性的時代中,當面對多條訊息猶豫不決時,其實是我們需要的是有效找出不同維度的資訊,以及組合優化的方法,而這也就是資料科學的核心。
工業時代的科學基礎強調的是確定性和可預測性的機械論。但是從20世紀初開始,我們逐漸從工業時代進入資訊科技時代,再由資訊科技時代邁入資料科技時代(IT to DT),物理學家們意識到不連續性、不確定性是我們這個世界的本質,如果依然使用傳統機械論的方法解決問題,不僅會遇到各種限制,而且可能會出現認知偏差,。如果問你DT時代最顯著的特徵是什麼?你可能會說是計算機、智慧裝置、訊息過載、大數據、人工智慧等等,這些都沒有錯,但這些都是表象!其實,DT時代的最大特徵就是不確定性。如果工業時代的科學基礎強調的是確定性和可預測...
推薦序
在這個日常生活幾乎離不開各種軟體的時代,一波學習程式的熱潮正在展開;而學習程式最好的方式之一,就是參與技術社群:除了在各個社群中常常會舉辦各種程式相關的教學及分享以外,跟技術開發者們交流的機會是能夠讓人學習到最多的。
在這些年主持以及參與了這麼多社群活動之後,相較於台灣大多數的技術社群,由岳華發起的 Julia Taiwan 特別有股親切感。可能是因為跟我們 Taiwan R User Group 一樣,在被應用的領域和早期使用者的組成都有著比起其他程式語言更多元、更不「資工本科」的味道;同樣的,在東吳大學積極推動巨量資料以及資料科學人才培育的筱薇老師,也帶領更多非資訊本科系的學子們認識資料科學的價值。
在這樣龐大的熱情以及專業下所誕生的這本教材,相信能延續《Julia程式設計:新世代資料科學與數值運算語言》的優點,成為深入學習Julia 這個新興語言的最佳利器:不管是基礎的資料科學概論、轉換與計數,到進一步的資料處理、決策、科學運算和最近的熱門主題「機器學習」,本書可說是無所不包。一起來體驗「如 Python 般的程式撰寫,如C 般的運算效能」的 Julia 吧!
Taiwan R User Group 社群主持人
Microsoft Most Valuable Professional 微軟最有價值專家
現任 MoMagic 資深資料科學家
孫玉峰
在這個日常生活幾乎離不開各種軟體的時代,一波學習程式的熱潮正在展開;而學習程式最好的方式之一,就是參與技術社群:除了在各個社群中常常會舉辦各種程式相關的教學及分享以外,跟技術開發者們交流的機會是能夠讓人學習到最多的。
在這些年主持以及參與了這麼多社群活動之後,相較於台灣大多數的技術社群,由岳華發起的 Julia Taiwan 特別有股親切感。可能是因為跟我們 Taiwan R User Group 一樣,在被應用的領域和早期使用者的組成都有著比起其他程式語言更多元、更不「資工本科」的味道;同樣的,在東吳大學積極推動巨量資料以及資料科...
作者序
作者序一
近年來,資料科學與人工智慧成為顯學。在深度學習上有重大的突破,包含影像辨識的準確率提升、電腦對局在圍棋領域的進展。這些光芒讓大家將目光投射在資料分析及建模上面。相對於此,傳統科學計算及統計建模相對少人談論,但這些卻是一脈相承的技術演進。
在電腦運算效能的提升及軟體與網路技術的整合及普及,傳統科學計算與資料科學都相當需要依賴數值運算的基礎技術。在近代的數學家們奠定了逼近理論及相關的數值方法,而現今的深度學習模型相當依賴以梯度為基礎的最佳化方法。電腦的演進其實是跟著科學計算一起走的,在電腦被做出來以前,先是微分解析機被實作出來。然而,世界上第一個公認的高階程式語言 Fortran 也是因為數值運算目的被設計出來。
理論科學家們則相當依賴初值問題來解決微分方程的數值方法。數值方法被廣泛應用在物理模擬、統計建模及機器學習上。數值方法的實作則與矩陣運算脫不了關係。多數的數值方法會被寫成矩陣運算的形式,進一步可以依賴運算核心的單指令流多資料流(Single Instruction Multiple Data)模式進行加速。大量資料的運算也會以陣列形式表達,如此在處理大量資料流時則可以進行加速。資料分析也是有這些運算基礎,進而搭配上機器學習或是深度學習模型才能有今日的光彩。
本書的定位是給具備少許 Julia 程式經驗,想往資料科學、機器學習或是科學計算前進的人。本書會以資料的角度引入,介紹基礎的資料分析及統計相關知識。此外,書中會提及一些資料處理會應用到的方法。書中結合了些許玩具資料(toy data)的示範,希望讀者可以透過資料及實作體會資料科學的有趣之處。後半部分則會介紹基礎的科學運算及機器學習應用。最後,書中第十一章會介紹最佳化的方法,第十二章則會介紹使用 CUDA 進行運算的相關套件。
特別感謝一位好朋友提供了本書的編寫建議,融入了些許的知識,讓一些程式操作不再是死板的指令。
杜岳華
作者序二
在校園裡同學們最常問我的一個問題就是:「老師,我該學哪個程式語言比較好?是 R、是 Julia 還是 Python ?」我的答案是,都好!因為重點不在於選擇,而是當你做出選擇之後的每一個嘗試、學習、堅持、突破與精進,這過程所積累出來的實力,才是你該追求的。為了提供學生更多元的學習場域,引動學習動機,我成立了資料實驗室(Data Lab),並長期與企業合作,透過實際的專案項目培養資料科學人才,同時也定期開設相關課程,鍛鍊同學們的基礎能力,一個因緣巧合,我認識了本書的另一位作者──杜岳華老師,岳華讓我印象非常深刻,是個有想法、有才華、有熱情、有能力,堅持理想並付諸行動的年輕人,有一次他跟我說,希望有更多人認識Julia 的這個語言,更希望台灣在國際Julia 社群中的能見度可以提高!我聽了非常感動,也跟著熱血了起來!於是,我們在資料實驗室中開設了Julia 程式語言的課程,接著就是撰寫本書,讓更多中文使用者可以認識這個資料科學語言中的新星── Julia 。
這個時代的學習和過去很不一樣,有太多的新知識與新技術排山倒海的湧入, 就像這幾年大家常常在談的IoT、Big Data、ML、AI、
Blockchain,似乎沒有人能明確又清楚的告訴你那些是什麼?它沒有教科書,也沒有結論,因為這一切都還在發展與演化當中,不過可以肯定的是,倘若我們仍舊以過去的學習態度和方法,要能夠跟上這個時代,掌握這些趨勢,肯定很困難,那我們該如何因應呢?既然確定性的知識愈來愈少,那就保持開放的頭腦與心胸吧!當我們思考世界的角度愈多,你的未來就充滿了無限可能。
最後,我想引用Ratatouille 的經典台詞,並稍做修改來鼓勵各個領域的朋友:
「Not everyone can become a great Data scientist, but a great Data
scientist can come from anywhere.」
衷心祝福各位讀者!
胡筱薇
作者序一
近年來,資料科學與人工智慧成為顯學。在深度學習上有重大的突破,包含影像辨識的準確率提升、電腦對局在圍棋領域的進展。這些光芒讓大家將目光投射在資料分析及建模上面。相對於此,傳統科學計算及統計建模相對少人談論,但這些卻是一脈相承的技術演進。
在電腦運算效能的提升及軟體與網路技術的整合及普及,傳統科學計算與資料科學都相當需要依賴數值運算的基礎技術。在近代的數學家們奠定了逼近理論及相關的數值方法,而現今的深度學習模型相當依賴以梯度為基礎的最佳化方法。電腦的演進其實是跟著科學計算一起走的,在電腦...
目錄
推薦序
作者序一
作者序二
PART 1 資料科學基礎
Chapter 1. 資料科學概論
Chapter 2. 玩轉資料
Chapter 3. 認識資料
Chapter 4. 看看資料
Chapter 5. 資料轉換與計數
Chapter 6. 了解資料的意義
PART 2 從資料到模型
Chapter 7. 進一步的資料處理
Chapter 8. 用資料做決策
Chapter 9. 科學運算:由已知關係求解
Chapter 10. 機器學習:由雜訊資料建立關係
PART 3 進階方法
Chapter 11. 模型的最佳化方法
Chapter 12. CUDA 程式設計
推薦序
作者序一
作者序二
PART 1 資料科學基礎
Chapter 1. 資料科學概論
Chapter 2. 玩轉資料
Chapter 3. 認識資料
Chapter 4. 看看資料
Chapter 5. 資料轉換與計數
Chapter 6. 了解資料的意義
PART 2 從資料到模型
Chapter 7. 進一步的資料處理
Chapter 8. 用資料做決策
Chapter 9. 科學運算:由已知關係求解
Chapter 10. 機器學習:由雜訊資料建立關係
PART 3 進階方法
Chapter 11. 模型的最佳化方法
Chapter 12. CUDA 程式設計