1. 程式人生 > >8.線性迴歸之非線性迴歸

8.線性迴歸之非線性迴歸

起步

非線性迴歸是線性迴歸的延伸,線性就是每個變數的指數都是 1,而非線性就是至少有一個變數的指數不是 1。生活中,很多現象之間的關係往往不是線性關係。選擇合適的曲線型別不是一件輕而易舉的工作,主要依靠專業知識和經驗。常用的曲線型別有 冪函式,指數函式,拋物線函式,對數函式和S型函式 。

化非線性迴歸為線性迴歸

通過變數代換,可以將很多的非線性迴歸轉化為線性迴歸。比如目標函式假設是 y = b0 + b1x + b2x^2 。那麼另 z1 = x, z2 = x^2 。目標函式就變為 y = b0 + b1z1 + b2z2。就可以用線性迴歸來解方程了而用上一篇文章《線性迴歸之多元線性迴歸》就能解決線性迴歸的問題。常見的轉化模型有:

邏輯迴歸

邏輯迴歸是(Logistic Regression)是非線性迴歸中的一種,在分類問題上有的也能採用邏輯迴歸分類。這是一個二分器。比如根據腫瘤的大小來判斷其良性或惡性,線性方程顯然不能夠勝任了:

邏輯迴歸模型中,先給定線性函式:

雖然這邊是 θ 表示,但其實和線性迴歸中 b 是一個意思,都是作為自變數的係數。在二分類器中,經常需要一個分界線作為區分兩類結果。再次需要一個函式進行曲線平滑化,由此引入 Sigmoid 函式進行轉化:

這樣,以0.5作為分界線。因此邏輯迴歸的最終目標函式就是:

迴歸就是用來得到樣本屬於某個分類的概率。因此在分類結果中,假設y值是0或1,那麼正例(y=1):

反例(y=-1):

回想起之前線性中用到的損失函式:

我們的目標很明確,就是找到一組 θ ,使得我們的損失函式 J(θ) 最小。最常用的求解方法有兩種:梯度下降法( gradient descent ), 牛頓迭代方法( Newton's method)。兩種方法都是通過迭代求得的數值解,但是牛頓迭代方法的收斂速度更加快。牛頓迭代方法在此不介紹。

 注:如果在邏輯迴歸中運用這種損失函式,得到的函式J是一個非凸函式,存在多個區域性最小值,很難進行求解,因此需要換一個 COST 函式。重新定義個cost函式如下:

梯度下降求救邏輯迴歸

這就好比是下山,下一步的方向選的是最陡的方向。梯度下降不一定能夠找到全域性的最優解,有可能是一個區域性最優解。當然,如果損失函式是凸函式,梯度下降法得到的解就一定是全域性最優解。θ 的更新方程如下:

其中偏導數是:

如果將 θ 視為矩陣,可以進行批量更新: