❶ 《大數據時代生活、工作與思維的大變革》pdf下載在線閱讀,求百度網盤雲資源
《大數據時代》([英] 維克托•邁爾•舍恩伯格(Viktor Mayer-Schönberger))電子書網盤下載免費在線閱讀
資源鏈接:
鏈接:
書名:大數據時代
作者:[英] 維克托•邁爾•舍恩伯格(Viktor Mayer-Schönberger)
譯者:周濤
豆瓣評分:7.5
出版社:浙江人民出版社
出版年份:2012-12
頁數:261
內容簡介:
《大數據時代》是國外大數據研究的先河之作,本書作者維克托•邁爾•舍恩伯格被譽為「大數據商業應用第一人」,擁有在哈佛大學、牛津大學、耶魯大學和新加坡國立大學等多個互聯網研究重鎮任教的經歷,早在2010年就在《經濟學人》上發布了長達14頁對大數據應用的前瞻性研究。
維克托•邁爾•舍恩伯格在書中前瞻性地指出,大數據帶來的信息風暴正在變革我們的生活、工作和思維,大數據開啟了一次重大的時代轉型,並用三個部分講述了大數據時代的思維變革、商業變革和管理變革。
維克托最具洞見之處在於,他明確指出,大數據時代最大的轉變就是,放棄對因果關系的渴求,而取而代之關注相關關系。也就是說只要知道「是什麼」,而不需要知道「為什麼」。這就顛覆了千百年來人類的思維慣例,對人類的認知和與世界交流的方式提出了全新的挑戰。
本書認為大數據的核心就是預測。大數據將為人類的生活創造前所未有的可量化的維度。大數據已經成為了新發明和新服務的源泉,而更多的改變正蓄勢待發。書中展示了谷歌、微軟、亞馬遜、IBM、蘋果、facebook、twitter、VISA等大數據先鋒們最具價值的應用案例。
作者簡介:
他是十餘年潛心研究數據科學的技術權威,他是最早洞見大數據時代發展趨勢的數據科學家之一,也是最受人尊敬的權威發言人之一。他曾先後任教於世界最著名的幾大互聯網研究學府。現任牛津大學網路學院互聯網治理與監管專業教授,曾任哈佛大學肯尼迪學院信息監管科研項目負責人,哈佛國家電子商務研究中網路監管項目負責人;曾任新加坡國立大學李光耀學院信息與創新策略研究中心主任。並擔任耶魯大學、芝加哥大學、弗吉尼亞大學、聖地亞哥大學、維也納大學的客座教授。
他的學術成果斐然,有一百多篇論文公開發表在《科學》《自然》等著名學術期刊上,他同時也是哈佛大學出版社、麻省理工出版社、通信政策期刊、美國社會學期刊等多家出版機構的特約評論員。
他是備受眾多世界知名企業信賴的信息權威與顧問。他的咨詢客戶包括微軟、惠普和IBM等全球頂級企業;而他自己早在1986年與1995年就擔任兩家軟體公司的總裁兼CEO,由他的公司開發的病毒通用程序,成為當時奧地利最暢銷的軟體產品。1991年躋身奧地利軟體企業家前5名之列,2000年 被評為奧地利薩爾斯堡州的年度人物。
他也是眾多機構和國家政府高層的信息政策智囊。他一直專注於信息安全與信息政策與戰略的研究,是歐盟專家之一,也是世界經濟論壇、馬歇爾計劃基金會等重要機構的咨詢顧問,同時他以大數據的全球視野,熟悉亞洲信息產業的發展與戰略布局,先後擔任新加坡商務部高層、汶萊國防部高層、科威特商務部高層、迪拜及中東政府高層的咨詢顧問。
所著《大數據》一書是開國外大數據系統研究的先河之作,而在這之前,他已經在《經濟學人》上和數據編輯肯尼斯.尼爾-庫克耶一起,發表了長達14頁的大數據專題文章,成為最早洞見大數據時代趨勢的數據科學家之一。而他的《刪除》一書,同樣被認為是關於數據的開創性作品,並且創造了「被遺忘的權利」的概念而在媒體圈和法律圈得到廣泛運用。該書獲得美國政治科學協會頒發的唐•K•普賴斯獎,以及媒介環境學會頒發的馬歇爾•麥克盧漢獎。同時受到《連線》、《自然》《華爾街日報》《紐約時報》等各大權威媒體廣泛好評。
❷ 大數據時代的數據分析技術面臨的挑戰
數據分析是整個大數據處理流程的核心,大數據的價值產生於分析過程。從異構數據源抽取和集成的數據構成了數據分析的原始數據。根據不同應用的需求可以從這些數據中選擇全部或部分進行分析。小數據時代的分析技術,如統計分析、數據挖掘和機器學習等,並不能適應大數據時代數據分析的需求,必須做出調整。
大數據時代的數據分析技術面臨著一些新的挑戰,主要有以下幾點。
(1)數據量大並不一定意味著數據價值的增加,相反這往往意味著數據噪音的增多。因此,在數據分析之前必須進行數據清洗等預處理工作,但是預處理如此大量的數據,對於計算資源和處理演算法來講都是非常嚴峻的考驗。
(2)大數據時代的演算法需要進行調整。首先,大數據的應用常常具有實時性的特點,演算法的准確率不再是大數據應用的最主要指標。在很多場景中,演算法需要在處理的實時性和准確率之間取得一個平衡。其次,分布式並發計算系統是進行大數據處理的有力工具,這就要求很多演算法必須做出調整以適應分布式並發的計算框架,演算法需要變得具有可擴展性。許多傳統的數據挖掘演算法都是線性執行的,面對海量的數據很難在合理的時間內獲取所需的結果。因此需要重新把這些演算法實現成可以並發執行的演算法,以便完成對大數據的處理。最後,在選擇演算法處理大數據時必須謹慎,當數據量增長到一定規模以後,可以從小量數據中挖掘出有效信息的演算法並一定適用於大數據。
(3)數據結果的衡量標准。對大數據進行分析比較困難,但是對大數據分析結果好壞的衡量卻是大數據時代數據分析面臨的更大挑戰。大數據時代的數據量大,類型混雜,產生速度快,進行分析的時候往往對整個數據的分布特點掌握得不太清楚,從而會導致在設計衡量的方法和指標的時候遇到許多困難。
❸ 關於大數據時代這本書
<大數據時代>
頁數 270
你的PDF具體全不全,請參照一下目錄校驗:
目錄如下:
推薦序一 擁抱「大數據時代」
寬頻資本董事長 田溯寧
推薦序二 實實在在大數據
中國互聯網發展的重要參與者,知名IT 評論人
譯者序在路上·晃晃悠悠
電子科技大學教授,互聯網科學中心主任
引言一場生活、工作與思維的大變革
大數據開啟了一次重大的時代轉型。就像望遠鏡讓我們能夠感受宇宙,顯微鏡讓我們能夠觀測微生物一樣,大數據正在改變我們的生活以及理解世界的方式,成為新發明和新服務的源泉,而更多的改變正蓄勢待發……
大數據,變革公共衛生
大數據,變革商業
大數據,變革思維
大數據,開啟重大的時代轉型
預測,大數據的核心
大數據,大挑戰
第一部分 大數據時代的思維變革
第1章 更多:不是隨機樣本,而是全體數據
當數據處理技術已經發生了翻天覆地的變化時,在大數據時代進行抽樣分析就像在汽車時代騎馬一樣。一切都改變了,我們需要的是所有的數據,「樣本= 總體」。
讓數據「發聲」
小數據時代的隨機采樣,最少的數據獲得最多的信息
全數據模式,樣本=總體
第2章 更雜:不是精確性,而是混雜性
執迷於精確性是信息缺乏時代和模擬時代的產物。只有5% 的數據是有框架且能適用於傳統資料庫的。如果不接受混亂,剩下95% 的非框架數據都無法被利用,只有接受不精確性,我們才能打開一扇從未涉足的世界的窗戶。
允許不精確
大數據的簡單演算法比小數據的復雜演算法更有效
紛繁的數據越多越好
混雜性,不是竭力避免,而是標准途徑
新的資料庫設計的誕生
第3章 更好:不是因果關系,而是相關關系
知道「是什麼」就夠了,沒必要知道「為什麼」。在大數據時代,我們不必非得知道現象背後的原因,而是要讓數據自己「發聲」。
關聯物,預測的關鍵
「是什麼」,而不是「為什麼」
改變,從操作方式開始
大數據,改變人類探索世界的方法
第二部分 大數據時代的商業變革
第4章 數據化:一切皆可「量化」
大數據發展的核心動力來源於人類測量、記錄和分析世界的渴望。信息技術變革隨處可見,但是如今信息技術變革的重點在「T」(技術)上,而不是在「I」(信息)上。現在,我們是時候把聚關燈打向「I」,開始關注信息本身了。
數據,從最不可能的地方提取出來
數據化,不是數字化
量化一切,數據化的核心
當文字變成數據
當方位變成數據
當溝通成為數據
一切事物的數據化
第5章 價值:「取之不盡,用之不竭」的數據創新
數據就像一個神奇的鑽石礦,當它的首要價值被發掘後仍能不斷給予。它的真實價值就像漂浮在海洋中的冰山,第一眼只能看到冰山的一角,而絕大部分都隱藏在表面之下。
數據創新1:數據的再利用
數據創新2:重組數據
數據創新3:可擴展數據
數據創新4:數據的折舊值
數據創新5:數據廢氣
數據創新6:開放數據
給數據估值
第6章 角色定位:數據、技術與思維的三足鼎立
微軟以1.1 億美元的價格購買了大數據公司Farecast,而兩年後谷歌則以7 億美元的價格購買了給Farecast 提供數據的ITA Software 公司。如今,我們正處在大數據時代的早期,思維和技術是最有價值的,但是最終大部分的價值還是必須從數據本身來挖掘。
大數據價值鏈的3大構成
大數據掌控公司
大數據技術公司
大數據思維公司和個人
全新的數據中間商
專家的消亡與數據科學家的崛起
大數據,決定企業的競爭力
第三部分 大數據時代的管理變革
第7章 風險:讓數據主宰一切的隱憂
我們時刻都暴露在「第三隻眼」之下:亞馬遜監視著我們的購物習慣,谷歌著監視我們的網頁瀏覽習慣,而微博似乎什麼都知道,不僅竊聽到了我們心中的「TA」,還有我們的社交關系網。
無處不在的「第三隻眼」
我們的隱私被二次利用了
預測與懲罰,不是因為所做,而是因為「將做」
數據獨裁
掙脫大數據的困境
第8章 掌控:責任與自由並舉的信息管理
當世界開始邁向大數據時代時,社會也將經歷類似的地殼運動。在改變人類基本的生活與思考方式的同時,大數據早已在推動人類信息管理准則的重新定位。然而,不同於印刷革命,我們沒有幾個世紀的時間去適應,我們也許只有幾年時間。
管理變革1:個人隱私保護,從個人許可到讓數據使用者承擔責任
管理變革2:個人動因VS預測分析
管理變革3:擊碎黑盒子,大數據程序員的崛起
管理變革4:反數據壟斷大亨
結語 正在發生的未來
大數據並不是一個充斥著演算法和機器的冰冷世界,人類的作用依然無法被完全替代。大數據為我們提供的不是最終答案,只是參考答案,幫助是暫時的,而更好的方法和答案還在不久的未來。
❹ 《DT時代:從「互聯網+」到「大數據×」》pdf下載在線閱讀,求百度網盤雲資源
《DT時代:從「互聯網+」到「大數據×」》(大數據戰略重點實驗室 著;連玉明 編)電子書網盤下載免費在線閱讀
資源鏈接:
鏈接:
書名:DT時代:從「互聯網+」到「大數據×」
作者:大數據戰略重點實驗室 著;連玉明 編
豆瓣評分:4.8
出版社:中信出版集團
出版年份:2015-5-1
頁數:354
內容簡介:
知識就是力量,信息就是能量,數據就是變數。本書全面闡述了人類從IT時代走向DT時代的基本特徵和規律。《DT時代》認為,大數據正成為人類的第二母語,大數據已經成為DT時代一個國家最重要的戰略資源之一。
DT不僅僅是技術的提升,而是思想的革命。《DT時代》首次提出塊數據的數量(volume)、速度(velocity)、多樣(variety)、價值(value)和數聚(variable)的五V空間理論,將對大數據的認知推進到新的高度。《DT時代》認為,塊數據作為大數據的解決方案,實現了從數據到數聚、從解構到重構、從多維到共享的跨越,塊數據社會、慢數據決策和流數據價值三位一體,標志著大數據時代的真正到來。
《DT時代》強調,眾聯、眾包、眾創、眾籌為人們越來越熟知,平等思維、共享思維、扁平化思維、跨界思維、場景思維被越來越多地掌握和運用。把大數據產業作為創新驅動的引領性產業,是實現經濟發展和生態保護雙贏的唯一選擇。
《DT時代》還提出,安全是大數據的生命線。以大數據技術對抗大數據平台安全威脅是大數據成功的必由之路,在此基礎上本書對大數據立法問題進行了探討並提出,必須建立健全安全防護體系,切實強化大數據安全管理和「公開的隱私」的保護。只有更好的保護,才有更好的分享。
精彩書評
★《DT時代》是一部極具影響力的全視角解讀大數據時代的新著。大數據是社會變革的工具,是改變世界的戰略高地。對於大數據,人們的已知遠不如未知,更大的發展和變革在未來。
——美國《中美郵報》
★從IT時代到DT時代,大數據開啟了一個重大的時代轉型和新常態節點。大數據及以大數據為核心的產業價值鏈正在影響和主導新的經濟範式和國家戰略,並為推進中國國家治理體系和治理能力現代化提供強勁的動力。通過閱讀《DT時代》一書或許可以有一個全新的認識。
——日本《中日新報》
★《DT時代》讓我們真切地意識到,大數據改變了我們的思維方式、生產方式、生活方式。我們的精神世界和物質世界都將構建在大數據之上。大數據不僅僅是一門技術,更是一種全新的商業模式,它與雲計算共同構成了下一代經濟的生態系統。
——匈牙利《聯合報》
★《DT時代》一書最大限度地刺激你的大腦神經,它告訴我們,我們正在經歷一場意義堪比工業革命的重大轉變,企業只有洞悉大趨勢,隨勢而變,才能成為數字經濟時代的贏家;個人只有正視當下的沖擊,才能在數據化浪潮里游刃有餘。《DT時代》告訴讀者如何在大數據時代中生存。
——加拿大《世界華人周刊》
★大數據對人類社會發展的推動和人們生活方式的改變是史無前例的。《DT時代》一書提出,DT時代對我們生活的5個新改變,可用5個「H」來概括:以別人為中心的生活更Happy(快樂);透明數據的「劇透」很Harmonious(和諧);越小的企業越High-speed(高速);「活雷鋒」讓「眾」創更Heated(激昂興奮);跨界融合更Hotsy-totsy(精彩)。
——澳大利亞《華夏時報》
★大數據是人類認識世界、改造世界的一次飛躍,蘊含著巨大的價值。通過翔實的案例和嚴謹的敘述,本書向人們揭示了大數據在社會發展中的革命性作用,眾聯、眾包、眾創、眾籌被人們越來越熟知,平台思維、扁平思維、網路思維、跨界思維、精準思維被越來越多地掌握和運用。DT的核心,是關於數據驅動的創新。
——西班牙《僑聲報》
★除了上帝,任何人都必須用數據來說話。大數據浪潮,洶涌來襲,與互聯網的發明一樣,這絕不僅僅是信息技術領域的革命,更是在全球范圍啟動透明政府、加速企業創新、引領社會變革的利器。「大數據戰略」,是當下領航全球的先機。《DT時代》是一本「預言式」的書。
——瑞典《北歐時報》
★馬雲曾經在一次演講中說道:「人類正從IT時代走向DT時代。」IT時代是以自我控制、自我管理為主的時代,而DT時代是以服務大眾、激發生產力為主的時代。這兩者之間看起來似乎是一種技術的差異,但實際上是思想觀念層面的差異。《DT時代》一書提出,大數據成為人類的第二母語,DT不再只是一種技術工具、一種工作手段,它將深刻改變我們的生活方式、生產方式和思維方式。
——英國《僑報》
★當今社會,創新創業的源泉是新思想,而《DT時代》帶給我們的就是新思想。如果說方塊字是華人的第一母語,告訴我們從哪裡來,那麼大數據就是我們的第二母語,指引我們到哪裡去。這個「哪裡」就是未來。誰相信未來,誰就能成功。
——韓國《新華報》
★大數據產業是具有戰略意義的前沿性、高端性、新興性產業,在新一輪科技革命和產業變革中占據重要位置。《DT時代》一書提出,在中國經濟新常態大背景下,以大數據應用為戰略引領,實現從「互聯網+」到「大數據×」的融合效應,打通大數據成果向現實生產力轉化的通道。
——南非《華僑新聞報》
作者簡介:
大數據戰略重點實驗室,是一個跨學科、專業化、國際化、開放型研究平台。實驗室聚集國內外大數據相關專業研究者、管理者和決策者,發揮獨立、客觀、公正、持續的科學精神和創新方法,立足全球大數據發展趨勢和中國大數據發展實踐,以大數據發展的重大理論和現實問題為主攻方向,進行大數據發展全局性、戰略性、前瞻性研究和咨詢,構建「塊數據」理論模型和應用模型。曾研究編制「大數據指數」,出版年度《大數據藍皮書》,建立大數據發展規劃資料庫,舉辦「中國DT產業50人論壇」,搭建開放式協作創新平台、專業化決策咨詢平台、網路化成果轉化平台和國際化合作交流平台,奮力打造具有較大影響力和國際知名度的大數據高端戰略智庫。
連玉明,著名城市專家,教授,工學博士。現任大數據戰略重點實驗室主任,北京國際城市發展研究院院長,貴州大學貴陽創新驅動發展戰略研究院院長。兼任北京市社會科學界聯合會副主席,北京市哲學社會科學京津冀協同發展研究基地首席專家,城市科學研究北京市重點實驗室主任。
❺ 大數據的新演算法:簡化數據分類
大數據的新演算法:簡化數據分類
如今,大數據時代悄然來臨。專家用「大數據」的表達描述大量信息,比如數十億人在計算機、智能手機以及其他電子設備上分享的照片、音頻、文本等數據。當前這種模式為我們的未來展現了前所未有的願景:比如追蹤流感疫情蔓延,實時監控道路交通,處理緊急自然災害等。對人們而言,想要利用這些龐大的數據,首先必須要了解它們,而在此之前我們需要一種快捷有效自動的方式對數據進行分類。
其中一種最為常用的系統,是一系列稱之為簇分析的統計技術,這種技術能依據數據的「相似性」進行數據分組。來自義大利國際高等研究院(SISSA)的兩位研究者基於簡單且強大的原理設計了一種簇分析方法,被證明可以非常有效地解決一些大數據分析中遇到的主要典型問題。
數據集合可以視為多維空間的雲數據點。這些點呈現不同分配方式:或稀疏地分布在一個區域,或密集地分布在另外一個區域。簇分析就是用來有效地鑒別密集型區域,基於基本的准則將數據分為一定數量的重要子集合,每個子集合對應一種分類。
「以一個面部圖像資料庫為例,」SISSA統計與生物物理系教授Alessandro Laio說,「資料庫可能包含同一個人的多張照片,簇分析可以用來歸類同一人的所有照片。這種類型的分析可用自動臉部識別系統來完成。」
「我們試著設計一種較現有方法更為有效的演算法,來解決簇分析中典型的問題。」Laio繼續補充說。
「我們的方法基於一種新的鑒定簇中心,比如子集合,」另一位研究者Alex Rodriguez解釋道,「試想這樣的情形,在無法訪問地圖中,卻不得不鑒定全球所有的城市時,這無疑是一個艱巨的任務。」Rodriguez進一步解釋道,「因此我們在做一種探索式的識別,嘗試尋找一條簡單的規則或是一種捷徑來達成目標。」
「為了確定一個地方是否達到城市級別規模,我們可以讓當地居民計數自己的『鄰居』,換句話說,他房子的100米內住了多少人。一旦得到這個數字,我們繼續去確認每一個居民,他們身邊最近的擁有最多鄰居數的居民。藉助這兩組數據結果交叉的部分,就可以推斷每個人所在居住區域人口的稠密程度,以及擁有鄰居數最多的兩家間距。就全球人口而言,通過自動交叉檢測這些數據,我們能識別代表簇狀中心的個體,這些個體就是不同的城市。」 Laio解釋道。
「我們的演算法能夠精確地完成此類計算,也適用於其他場景,」Rodriguez進一步補充說,此演算法表現相當優異。Rodriguez對此有著深刻理解:「借用面部數據檔案Olivetti Face資料庫,我們測試了自己的數學模型,並獲得了滿意的結果。此系統能夠正確地識別大部分個體,從不產生假陽性結果,這意味著在某些情況下,它可能無法識別事物,但絕不會混淆一個個體與另一個個體。與類似的方法相比,我們的演算法能夠有效地剔除異類,要知道這些異類的數據點與其他數據存在較大差異是會損毀分析結果的。」
以上是小編為大家分享的關於大數據的新演算法:簡化數據分類的相關內容,更多信息可以關注環球青藤分享更多干貨
❻ 大數據時代 無處不在的演算法應用
大數據時代 無處不在的演算法應用
能不能講講演算法在工作中的運用?你個人學習演算法的過程是怎樣的?我對演算法還是有點怕。除此之外,你認為大學是應該多花時間學應用技術還是理論知識呢?
今天就來聊聊我自己學習演算法的過程,以及演算法在實際工作中的應用。
以前,我們認為大數據總是優於好演算法。也就是說,只要數據量足夠大,即使演算法沒有那麼好,也會產生好的結果。
前一陣子「極客時間」 App 發布了一條極客新聞:「演算法比數據更重要,AlphaGo Zero 完勝舊版。」新聞的內容是谷歌人工智慧團隊 DeepMind 發布了新版的 AlphaGo 計算機程序,名為 AlphaGo Zero。這款軟體能夠從空白狀態開始,不需要人類輸入任何命令,便可以迅速自學圍棋,並以 100 比 0 的戰績擊敗了上一代 AlphaGo。
AlphaGo Zero 最大的突破在於實現了「白板理論」。白板理論認為:嬰兒是一塊白板,可以通過後天學習和訓練來提高智力。AI 的先驅圖靈認為,只要能用機器製造一個類似於小孩的 AI,然後加以訓練,就能得到一個近似成人智力,甚至超越人類智力的 AI。
自學成才的 AlphaGo Zero 正是實現了這一理論。AlphaGo 的首席研究員大衛·席爾瓦(David Silver)認為,從 AlphaGo Zero 中可以發現,演算法比所謂的計算或數據量更為重要。事實上,AlphaGo Zero 使用的計算要比過去的版本少一個數量級,但是因為使用了更多原理和演算法,它的性能反而更加強大。
由此可見,在大數據時代,演算法的重要性日漸明晰。一個合格的程序員,必須掌握演算法。
我不知道大家是怎樣一步步開始精通演算法和數據結構的。大二時,我第一次接觸到了《數據結構》,因為從來沒有過這方面的思維訓練,當時的我學習這門課比較費力。那時候接觸到的編程比較少,所以並沒有很多實際經驗讓我欣賞和體味:一個好的數據結構和演算法設計到底 「美」 在哪裡。
開始學習的時候,我甚至有點死記硬背的感覺,我並不知道 「如果不這樣設計」,實際上會出現哪些問題。各種時間和空間復雜度對我而言,也僅僅是一些不能融入到實際問題的數學游戲。至於「每種最壞情況、平均情況的時間空間復雜度與各種排序」,這些內容為什麼那麼重要,當時我想,可能因為考試會考吧。
沒想到後來的時日,我又與演算法重新結緣。可能是因為萊斯大學給的獎學金太高了,所以每個研究生需要無償當五個學期的助教 。好巧不巧,我又被演算法老師兩次挑中當助教。所以,在命運強制下,一本《演算法導論》就這樣被我前前後後仔細學習了不下四遍。這樣的結果是,我基本做過整本書的習題,有些還不止做了一遍。我學習演算法的過程,就是反復閱讀《演算法導論》的過程。
那麼,學習演算法到底有什麼用處呢?
首先,演算法是面試的敲門磚國內的情況我不太清楚,但就矽谷的 IT 公司而言,不但電話面試偏演算法,現場面試至少有兩輪都是考演算法和編程的。
大一些老一些的公司,像谷歌、Facebook、領英、Dropbox 等,都是直接在白板上寫程序。小一些新一些的公司,如 Square、Airbnb 等,都是需要現場上機寫出可運行的程序。Twitter、Uber 等公司則是白板上機兼備,視情況而定。
雖說還有其它考系統設計等部分,但如果演算法沒有打好基礎,第一關就很難過,而且演算法要熟悉到能夠現場短時間內寫出正解,所以很多人准備面試前都需要刷題。
有一次我當面試官,電話面試另外一個人,當時是用 Codepad 共享的方式,讓對方寫一個可運行的正則表達式解析器。45 分鍾過去了,對方並沒有寫出來。我就例行公事地問:「你還有什麼問題想問或者想了解么?」 對方估計因為寫不出程序很有挫敗感,就反問:「你們平時工作難道就是天天寫正則表達式的解析器么?」
一瞬間,我竟無言以對。想了想,我回復說:「不用天天寫。那我再給你 15 分鍾,你證明給我看你還會什麼,或者有什麼理由讓我給你進一步面試的機會?」 對方想了一會,默默掛掉了電話。
老實說,我對目前面試中偏重演算法的程度是持保留意見的。演算法題答得好,並不能說明你有多牛。牛人也有因為不願刷題而馬失前蹄的時候。但是除了演算法測試,顯然也沒有更好的方法佐證候選人的實力;然而怎樣才能最優化面試流程,這也是個討論起來沒完的話題,並且每次討論必定無果而終。
其次,編程時用到的更多是演算法思想,而不是寫具體的演算法說到實際工作中真正需要使用演算法的機會,讓我想一想 —— 這個范圍應該在 10% 的附近遊走。
有些朋友在工作中遇到演算法場景多些,有的少些。更多的時候,是對業務邏輯的理解,對程序語言各種特性的熟練使用,對代碼風格和模式的把握,各種同步非同步的處理,包括代碼測試、系統部署是否正規化等等。需要設計甚至實現一個演算法的機會確實很少,即使用到,現學可能都來得及。
但是熟悉基本演算法的好處在於:如果工作需要讀的一段代碼中包含一些基本演算法思想,你會比不懂演算法的人理解代碼含義更快。讀到一段爛代碼,你知道為什麼爛,爛在哪,怎麼去優化。
當真的需要在程序中設計演算法的時候,熟悉演算法的你會給出一個更為完備的方案,對程序中出現的演算法或比較復雜的時間復雜度問題你會更有敏感性。熟悉演算法你還可以成為一個更優秀的面試官,可以和別的工程師聊天時候不被鄙視。
最後,不精通演算法的工程師永遠不是好工程師當然,除了演算法導論中那些已成為經典的基本演算法以及演算法思想(Divide-and-conquer,Dynamic programming)等,其實我們每天接觸到的各種技術中,演算法無處不在。
就拿人人都會接觸的存儲為例吧,各種不同的資料庫或者鍵值存儲的實現,就會涉及各種分片(Sharding)演算法、緩存失敗(Cache Invalidation)演算法、 鎖定(Locking)演算法,包括各種容錯演算法(多復制的同步演算法)。 雖然說平時不太會去寫這些演算法 —— 除非你恰恰是做資料庫實現的 —— 但是真正做到了解這項技術的演算法細節和實現細節,無論對於技術選型還是對自己程序的整體性能評估都是至關重要的。
舉個例子,當你在系統里需要一個鍵值存儲方案的時候,面對可供選擇的各種備選方案,到底應該選擇哪一種呢?
永遠沒有一種方案在所有方面都是最佳的。就拿 Facebook 開源的 RocksDB 來說吧。了解它歷史的人都知道,RocksDB 是構建在 LevelDB 之上的,可以在多 CPU 伺服器上高效運行的一種鍵值存儲。而 LevelDB 又是基於谷歌的 BigTable 資料庫系統概念設計的。
早在 2004 年,谷歌開始開發 BigTable,其代碼大量的依賴谷歌內部的代碼庫,雖然 BigTable 很牛,卻因此無法開源。2011 年,谷歌的傑夫·迪恩和桑傑·格瑪沃爾特開始基於 BigTable 的思想,重新開發一個開源的類似系統,並保證做到不用任何谷歌的代碼庫,於是就有了 LevelDB。這樣一個鍵值存儲的實現也用在了谷歌瀏覽器的 IndexedDB 中,對於谷歌瀏覽器的開源也提供了一定的支持。
我曾經在文章中提到過 CockroachDB,其實又可以看作是基於 RocksDB 之上的一個分布式實現。從另一個層面上講,CockroachDB 又可以說是 Spanner 的一個開源實現。知道這些,就知道這些資料庫或鍵值存儲其實都同出一系。再來看看 LevelDB 底層的 SSTable 演算法,就知道他們都是針對高吞吐量(high throughput),順序讀 / 寫工作負載(sequential read/write workloads)有效的存儲系統。
當然,一個系統里除了最基本的演算法,很多的實現細節和系統架構都會對性能及應用有很大的影響。然而,對演算法本身的理解和把握,永遠是深入了解系統不可或缺的一環。
類似的例子還有很多,比如日誌分析、打車軟體的調度演算法。
拿我比較熟悉的支付領域來說吧,比如信用卡 BIN 參數的壓縮,從服務端到移動 App 的數據傳輸,為了讓傳輸數據足夠小,需要對數據進行壓縮編碼。
每個國家,比如中國、韓國、墨西哥信用卡前綴格式都不一樣,如何盡量壓縮同時又不會太復雜,以至於影響移動 App 端的代碼復雜度,甚至形成 Bug 等,也需要對各種相關演算法有詳盡地了解,才有可能做出最優的方案。
關於演算法我們來總結一下:
在大數據時代,數據和演算法都同等重要,甚至演算法比計算能力或數據量更為重要。
如何學習演算法呢?讀經典著作、做題,然後在實踐中閱讀和使用演算法。
演算法是面試的敲門磚,可以幫助你得到一份自己喜歡的工作。
寫程序中用到的更多是演算法思想,不是寫具體的演算法。
不精通演算法的工程師永遠不會是一個優秀的工程師,只有對各種相關演算法有詳盡理解,才有可能做出最優的方案。
❼ 大數據常用的各種演算法
我們經常談到的所謂的 數據挖掘 是通過大量的數據集進行排序,自動化識別趨勢和模式並且建立相關性的過程。那現在市面的數據公司都是通過各種各樣的途徑來收集海量的信息,這些信息來自於網站、公司應用、社交媒體、移動設備和不斷增長的物聯網。
比如我們現在每天都在使用的搜索引擎。在自然語言處理領域,有一種非常流行的演算法模型,叫做詞袋模型,即把一段文字看成一袋水果,這個模型就是要算出這袋水果里,有幾個蘋果、幾個香蕉和幾個梨。搜索引擎會把這些數字記下來,如果你想要蘋果,它就會把有蘋果的這些袋子給你。
當我們在網上買東西或是看電影時,網站會推薦一些可能符合我們偏好的商品或是電影,這個推薦有時候還挺准。事實上,這背後的演算法,是在數你喜歡的電影和其他人喜歡的電影有多少個是一樣的,如果你們同時喜歡的電影超過一定個數,就把其他人喜歡、但你還沒看過的電影推薦給你。 搜索引擎和推薦系統 在實際生產環境中還要做很多額外的工作,但是從本質上來說,它們都是在數數。
當數據量比較小的時候,可以通過人工查閱數據。而到了大數據時代,幾百TB甚至上PB的數據在分析師或者老闆的報告中,就只是幾個數字結論而已。 在數數的過程中,數據中存在的信息也隨之被丟棄,留下的那幾個數字所能代表的信息價值,不抵其真實價值之萬一。 過去十年,許多公司花了大價錢,用上了物聯網和雲計算,收集了大量的數據,但是到頭來卻發現得到的收益並沒有想像中那麼多。
所以說我們現在正處於「 數字化一切 」的時代。人們的所有行為,都將以某種數字化手段轉換成數據並保存下來。每到新年,各大網站、App就會給用戶推送上一年的回顧報告,比如支付寶會告訴用戶在過去一年裡花了多少錢、在淘寶上買了多少東西、去什麼地方吃過飯、花費金額超過了百分之多少的小夥伴;航旅縱橫會告訴用戶去年做了多少次飛機、總飛行里程是多少、去的最多的城市是哪裡;同樣的,最後讓用戶知道他的行程超過了多少小夥伴。 這些報告看起來非常酷炫,又冠以「大數據」之名,讓用戶以為是多麼了不起的技術。
實際上,企業對於數據的使用和分析,並不比我們每年收到的年度報告更復雜。已經有30多年歷史的商業智能,看起來非常酷炫,其本質依然是數數,並把數出來的結果畫成圖給管理者看。只是在不同的行業、場景下,同樣的數字和圖表會有不同的名字。即使是最近幾年炙手可熱的大數據處理技術,也不過是可以數更多的數,並且數的更快一些而已。
在大數據處理過程中會用到那些演算法呢?
1、A* 搜索演算法——圖形搜索演算法,從給定起點到給定終點計算出路徑。其中使用了一種啟發式的估算,為每個節點估算通過該節點的較佳路徑,並以之為各個地點排定次序。演算法以得到的次序訪問這些節點。因此,A*搜索演算法是較佳優先搜索的範例。
2、集束搜索(又名定向搜索,Beam Search)——較佳優先搜索演算法的優化。使用啟發式函數評估它檢查的每個節點的能力。不過,集束搜索只能在每個深度中發現最前面的m個最符合條件的節點,m是固定數字——集束的寬度。
3、二分查找(Binary Search)——在線性數組中找特定值的演算法,每個步驟去掉一半不符合要求的數據。
4、分支界定演算法(Branch and Bound)——在多種最優化問題中尋找特定最優化解決方案的演算法,特別是針對離散、組合的最優化。
5、Buchberger演算法——一種數學演算法,可將其視為針對單變數較大公約數求解的歐幾里得演算法和線性系統中高斯消元法的泛化。
6、數據壓縮——採取特定編碼方案,使用更少的位元組數(或是其他信息承載單元)對信息編碼的過程,又叫來源編碼。
7、Diffie-Hellman密鑰交換演算法——一種加密協議,允許雙方在事先不了解對方的情況下,在不安全的通信信道中,共同建立共享密鑰。該密鑰以後可與一個對稱密碼一起,加密後續通訊。
8、Dijkstra演算法——針對沒有負值權重邊的有向圖,計算其中的單一起點最短演算法。
9、離散微分演算法(Discrete differentiation)。
10、動態規劃演算法(Dynamic Programming)——展示互相覆蓋的子問題和最優子架構演算法
11、歐幾里得演算法(Euclidean algorithm)——計算兩個整數的較大公約數。最古老的演算法之一,出現在公元前300前歐幾里得的《幾何原本》。
12、期望-較大演算法(Expectation-maximization algorithm,又名EM-Training)——在統計計算中,期望-較大演算法在概率模型中尋找可能性較大的參數估算值,其中模型依賴於未發現的潛在變數。EM在兩個步驟中交替計算,第一步是計算期望,利用對隱藏變數的現有估計值,計算其較大可能估計值;第二步是較大化,較大化在第一步上求得的較大可能值來計算參數的值。
13、快速傅里葉變換(Fast Fourier transform,FFT)——計算離散的傅里葉變換(DFT)及其反轉。該演算法應用范圍很廣,從數字信號處理到解決偏微分方程,到快速計算大整數乘積。
14、梯度下降(Gradient descent)——一種數學上的最優化演算法。
15、哈希演算法(Hashing)。
16、堆排序(Heaps)。
17、Karatsuba乘法——需要完成上千位整數的乘法的系統中使用,比如計算機代數系統和大數程序庫,如果使用長乘法,速度太慢。該演算法發現於1962年。
18、LLL演算法(Lenstra-Lenstra-Lovasz lattice rection)——以格規約(lattice)基數為輸入,輸出短正交向量基數。LLL演算法在以下公共密鑰加密方法中有大量使用:背包加密系統(knapsack)、有特定設置的RSA加密等等。
19、較大流量演算法(Maximum flow)——該演算法試圖從一個流量網路中找到較大的流。它優勢被定義為找到這樣一個流的值。較大流問題可以看作更復雜的網路流問題的特定情況。較大流與網路中的界面有關,這就是較大流-最小截定理(Max-flow min-cut theorem)。Ford-Fulkerson 能找到一個流網路中的較大流。
20、合並排序(Merge Sort)。
21、牛頓法(Newton's method)——求非線性方程(組)零點的一種重要的迭代法。
22、Q-learning學習演算法——這是一種通過學習動作值函數(action-value function)完成的強化學習演算法,函數採取在給定狀態的給定動作,並計算出期望的效用價值,在此後遵循固定的策略。Q-leanring的優勢是,在不需要環境模型的情況下,可以對比可採納行動的期望效用。
23、兩次篩法(Quadratic Sieve)——現代整數因子分解演算法,在實踐中,是目前已知第二快的此類演算法(僅次於數域篩法Number Field Sieve)。對於110位以下的十位整數,它仍是最快的,而且都認為它比數域篩法更簡單。
24、RANSAC——是「RANdom SAmple Consensus」的縮寫。該演算法根據一系列觀察得到的數據,數據中包含異常值,估算一個數學模型的參數值。其基本假設是:數據包含非異化值,也就是能夠通過某些模型參數解釋的值,異化值就是那些不符合模型的數據點。
25、RSA——公鑰加密演算法。較早的適用於以簽名作為加密的演算法。RSA在電商行業中仍大規模使用,大家也相信它有足夠安全長度的公鑰。
26、Schönhage-Strassen演算法——在數學中,Schönhage-Strassen演算法是用來完成大整數的乘法的快速漸近演算法。其演算法復雜度為:O(N log(N) log(log(N))),該演算法使用了傅里葉變換。
27、單純型演算法(Simplex Algorithm)——在數學的優化理論中,單純型演算法是常用的技術,用來找到線性規劃問題的數值解。線性規劃問題包括在一組實變數上的一系列線性不等式組,以及一個等待較大化(或最小化)的固定線性函數。
28、奇異值分解(Singular value decomposition,簡稱SVD)——在線性代數中,SVD是重要的實數或復數矩陣的分解方法,在信號處理和統計中有多種應用,比如計算矩陣的偽逆矩陣(以求解最小二乘法問題)、解決超定線性系統(overdetermined linear systems)、矩陣逼近、數值天氣預報等等。
29、求解線性方程組(Solving a system of linear equations)——線性方程組是數學中最古老的問題,它們有很多應用,比如在數字信號處理、線性規劃中的估算和預測、數值分析中的非線性問題逼近等等。求解線性方程組,可以使用高斯—約當消去法(Gauss-Jordan elimination),或是柯列斯基分解( Cholesky decomposition)。
30、Strukturtensor演算法——應用於模式識別領域,為所有像素找出一種計算方法,看看該像素是否處於同質區域( homogenous region),看看它是否屬於邊緣,還是是一個頂點。
31、合並查找演算法(Union-find)——給定一組元素,該演算法常常用來把這些元素分為多個分離的、彼此不重合的組。不相交集(disjoint-set)的數據結構可以跟蹤這樣的切分方法。合並查找演算法可以在此種數據結構上完成兩個有用的操作:
查找:判斷某特定元素屬於哪個組。
合並:聯合或合並兩個組為一個組。
32、維特比演算法(Viterbi algorithm)——尋找隱藏狀態最有可能序列的動態規劃演算法,這種序列被稱為維特比路徑,其結果是一系列可以觀察到的事件,特別是在隱藏的Markov模型中。