999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

淺析R語言并行計算在大數據分析中的應用

2016-02-09 03:25:25李加慶
電子測試 2016年23期
關鍵詞:進程數據挖掘語言

李加慶,劉 燕

(中國電子科技集團公司第二十八研究所,空中交通管理系統(tǒng)與技術國家重點實驗室,南京,210007)

淺析R語言并行計算在大數據分析中的應用

李加慶,劉 燕

(中國電子科技集團公司第二十八研究所,空中交通管理系統(tǒng)與技術國家重點實驗室,南京,210007)

介紹了當今最流行的統(tǒng)計編程語言R語言,描述了R語言向量化計算思想以及其并行計算的軟件包的使用過程,探討了R語言在大數據分析中的應用。

R語言;并行計算;大數據;Hadoop

1 R語言簡單介紹

R是一種用于統(tǒng)計分析計算及圖形化展示的開源軟件,同時也是一種編程語言,它廣泛應用于商業(yè)、工業(yè)、政府部門、醫(yī)藥和科研等眾多涉及數據分析的領域,隨著近幾年數據挖掘、大數據等概念不斷發(fā)展,R作為數據分析的利器也越來越多地被人關注。

R使用方式類似于MATLAB和Python,通常運行于交互模式。在這種模式下,R執(zhí)行單條命令并顯示運行結果。啟動R顯示的是歡迎語和R提示符,就是最下方的>符號,顯示內容如下:

R version 3.1.0 (2014-04-10) -- "Spring Dance"

Copyright (C) 2014 The R Foundation for Statistical Computing

Platform: i386-w64-mingw32/i386 (32-bit)

...

Type 'demo()' for some demos, 'help()' for on-line help, or

'help.start()' for an HTML browser interface to help.

Type 'q()' to quit R.

>

這時顯示的窗口叫做R控制臺,在R提示符后面輸入命令按回車即可執(zhí)行,如果有返回結果,將顯示在命令行下方。

2 向量化計算

向量化計算是一種特殊的并行計算的方式,相比于一般程序在同一時間只執(zhí)行一個操作的方式,它可以在同一時間執(zhí)行多次操作,通常是對不同的數據執(zhí)行同樣的一個或一批指令,或者說把指令應用于一個數組/向量。

向量化計算廣泛應用于R和Matlab這樣的現代科學計算軟件,Python的numpy軟件包中也是以向量化計算為基礎。在R語言的基本運算中,向量類型是R語言的核心,R語言代碼或者R交互式會話中中幾乎很少不涉及向量。R語言的向量化運算幾乎可以和底層語言的速度一較高下,并且向量化是天然的并行化方式,如果條件允許,R的向量化編程可以很方便的轉化為并行框架。

如果要對向量x中的每一個元素使用函數f()。在R中直接對x調用f()就能完成。這不僅簡化代碼,還能將代碼運行效率顯著提高到數百倍甚至更多。應用在向量上的函數實際上應用在其每一個元素上。下面的例子中,最左邊的符號>是R提示符,符號<-是R中的賦值符號,c表示“連接”(英文concatenate的簡寫),c(3,1,5)表示把3、1、5三個一元向量連接起來成為一個向量。因為在R中任何數字都是一元向量。

> u <- c(3,1,5)

> v <- c(2,3,7)

> u > v

[1] TRUE FALSE FALSE

最后一行顯示的是u>v命令的結果,可以看出在這里>函數分別運用在u[1]和v[1],得到結構TRUE,然后是u[2]和v[2],得到結果FALSE,以此類推。這里要說明的是,不同于C和Python等語言,R中向量索引從1開始。

利用向量化計算的思想,可以將一些復雜計算簡單化。R中比較常用的函數lapply(X,FUN,…)返回一個與X同樣長度的列表,其中每一個元素都是對X每一個元素調用FUN的結果。lapply函數運用了向量化計算的思想,。lapply是隱式循環(huán)函數,雖然其本身其實并不是向量化函數,但該函數對R語言的并行計算起著很大的作用,或者說R的并行計算很多是lapply函數的多種并行化運用。

3 并行計算

