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

熱線電話:13121318867

登錄
首頁精彩閱讀數(shù)據(jù)分析師會被算法取代么
數(shù)據(jù)分析師會被算法取代么
2016-12-07
收藏

數(shù)據(jù)分析師會被算法取代么

《疑犯追蹤》里的那個“機器”,主要工作就是分析人的行為,然后找出一些“目標人員”,再由業(yè)務人員去接觸??瓷先?,這個機器完全是代替了數(shù)據(jù)分析師的工作啊。

拋開美劇里的這種有所夸張的內(nèi)容,在現(xiàn)實中,當一個數(shù)據(jù)分析師跟別人聊天的時候,經(jīng)常會被問一些問題:

Q:數(shù)據(jù)分析人員能做什么?

A:從紛繁的數(shù)據(jù)里提煉出有價值的信息并給公司提供支持啊。

Q:你怎么提煉???

A:寫程序采集啊,清洗啊,用一定的算法計算數(shù)據(jù)內(nèi)部聯(lián)系,根據(jù)業(yè)務做出判斷啊……

Q:如果都是用已有的算法,這些事情為什么不能用現(xiàn)成的流程來做呢?或者為什么不能寫成程序,讓機器自己實現(xiàn)呢?

A:呃…………

作為一名數(shù)據(jù)分析師,跟人聊天聊成這樣,非常常見也非常令人不爽。但我們數(shù)據(jù)分析師是不是僅能手工操作一些算法,等著機器和算法逐步取代我們么?并不是!

照例觀點先行:數(shù)據(jù)分析不等于數(shù)據(jù)分析算法/程序,數(shù)據(jù)分析算法/程序只是分析師手中的工具,數(shù)據(jù)分析要取得成功必須依賴人的力量,數(shù)據(jù)分析師的作用在于根據(jù)對業(yè)務的理解,合理使用分析工具,完成分析目標。

結合業(yè)務的數(shù)據(jù)分析才是科學的,一切只看計算機輸出結果不考慮業(yè)務實際情況的數(shù)據(jù)分析都是無(shua)用(liu)功(mang)。

計算機能實現(xiàn)的算法也好,程序也好,只是數(shù)據(jù)分析中的一部分;如何選擇分析切入點,如何選擇數(shù)據(jù)來源,如何確定算法,如何解讀結論,這些機器統(tǒng)統(tǒng)做不了,需要我們數(shù)據(jù)分析師來解決。

觀點在上邊兩段里已經(jīng)充分展示了,接下來我要愉快的展(che)開(dan)觀點內(nèi)容了:

