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

熱線電話:13121318867

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

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


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


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


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


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


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

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


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

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


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


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

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


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

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

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


受訪人信息:

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

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

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

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } 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)的第一個參數(shù)驗(yàn)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時完成 $(".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 = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+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); }