R高性能程式設計 R高性能编程

利姆 (Aloysius Lim), William Tjhi

買這商品的人也買了...

相關主題

商品描述

<內容介紹>

R語言是專門為統計學和數據分析開發的解釋型語言,主要用於數學建模、統計計算、數據處理、可視化等幾個方面。近年來,受大數據的影響,R語言備受業界追捧。與此同時,工業界和學術界都越來越要求R具備高效分析和處理大規模數據的能力。但是,由於R本身的設計問題,它能夠有效處理的數據規模和計算複雜度有限。
    為此,利姆、William Tjhi編著的《R高性能編程:用整套解決方案與高超技巧突破性能瓶頸》這本書提供了較為完整的參考方案和技術指南。本書首先解釋了CPU、內存和磁盤I∕O等影響R性能的三個因素,剖析了R在處理大規模數據時出現性能瓶頸的原因。在理解了R的設計原理及其性能限制的基礎之上,本書給出了提升R性能的方法和技術。例如:盡量使用向量化運算避免不必要的計算開銷,預分配內存避免不必要的動態內存分配,使用編譯代碼減少CPU時間,刪除不必要的中間數據釋放內存佔用,通過運行時計算代替永久存儲減少內存使用,使用內存映射文件處理大型數據集,使用並行計算技術優化代碼,以及接入數據庫處理工具,等等。最後,本書提供瞭如何在R中使用Hadoop的方法,以處理和分析大數據。

<章節目錄>
前言
1 理解R的性能:為什麼R程序有時候很慢?
  計算性能的三個限制因素:CPU、RAM和磁盤I/O
  R是運行時解釋的
  R是單線程的
  R需要將全部數據加載到內存
  演算法設計影響時間和空間複雜度
  小結
2 性能分析:衡量代碼的性能
  衡量總運行時間
    使用system.time()衡量運行時間
    使用rbenchmark重複衡量運行時間
    使用microbenchmark衡量運行時間的分佈
  分析運行時間
    使用Rprof()分析函數的性能
    性能分析的結果
  分析內存使用情況
  使用OS工具監控內存使用情況、CPU使用情況和磁盤I/O
  瓶頸的發現及解決
  小結
3 加快R運行的簡單方法
  向量化
  使用內置函數
  預分配內存
  使用更簡單的數據結構
  使用哈希表進行大型數據上的頻繁查找
  去CRAN尋找更快的包
  小結
4 使用編譯代碼加快運行速度
  在運行之前編譯R代碼
    編譯函數
    即時編譯(JIT)R代碼
  在R中使用編譯語言
    前提條件
    以內聯形式包含編譯代碼
    調用外部編譯代碼
    使用編譯代碼的註意事項
  小結
5 使用GPU讓R運行得更快
  GPU上的通用計算
  R和GPU
    安裝gputools
  使用gputools實現快速統計建模
  小結
6 減少內存使用的簡單方法
  重用對象而不多佔用內存
  刪除不再需要的中間數據
  運行時計算值而不是永久性存儲值
  交換活躍數據和非活躍數據
  小結

7 使用有限的內存處理大型數據集
  使用節約內存的數據結構
    更小的數據類型
    稀疏矩陣
    對稱矩陣
    比特向量
  使用內存映射文件並以塊的形式處理數據
    bigmemory包
    ff包
  小結
8 使用並行計算加倍提升性能
  數據並行性 v.s.任務並行性
  實現數據並行的演算法
  實現任務並行的演算法
    集群節點運行同一個任務時
    集群節點運行多個不同任務時
  電腦集群並行執行多個任務
  共享內存並行性 v.s.分佈式內存並行性
  優化並行的性能
  小結
9 將數據處理交給數據庫系統
  將數據抽取到R v.s.在數據庫中處理數據
  在關係型數據庫中使用SQL進行數據預處理
  將R表達式轉化為SQL
    使用dplyr
    使用PivotalR
  在數據庫中運行統計和機器學習演算法
  使用列式數據庫提升性能
  使用數據庫陣列最大化科學計算的性能
  小結
10 R和大數據
  理解Hadoop
  在Amazon Web Services上配置Hadoop
  使用Hadoop批量處理大型數據集
    將數據上傳到HDFS
    使用RHadoop分析HDFS數據
    R中的其他Hadoop包
  小結

目錄大綱