最小二乘法和梯度下降法

2021-08-21 03:09:03 字數 2839 閱讀 6222

通過這段描述可以看出來,最小二乘法也是一種優化方法,求得目標函式的最優值。並且也可以用於曲線擬合,來解決回歸問題。難怪《統計學習方法》中提到,回歸學習最常用的損失函式是平方損失函式,在此情況下,回歸問題可以著名的最小二乘法來解決。看來最小二乘法果然是機器學習領域做有名和有效的演算法之一。

二. 最小二乘法

我們以最簡單的一元線性模型來解釋最小二乘法。什麼是一元線性模型呢? 監督學習中,如果**的變數是離散的,我們稱其為分類(如決策樹,支援向量機等),如果**的變數是連續的,我們稱其為回歸。回歸分析中,如果只包括乙個自變數和乙個因變數,且二者的關係可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析。如果回歸分析中包括兩個或兩個以上的自變數,且因變數和自變數之間是線性關係,則稱為多元線性回歸分析。對於二維空間線性是一條直線;對於三維空間線性是乙個平面,對於多維空間線性是乙個超平面...

對於一元線性回歸模型, 假設從總體中獲取了n組觀察值(x1,y1),(x2,y2), …,(xn,yn)。對於平面中的這n個點,可以使用無數條曲線來擬合。要求樣本回歸函式盡可能好地擬合這組值。綜合起來看,這條直線處於樣本資料的中心位置最合理。 選擇最佳擬合曲線的標準可以確定為:使總的擬合誤差(即總殘差)達到最小。有以下三個標準可以選擇:

(1)用「殘差和最小」確定直線位置是乙個途徑。但很快發現計算「殘差和」存在相互抵消的問題。

(2)用「殘差絕對值和最小」確定直線位置也是乙個途徑。但絕對值的計算比較麻煩。

(3)最小二乘法的原則是以「殘差平方和最小」確定直線位置。用最小二乘法除了計算比較方便外,得到的估計量還具有優良特性。這種方法對異常值非常敏感。

最常用的是普通最小二乘法( ordinary  least square,ols):所選擇的回歸模型應該使所有觀察值的殘差平方和達到最小。(q為殘差平方和)- 即採用平方損失函式。

樣本回歸模型:

平方損失函式:

則通過q最小確定這條直線,即確定

根據數學知識我們知道,函式的極值點為偏導為0的點。

解得:

這就是最小二乘法的解法,就是求得平方損失函式的極值點。

三. c++實現**

1/*2

最小二乘法c++實現

3引數1為輸入檔案

4輸入 : x

5輸出: **的y 6*/

7 #include8 #include9 #include10

using

namespace

std;

1112

class

leastsquare

25 a = (t3*x.size() - t2*t4) / (t1*x.size() - t2*t2); //

求得β1

26 b = (t1*t4 - t2*t3) / (t1*x.size() - t2*t2); //

求得β227}

2829

double gety(const

double x) const

3033

34void print() const

3538

39};

4041

int main(int argc, char *argv)

4248

else

4967

}68 }

四. 最小二乘法與梯度下降法

最小二乘法跟梯度下降法都是通過求導來求損失函式的最小值,那它們有什麼區別呢。

相同1.本質相同:兩種方法都是在給定已知資料(independent & dependent variables)的前提下對dependent variables算出出乙個一般性的估值函式。然後對給定新資料的dependent variables進行估算。

2.目標相同:都是在已知資料的框架內,使得估算值與實際值的總平方差盡量更小(事實上未必一定要使用平方),估算值與實際值的總平方差的公式為:

其中不同1.實現方法和結果不同:最小二乘法是直接對

最小二乘法的侷限性和適用場景 

從上面可以看出,最小二乘法適用簡潔高效,比梯度下降這樣的迭代法似乎方便很多。但是這裡我們就聊聊最小二乘法的侷限性。

首先,最小二乘法需要計算xtx

xtx的逆矩陣,有可能它的逆矩陣不存在,這樣就沒有辦法直接用最小二乘法了,此時梯度下降法仍然可以使用。當然,我們可以通過對樣本資料進行整理,去掉冗餘特徵。讓xtx

xtx的行列式不為0,然後繼續使用最小二乘法。

第二,當樣本特徵n非常的大的時候,計算xtx

xtx的逆矩陣是乙個非常耗時的工作(nxn的矩陣求逆),甚至不可行。此時以梯度下降為代表的迭代法仍然可以使用。那這個n到底多大就不適合最小二乘法呢?如果你沒有很多的分布式大資料計算資源,建議超過10000個特徵就用迭代法吧。或者通過主成分分析降低特徵的維度後再用最小二乘法。

第三,如果擬合函式不是線性的,這時無法使用最小二乘法,需要通過一些技巧轉化為線性才能使用,此時梯度下降仍然可以用。

第四,講一些特殊情況。當樣本量m很少,小於特徵數n的時候,這時擬合方程是欠定的,常用的優化方法都無法去擬合資料。當樣本量m等於特徵數n的時候,用方程組求解就可以了。當m大於n時,擬合方程是超定的,也就是我們常用與最小二乘法的場景了。

最小二乘法以及最小二乘法和梯度下降法的區別

通過這段描述可以看出來,最小二乘法也是一種優化方法,求得目標函式的最優值。並且也可以用於曲線擬合,來解決回歸問題。難怪 統計學習方法 中提到,回歸學習最常用的損失函式是平方損失函式,在此情況下,回歸問題可以著名的最小二乘法來解決。看來最小二乘法果然是機器學習領域做有名和有效的演算法之一。二.最小二乘...

機器學習 最小二乘法和梯度下降法

一.背景 通過這段描述可以看出來,最小二乘法也是一種優化方法,求得目標函式的最優值。並且也可以用於曲線擬合,來解決回歸問題。難怪 統計學習方法 中提到,回歸學習最常用的損失函式是平方損失函式,在此情況下,回歸問題可以著名的最小二乘法來解決。看來最小二乘法果然是機器學習領域做有名和有效的演算法之一。二...

最小二乘法和梯度下降法有哪些區別?

最小二乘法的目標 求誤差的最小平方和,對應有兩種 線性和非線性。線性最小二乘的解是closed form即 迭代法,即在每一步update未知量逐漸逼近解,可以用於各種各樣的問題 包括最小二乘 比如求的不是誤差的最小平方和而是最小立方和。梯度下降是迭代法的一種,可以用於求解最小二乘問題 線性和非線性...