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

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀數(shù)據(jù)定義的挑戰(zhàn)
數(shù)據(jù)定義的挑戰(zhàn)
2016-04-03
收藏

數(shù)據(jù)定義的挑戰(zhàn)

從數(shù)據(jù)科學(xué)的角度看,這次航天仼務(wù)的失利是數(shù)據(jù)定義沒(méi)有做好,正所謂“失之毫厘,謬以千里”。數(shù)據(jù)定義是數(shù)據(jù)收集和分析的基礎(chǔ),看似簡(jiǎn)單,想要在實(shí)踐中做好卻并不容易。尤其是在大數(shù)據(jù)系統(tǒng)中(如宇航工程),維護(hù)數(shù)據(jù)定義的正確性和一致性就更具挑戰(zhàn)性了。

數(shù)據(jù)定義有兩個(gè)要素,一個(gè)是關(guān)于定義的概念,另一個(gè)是關(guān)于定義的測(cè)度。前者可被稱為概念定義,而后者可被稱為操作定義。好的數(shù)據(jù)定義應(yīng)該同時(shí)具有清晰的概念定義和操作定義。火星氣候探測(cè)者號(hào)的悲劇就是操作定義沒(méi)有在系統(tǒng)中做到一致性而導(dǎo)致的。


而在另一些應(yīng)用場(chǎng)合,概念定義可能成為問(wèn)題的癥結(jié)所在。一家國(guó)內(nèi)著名電商的大數(shù)據(jù)負(fù)責(zé)人曾經(jīng)告訴我,一個(gè)讓他們非常頭疼的問(wèn)題就是應(yīng)該如何定義什么是一筆“訂單”。從IT人的角度,“訂單”的概念似乎應(yīng)是很簡(jiǎn)單的,那就是顧客一次付款購(gòu)買(mǎi)的全部商品。然而實(shí)際卻遠(yuǎn)比這個(gè)復(fù)雜。比如說(shuō),有時(shí)候下單之后,后臺(tái)發(fā)現(xiàn)某個(gè)產(chǎn)品斷貨,然后征得顧客同意取消了原訂單中的這一項(xiàng)產(chǎn)品。這樣就有了兩種訂單的定義,初始訂單和真正執(zhí)行的訂單。接著在倉(cāng)庫(kù)配送時(shí),一張訂單可能會(huì)被拆成兩次或多次送貨。這樣一個(gè)訂單在運(yùn)營(yíng)記錄中變成了幾張單子,在財(cái)務(wù)那邊也造成了多張發(fā)票。最后,顧客可能發(fā)現(xiàn)自己不喜歡購(gòu)買(mǎi)的一些產(chǎn)品而要求退貨。結(jié)果一張訂單的實(shí)收款往往有別于下單時(shí)的金額和配送時(shí)的金額。這樣以來(lái)一筆訂單到底該如何定義,一張訂單的金額和包含的產(chǎn)品數(shù)到底該如何計(jì)算,就成了個(gè)棘手問(wèn)題。

重要的是,這一數(shù)據(jù)定義不僅是個(gè)技術(shù)問(wèn)題,而且還有戰(zhàn)略層面的意義。從營(yíng)銷(xiāo)和客戶關(guān)系管理的角度看,訂單的定義需要能反映顧客購(gòu)買(mǎi)次數(shù)和(考慮退貨后的)實(shí)際消費(fèi)金額。但是從運(yùn)營(yíng)管理的角度,訂單的定義最好能反映實(shí)際配送成本和配送質(zhì)量(如遞送速度,準(zhǔn)確率等);因此拆分后的實(shí)際配送訂單對(duì)運(yùn)營(yíng)決策更具意義。而在公司高層決策者看來(lái),以上各種的訂單概念都有其重要性和對(duì)應(yīng)的管理作用,因此都希望保留。所以對(duì)數(shù)據(jù)部門(mén)來(lái)說(shuō),挑戰(zhàn)一下就大了起來(lái)。因?yàn)椴粌H要在系統(tǒng)中維護(hù)不同的訂單定義,而且還要注意及時(shí)提醒使用數(shù)據(jù)的決策者當(dāng)前看到的數(shù)據(jù)和分析結(jié)果是基于何種訂單概念。因?yàn)椴煌块T(mén)有自己對(duì)數(shù)據(jù)定義的偏好,在提供數(shù)據(jù)圖表時(shí)還要盡量給出個(gè)性化的定制。

