一、線性迴歸
線性迴歸一般用來做連續值的預測,預測結果爲一個連續值。因爲訓練時學習樣本不僅要提供學習的特徵向量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時,可能會出現過擬合的情況,缺乏泛化能力,對待預測的樣本預測能力比較弱。此時引入正則化項,也就是懲罰項,給損失函數的參數賦予一個約束項,使其不能任意無限大或無限小。 無正則化時的損失函數:
當矩陣滿秩時,加入正則項後參數變爲:
其中λ是正則化參數,從上式可以看出,與未添加L2正則化的迭代公式相比,每一次迭代wi都要先乘以一個小於1的因子,從而使得w不斷減小。