機器學習 線性迴歸

1.線性迴歸

1.1原理

        線性迴歸就是通過擬合已知的數據來得到一個線性模型,然後再利用線性模型來預測其他數據,使得預測結果接近真實值,達到預期目標。最後把真實值和預測值作比較,計算均方誤差,求取均方誤差最小時的一組\theta值。

假設函數: h_{\theta }(x)=\theta ^{T}X=\theta _{0}X_{0}+\theta _{1}X_{1}+\theta _{2}X_{2}+...+\theta _{n}X_{n}
損失函數:J(\theta )=\frac{1}{2}\sum_{i=1}^{n}(h_{\theta }(x^{(i)})-y^{(i)})^{2} 
目標:min(J(\theta ))

1.2算法思路

1.2.1最小二乘法

        劃分數據後,利用訓練數據中特徵部分構建矩陣X,標籤列構建y,然後再利用公式\theta =(X^{T}X)^{-1}X^{T}y計算θ。

1.2.2梯度下降

        首先我們對迴歸係數\theta進行初始化,令裏面值全部爲1,然後利用均方誤差公式求取當前係數\theta下的梯度,再用當前係數的值減去梯度乘以學習率來更新\theta值,最後不斷循環此操作,直到達到指定迭代次數爲止,最終迭代停止時的係數即爲迴歸方程的係數。其中,係數\theta的迭代公式爲\theta _{j}=\theta _{j}-a\sum_{i=1}^{m}(h_{\theta }(x^{i})-y^{i})_{j}^{(i)}

1.3可能遇到的問題

  • 特徵歸一化:一是能夠提升模型的收斂速度,因爲如果各個數據的量級差別很大的話,繪製出來的等高線圖是扁平狀的橢圓,這時候通過梯度下降法尋找梯度方向最終將走垂直於等高線的Z字形路線,迭代速度變慢。但是如果對特徵進行歸一化操作之後,整個等高線圖將呈現圓形,梯度的方向是指向圓心的,迭代速度遠遠大於前者。二是能夠提升模型精度。
  • 學習率\alpha的選取:學習率選取過小,會導致迭代次數較多,收斂次數變慢;學習率選取過大,有可能跳過最優解,導致最終根本無法收斂。

2.Lasso迴歸與嶺迴歸

        Lasso迴歸與嶺迴歸是爲了解決線性迴歸出現的過擬合以及在通過正規方程方法求解θ的過程中出現的X^{T}X不可逆這兩類問題的, Lasso迴歸與嶺迴歸通過在損失函數中分別引入L1正則項和L2正則項來達到目的。
線性迴歸損失函數:J(\theta )=\frac{1}{2}\sum_{i=1}^{n}(h_{\theta }(x^{(i)})-y^{(i)})^{2} 

Lasso迴歸損失函數:J(\theta )=\frac{1}{2}\sum_{i=1}^{m}(h_{\theta }(x^{i})-y^{i})^{2}+\lambda \sum_{j=1}^{n}|\theta _{j}|

嶺迴歸損失函數:J(\theta )=\frac{1}{2}\sum_{i=1}^{m}(h_{\theta }(x^{i})-y^{i})^{2}+\lambda \sum_{j=1}^{n}\theta _{j}^{2} 

        其中λ稱爲正則化參數,如果λ選取過大,會把所有參數θ均最小化,造成欠擬合,如果λ選取過小,會導致對過擬合問題解決不當。 
        Lasso迴歸與嶺迴歸最大的區別在於Lasso迴歸引入的是L1範數懲罰項,嶺迴歸引入的是L2範數懲罰項,Lasso迴歸能夠使得損失函數中的許多θ均變成0,這點要優於嶺迴歸,因爲嶺迴歸是要所有的θ均存在的,這樣計算量Lasso迴歸將遠遠小於嶺迴歸。 

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