《機(jī)器學(xué)習(xí)從入門(mén)到精通》課件-第6章回歸_第1頁(yè)
《機(jī)器學(xué)習(xí)從入門(mén)到精通》課件-第6章回歸_第2頁(yè)
《機(jī)器學(xué)習(xí)從入門(mén)到精通》課件-第6章回歸_第3頁(yè)
《機(jī)器學(xué)習(xí)從入門(mén)到精通》課件-第6章回歸_第4頁(yè)
《機(jī)器學(xué)習(xí)從入門(mén)到精通》課件-第6章回歸_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第6章

回歸6.1回歸分析算法的基礎(chǔ)知識(shí)6.2線(xiàn)性回歸6.3邏輯回歸6.4戴明回歸6.5回歸模型的評(píng)估6.1回歸分析算法的基礎(chǔ)知識(shí)回歸分析(RegressionAnalysis)是一種對(duì)數(shù)據(jù)進(jìn)行預(yù)測(cè)性分析的技術(shù),是用于估計(jì)多組變量之間相互依賴(lài)的定量關(guān)系的一種統(tǒng)計(jì)分析方法。回歸算法的分類(lèi):線(xiàn)性回歸一元線(xiàn)性回歸多元線(xiàn)性回歸非線(xiàn)性回歸一元多項(xiàng)式回歸多元非線(xiàn)性回歸邏輯回歸二元邏輯回歸多元邏輯回歸泊松回歸。。。。。6.1.2汽車(chē)油耗數(shù)據(jù)集數(shù)據(jù)集下載地址:/ml/datasets/Auto+MPG6.1.2汽車(chē)油耗數(shù)據(jù)集美國(guó)汽車(chē)油耗數(shù)據(jù)表各列縮寫(xiě)及含義縮寫(xiě)含義MPG油耗,1加侖汽油可以行駛的英里數(shù),數(shù)值越大油耗越低cyl汽車(chē)發(fā)動(dòng)機(jī)的汽缸個(gè)數(shù)disp汽車(chē)發(fā)動(dòng)機(jī)的排量hp汽車(chē)發(fā)動(dòng)機(jī)的馬力數(shù)wt汽車(chē)的標(biāo)準(zhǔn)重量acc汽車(chē)的加速性能year汽車(chē)的款型年代orig汽車(chē)來(lái)源name汽車(chē)的型號(hào)名稱(chēng)6.1.3在Excel中預(yù)測(cè)

先將美國(guó)汽車(chē)油耗數(shù)據(jù)的兩列(排量disp和油耗MPG)導(dǎo)出到Excel文件中,這里把油耗調(diào)整到后面一列,因?yàn)镋xcel默認(rèn)最后一列為y值,前面的列為x值。importpandasaspd#讀取文件,以空格分隔各行,原始數(shù)據(jù)不包含表頭data=pd.read_csv('auto-mpg.data',sep='\s+',header=None)print(data.shape)#(398,9)#給各列數(shù)據(jù)設(shè)置表頭data.columns=['MPG','cyl','disp','hp','wt','acc','year','orig','name’]df=data[data['hp']!='?']

#排除hp不詳?shù)臄?shù)據(jù)

exportDF=df[['disp','MPG']]#選取要保存的列

exportDF.to_excel('MPG.xlsx',index=False)

#保存為MPG.xlsx,并忽略標(biāo)簽

6.1.3在Excel中預(yù)測(cè)

在Excel中打開(kāi)產(chǎn)生的MPG.xlsx文件,選中disp和MPG兩列數(shù)據(jù),插入散點(diǎn)圖,在圖上的數(shù)據(jù)點(diǎn)上右鍵單擊打開(kāi)快捷菜單,選中“添加趨勢(shì)線(xiàn)”選項(xiàng)。6.1.3在Excel中預(yù)測(cè)

一元線(xiàn)性回歸分析擬合的線(xiàn)性方程為y?=?-0.0601x?+?35.121,R2為0.64823,即MPG為disp乘以?-0.0601(這里的負(fù)號(hào)表示MPG與disp負(fù)相關(guān),disp越大,MPG越低)再加上一個(gè)常數(shù)35.121。6.2線(xiàn)性回歸一元線(xiàn)性回歸

多元線(xiàn)性回歸6.2.1線(xiàn)性回歸的基本原理以汽車(chē)油耗與排量數(shù)據(jù)集為例,每一個(gè)排量數(shù)據(jù)X對(duì)應(yīng)著一個(gè)實(shí)際的MPG油耗數(shù)據(jù)Y,以及一個(gè)根據(jù)回歸公式預(yù)測(cè)的Y′。

