1. 程式人生 > >《資料科學家修煉之道》筆記

《資料科學家修煉之道》筆記

【美】 Zacharias Voulgaris 吳文磊 田原 譯

有價值的資源:

目錄

第一章 資料科學與大資料

要點:

  • 大資料的4個V的維度:體量、高速、多樣以及精確性
  • 資料科學家是那些將資料整理出規則的人。通過利用最新的 技術和原理,他們可以從中匯出可操作的資訊,通常是推出 一個數據產品。
  • 資料科學家的職務第一次在文章中出現是在2005年,而它在2009年開始變得炙手可熱。在哈佛商業評論的一篇文章中,資料科學家被稱為21世紀“最迷人”的職業。

第二章 資料科學的重要性

要點:

  • Drew Conway在2010年的9月創作的著名的韋恩圖,有效的總結了資料科學的本質。 關於資料科學的韋恩圖

  • 資料科學帶來了許多新的規則,它們改變了我們的傳統處理資料的方式,主要有如下幾個。

  • MapReduce
  • Hadoop分散式檔案系統(HDFS)
  • 高階文字分析
  • 大規模資料程式語言(如Pig、R、ECL等等)
  • 替代性資料庫結構(如HBase、Cassandra、MongoDB等等)

第三章 資料科學家的型別

要點:

  • 人們總結了5種不同型別的資料科學家

  • 資料開發者。他們是程式設計專家,但他們可能缺少資料科學家的其他部分的技能,通常來自於IT行業。

  • 資料研究者。他們是資料分析的專家,同時他們也能處理機器學習以及其他領域的最新技術。他們通常擁有博士學位,而且正在或曾經從事著學術研究。

  • 資料創意師。相比於前面兩個型別的資料科學家顯得更為全面,偏愛於使用開源軟體,而且多才多藝。他們來自於各行各業,儘管通常來說,他們已經是資料科學家了。
  • 資料商務人士(即高階資料科學家)。資料科學家的最高等級,同時常常擔任管理角色,相較於資料科學本身,他們更多地接近於商務世界。通常他們具有包括管理學學位在內的多重背景。
  • 混合/普適型別。這一類的資料科學家是最為平衡的,他們同時或多或少地培養了資料科學所需的各個方面。他們多面發展,具有各個型別的背景,但在經驗的廣度上,都亞於資料商務人士。通常,混合/普適的資料科學家會晉升為資料商務人士。

第四章 資料科學家的思維體系

要點:

  • 資料科學家所具有的最重要的特質
    1.好奇心
    2.樂於實驗
    3.創造力與系統性工作的能力
    4.溝通能力
  • 資料科學家所具有的主要的素質與才能
    1.建模
    2.解決問題
    3.快速學習
    4.適應性
    5.團隊合作
    6.變通
    7.研究
    8.關注細節
    9.報告

第五章 技術資質

要點:

  • 你需要熟悉一個或多個面向物件程式語言,例如java和perl。掌握它們中的至少一個語言是必必需的。
  • 擁有一個技術性學科的博士學位在進入資料科學領域會顯得十分有用,因為它可以補償你工作經驗的不足,但這並不是一個必備的先決條件。
  • 你需要具備一些對資料科學家工作所特有的專業化知識。
    1.對資料分析工具足夠的瞭解(例如,R,SPSS,SAS,Stata或Matlab)並掌握他們中的至少一個工具。
    2.大資料儲存架構經驗()例如,Hadoop,Hive等。
    3.其他。資料視覺化,關係型資料庫,使用者建模,大資料整合處理系統。同時還要有大資料領域的資料集的工作經驗。
  • 與時俱進。

第六章 經驗

要點:

  • 獲得最初工作經驗的方法如下所示,但不僅限於此。
    1.在Kaggle上參加一些資料科學競賽,可以是以團隊形式參加。
    2.獲得一個與之相關的實習職位。
    3.如果你是一個碩士生,你的論文案例可以是一個有資料相關問題的公司。
    4.在資料科學團體中做志願者。
    5.追隨一位導師,例如在DataScienceCentral裡的那種。
    資料科學中心網站你可能會遇到這樣的機會。

第七章 社交圈

要點:

  • 在獲取大資料科學領域以及其他相鄰的領域中最近的革命性技術方面,社交圈可以是一個無價的資源。
  • 資料科學家需要立足於現實,這可以通過社交圈去保持與商業世界的關係來達到。這可以幫助他更好地瞭解需要什麼,並且除了帶來工作機會之外,還可以讓自己觸及有趣的商業機會。

第八章 所用的軟體