數(shù)據(jù)分析通常包括幾個階段:提出/發(fā)現(xiàn)問題——獲取并清洗數(shù)據(jù)——建?!{(diào)整優(yōu)化——輸出結論。

這是一個閉環(huán)流程,每一步都需要人工參與,程序會參與中間三步,算法在建模中會用到,而數(shù)據(jù)分析的最重要兩步,問題和結論,目前是不可能完全交給計算機去處理的(其實我個人認為這兩步在真正的人工智能出現(xiàn)前,絕不可能由計算機自動處理),因此數(shù)據(jù)分析人員最大的優(yōu)勢,就是“經(jīng)驗”,也就是業(yè)務理解能力和數(shù)據(jù)分析經(jīng)驗。

詳細解釋一下數(shù)據(jù)分析的幾個階段:

提出/發(fā)現(xiàn)問題階段:

大多數(shù)時候,數(shù)據(jù)分析都是為了解決一個問題(鎖定某個產(chǎn)品的目標客戶,對同樣的人群做營銷活動用A方案好還是B方案好,等等),或者驗證一個猜想(不讓旅游者上班高峰坐地鐵是不是會大幅度緩解擁擠現(xiàn)象,啤酒和尿布放一起是不是真的會提升啤酒的銷售額,等等),總之需要達到一個目標。即使是探索性分析(拿著一大堆數(shù)據(jù)看看能不能找出點什么結論),那也需要先預設一個或多個目標作為切入點,然后在探索過程中逐步修正。

提出和發(fā)現(xiàn)問題的過程,交給計算機干不太靠譜,首先計算機不會提出問題(因為笨),其次計算機能發(fā)現(xiàn)的問題也一定是人已經(jīng)發(fā)現(xiàn)了的問題(還是因為笨),需要先有人來設定規(guī)則,然后計算機才能根據(jù)規(guī)則發(fā)現(xiàn)問題。而數(shù)據(jù)分析師,就是設定規(guī)則的人。

目標和規(guī)則的設定,一定要基于業(yè)務,這樣分析結果才有用,否則會得出正確但無用的結論。

舉個栗子,訂閱報紙的數(shù)據(jù)扔給計算機去分析關聯(lián)關系,看有哪些報紙可以進行組合促銷,最后得出個光明日報和人民日報關聯(lián)系數(shù)90%多,所以這倆報紙可以組合起來賣,問題是這倆報紙本來就是要求黨政機關訂閱的黨報,組合起來毫無意義,該訂的還是要訂,不訂的還是不訂,這就是典型的正確但無用的分析結果。

懂業(yè)務能讓分析師少做這種無用功,但是計算機要想懂業(yè)務就得由人來教,教還不一定能教會,教完了又不能觸類旁通(報紙的關聯(lián)算法拿到電商去完全不能用?。?,這樣的計算機永遠都不如分析師懂業(yè)務。

獲取并清洗數(shù)據(jù):

這個階段計算機參與的較多,分析師的工作是指出拿什么數(shù)據(jù),拿哪些字段,數(shù)據(jù)獲取到以后用哪些規(guī)則進行清洗整理。

如果數(shù)據(jù)源不變,需要重復或定期進行分析時,這個階段的規(guī)則可以固化,由計算機來自動執(zhí)行,但規(guī)則仍然是由分析師來制定的。

建模、調(diào)整優(yōu)化:

這兩個階段中,分析算法出場了,描述分析、關聯(lián)分析、回歸、分類、聚類、時間序列,每個類別里都有一大堆的固定算法,分析師不能通過手算得出結論,需要借助封裝好算法的分析工具(圖形化的SPSS,命令行方式的R,等等),看來這一階段計算機要超越分析師了!

等等,建模哪有這么簡單,計算機解決不了的問題一大堆呢:什么時候用哪個類別的算法(該做分類還是聚類),同一類別不同算法哪個更適合當前情況(K-means還是兩步聚類,這是個問題),同一個算法怎么調(diào)整參數(shù)能使效果更好(到底該把用戶聚成幾類呢),算法輸出的結果是否正常(有一部分數(shù)據(jù)出了問題導致分析結果出現(xiàn)偏差)等等。

這些問題計算機統(tǒng)統(tǒng)不知道耶,需要分析師來告訴它該做什么事。

打個比方,數(shù)據(jù)分析就是打仗,算法是機槍、大炮、坦克等等技術兵器,分析師是士兵、炮手、駕駛員(操縱者),不能因為士兵自己不能一分鐘吐出幾百發(fā)子彈或者炮手自己不能一下子拆掉一個碉堡,就讓機槍大炮坦克把操縱者扔下,自己上陣去打仗……就算是無人機,那也得有個拿遙控器的駕駛員蹲在辦公室里操作啊……

算法始終只是工具,數(shù)據(jù)分析效果如何還是要看用工具的分析師功力如何。

一個做過幾十個分析項目的分析師,功力通常來說比剛入行的分析師或者純開發(fā)人員要深厚一些(極少數(shù)天賦異稟的不算……),選算法調(diào)參數(shù)建模型的能力更強一些,分析出來的結果也會相對靠譜一些——沒錯,經(jīng)驗在這兩個階段就是優(yōu)勢。
輸出結論:

這一階段計算機的工作已經(jīng)基本完成了,對模型輸出的數(shù)據(jù)進行解讀,那完全是分析師的天下——同一份數(shù)據(jù)給不同的分析師,可能會得出不同的結論,很多時候分析師并不單單根據(jù)數(shù)據(jù)本身得出結論,還要結合很多外界因素來修正結論。

分析師的經(jīng)驗越豐富,擁有的有效信息量越多,得出的結論就越接近事實(之所以用接近,是因為對數(shù)據(jù)解讀的準確度永遠達不到100%,影響結果的因素太多了,比如一個企業(yè)銷售額連續(xù)增長10年,分析師根據(jù)公司數(shù)據(jù)和市場情況判斷下一年還會繼續(xù)增長,結果老板出事跑路了,企業(yè)直接倒閉),而這個過程是計算機目前沒辦法自主進行的,商業(yè)智能系統(tǒng)做的再好,也需要由分析師來設定規(guī)則,告訴計算機在什么時間需要做什么。

也許隨著大數(shù)據(jù)和人工智能的發(fā)展,有一天計算機可以完全不依賴人工設定的規(guī)則(不需要確定數(shù)據(jù)來源,不需要選擇算法和模型,不需要人工干預來修正模型,等等),自己對數(shù)據(jù)進行全方位的分析,加入所有因素的影響,并輸出準確度非常高的報告,只有到那時候,分析師才會失業(yè)啊。

不過,真到了那一天,恐怕不光是分析師失業(yè)的問題吧……


數(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(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 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){ //倒計時完成 $(".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); }