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

熱線電話:13121318867

登錄
首頁精彩閱讀數(shù)據(jù)挖掘核心算法之一--回歸
數(shù)據(jù)挖掘核心算法之一--回歸
2018-01-10
收藏

數(shù)據(jù)挖掘核心算法之一--回歸

回歸,是一個廣義的概念,包含的基本概念是用一群變量預測另一個變量的方法,白話就是根據(jù)幾件事情的相關程度,用其中幾件來預測另一件事情發(fā)生的概率,最簡單的即線性二變量問題(即簡單線性),例如下午我老婆要買個包,我沒買,那結果就是我肯定沒有晚飯吃;復雜一點就是多變量(即多元線性,這里有一點要注意的,因為我最早以前犯過這個錯誤,就是認為預測變量越多越好,做模型的時候總希望選取幾十個指標來預測,但是要知道,一方面,每增加一個變量,就相當于在這個變量上增加了誤差,變相的擴大了整體誤差,尤其當自變量選擇不當?shù)臅r候,影響更大,另一個方面,當選擇的倆個自變量本身就是高度相關而不獨立的時候,倆個指標相當于對結果造成了雙倍的影響 ),還是上面那個例子,如果我丈母娘來了,那我老婆就有很大概率做飯;如果在加一個事件,如果我老丈人也來了,那我老婆肯定會做飯;為什么會有這些判斷,因為這些都是以前多次發(fā)生的,所以我可以根據(jù)這幾件事情來預測我老婆會不會做晚飯。

大數(shù)據(jù)時代的問題當然不能讓你用肉眼看出來,不然要海量計算有啥用,所以除了上面那倆種回歸,我們經(jīng)常用的還有多項式回歸,即模型的關系是n階多項式;邏輯回歸(類似方法包括決策樹),即結果是分類變量的預測;泊松回歸,即結果變量代表了頻數(shù);非線性回歸、時間序列回歸、自回歸等等,太多了,這里主要講幾種常用的,好解釋的(所有的模型我們都要注意一個問題,就是要好解釋,不管是參數(shù)選擇還是變量選擇還是結果,因為模型建好了最終用的是業(yè)務人員,看結果的是老板,你要給他們解釋,如果你說結果就是這樣,我也不知道問什么,那升職加薪基本無望了),例如你發(fā)現(xiàn)日照時間和某地葡萄銷量有正比關系,那你可能還要解釋為什么有正比關系,進一步統(tǒng)計發(fā)現(xiàn)日照時間和葡萄的含糖量是相關的,即日照時間長葡萄好吃,另外日照時間和產(chǎn)量有關,日照時間長,產(chǎn)量大,價格自然低,結果是又便宜又好吃的葡萄銷量肯定大。再舉一個例子,某石油產(chǎn)地的咖啡銷量增大,國際油價的就會下跌,這倆者有關系,你除了要告訴領導這倆者有關系,你還要去尋找為什么有關系,咖啡是提升工人精力的主要飲料,咖啡銷量變大,跟蹤發(fā)現(xiàn)工人的工作強度變大,石油運輸出口增多,油價下跌和咖啡銷量的關系就出來了(單純的例子,不要多想,參考了一個根據(jù)遙感信息獲取船舶信息來預測糧食價格的真實案例,感覺不夠典型,就換一個,實際油價是人為操控地)。

回歸利器--最小二乘法,牛逼數(shù)學家高斯用的(另一個法國數(shù)學家說自己先創(chuàng)立的,不過沒辦法,誰讓高斯出名呢),這個方法主要就是根據(jù)樣本數(shù)據(jù),找到樣本和預測的關系,使得預測和真實值之間的誤差和最小;和我上面舉的老婆做晚飯的例子類似,不過我那個例子在不確定的方面只說了大概率,但是到底多大概率,就是用最小二乘法把這個關系式寫出來的,這里不講最小二乘法和公式了,使用工具就可以了,基本所有的數(shù)據(jù)分析工具都提供了這個方法的函數(shù),主要給大家講一下之前的一個誤區(qū),最小二乘法在任何情況下都可以算出來一個等式,因為這個方法只是使誤差和最小,所以哪怕是天大的誤差,他只要是誤差和里面最小的,就是該方法的結果,寫到這里大家應該知道我要說什么了,就算自變量和因變量完全沒有關系,該方法都會算出來一個結果,所以主要給大家講一下最小二乘法對數(shù)據(jù)集的要求:

1、正態(tài)性:對于固定的自變量,因變量呈正態(tài)性,意思是對于同一個答案,大部分原因是集中的;做回歸模型,用的就是大量的Y~X映射樣本來回歸,如果引起Y的樣本很凌亂,那就無法回歸

2、獨立性:每個樣本的Y都是相互獨立的,這個很好理解,答案和答案之間不能有聯(lián)系,就像擲硬幣一樣,如果第一次是反面,讓你預測拋兩次有反面的概率,那結果就沒必要預測了

3、線性:就是X和Y是相關的,其實世間萬物都是相關的,蝴蝶和龍卷風(還是海嘯來著)都是有關的嘛,只是直接相關還是間接相關的關系,這里的相關是指自變量和因變量直接相關

4、同方差性:因變量的方差不隨自變量的水平不同而變化。方差我在描述性統(tǒng)計量分析里面寫過,表示的數(shù)據(jù)集的變異性,所以這里的要求就是結果的變異性是不變的,舉例,腦袋軸了,想不出例子,畫個圖來說明。(我們希望每一個自變量對應的結果都是在一個盡量小的范圍)

我們用回歸方法建模,要盡量消除上述幾點的影響,下面具體講一下簡單回歸的流程(其他的其實都類似,能把這個講清楚了,其他的也差不多):

first,找指標,找你要預測變量的相關指標(第一步應該是找你要預測什么變量,這個話題有點大,涉及你的業(yè)務目標,老板的目的,達到該目的最關鍵的業(yè)務指標等等,我們后續(xù)的話題在聊,這里先把方法講清楚),找相關指標,標準做法是業(yè)務專家出一些指標,我們在測試這些指標哪些相關性高,但是我經(jīng)歷的大部分公司業(yè)務人員在建模初期是不靠譜的(真的不靠譜,沒思路,沒想法,沒意見),所以我的做法是將該業(yè)務目的所有相關的指標都拿到(有時候上百個),然后跑一個相關性分析,在來個主成分分析,就過濾的差不多了,然后給業(yè)務專家看,這時候他們就有思路了(先要有東西激活他們),會給一些你想不到的指標。預測變量是最重要的,直接關系到你的結果和產(chǎn)出,所以這是一個多輪優(yōu)化的過程。

第二,找數(shù)據(jù),這個就不多說了,要么按照時間軸找(我認為比較好的方式,大部分是有規(guī)律的),要么按照橫切面的方式,這個就意味橫切面的不同點可能波動較大,要小心一點;同時對數(shù)據(jù)的基本處理要有,包括對極值的處理以及空值的處理。

第三, 建立回歸模型,這步是最簡單的,所有的挖掘工具都提供了各種回歸方法,你的任務就是把前面準備的東西告訴計算機就可以了。

第四,檢驗和修改,我們用工具計算好的模型,都有各種假設檢驗的系數(shù),你可以馬上看到你這個模型的好壞,同時去修改和優(yōu)化,這里主要就是涉及到一個查準率,表示預測的部分里面,真正正確的所占比例;另一個是查全率,表示了全部真正正確的例子,被預測到的概率;查準率和查全率一般情況下成反比,所以我們要找一個平衡點。

第五,解釋,使用,這個就是見證奇跡的時刻了,見證前一般有很久時間,這個時間就是你給老板或者客戶解釋的時間了,解釋為啥有這些變量,解釋為啥我們選擇這個平衡點(是因為業(yè)務力量不足還是其他的),為啥做了這么久出的東西這么差(這個就尷尬了)等等。

回歸就先和大家聊這么多,下一輪給大家聊聊主成分分析和相關性分析的研究,然后在聊聊數(shù)據(jù)挖掘另一個利器--聚類。


數(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); }