99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀談?wù)凪ATLAB大數(shù)據(jù)處理
談?wù)凪ATLAB大數(shù)據(jù)處理
2016-02-25
收藏

近年來(lái),隨著大數(shù)據(jù)在Google、Facebook等企業(yè)的成功應(yīng)用,很多傳統(tǒng)企業(yè)和初創(chuàng)公司都轉(zhuǎn)向應(yīng)用大數(shù)據(jù)技術(shù)挖掘數(shù)據(jù)金礦?,F(xiàn)有企業(yè)累計(jì)了大量的工業(yè)數(shù)據(jù),但是大數(shù)據(jù)的開(kāi)發(fā)的復(fù)雜流程阻礙了企業(yè)快速?gòu)墓I(yè)數(shù)據(jù)和商業(yè)數(shù)據(jù)中挖掘價(jià)值。行業(yè)專(zhuān)家(算法研究者)精通行業(yè)數(shù)據(jù)分析,卻受限于編程復(fù)雜度和缺乏快速部署算法的方法,使很多創(chuàng)造性想法無(wú)法得到有效實(shí)施。在這個(gè)技術(shù)飛躍的時(shí)代,擁有大量工業(yè)數(shù)據(jù)的企業(yè)和技術(shù)專(zhuān)家們應(yīng)該如何開(kāi)展大數(shù)據(jù)技術(shù)的研發(fā)工作?


大數(shù)據(jù)從業(yè)者在數(shù)據(jù)搜集、數(shù)據(jù)探索、開(kāi)發(fā)和部署的每一個(gè)階段都會(huì)碰到各式各樣的難題,不得不在不同的開(kāi)發(fā)環(huán)境中進(jìn)行切換,并為此付出了大量額外的時(shí)間和人力成本。在現(xiàn)有的數(shù)據(jù)資源上,如何對(duì)數(shù)據(jù)進(jìn)行清洗、整合以及探索性研究,正是數(shù)據(jù)專(zhuān)家們發(fā)揮專(zhuān)長(zhǎng)的地方;而這個(gè)過(guò)程所耗費(fèi)的時(shí)間往往是編程實(shí)現(xiàn)的好幾倍。今天多數(shù)的大數(shù)據(jù)方案都是依托Hadoop環(huán)境來(lái)做結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)處理,如何把自己的Hadoop算法快速部署到實(shí)際的生產(chǎn)環(huán)境當(dāng)中去,對(duì)很多企業(yè)的大數(shù)據(jù)部署也提出了挑戰(zhàn)。


MathWorks公司的MATLAB軟件在科研和工業(yè)生產(chǎn)上擁有大量的用戶,而且在數(shù)據(jù)分析領(lǐng)域,MATLAB作為傳統(tǒng)數(shù)據(jù)分析專(zhuān)業(yè)軟件獨(dú)樹(shù)一幟。最近,針對(duì)大數(shù)據(jù)研發(fā)過(guò)程中關(guān)鍵點(diǎn),基于大家熟悉的 MATLAB 開(kāi)發(fā)環(huán)境,該公司提出一個(gè)完整的解決方案。下面我們就來(lái)看看他們關(guān)于大數(shù)據(jù)分析的流程,來(lái)自MathWorks公司的資深應(yīng)用工程師陳建平對(duì)記者做了相關(guān)介紹。


從流程角度上看,整個(gè)大數(shù)據(jù)處理可以分成4個(gè)主要步驟。第一步是數(shù)據(jù)的搜集和存儲(chǔ);第二步是通過(guò)數(shù)據(jù)分析技術(shù)對(duì)數(shù)據(jù)進(jìn)行探索性研究,包括無(wú)關(guān)數(shù)據(jù)的剔除即數(shù)據(jù)清洗,和尋找數(shù)據(jù)的模式探索數(shù)據(jù)的價(jià)值所在; 第三步是在基本數(shù)據(jù)分析的基礎(chǔ)上,選擇和開(kāi)發(fā)數(shù)據(jù)分析算法,對(duì)數(shù)據(jù)進(jìn)行建模。從數(shù)據(jù)中提取有價(jià)值的信息,這其實(shí)是真正的大數(shù)據(jù)的學(xué)習(xí)過(guò)程。這其中會(huì)涉及很多算法和技術(shù),比如機(jī)器學(xué)習(xí)算法等; 最后一步是對(duì)模型的部署和應(yīng)用,即把研究出來(lái)的模型應(yīng)用到生產(chǎn)環(huán)境之中。


我們分別從流程和技術(shù)兩個(gè)角度來(lái)看一下MATLAB開(kāi)發(fā)大數(shù)據(jù)應(yīng)用的特點(diǎn)。從流程上,我們可以把大數(shù)據(jù)應(yīng)用的過(guò)程分成四步。