更多的時(shí)候,清晰的概念定義和操作定義都不容易給出。筆者曾經(jīng)給一家著名的跨國(guó)石油公司做過(guò)零售方面的咨詢,是關(guān)于其在全球各個(gè)自有加油站的定價(jià)優(yōu)化。要給某個(gè)加油站做定價(jià)優(yōu)化,知道其競(jìng)爭(zhēng)對(duì)手是誰(shuí)應(yīng)是必不可少的。可是競(jìng)爭(zhēng)對(duì)手到底該怎么定義呢?競(jìng)爭(zhēng)的概念似乎是不言而喻的,但是不言而喻恰恰正是隱患所在。強(qiáng)調(diào)數(shù)據(jù)科學(xué),就是要消除這些隱患,把概念清晰地表達(dá)出來(lái)。

從經(jīng)濟(jì)學(xué)角度,對(duì)于競(jìng)爭(zhēng)對(duì)手的嚴(yán)格定義應(yīng)該是:如果至少有一部分消費(fèi)者在購(gòu)買(mǎi)時(shí)會(huì)考慮在A和B中做出選擇,那么B是A的競(jìng)爭(zhēng)者。但是這一定義卻缺乏可操作性。該公司收集了自己加油站每天每時(shí)段的銷(xiāo)售情況,但只能追蹤同城其它加油站的每天定價(jià)和廣告變化。另外,對(duì)于持品牌積分卡的顧客,他們?cè)谠摴镜南M(fèi)情況能被完整地追蹤,但是他們是否也加過(guò)其它品牌的油就不得而知了。

經(jīng)過(guò)一番仔細(xì)思考,我們決定采用如下的定義:B加油站是A加油站的競(jìng)爭(zhēng)者,如果B的營(yíng)銷(xiāo)活動(dòng)(如價(jià)格降低、廣告等)對(duì)A的銷(xiāo)量有負(fù)面影響。這一定義符合我們對(duì)競(jìng)爭(zhēng)的一般理解,而且還考慮到了數(shù)據(jù)收集的可行性,所需的數(shù)據(jù)都是已經(jīng)有了的??墒羌幢阌辛诉@個(gè)定義,操作起來(lái)還是充滿了挑戰(zhàn)。首先,澘在競(jìng)爭(zhēng)者的范圍該如何定?離A一公里,五公里?還有更遠(yuǎn)的可能性因?yàn)橄M(fèi)者可能會(huì)比較居住地附近的加油站和上班地附近的加油站。大數(shù)據(jù)在這一點(diǎn)上能幫助我們。比如說(shuō)我們可以把網(wǎng)撒得很大,擴(kuò)大到一百公里的半徑,把潛在的競(jìng)爭(zhēng)者都查一遍。

可是下一個(gè)問(wèn)題又來(lái)了:我們?cè)趺磁袛郆的營(yíng)銷(xiāo)活動(dòng)(如價(jià)格變化,廣告等等)對(duì)A的銷(xiāo)量有影響呢?和有些流行大數(shù)據(jù)讀物所宣稱的不同,我們發(fā)現(xiàn)單純看相關(guān)性并不可行。

舉個(gè)例子,由于原油價(jià)格上升,B提了價(jià),而消費(fèi)者也總體減少了開(kāi)車(chē)的里程。這樣從數(shù)據(jù)上我們看到的是B的價(jià)格提升往往伴隨著A的銷(xiāo)量減少,這似乎意味著B(niǎo)不是A的競(jìng)爭(zhēng)者,而事實(shí)則可能正好相反。

最后我們的解決方案是放棄了尋找A的具體競(jìng)爭(zhēng)對(duì)手的想法,而是把所有A以外的加油站的營(yíng)銷(xiāo)活動(dòng)匯總起來(lái)做成一個(gè)A的市場(chǎng)環(huán)境指數(shù),再基于這一指數(shù)做出A的定價(jià)優(yōu)化。其中的細(xì)節(jié)十分復(fù)雜,篇幅所限,就不贅述了。

以上的這些例子讓我們看到數(shù)據(jù)定義的問(wèn)題看似簡(jiǎn)單,也因此往往被忽視,但是這其中的挑戰(zhàn)不可不察。所謂“千里之行,始于足下”,“好的開(kāi)端是成功的一半”,這些用來(lái)描述數(shù)據(jù)定義的重要性決不為過(guò)。要用好大數(shù)據(jù),我們必須對(duì)數(shù)據(jù)定義慎而慎之。

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

若不方便掃碼,搜微信號(hào):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)的第一個(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); }