R語言的很多強大功能都是由很多優(yōu)秀的軟件包實現的,關于并行計算有許多軟件包。從版本2.14.0開始,R就內置了parallel包,強化了R的并行計算能力。parallel包整合了早期比較成熟的snow包(snow是Simple Network ofWorkstations的簡稱),以及后期針對Linux系統(tǒng)和Mac OS X系統(tǒng)上應用的multicore包。parallel包可以很容易的在計算集群上實施并行計算,在多個CPU核心的單機上,也能發(fā)揮并行計算的功能。

parallel包的思路和lapply函數很相似,都是將輸入數據分割、計算、整合結果。只不過并行計算是用到了不同的cpu來運算。這樣的計算模型可以使用如下方式來表述:

a、啟動M個“工人”進程(worker),并對每個工人進程初始化;

b、向每個工人進程分發(fā)任務所需數據;

c、將任務粗略的分為M個大小相等的任務塊(chunks),并將這些任務塊發(fā)送到工人進程(包含需要的R代碼);

d、等待所有的工人進程完成計算任務,獲取所有計算結果;

e、對于其他任務重復b-d;

f、關閉所有工人進程。

在parallel包里,對應上述計算模型由核心函數mclapply和parLapply實現,這兩個函數都是對lapply函數的并行化應用。下面舉例說明并行化函數的優(yōu)勢。

例子1,直接使用lapply函數對500萬個元素的向量進行處理,由于數據集比較大,所以消耗時間比較長。

> fun <- function(x) (x)^2 + 1

> system.time(result <- lapply(1:5000000, fun))

user system elapsed 28.13 0.05 28.17

例子2,繼續(xù)使用上面的函數fun,我們來使用parallel包提供處理速度,以parLapply函數在Windows計算機上運行為例,Linux系統(tǒng)中可以用mclapply函數得到類似結果。

> library(parallel)

> cl <- makeCluster(getOption("cl.cores",2)) #打開雙核

> system.time(result <- parLapply(cl,1:5000000, fun)) user system elapsed 4.16 0.18 22.71 > stopCluster(cl)

在這里,makeCluster打開CPU核心的數量由系統(tǒng)核心數目決定,一般由detectCores函數確定系統(tǒng)核心數目,對于Window系統(tǒng)下的Intel處理器,一般使用detectCores(logical = F)來獲得實際的物理核心數量。在并行處理數據時,上面的例子其實將具有500萬個元素的數據集復制了2份,所以占用內存會比較大。

4 R與大數據分析

21世紀人類進入信息社會,傳感器和社會網絡產生海量數據,數據累積的量變引發(fā)質變,越來越多的企業(yè)、行業(yè)和國家以數據為資源進行知識和智力開發(fā),挖掘了數據內在的階值,逐步形成了大數據的概念。由于R語言并行計算存在令人詬病的“吃內存”弱點,所以很多觀點認為R語言處理不了大數據。這里先不論大數據究竟是GB級還是TB或PB級的,甚至說處理不了的數據集才叫大,R語言在處理TB級以上的數據集的確不是強項,可以說效率很低。

R語言的優(yōu)勢在于其眾多優(yōu)秀的數據挖掘軟件包,以及諸多非常強大的繪圖軟件包,如ggplot2之類,深得各行業(yè)數據分析人士的青睞。近些年數據挖掘和大數據等概念的流行,R作為數據分析工具正逐漸被重視。借助于越來越多并行計算及大數據處理相關的R程序包,R可以結合并行計算框架Hadoop來做大數據處理。R語言的模型算法優(yōu)勢加上Hadoop處理大數據的優(yōu)勢,這種結合正慢慢地成為數據挖掘技術的主流。下圖簡單地解釋了R+Hadoop做數據分析時大數據流轉的過程。

5 結語

R語言是主要用于統(tǒng)計分析、繪圖的語言和操作環(huán)境。R是屬于GNU系統(tǒng)的一個自由、免費、開源的軟件,它是一個用于統(tǒng)計計算和統(tǒng)計制圖的優(yōu)秀工具。R語言以軟件包的形式,實現各種統(tǒng)計、建模、分析功能。R語言也存在兩個缺點:一是數據會被一次性讀入內存進行處理,在函數調用會多次拷貝,消耗內存;二是單線程,除了個別的并行計算包,R的大多數包不會利用多個處理器提高計算速度。但是瑕不掩瑜,R語言正在各個行業(yè)數據分析領域發(fā)揮著它強大的分析能力。

[1] Norman Matloff. R語言編程藝術[M]. 機械工業(yè)出版社. 2013.