第一步,數(shù)據(jù)的獲取和存儲(chǔ)和訪問(wèn)。MathWorks的產(chǎn)品是以工具箱的形式來(lái)組合的,在現(xiàn)有MATLAB 平臺(tái)上已經(jīng)有80多個(gè)專(zhuān)業(yè)工具箱和300多個(gè)第三方廠商工具箱。 從數(shù)據(jù)搜集和訪問(wèn)角度,MATLAB 支持以下幾種搜集和訪問(wèn)方式:
數(shù)據(jù)庫(kù)的訪問(wèn)。數(shù)據(jù)庫(kù)是現(xiàn)有的大量數(shù)據(jù),尤其是工業(yè)數(shù)據(jù)的默認(rèn)存儲(chǔ)格式。目前最新版本的MATLAB即支持對(duì)結(jié)構(gòu)化數(shù)據(jù)庫(kù)的訪問(wèn),同時(shí)支持非結(jié)構(gòu)數(shù)據(jù)庫(kù)的訪問(wèn),比如Mango DB,用戶無(wú)需學(xué)習(xí)SQL等專(zhuān)業(yè)語(yǔ)言,即可通過(guò)MATLAB語(yǔ)言進(jìn)行數(shù)據(jù)庫(kù)的訪問(wèn)。另外,MATLAB也支持從專(zhuān)業(yè)金融數(shù)據(jù)庫(kù)中直接抓取金融數(shù)據(jù)。
分布式文件系統(tǒng)。從2014b版本開(kāi)始,通過(guò)引入一個(gè)叫做datastore的數(shù)據(jù)結(jié)構(gòu),MATLAB 已經(jīng)能夠支持對(duì)Hadoop HDFS文件系統(tǒng)的訪問(wèn),并且統(tǒng)一了文件、文件夾、分布式數(shù)據(jù)庫(kù)的訪問(wèn)接口,使用者無(wú)需改動(dòng)算法即可訪問(wèn)不同的數(shù)據(jù)來(lái)源。

硬件數(shù)據(jù)的采集。MATLAB一直以來(lái)都硬件設(shè)備有著良好的支持,從專(zhuān)業(yè)數(shù)據(jù)采集設(shè)備,比如數(shù)據(jù)采集卡和測(cè)試儀器,到通用硬件,比如攝像機(jī),都有統(tǒng)一的訪問(wèn)接口支持直接從MATLAB語(yǔ)言中抓取數(shù)據(jù)。結(jié)合不同的數(shù)據(jù)搜集、存儲(chǔ)和訪問(wèn)手段,在一個(gè)平臺(tái)中就能夠完成大多數(shù)數(shù)據(jù)搜集和整理的工作。


第二步,數(shù)據(jù)的組織和基礎(chǔ)分析。這一部分需要介入相應(yīng)的統(tǒng)計(jì)手段,也是行業(yè)專(zhuān)家最擅長(zhǎng)的地方。行業(yè)專(zhuān)家可以結(jié)合對(duì)行業(yè)的理解,探尋數(shù)據(jù)的價(jià)值所在。行業(yè)專(zhuān)家對(duì)自身工作領(lǐng)域非常熟悉,了解自身行業(yè)數(shù)據(jù)特點(diǎn),但是未必對(duì)通用編程語(yǔ)言比如C或者Java充分熟悉。
MATLAB作為工業(yè)普及的語(yǔ)言,以其語(yǔ)法簡(jiǎn)單和可視化功能強(qiáng)大而深受工業(yè)和研究人員的喜愛(ài)。最新的MATLAB提供了大量圖形化傻瓜工具,可以幫助行業(yè)專(zhuān)家進(jìn)行諸如數(shù)據(jù)導(dǎo)入、數(shù)據(jù)清洗數(shù)據(jù)可視化分析。更重要的一個(gè)特點(diǎn)是,這些工具大部分支持通過(guò)搜集操作行為,自動(dòng)生成MATLAB腳本或者函數(shù)的能力,輔助自動(dòng)化開(kāi)發(fā)。即使你不了解編程細(xì)節(jié),也能夠得到高校的代碼,大大提升了開(kāi)發(fā)效率。

MATLAB的工具箱覆蓋了各個(gè)不同的領(lǐng)域,行業(yè)專(zhuān)家可以采用相應(yīng)的工具箱,對(duì)數(shù)據(jù)進(jìn)行初步處理和特征探索,比如通過(guò)濾波等信號(hào)處理手段濾去噪聲,或者通過(guò)頻譜檢測(cè),尋找語(yǔ)音數(shù)據(jù)的囂叫。這是通用數(shù)據(jù)分析工具無(wú)法替代的。