每一對(duì)(X,Y′)就是數(shù)據(jù)集中的disp和根據(jù)回歸公式預(yù)測(cè)的MPG數(shù)據(jù)?!白罴选钡膮?shù)c和b理論上會(huì)使得所有的Y′?和Y一致,但這在現(xiàn)實(shí)中是不可能的。6.2.2線(xiàn)性回歸之最小二乘法最小二乘法(OrdinaryLeastSquare,OLS)是用數(shù)學(xué)公式直接求解線(xiàn)性回歸方程的參數(shù)的方法,目的是找到最優(yōu)的c和b,使每一對(duì)預(yù)測(cè)的Y′和Y之間的誤差(Y-Y′)最小化。

二乘表示平方,最小二乘法就表示求誤差平方和最小的方法。6.2.2線(xiàn)性回歸之最小二乘法訓(xùn)練模型的目的就是要選擇合適的c和b,使E的值最小化。通過(guò)微積分知識(shí)可知,E達(dá)到最小化的必要條件是E對(duì)c和E對(duì)b的偏微分要等于0將E的公式代入上式,再根據(jù)鏈?zhǔn)椒▌t求微分就可以得到:6.2.2線(xiàn)性回歸之最小二乘法使用Python按上述公式計(jì)算出來(lái)的c和b與excel擬合結(jié)果一致。6.2.3線(xiàn)性回歸之梯度下降法多元線(xiàn)性回歸有多少個(gè)自變量,就有多少個(gè)參數(shù)ci,可以把參數(shù)b也合并進(jìn)去,寫(xiě)成c0×1的形式,即:或其矩陣形式:簡(jiǎn)寫(xiě)為:6.2.3線(xiàn)性回歸之梯度下降法多元線(xiàn)性回歸中當(dāng)自變量的個(gè)數(shù)增大到一定程度后,最小二乘法求回歸系數(shù)矩陣就不再可行,必須使用梯度下降法。什么是梯度:在微積分里面,對(duì)多元函數(shù)的參數(shù)求偏導(dǎo)數(shù),把求得的各個(gè)參數(shù)的偏導(dǎo)數(shù)以向量的形式寫(xiě)出來(lái),就是梯度。梯度向量的幾何意義:就是函數(shù)變化增加最快的地方。具體來(lái)說(shuō),對(duì)于函數(shù)f(x,y),在點(diǎn)(x0,y0),沿著梯度向量的方向就是(?f/?x0,?f/?y0)T的方向是f(x,y)增加最快的地方?;蛘哒f(shuō),沿著梯度向量的方向,更加容易找到函數(shù)的最大值。反之,沿著梯度向量相反的方向,也就是-(?f/?x0,?f/?y0)T的方向,就更加容易找到函數(shù)的最小值。因此,梯度向量可以指引用迭代的方式找到誤差平方的最小值,以及這個(gè)最小值所對(duì)應(yīng)的回歸參數(shù)。6.2.3線(xiàn)性回歸之梯度下降法梯度下降法的迭代過(guò)程:J?(θ0,θ1)是一個(gè)有兩個(gè)自變量的函數(shù),(一元線(xiàn)性回歸中的誤差平方和函數(shù)也有b和c兩個(gè)變量,類(lèi)似于圖中的θ0,θ1)。我們的目的是從圖上的任意點(diǎn)出發(fā),找到函數(shù)的最小值,即誤差平方和最小的點(diǎn),得到這個(gè)點(diǎn)對(duì)應(yīng)的兩個(gè)自變量(θ0,θ1,或一元線(xiàn)性回歸中的b和c),即為求解的回歸參數(shù)。6.2.4油耗預(yù)測(cè)中的線(xiàn)性回歸數(shù)據(jù)預(yù)處理構(gòu)建計(jì)算圖訓(xùn)練模型輸出結(jié)果結(jié)果的可視化6.2.4油耗預(yù)測(cè)中的線(xiàn)性回歸數(shù)據(jù)預(yù)處理小數(shù)定標(biāo)歸一化,通過(guò)移動(dòng)數(shù)據(jù)的小數(shù)點(diǎn)位置,將數(shù)據(jù)縮放到[-1,1]區(qū)間,由于這里的數(shù)據(jù)沒(méi)有負(fù)值,因此會(huì)縮放到[0,1]區(qū)間。#導(dǎo)入庫(kù)importtensorflowastfimportnumpyasnpimportpandasaspdimportmatplotlib.pyplotasplt

#獲取數(shù)據(jù)data=pd.read_csv('auto-mpg.data',sep='\s+',header=None)data.columns=['MPG','cyl','disp','hp','wt','acc','year','orig','name']data=data[data['hp']!='?']

