this post was kindly contributed by 資料科學與r語言 - go there to comment and to read the full post.
在資料探勘和機器學習領域有許多的演算法需要強大的計算能力,如果對大資料進行運算操作,那麼其工作量之大使單個cpu核心難以承受負荷。目前的個人計算機已經具備有多個核心,如果採用平行計算將任務分解到多個核心上執行就能大大減少計算時間。進一步還可以將多台計算機組合成計算集群(cluster)則能使之具備組合金剛般的運算能力。
目前已經有多個r語言擴充套件包專注於高效能計算,彌補了r本身單核心作業的弱點。其中snow(****** network of workstations)是r語言中最流行的並行程式設計包於2023年推出,本文將嘗試用snow來運算k均值聚類。
我們先用單核心運算k均值聚類來看看花費的時間,用到的資料集是mass包中的boston資料,我們希望將其聚為4類,由於k均值聚類的演算法是隨機確定初始中心點,所以為了使之收斂到最優解上需要反覆運算多次。此處nstart引數設定為100000,即為運算次數。
install.packages('snow')library(snow)
system.time()
從結果觀察到本地雙核心組成的計算集群只耗費了34秒即完成了運算。snow也可以用多台計算機構建集群,不過設定蠻複雜,筆者沒有折騰成功。總而言之,snow是一種高階包,它不關注底層的執行緒之間的通訊,而著重於任務的執行易於使用,相對r的單核心弱點是很好的補充。
R語言平行計算程式設計
r語言並行程式設計例項,將資料集rcuters 21578的50個文件賦值100,000次,得到包含500萬個文件的資料庫,查詢正規表示式。tm軟體包是r語言中為文字挖掘提供處理的package,提供資料匯入 語料庫處理 預處理 元資料管理 建立term document矩陣等功能。平行計算 lib...
R與平行計算
本文在creative commons許可證下發布 什麼是平行計算?平行計算,準確地說應該包括高效能計算機和並行軟體兩個方面。不過,近年來隨著個人pc機,廉價機群,以及各種加速卡 nvidia gpu,intel xeon phi,fpga 的快速發展,現在個人電腦已經完全可以和過去的高效能計算機相...
R語言中的平行計算實現
平行計算有顯性並行和隱式並行,介紹可以參考 parallel是比較基礎的,不需要額外安裝,直接載入就行,但是不是很穩定,關於parallel包的介紹可以參考 foreach library foreach library doparallel 分配核心數,這裡獲取了物理核心數 cores detec...