第三步,數(shù)據(jù)建模。經(jīng)過(guò)數(shù)據(jù)清洗、探索性分析,目的就是為了建立一個(gè)有效模型用于工業(yè)生產(chǎn)。典型的手段是求助于統(tǒng)計(jì)分析方法和機(jī)器學(xué)習(xí)算法,尋求合理的數(shù)學(xué)模型。一直以來(lái),MATLAB就是一個(gè)傳統(tǒng)的數(shù)據(jù)分析平臺(tái),最近幾年MathWorks結(jié)合最新的機(jī)器學(xué)習(xí)算法和深度學(xué)習(xí)算法,推出了升級(jí)了神經(jīng)網(wǎng)絡(luò)和統(tǒng)計(jì)工具箱。機(jī)器學(xué)習(xí)不再需要編寫(xiě)大量的代碼了,通過(guò)采用分類(lèi)和聚類(lèi)App,可以對(duì)數(shù)據(jù)進(jìn)行拖放就可以完成機(jī)器學(xué)習(xí)的過(guò)程。直接從App分析結(jié)果中就可以得到最佳的預(yù)測(cè)模型。


最后一步,應(yīng)用發(fā)布。如何把計(jì)算模型發(fā)布到生產(chǎn)環(huán)境中,是一件費(fèi)事費(fèi)力的工作。傳統(tǒng)算法開(kāi)發(fā)流程中,算法工程師開(kāi)發(fā)完算法后,把算法通過(guò)文本或者偽代碼的方式提交給軟件工程師,軟件工程師再通過(guò)通用編程語(yǔ)言對(duì)算法進(jìn)行實(shí)現(xiàn)。這種分段式開(kāi)發(fā)方法非常容易帶來(lái)錯(cuò)誤,而且開(kāi)發(fā)效率也相對(duì)地下。

現(xiàn)在,行業(yè)專(zhuān)家可以在前一個(gè)階段得到的模型基礎(chǔ)上,通過(guò)App和幾個(gè)鼠標(biāo)點(diǎn)擊就可以把MATLAB代碼發(fā)布成可執(zhí)行程序、動(dòng)態(tài)鏈接庫(kù)、JAVA或者.NET包。部署工程師可以在這些結(jié)果上進(jìn)行集成即可,減少了重新開(kāi)發(fā)潛在的錯(cuò)誤,加速了開(kāi)發(fā)迭代的過(guò)程。


這4步構(gòu)成了一個(gè)完整的大數(shù)據(jù)應(yīng)用流程,行業(yè)專(zhuān)家可以在一個(gè)熟悉的環(huán)境中完成整個(gè)復(fù)雜數(shù)據(jù)分析的過(guò)程。
從技術(shù)進(jìn)展的角度,MATLAB針對(duì)不同的數(shù)據(jù)規(guī)模和不同的數(shù)據(jù)復(fù)雜度,也提供了不同的大數(shù)據(jù)支持。下面的圖對(duì)從數(shù)據(jù)復(fù)雜度和數(shù)據(jù)規(guī)模角度對(duì)數(shù)據(jù)進(jìn)行了一個(gè)簡(jiǎn)單分類(lèi)。

