線性回歸, 是回歸分析中的一種, 其表示自變量與因變量之間存在線性關系. 回歸分析是從數據出發, 考察變量之間的數量關系, 並通過一定的數學關系式將這種關系描述出來, 再通過關系式來估計某個變量的取值, 同時給出該估計的可靠程度. 下面我們從一元線性回歸開始說起.
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 小結
當訓練數據特征數量較少時, 且擬合函數為線性, 則可以直接采用最小二乘法, 如果擬合函數非線性, 可以先對其進行對數轉換再運用最小二乘法;
當訓練數據特征數量較多時, 由於其對擬合函數無要求, 若數據量不大, 則可選用批量梯度下降, 若數據量很大, 則可以選用小批量梯度下降.

