多元線性回歸是最簡單的機器學習模型,通過給定的訓練數據集,擬合出一個線性模型,進而對新數據做出預測。
對應的模型如下:
n: 特征數量。
一般選取殘差平方和最小化作為損失函數,對應為:
M:訓練樣本數量。
通過最小化代價損失函數,來求得 值,一般優化的方法有兩種,第一是梯度下降算法(Gradient Descent),第二種是矩陣法(The normal equations)。
梯度下降算法
給一個初始值,然后逐步的迭代改變的值,是代價損失函數逐次變小,使每次都往梯度下降的方向改變:
表示下降速度。
為了求偏導數,當只有一個樣本時,即
;
即:
當有多個訓練樣本時,下降梯度算法即為:
由於每次迭代都需要計算所有樣本的殘差並加和,因此此方法也叫做批下降梯度法(batch
gradient descent),當有大規模數據時,此方法不太適合,可采取它得一個變種,即每次更新權重時,不是計算所有的樣本,而是選取其中一個樣本進行計算梯度,這個方法叫做隨機下降梯度法(stochastic gradient descent):
隨機下降梯度法與下降梯度法對比可能收斂更快,但是可能找不到最優點而在最優點附近徘徊。
矩陣求解法
由於梯度下降算法需要多次迭代,並且需要指定下降速率,如果下降速度過快則可能錯過最優點,如果過慢則需要迭代多次,因此還可選用矩陣法求解。
首先,需要定義一些用到的線性代數知識:
對於一個函數,表示一個輸入mxn的矩陣,輸入為一個實數,即輸入x為矩陣,則對此函數求導數為:
即對矩陣中每個元素求導,結果也為一個m*n的矩陣。
另外,定義矩陣的跡trace,為矩陣主對角線元素之和:
如果A為實數a,則 tr a=a。
以下是關於矩陣跡的一些性質:
對於多元線性回歸,將訓練數據的特征作為一個矩陣:
同時將其對應的y值也作為一個矩陣:
因此,,
對求導數,且:
,
則:
令上式為0,則
以上即為矩陣法的推導,其中涉及到線性代數的知識沒有證明,只要將給定的公式帶入求導即可得出此結論。
矩陣法與下降梯度法對比好處是不需要多次迭代,一次計算即可得出精確結果,但當數據量過大時,即設計矩陣X過大時,對矩陣的乘法即求逆有很大計算復雜度,因此此方法適用於小規模數據。另外,用矩陣法時不需要對輸入特征數據中心化。
總結
以上就是簡單多元線性回歸,及其對應的下降梯度算法與矩陣算法,雖然簡單,但是其他一些復雜算法的基礎。