#小數(shù)定標(biāo)歸一化處理x_data=data['disp'].values/1000y_data=data['MPG'].values/100

data_count=len(x_data)6.2.4油耗預(yù)測(cè)中的線(xiàn)性回歸構(gòu)建計(jì)算圖###構(gòu)建計(jì)算圖####設(shè)置兩個(gè)輸入占位符X=tf.placeholder(tf.float32,[data_count])Y=tf.placeholder(tf.float32,[data_count])#因?yàn)榫€(xiàn)性方程Y=cX+b,所以設(shè)置兩個(gè)變量c和b#初始值為?-1到1之間的隨機(jī)數(shù)。random_uniform([1])為1×1的矩陣,即一個(gè)數(shù)c=tf.Variable(tf.random_uniform([1],-1.0,1.0))#初始值為零,zeros([1])為一個(gè)1×1的零矩陣b=tf.Variable(tf.zeros([1]))#使用線(xiàn)性方程求得一個(gè)新的Y(起始的參數(shù)是一個(gè)隨機(jī)值)Y_pred=c*X+b

#定義損失函數(shù),即預(yù)測(cè)Y和原Y之間的和方差:(Y_pred?-?Y)平方,求和,取均值loss=tf.reduce_mean((Y_pred-Y)**2)6.2.4油耗預(yù)測(cè)中的線(xiàn)性回歸構(gòu)建計(jì)算圖(2):梯度下降部分#通過(guò)gradients求出梯度,沿梯度的反方向移動(dòng),滿(mǎn)足loss最小,即梯度下降法grad_c,grad_b=tf.gradients(ys=loss,xs=[c,b])

learning_rate=tf.constant(0.5)#每一次改變的比例,通常稱(chēng)為學(xué)習(xí)率

#將變量沿梯度的負(fù)方向移動(dòng)學(xué)習(xí)率的長(zhǎng)度,然后更新變量值update_c=tf.assign(c,c-learning_rate*grad_c)update_b=tf.assign(b,b-learning_rate*grad_b)#變量初始化init=tf.global_variables_initializer()###計(jì)算圖構(gòu)建結(jié)束####設(shè)置訓(xùn)練輪數(shù)train_cycles=500#設(shè)置每50輪打印一次中間結(jié)果print_cycles=50

#定義一個(gè)用于保存中間結(jié)果的數(shù)組saved_data=[]6.2.4油耗預(yù)測(cè)中的線(xiàn)性回歸訓(xùn)練模型###開(kāi)始訓(xùn)練###sess=tf.Session()sess.run(init)

#初始化變量

#打印表頭print('cyclecbloss')print('================================')forstepinrange(1,train_cycles+1):#根據(jù)x和y的值,更新b和c,函數(shù)的返回值是b和c更新后的值

new_c,new_b=sess.run([update_c,update_b],

feed_dict={X:x_data,Y:y_data})#如果本輪應(yīng)該打印輸出

ifstep%print_cycles==0:#計(jì)算損失函數(shù)在當(dāng)前輪的值

l=sess.run(loss,feed_dict={X:x_data,Y:y_data})#保存中間變量

saved_data.append([step,l,new_c[0],

new_b[0]])#打印本輪擬合數(shù)據(jù)

