機器學習之線性迴歸 Linear Regression(一)

一、線性迴歸

        線性迴歸一般用來做連續值的預測,預測結果爲一個連續值。因爲訓練時學習樣本不僅要提供學習的特徵向量X,還要提供樣本的實際結果,所以它是一種有監督學習。

        表示數據矩陣,其中表示一個n維長的數據樣本,表示數據標記。線性迴歸需要學習得到一個映射關係,當給定新的待預測樣本時,可以通過這個映射關係得到一個測試樣本X的預測值y。

        線性迴歸的數學假設

1、假設輸入X和輸出y是線性關係,預測的y和X通過線性方程建立模型

2、Y和X之間滿足方程Y=XW+e,e是誤差項、噪聲項,假設e是獨立同分布的,服從IID(independent and identity distribution)和均值爲0、方差爲某一定值的正態分佈。

二、線性迴歸建模

        當特徵向量X中只有一個特徵時,需要學習到的函數應該是一個一元線性函數y=ax+b

        當X有n個特徵時,需要更多的係數,通過增加簡化表達形式。


        矩陣形式,每行是一個樣本,每列是樣本的某一個特徵,是線性迴歸要學習的參數。

三、損失函數和解析解

        線性迴歸的目標使用預測結果儘可能地擬合目標,用最常見的最小二乘作爲損失函數

        對其求導,令一階導數爲零

        當可逆,即滿秩時,可以得到

        爲保證滿秩,N需要大於n,即訓練樣本的個數需要大於樣本的特徵維度。此算法的缺點是,當矩陣很大時,計算非常耗時且佔用資源。

        對每個樣本點的預測值是


        可以得到


        實際上是y在平面X上的投影。

四、梯度下降法

        當矩陣不可逆時,通過梯度下降法求解。損失函數J(w)是一個關於w的凸函數。梯度下降就是一個不斷最小化損失函數的過程。從圖像上來看,先初始化wi爲某個值,然後讓wi沿J(w)在wi的偏導方向前進,直到底部收斂爲止,最後就可以得到J(w)最小時的wi值。
 
        可以得到wi的迭代函數,其中α爲步長,也叫學習率。其中xij爲第i個訓練樣本的第j個特徵值。f(xi)爲在迭代過程中通過w得到的預測函數,它會隨w的變化而不斷變化。
        常用的梯度下降法包括BGD、SGD、mBGD,實際中以mBGD使用最多。

a. 批量梯度下降算法BGD

        wi的更新要用到所有樣本,需要計算所有樣本彙總的誤差來進行梯度下降,這樣訓練速度會隨着樣本數量的增加而變得緩慢。

b. 隨機梯度下降法SGD

        利用每個樣本的損失函數對wi求偏導得到對應的梯度來更新,每次計算一個樣本的誤差來進行梯度下降。隨機梯度下降算法通過每個樣本來迭代更新一次,當一些訓練樣本爲噪聲樣本時,會導致SGD並不是向着整體最優化方向迭代,因此SGD算法在解空間的搜索比較盲目,但大體上是向着最優值方向移動的。

c. 小批量梯度下降法mBGD

        mBGD是前面兩個算法SGD和BGD的一個折中,既要保證算法的速度,又保證參數訓練的最優性,每次需要計算一小批量樣本的彙總誤差來進行梯度下降。

五、過擬合的正則化

        當損失函數在樣本中損失較大時,會出現欠擬合的情況,即對樣本的預測值和樣本的實際結果有較大的差距;當損失函數在樣本中損失約等於0時,可能會出現過擬合的情況,缺乏泛化能力,對待預測的樣本預測能力比較弱。此時引入正則化項,也就是懲罰項,給損失函數的參數賦予一個約束項,使其不能任意無限大或無限小。

        無正則化時的損失函數:

 
        L1正則化(也稱Lasso正則化)下的損失函數:
 
        L2正則化(也稱Ridge正則化/嶺迴歸)下的損失函數:
 
        正則化後的損失函數不僅最小化預測值與樣本點實際值間的差距,還要最小化參數向量w,當函數圖像穿過所有樣本點時,函數圖像波動會非常大,高次項的權重會很大。正則化後,不僅要求函數接近更多的點,還要控制高次項的wi,使函數不要波動太大。L1正則化往往會使得一些wi趨近於0(可用於特徵的選擇),L2正則化往往會使wi之間差別不會太大,wi之間的變化比較穩定。

        當矩陣滿秩時,加入正則項後參數變爲:

        當矩陣不滿秩時,加入正則項後參數變爲:
        其中λ是正則化參數,從上式可以看出,與未添加L2正則化的迭代公式相比,每一次迭代wi都要先乘以一個小於1的因子,從而使得w不斷減小。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章