陳建平介紹說(shuō):“針對(duì)不同的數(shù)據(jù)類(lèi)型和規(guī)模,我們應(yīng)該有不同的處理方式,才能夠達(dá)到處理和效率的最佳化。根據(jù)數(shù)據(jù)規(guī)模,把數(shù)據(jù)劃分成能夠加載入集群內(nèi)存中的數(shù)據(jù),和無(wú)法加載到集群內(nèi)存的數(shù)據(jù); 根據(jù)數(shù)據(jù)的復(fù)雜度,我們把數(shù)據(jù)可以分成能夠分片并行處理的簡(jiǎn)單數(shù)據(jù)和無(wú)法分片的復(fù)雜數(shù)據(jù)。針對(duì)每一種組合,MATLAB都應(yīng)該要有不同的解決方法,并且應(yīng)該提供足夠傻瓜的處理技術(shù)。”
在上述的二維劃分中,我們可以把數(shù)據(jù)類(lèi)型總結(jié)為三大類(lèi): 第一類(lèi)為簡(jiǎn)單數(shù)據(jù),即數(shù)據(jù)能夠被劃片,能夠被多個(gè)節(jié)點(diǎn)同時(shí)處理。第二類(lèi)為能夠支持MapReduce操作的數(shù)據(jù)。第三類(lèi)為復(fù)雜數(shù)據(jù),這一類(lèi)數(shù)據(jù)傳統(tǒng)上屬于高性能計(jì)算的領(lǐng)域,需要專(zhuān)門(mén)的編程和環(huán)境才能夠處理。
第一類(lèi)問(wèn)題是最簡(jiǎn)單的,也是最容易被簡(jiǎn)單編程實(shí)現(xiàn)的。理論上,我們通過(guò)手工或者自動(dòng)化把數(shù)據(jù)劃分成單機(jī)能夠處理的數(shù)據(jù)片,啟動(dòng)足夠的計(jì)算資源即可。實(shí)際上,對(duì)這類(lèi)問(wèn)題的處理,在需要考慮計(jì)算效率的地方,還是需要一定的編程技巧要求的,比如如何做到負(fù)載均衡就是一個(gè)相對(duì)復(fù)雜的問(wèn)題。MATLAB中通過(guò)并行計(jì)算工具箱和分布式計(jì)算服務(wù)器,可以用一個(gè) ”parfor” 語(yǔ)句即可實(shí)現(xiàn)這類(lèi)數(shù)據(jù)的并行化。
第二類(lèi)問(wèn)題可以通過(guò)MapReduce算法框架可以解決的問(wèn)題。一般這類(lèi)問(wèn)題的數(shù)據(jù)是存放在HDFS之中,客戶已經(jīng)有了Hadoop環(huán)境,當(dāng)時(shí)如何編寫(xiě)MapReduce算法是一個(gè)難點(diǎn),需要一定的Java或者Python的相關(guān)編程經(jīng)驗(yàn),并且熟悉相應(yīng)的API。在MATLAB中,你可以通過(guò) “datastore” 直接訪問(wèn)本地文件、本地文件夾、HDFS文件、以及HDFS文件夾。工程師只要書(shū)寫(xiě)相應(yīng)的MATLAB Map函數(shù)和 MATLAB語(yǔ)言的 Reduce 函數(shù)即可調(diào)用Hadoop環(huán)境進(jìn)行MapReduce運(yùn)算。在完成計(jì)算后,可以把相應(yīng)的MATLAB代碼放到部署App中,一鍵部署到MapReduce生產(chǎn)環(huán)境中。
最后一類(lèi)問(wèn)題最復(fù)雜,數(shù)據(jù)無(wú)法分割成片段,也無(wú)法通過(guò)MapReduce模型建模。一個(gè)典型的應(yīng)用是大規(guī)模矩陣的分析。MATLAB中可以通過(guò)并行計(jì)算工具箱和MATLAB分布式計(jì)算服務(wù)器直接對(duì)陣列運(yùn)算并行化。這類(lèi)運(yùn)算可以在客戶端上對(duì)集群的計(jì)算過(guò)程進(jìn)行交互式控制,并行化編程就像單機(jī)串行運(yùn)算一樣簡(jiǎn)單。

不管從大數(shù)據(jù)的處理流程上,還是從數(shù)據(jù)規(guī)模上,作為一個(gè)完整的開(kāi)發(fā)平臺(tái),MATLAB提供了從數(shù)據(jù)搜集、數(shù)據(jù)分析、數(shù)據(jù)建模和應(yīng)用部署等全面解決方案。用戶可以不用過(guò)多關(guān)注編程細(xì)節(jié),只需把有限的時(shí)間和資源投入到有效的分析過(guò)程中,讓大數(shù)據(jù)應(yīng)用開(kāi)發(fā)成為一件簡(jiǎn)單輕松的事情。


受訪人信息:

陳建平,MathWorks 中國(guó)資深技術(shù)專(zhuān)家,專(zhuān)注于工程大數(shù)據(jù)分析和高性能計(jì)算領(lǐng)域。擁有北京大學(xué)學(xué)士和碩士學(xué)位,并于2008年加入MathWorks公司。之前,他在NTT DoCoMo從事4G算法研究和無(wú)線系統(tǒng)設(shè)計(jì)。加入MathWorks后,專(zhuān)注于高性能計(jì)算和工程數(shù)據(jù)的分析和建模,并深入探索工程數(shù)據(jù)在大數(shù)據(jù)領(lǐng)域的應(yīng)用。他擁有十余年數(shù)值算法設(shè)計(jì)、實(shí)現(xiàn),以及對(duì)大規(guī)模工程數(shù)據(jù)分析和建模經(jīng)驗(yàn);尤其對(duì)MATLAB與不同編程語(yǔ)言,以及Hadoop和Spark等大數(shù)據(jù)架構(gòu)的結(jié)合有較為深入的研究。

數(shù)據(jù)分析咨詢(xún)請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢(xún)
客服在線
立即咨詢(xún)
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }