線性回歸, 是回歸分析中的一種, 其表示自變量與因變量之間存在線性關系. 回歸分析是從數據出發, 考察變量之間的數量關系, 並通過一定的數學關系式將這種關系描述出來, 再通過關系式來估計某個變量的取值, 同時給出該估計的可靠程度. 下面我們從一元線性回歸開始說起.
1. 一元線性回歸
在回歸分析中如果只涉及一個自變量(用來預測的變量)和一個因變量(要預測的變量), 這時就稱為一元回歸, 如果自變量與因變量之間存在線性關系, 那么此時的回歸就稱為一元線性回歸.
1.1 模型
假設自變量x和因變量y存在線性關系, 那么x和y的線性關系函數可以表示為:
由於該函數是假設x和y存在線性關系, 因此該函數可以稱為假設函數. 我們把描述因變量y和自變量x關系的函數稱為回歸模型, 故該函數又稱一元線性回歸模型.其中和
稱為模型參數, 不同的參數將會構造不同的模型, 因此構建模型的關鍵之處在於選擇參數, 怎么樣才能算好的參數呢?
由於我們構建模型的最終目的是用來預測, 因此好參數構建的模型應該具備很好的預測能力, 也就是說預測值和實際值差異很小, 我們把預測值h(x)與實際值y之間的差異稱為誤差. 對於某個值來說誤差就是h(xi)-yi, 對於整個模型來說, 則是對所有誤差進行求和, 但由於誤差中有正負之分, 因此會產生誤差相互抵消, 為了避免存在這種抵消問題, 對誤差進行平方求和, 再對其求平均, 故有平均誤差平方和, 其表示為
其中, m是樣本量. h(x(i))表示第i個預測值, 與之對應的實際值則是y(i).
這種誤差可以認為是實際值或者期望值的損失, 故該誤差函數可以稱為損失函數(有時也稱為代價函數). 我們可以根據損失函數數值最小來選出最優模型(很好的預測能力).
1.2. 算法
這里我將介紹兩種基於損失函數最小的算法: 梯度下降法和最小二乘法.
什么是梯度? 引出百度百科定義:
梯度的本意是一個向量(矢量),表示某一函數在該點處的方向導數沿着該方向取得最大值,即函數在該點處沿着該方向(此梯度的方向)變化最快,變化率最大(為該梯度的模)。
在單個自變量函數曲線中, 梯度也就是曲線上某點處的斜率, 而對於我們的損失函數來說, 其有兩個自變量和
, 故這兩個自變量與損失函數
將構成三維曲面.
可以將這三維曲面想象成一座山, 我們現在的目標是山底, 我們要想最快下山, 就需要走最陡峭的方向, 而最陡峭的方向可以看成是當前方向(下山方向)中變化最大的反方向. (其中, 變化最大的方向是指從下山改為上山, 與目標不符, 故取其反方向, 即最大的反方向).
梯度下降法與下山過程類似, 我們的目標是求出使得損失函數數值最小的最優解. 具體過程就是給定一個初始位置, 沿着梯度的反方向(也就是負的梯度)走一個步長的距離, 更新當前位置
, 如此反復, 直至找到使得損失函數最小的最優解
, 可以表示為:
其中, 為學習效率, 也稱為步長, 等號右邊的
為每次更新之前的模型參數(j=0,1), 即每走負梯度個步長, 更新一次
和
, 而且這兩者是同步更新. 具體的求解過程如下:
首先是微分的求解, 該部分需要鏈式法則, 公式為
由於在實際中, 往往很難直接求解z對x的微分, 但引入y這個"中介"就可以將問題轉化為求z對y的微分和y對x的微分, 這就相當於分數約分的一個過程.
從計算過程中可以看出, 該算法在選擇負的梯度方向時考慮到全部訓練數據, 故該算法又稱為批量(Batch)梯度下降法. 通過以上原理也可得知, 該算法是一個迭代求最優解的過程, 下面我們介紹一種可以直接一步到位的算法.
2. 最小二乘法
最小二乘法又稱最小平方法, 即平均誤差平方和最小, 也就是我們的損失函數數值最小. 引出百度百科費馬引理定義:
函數f(x)在點ξ的某鄰域U(ξ)內有定義,並且在ξ處可導,如果對於任意的x∈U(ξ),都有f(x)≤f(ξ) (或f(x)≥f(ξ) ),那么f '(ξ)=0。
簡單來說就是可導函數極值點處導數為0, 故分別對和
求偏導, 並令其為0, 即:
由①式可得: , 故
, 代入②式中, 可得:
又由於和
, 故有:
我們現在對一元線性回歸介紹完了, 接下來看看多元線性回歸.
2. 多元線性回歸
多元線性回歸與一元線性回歸的區別在於自變量的個數, 一元是一個, 多元則是多個.
2.1 模型
假設多元線性回歸中有多個自變量(x0, x1, x2,...xn), 那么多元線性回歸模型的假設函數可以寫成:
為了簡化, 我們可以將假設函數寫成矩陣的形式:
其中, x0=1
對應的其損失函數表示為(m表示樣本量):
下面便是介紹求解最小損失函數的算法.
2.2 算法
同樣介紹兩種算法: 梯度下降法和最小二乘法.
1. 梯度下降法
與一元的方法類似, 不過這里需要注意的是對n個自變量進行同步更新.即:
2. 最小二乘法
我們可以將損失函數轉換為矩陣的形式:
同樣地, 令對
的偏導為0, 對於矩陣的運算需要用到以下公式:
然后套用公式:
通過以上我們對一元和多元回歸的模型以及算法均有所了解, 下面我們來看看這兩大算法的優缺點.
3. 兩大算法優缺點
3.1. 梯度下降法
優點
1. 在特征變量很多時, 能夠很有效的運行
缺點
1. 容易依賴於步長和起始位置的選擇, 因此需要多次嘗試尋找合適的步長和起始位置.
2. 由於在每次更新當前位置需要計算全部訓練數據, 因此其迭代速度過慢.
3.2 最小二乘法
優點
1. 直接應用公式計算即可, 學習效率高
缺點
1. 訓練數據擬合的函數非線性的話, 則不能使用最小二乘法.
2. 需要計算的逆矩陣, 如果逆矩陣不存在, 則沒法應用最小二乘法.
3. 當的樣本特征n很大時, 計算
的逆矩陣將會非常耗時, 或者說沒法計算.
4. 算法優化問題
4.1 梯度下降法
上面我們介紹的梯度下降法是指批量梯度下降法, 即:
在批量梯度下降法中, 每次計算過程都考慮全部數據, 容易找到全局最優, 但數據量較大時將會非常耗費時間, 因此誕生了隨機梯度下降法
隨機梯度下降法則是每次隨機抽取一個樣本進行計算, 可以大大提高學習效率, 但由於其具有隨機性且僅有一個樣本, 因此往往會導致不是最優解, 鑒於此, 產生了第三種方法: 小批量梯度下降法
這是綜合前兩種方法產生的, 選取其中a個樣本進行求解.
4.2 最小二乘法
若擬合函數非線性, 常常通過對數轉換等方法將其轉換為線性, 而且特征數量較少時直接運用公式進行計算即可.
4.3 小結
當訓練數據特征數量較少時, 且擬合函數為線性, 則可以直接采用最小二乘法, 如果擬合函數非線性, 可以先對其進行對數轉換再運用最小二乘法;
當訓練數據特征數量較多時, 由於其對擬合函數無要求, 若數據量不大, 則可選用批量梯度下降, 若數據量很大, 則可以選用小批量梯度下降.