print('{:5d}{:8.4f}{:8.4f}{:8.4f}'.format(step,new_c[0],

new_b[0],l))sess.close()###結(jié)束訓(xùn)練###6.2.4油耗預(yù)測(cè)中的線(xiàn)性回歸輸出結(jié)果saved_data數(shù)組中的參數(shù)是X和Y歸一化后擬合出來(lái)的,要使用原始的X計(jì)算出原始的Y,就需要按照反方向進(jìn)行處理。原始的Y是歸一化后的Y的100倍,因此b需要放大100倍,cX也要放大100倍,但同時(shí)原始的X是歸一化后的X的1000倍,c就是在放大100倍的基礎(chǔ)上再縮小1000倍,即縮小10倍。最終調(diào)整后的一元線(xiàn)性回歸方程為MPG?=?-0.05958×disp+35.03,與最小二乘法獲得的一元線(xiàn)性回歸方程MPG?=?-0.0601×disp+35.1206是非常接近的。6.2.4油耗預(yù)測(cè)中的線(xiàn)性回歸結(jié)果的可視化損失值隨迭代輪數(shù)變化圖6.2.4油耗預(yù)測(cè)中的線(xiàn)性回歸結(jié)果的可視化回歸線(xiàn)隨迭代輪數(shù)變化圖6.3邏輯回歸分類(lèi)問(wèn)題:判斷一份郵件是否為垃圾郵件預(yù)測(cè)用戶(hù)是否會(huì)購(gòu)買(mǎi)某件商品判斷病人是否得了某種疾病判斷一個(gè)評(píng)論表達(dá)的是贊揚(yáng)還是批評(píng)這些都是二分類(lèi)問(wèn)題。分類(lèi)問(wèn)題有很多算法可以解決,其中一種典型的算法就是邏輯回歸(LogisticRegression,LR)算法。邏輯回歸算法需要找到分類(lèi)概率P(y=1)與輸入向量X的直接關(guān)系,然后通過(guò)比較概率值來(lái)判斷類(lèi)別。6.3.1邏輯回歸的基本原理基本的假設(shè):即數(shù)據(jù)的分布符合伯努利分布,也就是正類(lèi)的概率與負(fù)類(lèi)的概率之和為1。定義一個(gè)Odds(x)為x發(fā)生的幾率,這個(gè)幾率的取值為0到正無(wú)窮,值越大,說(shuō)明發(fā)生的可能性越大。取對(duì)數(shù)得到Logit函數(shù):6.3.1邏輯回歸的基本原理取對(duì)數(shù)后,由于幾率的值域?yàn)?到正無(wú)窮,Logit函數(shù)的取值范圍就為負(fù)無(wú)窮到正無(wú)窮。為了方便公式的書(shū)寫(xiě),將Logit函數(shù)命名為z,則p可以表達(dá)為z的函數(shù):上式即為邏輯函數(shù)(Logistic函數(shù)),將一個(gè)取值為負(fù)無(wú)窮到正無(wú)窮的變量z,映射成為取值區(qū)間為0~1的概率。Logistic函數(shù)的圖像:6.3.2邏輯回歸

vs線(xiàn)性回歸邏輯回歸需要通過(guò)Logistic函數(shù)將值域?yàn)樨?fù)無(wú)窮到正無(wú)窮的數(shù)據(jù)映射到0和1之間,用于表征預(yù)測(cè)值為某類(lèi)別的概率。使用線(xiàn)性回歸的假設(shè)函數(shù)來(lái)擬合Logit函數(shù)z,可得到邏輯回歸的假設(shè)函數(shù)。這樣就可以用解決線(xiàn)性回歸問(wèn)題的方式來(lái)解決邏輯回歸問(wèn)題,即在線(xiàn)性回歸的假設(shè)函數(shù)外面再包了一層Logistic函數(shù),將線(xiàn)性回歸的預(yù)測(cè)值進(jìn)一步映射為0~1之間的概率,得到邏輯回歸的預(yù)測(cè)值,這就是邏輯回歸名字的來(lái)源。6.3.2邏輯回歸的損失函數(shù)最大似然估計(jì)(MaximumLikelihoodEstimation)。伯努利分布的最大似然函數(shù),使所有樣本預(yù)測(cè)正確的可能性最大令p為正類(lèi)概率,則負(fù)類(lèi)概率就為1-p邏輯回歸中的假設(shè)函數(shù)h(x)即為p為了從觀(guān)測(cè)樣本的分類(lèi)結(jié)果,反推最有可能(最大概率)導(dǎo)致這些觀(guān)測(cè)需要的模型參數(shù),需要使似然函數(shù)最大化,那么損失函數(shù)就可以定義為負(fù)的最大似然函數(shù)。這樣損失值越小,似然函數(shù)值就越大,其參數(shù)也就越能導(dǎo)致樣本的觀(guān)察值。6.3.2邏輯回歸的損失函數(shù)由于連乘不便于計(jì)算偏導(dǎo)數(shù),損失函數(shù)使用似然函數(shù)的負(fù)對(duì)數(shù)。取對(duì)數(shù)可以將公式右邊連乘取變成連加,方便數(shù)學(xué)計(jì)算。因此邏輯回歸的損失函數(shù)就定義為:有了邏輯回歸的假設(shè)函數(shù)和損失函數(shù),就可以和線(xiàn)性回歸類(lèi)似,采用梯度下降法求解模型的最佳參數(shù)了。6.3.3邏輯回歸的代碼實(shí)現(xiàn)邏輯回歸與線(xiàn)性回歸的主要代碼區(qū)別就是假設(shè)函數(shù)和損失函數(shù)的實(shí)現(xiàn)。#使用邏輯方程來(lái)求得一個(gè)預(yù)測(cè)為正類(lèi)的概率(假設(shè)函數(shù))y_pred=1/(1+tf.exp(-(c*x+b)))

#定義損失函數(shù),按最大似然率求邏輯回歸的損失值loss=tf.reduce_mean(-y*tf.log(y_pred)-(1-y)*tf.log(1-y_pred

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論