多元線性回歸公式推導及R語言實現

2021-09-07 19:42:21 字數 3075 閱讀 8792

實際中有很多問題是乙個因變數與多個自變數成線性相關,我們可以用乙個多元線性回歸方程來表示。

為了方便計算,我們將上式寫成矩陣形式:

y = xw

我們希望求出的w是最接近線性方程的解的,最接近我們定義為殘差平方和最小,殘差的公式和殘差平方和的公式如下:

上面的公式用最小殘差平方和的方式匯出的,還有一種思路用最大似然的方式也能推導出和這個一樣的公式,首先對模型進行一些假設:

簡單推導如下:

由此利用最大似然原理匯出了和最小二乘一樣的公式。

二次函式是個凸函式,極值點就是最小點。只需要求導數=0解出w即可。

我們這裡用r語言模擬實踐一下,由於我們使用的矩陣運算,這個公式一元和多元都是相容的,我們為了視覺化方便一點,我們就用r語言自帶的women資料做一元線性回歸,和多元線性回歸的方式基本一樣。

women資料如下

> women

height weight

1 58 115

2 59 117

3 60 120

4 61 123

5 62 126

6 63 129

7 64 132

8 65 135

9 66 139

10 67 142

11 68 146

12 69 150

13 70 154

14 71 159

15 72 164

體重和身高具有線性關係,我們做乙個散點圖可以看出來:

我們用最小二乘推導出來的公式計算w如下

x 

x.t

w > w

[,1]

[1,] -87.51667

[2,] 3.45000

> lm.result

> lm.result

call:

lm(formula = women$weight ~ women$height)

coefficients:

(intercept) women$height

-87.52 3.45

上面的r**w使我們利用公式計算出來的,下邊是r語言整合的線性回歸函式擬合出來的,可以看出我們的計算結果是正確的,lm的只是小數點取了兩位而已,將回歸出來的函式畫到圖中看下回歸的效果。

畫圖對應的r**如下,用r的感覺.....太飄逸了。

> png(file="chart2.png")

> plot(women$height, women$weight)

> lines(women$height, x %*% w)

> dev.off()

除了用正規方程方式求解w,也可以用最常見的梯度下降法求得w,因為最小二乘是個凸函式,所以這裡找到的極小點就是最小點。下面這段**用r寫還是非常容易的,但是剛開始step步長引數調的太大了,導致一直不收斂,我還

以為是程式錯誤,後來怎麼看也沒寫錯,就把引數調了個很小值,結果就收斂了。step的這個取值其實應該是變化的,先大後下比較科學,我這個調的很小,需要接近500萬次才能收斂。

上面的批量梯度下降為什麼收斂如此之慢呢?原因很簡單,沒有做歸一化,做了歸一化,收斂速度快了非常非常多!!!!

正確**如下:

xscale = scale(women$height)

ux = attr(xscale, "scaled:center")

dx = attr(xscale, "scaled:scale")

yscale = scale(women$weight)

uy = attr(yscale, "scaled:center")

dy = attr(yscale, "scaled:scale")

x y

maxiternum

step

w for (i in 1:maxiternum)

w }print(w);

w0 = w[1]

wn = w[2:length(w)]

wn = dy * wn / dx

w0 = uy + dy * w0 - dy * ux / dx

w = c(w0, wn)

print(w);

[1] "iter times=1168"

print(w);

-88.53154 3.45000

線性模型(二) 線性回歸公式推導

我們在初中學習線性方程的時候就已經接觸過回歸的相關概念,在這裡簡單介紹一下機器學習中的 回歸 機器學習的目的有兩個 回歸和分類,回歸是解決連續資料的 問題,而分類是為了解決離散資料的 問題。線性回歸是機器學習演算法中最簡單的演算法之一,它是監督學習的一種演算法,主要思想是在給定訓練集上學習得到乙個線...

R語言多元線性回歸

1 根據業務經驗挑選出可能對 目標變數有影響的指標 2 將這些指針對目標變數做相關性分析cor 挑選出相關係數較大的指標進一步分析 3 檢驗這些指標與目標變數是否線性關係,一般可以plot 檢驗,如果非線性,嘗試做平方或開方等方法使之變成線性 3 將相關係數較大的指標全部作為解釋變數做多遠線性回歸l...

R語言多元線性回歸

toothpaste data.frame x1 c 0.05,0.25,0.60,0,0.25,0.20,0.15,0.05,0.15,0.15,0.20,0.10,0.40,0.45,0.35,0.30,0.50,0.50,0.40,0.05,0.05,0.10,0.20,0.10,0.50,0...