要點:

  • 資料科學家在日常工作中會利用各類工具,本章介紹了其中最具有代表性的,包括:Hadoop/Spark、面向物件程式語言(例如java)、資料分析平臺(例如R)、視覺化軟體以及一些輔助工具(例如GIT和Oracle)。
  • Hadoop是大資料軟體界的凱迪拉克,它的套件有幾類元件組成,包括檔案系統(HDFS)、將資料分析到計算機叢集的方法(MapReduce)、機器學習程式(Mahout)、程式語言(Pig)、資料庫程式(Hive、HBase等)、排程器(Oozie)、元資料和資料表管理框架(HCatalog)以及除錯管理器和協同程式(Zookeeper)等
  • Hadoop套件有很多替代方案,例如Storm、Spark、BashReduce、Disco project..
  • 作為資料科學家,你應該能處理至少一個面向程式語言,例如java、C++、Ruby、Python、C#等。面嚮物件語言目前是分佈最廣的程式語言正規化,儘管最近有一股面向函式型語言的風潮湧動。
    -Tableau則是資料視覺化軟體中最好的選擇,儘管還有類似於Spotfire、Qlikview、Brist等。
    其它一些程式值得你花時間去了解,GIT、Oracle、MS Excel等。

第九章 學習新知與解決問題

要點:

  • 線上課程,特別是MOOC,是最能增長和改善你對各種主題知識的途徑之一。
  • 資料科學小組是一個學習領域新知的既有效又充滿樂趣的地方。你需要找到一個舉辦大量活動的小組,有大量活躍在資料科學領域內的成員,同時與小組內的其他成員積極地參與交流。

第十章 機器學習與R語言平臺

要點:

第十一章 資料科學的處理流程

重點:

資料分析的主要步驟可以總結成以下7個

  • 資料準備。資料準備就是通過資料清洗和標準化將原始資料準備成便於之後步驟處理的形式。這一步驟也包括資料格式的識別轉換以及資料的讀取。
  • 資料探索。“資料探索是資料分析者通過有效的資訊搜尋的過程來整合資訊以及得到真實可信的分析結果的過程”(www.Techopedia.com)。這一過程包括通過檢索資料來找到有用的模式和隱藏規則,發現重要的變數特徵,畫出簡單的圖以及識別出這一批資料中有什麼有意思的資訊以及確定之後的研究方向。
  • 資料表示。根據《麥基爾-科技術語詞典》一書,資料表示是“資料在計算機以二進位制的形式儲存的方法”。這一過程是將各種原始變數資料通過特定的計算機儲存結構高效的轉換儲存在計算機中的過程,在儲存空間利用和之後的利用過程中都儘量達到最優化。
  • 資料發現。這一過程旨在通過提出假設和統計檢驗的方式來發現資料中的各種潛在模式、關聯關係等。這其中要用到很多統計知識以及個人直覺來從大量無規則資料中找到真正有顯著意義的結論。
  • 資料學習。這一過程主要是通過統計學和機器學習的方法在資料中找到有用的模式和規律。它的目標是使找到的結論儘量的能被運用到更多地資料和實際生活中,並且形成一個數據產品的雛形。
  • 開發資料產品。這可能是所有步驟中最重要的一個:基於已有的資料開發一個產品,並將其與其他人分享。根據Hilary Mason的說法,一個數據產品是“一個由資料和演算法組合而成的產品”。
  • 洞察、交付和視覺化。這一部風的作用是將產品呈現給最終的使用者,並且接受使用者反饋、微調程式以及計劃產品升級的方案。通過突出重點來完成資料產品的視覺化並從中獲得靈感,進而開始完成新一輪的資料科學工作。

第十二章 所需的具體技能

要點:

-從一名學生、面向物件程式設計程式設計師、軟體開發工程師或者其他與資料相關領域工作人員升級為資料科學家的過程並沒有想象中那麼複雜,但是你需要在此過程中制定合理的計劃和目標,並且要個要求自己去完成你的計劃。

  • 作為一名面向物件程式設計師,你需要學習:
    1.學習向量化概念
    2.學習類似於R與Matlab之類的資料處理工具
    3.學習統計和機器學習
    4.熟悉大資料分析平臺,例如Hadoop
    5.理解使用者是怎麼想的,並且嘗試去思考使用者的需求
  • 作為一名機器學習或者人工智慧方面的從業者,你和統計出身的人差不多,同樣學習統計學以及更好的編寫程式,但同時,你需要學習一些大資料處理技術,以及商業素養和嗅覺,最好按這個順序學習
  • 如果你恰好對於統計和機器學習都比較瞭解,那你應該花更多地時間磨練自己的程式設計技術,並且學習一些大資料的分析平臺和工具,然後培養自己的商業思維。
  • 作為一名比較專業的在資料相關領域工作過的人,你可能已經比較熟悉各種型別的資料以及資料結構了,所以你應該花更多的時間在面向物件程式設計、資料視覺化、資料分析、交流溝通的能力上,並且最好獲得更多的實戰經驗和資料處理經歷。
  • 如果你是一名學生,你需要制定計劃,不偏科而且循序漸進的學習所有的重要的資料科學知識、資料分析、程式設計、大資料技術、商業技巧等。在此之前,我們強烈建議你先認清自己的優勢和劣勢,然後再製定學習計劃。
  • 最後就是,無論你是什麼背景出身的人,你都應該花時間鍛鍊自己的交流溝通能力,因為它們對於資料科學家來說是一項非常重要的技能。