[2] Q.Ethan McCallum and Stephen Weston. Parallel R[M]. O’Reilly. 2012.

[3] R-core. Package ‘parallel’[M]. 2013.

[4] 張維明,唐九陽.大數據思維[J].指揮信息系統(tǒng)與技術,2015.6(2):1-4

李加慶(1985.01-),男,工程師,主要從事雷達情報處理和飛行安全告警研究

劉燕(1980.11-),女,高級工程師,主要從事雷達情報處理和情報模擬仿真研究

The Application of Language R Parallel Computing in Big Data Analysis

Li Jiaqing,Liu Yan
(The 28th Research Institute of China Electronic Technology Group Corporation,State Key Laboratory of Air Traffic Management System and Technology,NanJing,210007)

This paper introduces the most popular statistical programming language R,describes the use of language R vector computing and its parallel computing software package,and discusses the application of language R in big data analysis.

Language R;parallel computing;big data;Hadoop

猜你喜歡
進程數據挖掘語言
探討人工智能與數據挖掘發(fā)展趨勢
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
讓語言描寫搖曳多姿
基于并行計算的大數據挖掘在電網中的應用
電力與能源(2017年6期)2017-05-14 06:19:37
累積動態(tài)分析下的同聲傳譯語言壓縮
一種基于Hadoop的大數據挖掘云服務及應用
我有我語言
社會進程中的新聞學探尋
民主與科學(2014年3期)2014-02-28 11:23:03
基于GPGPU的離散數據挖掘研究
主站蜘蛛池模板: 国产成人精品亚洲日本对白优播| 国产一区二区三区日韩精品| 欧美亚洲一二三区| 青青草一区二区免费精品| 老熟妇喷水一区二区三区| 欧美国产三级| 伊人久久精品无码麻豆精品| 精品亚洲麻豆1区2区3区| 国产亚洲欧美在线中文bt天堂| 国产精品yjizz视频网一二区| 日韩在线播放中文字幕| 国产在线91在线电影| 五月婷婷综合在线视频| 国产无套粉嫩白浆| 国产精品视频白浆免费视频| 亚洲人成电影在线播放| 国产人成在线视频| 在线无码九区| 亚洲女人在线| 中文字幕亚洲无线码一区女同| 波多野结衣一二三| 久久国产精品77777| 2021国产乱人伦在线播放| 久久久受www免费人成| 午夜在线不卡| 综合天天色| 69精品在线观看| 亚洲无码高清一区| 丁香婷婷久久| 亚洲日本www| 亚洲无码视频图片| 国产一二视频| 欧美精品导航| 香蕉视频在线观看www| 亚洲高清资源| 欧美日韩精品一区二区在线线| 国内精品久久久久久久久久影视 | 国产精品开放后亚洲| 国产日韩精品一区在线不卡| 伊人久久久大香线蕉综合直播| 一级毛片免费高清视频| 日本黄色a视频| 久久综合色天堂av| 亚洲欧美日韩动漫| 国产欧美在线观看精品一区污| 国内精品伊人久久久久7777人| 婷婷综合在线观看丁香| 国产微拍精品| 麻豆精品在线视频| 国产精品视频猛进猛出| 亚洲av片在线免费观看| 欧美成人第一页| 亚洲视频在线青青| 综合成人国产| 在线毛片网站| 日韩一级毛一欧美一国产| 亚洲成人www| 精品伊人久久久大香线蕉欧美| 在线五月婷婷| 亚洲AV无码乱码在线观看代蜜桃 | 91麻豆国产精品91久久久| 亚洲国产日韩一区| 91成人免费观看在线观看| 中文字幕波多野不卡一区| P尤物久久99国产综合精品| 永久在线精品免费视频观看| 久久人妻xunleige无码| 午夜性爽视频男人的天堂| 青青青视频蜜桃一区二区| 久操线在视频在线观看| 婷婷六月天激情| 欧洲高清无码在线| 天天综合网亚洲网站| 在线五月婷婷| 国产成人精品视频一区二区电影| 国精品91人妻无码一区二区三区| 国产一级毛片在线| 精品伊人久久大香线蕉网站| 亚洲日韩高清在线亚洲专区| 亚洲国产欧洲精品路线久久| 一级看片免费视频| 99久久精品无码专区免费|