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

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀從一個(gè)R語(yǔ)言案例學(xué)線性回歸
從一個(gè)R語(yǔ)言案例學(xué)線性回歸
2017-07-10
收藏

從一個(gè)R語(yǔ)言案例學(xué)線性回歸

數(shù)據(jù)分析師用r語(yǔ)言做數(shù)據(jù)分析的時(shí)候會(huì)很多,也有很多數(shù)據(jù)分析師對(duì)于用r語(yǔ)言不是很了解,下面就談?wù)撘幌拢?

線性回歸簡(jiǎn)介:如下圖所示,如果把自變量(也叫independent variable)和因變量(也叫dependent variable)畫在二維坐標(biāo)上,則每條記錄對(duì)應(yīng)一個(gè)點(diǎn)。線性回規(guī)最常見(jiàn)的應(yīng)用場(chǎng)景則是用一條直線去擬和已知的點(diǎn),并對(duì)給定的x值預(yù)測(cè)其y值。而我們要做的就是找出一條合適的曲線,也就是找出合適的斜率及縱截矩。

SSE & RMSE

上圖中的SSE指sum of squared error,也即預(yù)測(cè)值與實(shí)際值之差的平方和,可由此判斷該模型的誤差。但使用SSE表征模型的誤差有些弊端,比如它依賴于點(diǎn)的個(gè)數(shù),且不好定其單位。所以我們有另外一個(gè)值去稱量模型的誤差。RMSE(Root-Mean-Square Error)。

由N將其標(biāo)準(zhǔn)化,并且其單位與變量單位相同。

案例

許多研究表明,全球平均氣溫在過(guò)去幾十年中有所升高,以此引起的海平面上升和極端天氣頻現(xiàn)將會(huì)影響無(wú)數(shù)人。本文所講案例就試圖研究全球平均氣溫與一些其它因素的關(guān)系。

本例我們以1983年5月到2006年12月的數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)集,以之后的數(shù)據(jù)作為測(cè)試數(shù)據(jù)集。

數(shù)據(jù)

首先加載數(shù)據(jù)

temp <- read.csv("climate_change.csv")

數(shù)據(jù)解釋

Year 年份 M

Month 月份 T

emp 當(dāng)前周期內(nèi)的全球平均氣溫與一個(gè)參考值之差

CO2, N2O,CH4,CFC.11,CFC.12:這幾個(gè)氣體的大氣濃度 Aerosols

模型選擇

線性回歸模型保留兩部分。

"數(shù)據(jù)分析師'選擇目標(biāo)feature。我們數(shù)據(jù)中,有多個(gè)feature,但并非所有的feature都對(duì)預(yù)測(cè)有幫助,或者并非所有的feature都需要一起工作來(lái)做預(yù)測(cè),因此我們需要篩選出最小的最能預(yù)測(cè)出接近事實(shí)的feature組合。

確定feature系數(shù)(coefficient)。feature選出來(lái)后,我們要確定每個(gè)feature對(duì)預(yù)測(cè)結(jié)果所占的權(quán)重,這個(gè)權(quán)重即為coefficient

結(jié)合實(shí)例選擇模型

初始選擇所有feature
選擇所有feature作為第一個(gè)model1,并使用summary函數(shù)算出其Adjusted R2為0.7371。

model1 <- lm(Temp ~ MEI + CO2 + CH4 + N2O + CFC.11 + CFC.12 + TSI + Aerosols, temp) summary(model1)



逐一去掉feature

在model1中去掉任一個(gè)feature,并記下相應(yīng)的Adjusted R2如下


Feature

Adjusted R2

CO2 + CH4 + N2O + CFC.11 + CFC.12 + TSI + Aerosols

0.6373

MEI + CH4 + N2O + CFC.11 + CFC.12 + TSI + Aerosols

0.7331

MEI + CO2 + N2O + CFC.11 + CFC.12 + TSI + Aerosols

0.738

MEI + CO2 + CH4 + CFC.11 + CFC.12 + TSI + Aerosols

0.7339

MEI + CO2 + CH4 + N2O + CFC.12 + TSI + Aerosols