第十三章 資料科學職位哪家尋

要點:

  • 在你開始你的求職之旅之前,你一定要非常清楚自己想要一個什麼樣的工作,以及自己可以在那些方面做出讓步(工資、定居等)
  • 最有效的一種尋找工作的方式就是直接與公司取得聯絡,包括以下幾種:
    1.研究這個公司並且研究清楚該公司的大資料平臺和技術目前是什麼水平。
    2.找到最合適的求職時機,伺機而動。
    3.學生最好申請當實習生。
    4.與公司內部人員取得聯絡。
  • 專業的交際圈也是尋找工作的一種好方法。這其中包括了與專業人士的聯絡、資料科學會議以及社交網站上與資料科學有關的小組。

第十四章 自我展示

要點:

  • 重視招聘者的需求是你在準備面試的過程中一定要記在心裡而且時時思考的問題。尤其是,你一定要清楚招聘者是想要如何利用大資料,挺清楚他們對於想要招聘到的人的需求。並且要準備好跟面試官解釋你可以用自己所學來提供出有利於公司發展的成果,同時要注意交流技巧。多問問題,並表現出你對公司和職位的興趣。
  • 讓自己從競爭者脫穎而出是非常重要的。你需要通過展示自己全面的技術、精湛的大資料相關知識,以及一些非技術方面的優勢來讓自己從一群固步自封的資料從業人士(例如資料庫管理員、商業智慧分析師等)中脫穎而出。
  • 獨當一面是指在任何一個行業中成為專家所必須具有的能力,而在資料科學領域,尤其如此。這意味著你可以在沒有任何指導的情況下,建立工作小組、領導工作小組、設計分析方法、管理進度和技術,並在整個過程中很好地組織大家完成這一切。這對你進入公司之後的晉升是非常重要的。

第十五章 自由職業資料科學家之路

要點:

  • 想要成為一名自由職業的資料科學家,你幾乎需要掌握一名普通公司的資料科學家會的所有技術,此外要記住你的工資一般是按小時結算的,並且專案一般有一定的時間限度。
  • 除了資料分析之外,作為一名自由職業的資料科學家,你還可以提供一些其他的服務。在你的常規工作之餘,你還可以做的事情有如下幾種。
    1.程式設計服務。
    2.資料清洗服務。
    3.指導公司人員或學生。
    4.指導學生論文。

第十六章 職業資料科學家的案例學習

案例:
Raj Bondugula博士…

Raj Bondugula博士給新手資料科學家的建議是:“在某個方面成為該領域的專家,可以是統計,也可以是機器學習或者java程式設計,然後再一件接一件地慢慢嘗試更多的事情”。你也需要接受別人的幫助,因為你不可能一個人解決所有的問題。
要點:

  • Hadoop是一項非常重要的工具,並且對於資料科學有非常非同一般的影響力。
  • 在實戰中,“資料科學家”和“機器學習專家”基本上是同義詞。
  • 資料科學中最具挑戰性的問題也可能是未來幾年這個領域將會不得不面對的問題,那就是如何從大資料中歸納出合適的問題,找對正確的研究方向以及最終使用合適的方法做出可靠的結果。
  • 資料科學的未來很光明的,這個領域在未來一定會越來越多元化。

第十七章 資深資料科學家案例學習

要點:

  • 資深資料科學家與普通資料科學家的區別主要在於:擁有更多地只是積累、領域見解和專業知識,並且更有經驗、有能力把問題化繁為簡,並且有能力開始一個新專案。
  • 為了得到一個資深資料科學家的職位,大公司的實習經歷和優秀大學頒發的博士學位是非常有用的。但如果你都幾乎沒有可能在你的簡歷上加上這兩點,也可以嘗試獲得斯坦福大學的機器學習課程認證(Andrew Ng教授親授的課程)。
  • 為了成為一名資料科學家,你應該均衡的培養以下的技能:
    1.非常紮實的數學基礎知識
    2.通過完成競賽(Kaggle)來獲得經驗
    3.使用面向物件程式語言或者函式型語言來開發軟體。

第十八章 新資料科學家的召喚

要點:

附錄:術語表

A

人工智慧(Artificial Intelligence,A.I.)——電腦科學的一個研究領域,主要是為了開發一種能夠感知周圍環境並且做出適當的行為反應,甚至於從那些行為中不斷自我學習的機器或者演算法。有一些人工智慧演算法被廣泛地用於資料科學領域。