




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第6章
回歸6.1回歸分析算法的基礎知識6.2線性回歸6.3邏輯回歸6.4戴明回歸6.5回歸模型的評估6.1回歸分析算法的基礎知識回歸分析(RegressionAnalysis)是一種對數據進行預測性分析的技術,是用于估計多組變量之間相互依賴的定量關系的一種統計分析方法。回歸算法的分類:線性回歸一元線性回歸多元線性回歸非線性回歸一元多項式回歸多元非線性回歸邏輯回歸二元邏輯回歸多元邏輯回歸泊松回歸。。。。。6.1.2汽車油耗數據集數據集下載地址:/ml/datasets/Auto+MPG6.1.2汽車油耗數據集美國汽車油耗數據表各列縮寫及含義縮寫含義MPG油耗,1加侖汽油可以行駛的英里數,數值越大油耗越低cyl汽車發動機的汽缸個數disp汽車發動機的排量hp汽車發動機的馬力數wt汽車的標準重量acc汽車的加速性能year汽車的款型年代orig汽車來源name汽車的型號名稱6.1.3在Excel中預測
先將美國汽車油耗數據的兩列(排量disp和油耗MPG)導出到Excel文件中,這里把油耗調整到后面一列,因為Excel默認最后一列為y值,前面的列為x值。importpandasaspd#讀取文件,以空格分隔各行,原始數據不包含表頭data=pd.read_csv('auto-mpg.data',sep='\s+',header=None)print(data.shape)#(398,9)#給各列數據設置表頭data.columns=['MPG','cyl','disp','hp','wt','acc','year','orig','name’]df=data[data['hp']!='?']
#排除hp不詳的數據
exportDF=df[['disp','MPG']]#選取要保存的列
exportDF.to_excel('MPG.xlsx',index=False)
#保存為MPG.xlsx,并忽略標簽
6.1.3在Excel中預測
在Excel中打開產生的MPG.xlsx文件,選中disp和MPG兩列數據,插入散點圖,在圖上的數據點上右鍵單擊打開快捷菜單,選中“添加趨勢線”選項。6.1.3在Excel中預測
一元線性回歸分析擬合的線性方程為y?=?-0.0601x?+?35.121,R2為0.64823,即MPG為disp乘以?-0.0601(這里的負號表示MPG與disp負相關,disp越大,MPG越低)再加上一個常數35.121。6.2線性回歸一元線性回歸
多元線性回歸6.2.1線性回歸的基本原理以汽車油耗與排量數據集為例,每一個排量數據X對應著一個實際的MPG油耗數據Y,以及一個根據回歸公式預測的Y′。
每一對(X,Y′)就是數據集中的disp和根據回歸公式預測的MPG數據。“最佳”的參數c和b理論上會使得所有的Y′?和Y一致,但這在現實中是不可能的。6.2.2線性回歸之最小二乘法最小二乘法(OrdinaryLeastSquare,OLS)是用數學公式直接求解線性回歸方程的參數的方法,目的是找到最優的c和b,使每一對預測的Y′和Y之間的誤差(Y-Y′)最小化。
二乘表示平方,最小二乘法就表示求誤差平方和最小的方法。6.2.2線性回歸之最小二乘法訓練模型的目的就是要選擇合適的c和b,使E的值最小化。通過微積分知識可知,E達到最小化的必要條件是E對c和E對b的偏微分要等于0將E的公式代入上式,再根據鏈式法則求微分就可以得到:6.2.2線性回歸之最小二乘法使用Python按上述公式計算出來的c和b與excel擬合結果一致。6.2.3線性回歸之梯度下降法多元線性回歸有多少個自變量,就有多少個參數ci,可以把參數b也合并進去,寫成c0×1的形式,即:或其矩陣形式:簡寫為:6.2.3線性回歸之梯度下降法多元線性回歸中當自變量的個數增大到一定程度后,最小二乘法求回歸系數矩陣就不再可行,必須使用梯度下降法。什么是梯度:在微積分里面,對多元函數的參數求偏導數,把求得的各個參數的偏導數以向量的形式寫出來,就是梯度。梯度向量的幾何意義:就是函數變化增加最快的地方。具體來說,對于函數f(x,y),在點(x0,y0),沿著梯度向量的方向就是(?f/?x0,?f/?y0)T的方向是f(x,y)增加最快的地方。或者說,沿著梯度向量的方向,更加容易找到函數的最大值。反之,沿著梯度向量相反的方向,也就是-(?f/?x0,?f/?y0)T的方向,就更加容易找到函數的最小值。因此,梯度向量可以指引用迭代的方式找到誤差平方的最小值,以及這個最小值所對應的回歸參數。6.2.3線性回歸之梯度下降法梯度下降法的迭代過程:J?(θ0,θ1)是一個有兩個自變量的函數,(一元線性回歸中的誤差平方和函數也有b和c兩個變量,類似于圖中的θ0,θ1)。我們的目的是從圖上的任意點出發,找到函數的最小值,即誤差平方和最小的點,得到這個點對應的兩個自變量(θ0,θ1,或一元線性回歸中的b和c),即為求解的回歸參數。6.2.4油耗預測中的線性回歸數據預處理構建計算圖訓練模型輸出結果結果的可視化6.2.4油耗預測中的線性回歸數據預處理小數定標歸一化,通過移動數據的小數點位置,將數據縮放到[-1,1]區間,由于這里的數據沒有負值,因此會縮放到[0,1]區間。#導入庫importtensorflowastfimportnumpyasnpimportpandasaspdimportmatplotlib.pyplotasplt
#獲取數據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']!='?']
#小數定標歸一化處理x_data=data['disp'].values/1000y_data=data['MPG'].values/100
data_count=len(x_data)6.2.4油耗預測中的線性回歸構建計算圖###構建計算圖####設置兩個輸入占位符X=tf.placeholder(tf.float32,[data_count])Y=tf.placeholder(tf.float32,[data_count])#因為線性方程Y=cX+b,所以設置兩個變量c和b#初始值為?-1到1之間的隨機數。random_uniform([1])為1×1的矩陣,即一個數c=tf.Variable(tf.random_uniform([1],-1.0,1.0))#初始值為零,zeros([1])為一個1×1的零矩陣b=tf.Variable(tf.zeros([1]))#使用線性方程求得一個新的Y(起始的參數是一個隨機值)Y_pred=c*X+b
#定義損失函數,即預測Y和原Y之間的和方差:(Y_pred?-?Y)平方,求和,取均值loss=tf.reduce_mean((Y_pred-Y)**2)6.2.4油耗預測中的線性回歸構建計算圖(2):梯度下降部分#通過gradients求出梯度,沿梯度的反方向移動,滿足loss最小,即梯度下降法grad_c,grad_b=tf.gradients(ys=loss,xs=[c,b])
learning_rate=tf.constant(0.5)#每一次改變的比例,通常稱為學習率
#將變量沿梯度的負方向移動學習率的長度,然后更新變量值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()###計算圖構建結束####設置訓練輪數train_cycles=500#設置每50輪打印一次中間結果print_cycles=50
#定義一個用于保存中間結果的數組saved_data=[]6.2.4油耗預測中的線性回歸訓練模型###開始訓練###sess=tf.Session()sess.run(init)
#初始化變量
#打印表頭print('cyclecbloss')print('================================')forstepinrange(1,train_cycles+1):#根據x和y的值,更新b和c,函數的返回值是b和c更新后的值
new_c,new_b=sess.run([update_c,update_b],
feed_dict={X:x_data,Y:y_data})#如果本輪應該打印輸出
ifstep%print_cycles==0:#計算損失函數在當前輪的值
l=sess.run(loss,feed_dict={X:x_data,Y:y_data})#保存中間變量
saved_data.append([step,l,new_c[0],
new_b[0]])#打印本輪擬合數據
print('{:5d}{:8.4f}{:8.4f}{:8.4f}'.format(step,new_c[0],
new_b[0],l))sess.close()###結束訓練###6.2.4油耗預測中的線性回歸輸出結果saved_data數組中的參數是X和Y歸一化后擬合出來的,要使用原始的X計算出原始的Y,就需要按照反方向進行處理。原始的Y是歸一化后的Y的100倍,因此b需要放大100倍,cX也要放大100倍,但同時原始的X是歸一化后的X的1000倍,c就是在放大100倍的基礎上再縮小1000倍,即縮小10倍。最終調整后的一元線性回歸方程為MPG?=?-0.05958×disp+35.03,與最小二乘法獲得的一元線性回歸方程MPG?=?-0.0601×disp+35.1206是非常接近的。6.2.4油耗預測中的線性回歸結果的可視化損失值隨迭代輪數變化圖6.2.4油耗預測中的線性回歸結果的可視化回歸線隨迭代輪數變化圖6.3邏輯回歸分類問題:判斷一份郵件是否為垃圾郵件預測用戶是否會購買某件商品判斷病人是否得了某種疾病判斷一個評論表達的是贊揚還是批評這些都是二分類問題。分類問題有很多算法可以解決,其中一種典型的算法就是邏輯回歸(LogisticRegression,LR)算法。邏輯回歸算法需要找到分類概率P(y=1)與輸入向量X的直接關系,然后通過比較概率值來判斷類別。6.3.1邏輯回歸的基本原理基本的假設:即數據的分布符合伯努利分布,也就是正類的概率與負類的概率之和為1。定義一個Odds(x)為x發生的幾率,這個幾率的取值為0到正無窮,值越大,說明發生的可能性越大。取對數得到Logit函數:6.3.1邏輯回歸的基本原理取對數后,由于幾率的值域為0到正無窮,Logit函數的取值范圍就為負無窮到正無窮。為了方便公式的書寫,將Logit函數命名為z,則p可以表達為z的函數:上式即為邏輯函數(Logistic函數),將一個取值為負無窮到正無窮的變量z,映射成為取值區間為0~1的概率。Logistic函數的圖像:6.3.2邏輯回歸
vs線性回歸邏輯回歸需要通過Logistic函數將值域為負無窮到正無窮的數據映射到0和1之間,用于表征預測值為某類別的概率。使用線性回歸的假設函數來擬合Logit函數z,可得到邏輯回歸的假設函數。這樣就可以用解決線性回歸問題的方式來解決邏輯回歸問題,即在線性回歸的假設函數外面再包了一層Logistic函數,將線性回歸的預測值進一步映射為0~1之間的概率,得到邏輯回歸的預測值,這就是邏輯回歸名字的來源。6.3.2邏輯回歸的損失函數最大似然估計(MaximumLikelihoodEstimation)。伯努利分布的最大似然函數,使所有樣本預測正確的可能性最大令p為正類概率,則負類概率就為1-p邏輯回歸中的假設函數h(x)即為p為了從觀測樣本的分類結果,反推最有可能(最大概率)導致這些觀測需要的模型參數,需要使似然函數最大化,那么損失函數就可以定義為負的最大似然函數。這樣損失值越小,似然函數值就越大,其參數也就越能導致樣本的觀察值。6.3.2邏輯回歸的損失函數由于連乘不便于計算偏導數,損失函數使用似然函數的負對數。取對數可以將公式右邊連乘取變成連加,方便數學計算。因此邏輯回歸的損失函數就定義為:有了邏輯回歸的假設函數和損失函數,就可以和線性回歸類似,采用梯度下降法求解模型的最佳參數了。6.3.3邏輯回歸的代碼實現邏輯回歸與線性回歸的主要代碼區別就是假設函數和損失函數的實現。#使用邏輯方程來求得一個預測為正類的概率(假設函數)y_pred=1/(1+tf.exp(-(c*x+b)))
#定義損失函數,按最大似然率求邏輯回歸的損失值loss=tf.reduce_mean(-y*tf.log(y_pred)-(1-y)*tf.log(1-y_pred
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 膳食脂肪對健康的影響試題及答案
- 申論筆試試題及答案解析
- 系統架構設計師考試知識面覆蓋試題及答案
- 煙草專業知識試題及答案
- 株洲面試招教試題及答案
- 紡織品設計師證書復習過程中的心態管理試題及答案
- 護士資格證重要性認識試題及答案
- 藥物效果與風險評估考核試題及答案
- 電子維修考試試題及答案
- 衡陽考編小學試題及答案
- 漢字的五行屬性與三才五格計算方法
- 唐山高科總部大廈幕墻工程幕墻招標技術評估總結
- 蘇教版三年級下冊數學 第三單元 解決問題的策略 測試卷
- 生產作業流程圖
- 10kV線路拆除
- 高中學生選課指導手冊
- 為老年人更換紙尿褲評分標準
- 教務管理系統UML模型PPT課件
- 吸收塔及煙囪施工方案
- 高中數學答題卡模板word版(共2頁)
- 小型構件預制場建設方案
評論
0/150
提交評論