深入淺出線性回歸演算法(一)線性回歸初步介紹

2021-10-01 03:24:49 字數 3061 閱讀 1051

相信大家都聽過著名的博物學家,達爾文的大名,而今天這個故事的主人公就是他的表弟高爾頓。

高爾頓是一名生理學家,在2023年的時候,他研究了1078對父子的身高,發現他們大致滿足一條公式,那就是

y=0.8567+0.516*x

這條式子中的x指的是父親的身高,y指的是兒子的身高。可以明顯看出,這就是我們中學時代學的二元一次方程,反應在平面上就是一條直線。

通過這條公式,我們或許會直觀得以為高個的父親總會有高個的兒子,矮個的父親會有矮個的兒子。但高爾頓進一步觀察後發現,並非所有的情況都是這樣的。特別高的父親的兒子會比他父親矮一些,特別矮的父親的兒子會比他父親高一些,父子不會說一直不斷得更高或更矮下去。這個現象,其實就是回歸。趨勢不會一直持續下去,而是會回到某個中心。

通過這個故事,相信你已經明白了什麼是線性回歸,那麼接下來我們就來說說更加詳細的內容。

丟擲問題:假設有這樣的一些點,這些都是現有的資料,我們要找到擬合這些點的線,然後**接下來的點。那我們要怎麼找出這條線呢?

h(x)=a0 + a1 * x(a1是斜率,a0是截距)

或者說換個問法,我們要怎麼求出a_1和a_0呢?

第一次接觸線性回歸的同學可能不知道什麼叫cost function,其實當碰到不知道的概念的時候,只要想清楚兩件事,這個概念是什麼,有什麼用。想清楚這兩點,起碼就不會犯迷糊了。

代價函式是什麼?

我們先隨便畫兩條線來擬合那些點,如圖所示,可以看到,明顯圖二更加擬合,也就是說圖二的線更接近我們理想中的線。

ok,再仔細觀察,圖二的線和圖一的線有什麼不同呢?最明顯的,就是圖一中,各個點沿y軸到那條直線的距離更遠,而圖二中各個點到線的距離更近。

這所有點沿y軸到直線的誤差,也就是各個點的誤差,的平均值。就是代價函式。公式如下:

pred(i) 就是第i個點上,直線的y值,y(i)就是第i個點,這個點的y值,加上平方主要是避免了負數的情況。這就是代價函式。

代價函式有什麼用?

代價函式有助於我們找出a0和a1的最佳可能值。前面說到,代價函式就是每個點在y軸到直線的距離的平均值。我們的目標就是最小化這個值,在普遍情況下,代價函式是凸函式,如下圖所示,

看到這個函式是不是比較熟悉?在學習導數的時候不就經常看到這樣的圖嘛,這種圖通常也是通過求導來解的。

從y=a0+a1*x,這條直線開始。到寫出代價函式,我們的目標一直沒變,就是要找出a0和a1,讓這條直線更貼近那些點(就是讓代價函式最小)。當然,我們還沒說到如何讓代價函式最小化,下面我們就接著說說如何讓代價函式最小化吧。

梯度下降是什麼?

梯度下降是一種不斷迭代更新a0和a1以降低代價函式的方法。我們可以通過對代價函式求導的方式,看出應該讓a0或a1加還是減。

上面部分其實就是對代價函式的求導,通過對其求導,我們能夠知道a0和a1應該是增大還是減少。

這條公式其實就是(a0-代價函式的偏導數)。當然,其中還有乙個控制速率的α(alpha),對代價函式的求導能知道是對a0和a1增大還是減少,那麼α就是應該增大多少,減少多少。

舉個例子,假設你現在在半山坡,你要做的是下山,代價函式的偏導數,就是告訴你應該向下還是向上。而速率α就是來控制步子要邁多大。

步子小(α小)意味著小步快跑下山,缺點是跑比較久。大步向前(α大)意味著比較快,但可能一下子邁太大,跑到對面半山腰去了。

梯度下降有什麼用?

通過梯度下降,能夠讓我們找到乙個區域性最優解的a0和a1,為什麼是區域性最優解呢?因為現實中的問題可能沒一開始的例子那麼清晰,很多時候你發現可能這條線也可以,這條線也不錯,那條好像也可以。計算機也會這樣,它可能也會覺得某條線就已經夠好了。就不去找其他的線了。

反應到我們求的問題裡面,可以說因為是最小化問題(最小化代價函式),但可能像右圖一樣,它已經在乙個區域性裡面是最小的了,向左向右都是公升高,既然如此那就安心當鹹魚嘍。這種現象和初始的隨機選擇有關,也和訓練的速率有關。

當選擇了乙個合適的α值,當更新迭代足夠多次之後。理論上就會到達某個底部,這時候也就意味著代價函式是某個範圍內最小的。這個時候的a0和a1就被我們求出來了,我們就能夠得到一條擬合空間中點的直線了。

最後再說一下,剛剛介紹的都只是在二維空間中的計算,也就是只有乙個特徵。而現實中往往不止會有乙個特徵,而是多個特徵,如下面的形式:

h(x)=a0 + a1 * x1 + a2 * x2 + a3 * x3 ...

不過計算方式和計算的方法都是類似的。只是資料量會變多,計算會更加複雜些。

ok,今天先從乙個例子開始介紹線性回歸。然後闡述了代價函式,以及求解代價函式最小化的乙個方法,梯度下降。後面會介紹用sklearn來做線性回歸,以及其他多種回歸分析方法的初步介紹。

以上~推薦閱讀:

大白話講梯度下降法(一)

深入淺出apriori關聯分析演算法(二)

【elasticsearch 探索之路】(三)倒排索引

深入淺出線性表

其實對於線性表 我們並不陌生 學習英語之前 我們最先開始學習的就是 26給 英文本母,由這 26個字母組成的字母表就是乙個線性表 撲克我們都玩過 一副 撲克牌的點數也是乙個線性表 在我們生活總 無處不存在著線性表.線性結構是最簡單且最廣泛的一種資料結構 其基本特點是結構中的各個元素 之間滿足線性關係...

機器學習 演算法一 線性回歸

監督學習 給定資料集 部分資料集已有標籤,對其進行學習,再分類 分類問題 無監督學習 給定一系列數,讓機器自己發現規律。聚類問題 回歸問題 是指要 乙個連續值的輸出,比如房價 線性回歸是很常見的一種回歸,用來 或者分類,主要解決線性問題 m 訓練集樣本數 x 輸入變數 y 輸出變數 h 假設函式,給...

機器學習演算法篇 一 線性回歸

以上即為引數 梯度下降特點 選擇合適的學習速率 通過不斷的迭代,找到 0 n,使得j 值最小 正規方程特點 不需要選擇學習速率 不需要n輪迭代 只需要乙個公式計算即可 但是並不是所有的線性回歸都適合用正規方程,我們知道求解乙個矩陣的逆複雜度為o n 3 因此當特徵維度n非常大的時候 x t x 1需...