0.7163

MEI + CO2 + CH4 + N2O + CFC.11 + TSI + Aerosols

0.7172

MEI + CO2 + CH4 + N2O + CFC.11 + CFC.12 + Aerosols

0.697

MEI + CO2 + CH4 + N2O + CFC.11 + CFC.12 + TSI

0.6883

本輪得到Temp ~ MEI + CO2 + N2O + CFC.11 + CFC.12 + TSI + Aerosols

從model2中任意去掉1個(gè)feature,并記下相應(yīng)的Adjusted R2如下


Feature

Adjusted R2

CO2 + N2O + CFC.11 + CFC.12 + TSI + Aerosols

0.6377

MEI + N2O + CFC.11 + CFC.12 + TSI + Aerosols

0.7339

MEI + CO2 + CFC.11 + CFC.12 + TSI + Aerosols

0.7346

MEI + CO2 + N2O + CFC.12 + TSI + Aerosols

0.7171

MEI + CO2 + N2O + CFC.11 + TSI + Aerosols

0.7166

MEI + CO2 + N2O + CFC.11 + CFC.12 + Aerosols

0.698

MEI + CO2 + N2O + CFC.11 + CFC.12 + TSI

0.6891

任一組合的Adjusted R2都比上一輪小,因此選擇上一輪的feature組合作為最終的模型,也即Temp ~ MEI + CO2 + N2O + CFC.11 + CFC.12 + TSI + Aerosols

由summary(model2)可算出每個(gè)feature的coefficient如下 。


線性回歸介紹

線性回歸中,數(shù)據(jù)使用線性預(yù)測(cè)函數(shù)來(lái)建模,并且未知的模型參數(shù)也是通過(guò)數(shù)據(jù)來(lái)估計(jì)。這些模型被叫做線性模型。最常用的線性回歸建模是給定X值的y的條件均值是X的仿射函數(shù)。

線性回歸回歸分析中第一種經(jīng)過(guò)嚴(yán)格研究并在實(shí)際應(yīng)用中廣泛使用的類型。這是因?yàn)榫€性依賴于其未知參數(shù)的模型比非線性依賴于其位置參數(shù)的模型更容易擬合,而且產(chǎn)生的估計(jì)的統(tǒng)計(jì)特性也更容易確定。

上面這段定義來(lái)自于維基百科。

這個(gè)錯(cuò)誤估計(jì)函數(shù)是去對(duì)x(i)的估計(jì)值與真實(shí)值y(i)差的平方和作為錯(cuò)誤估計(jì)函數(shù),前面乘上的1/2m是為了在求導(dǎo)的時(shí)候,這個(gè)系數(shù)就不見(jiàn)了。至于為何選擇平方和作為錯(cuò)誤估計(jì)函數(shù),就得從概率分布的角度來(lái)解釋了。
如何調(diào)整θ以使得J(θ)取得最小值有很多方法,本文會(huì)重點(diǎn)介紹梯度下降法和正規(guī)方程法。

梯度下降

在選定線性回歸模型后,只需要確定參數(shù)θ,就可以將模型用來(lái)預(yù)測(cè)。然而θ需要使得J(θ)最小。因此問(wèn)題歸結(jié)為求極小值問(wèn)題。
梯度下降法流程如下:

1. 首先對(duì)θ賦值,這個(gè)值可以是隨機(jī)的,也可以讓?duì)葹橐粋€(gè)全零向量。

2. 改變?chǔ)鹊闹担沟肑(θ)按梯度下降的方向進(jìn)行調(diào)整。

梯度方向由J(θ)對(duì)θ的偏導(dǎo)數(shù)確定,由于求的是極小值,因此梯度方向是偏導(dǎo)數(shù)的反方向。更新公式為為:


這種方法需要對(duì)全部的訓(xùn)練數(shù)據(jù)求得誤差后再對(duì)θ進(jìn)行更新。(α為學(xué)習(xí)速度)

正規(guī)方程(Normal Equation)數(shù)據(jù)分析師培訓(xùn)


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