機器學習--線性迴歸模型原理

線性迴歸, 是迴歸分析中的一種, 其表示自變量與因變量之間存在線性關係. 迴歸分析是從數據出發, 考察變量之間的數量關係, 並經過必定的數學關係式將這種關係描述出來, 再經過關係式來估計某個變量的取值, 同時給出該估計的可靠程度. 下面咱們從一元線性迴歸開始提及.算法

1. 一元線性迴歸

在迴歸分析中若是隻涉及一個自變量(用來預測的變量)和一個因變量(要預測的變量), 這時就稱爲一元迴歸, 若是自變量與因變量之間存在線性關係, 那麼此時的迴歸就稱爲一元線性迴歸.函數

1.1 模型

假設自變量x和因變量y存在線性關係, 那麼x和y的線性關係函數能夠表示爲:學習

因爲該函數是假設x和y存在線性關係, 所以該函數能夠稱爲假設函數. 咱們把描述因變量y和自變量x關係的函數稱爲迴歸模型, 故該函數又稱一元線性迴歸模型.其中稱爲模型參數, 不一樣的參數將會構造不一樣的模型, 所以構建模型的關鍵之處在於選擇參數, 怎麼樣才能算好的參數呢?優化

因爲咱們構建模型的最終目的是用來預測, 所以好參數構建的模型應該具有很好的預測能力, 也就是說預測值和實際值差別很小, 咱們把預測值h(x)與實際值y之間的差別稱爲偏差. 對於某個值來講偏差就是h(xi)-yi, 對於整個模型來講, 則是對全部偏差進行求和, 但因爲偏差中有正負之分, 所以會產生偏差相互抵消, 爲了不存在這種抵消問題, 對偏差進行平方求和, 再對其求平均, 故有平均偏差平方和, 其表示爲spa

其中, m是樣本量. h(x(i))表示第i個預測值, 與之對應的實際值則是y(i).3d

這種偏差能夠認爲是實際值或者指望值的損失, 故該偏差函數能夠稱爲損失函數(有時也稱爲代價函數). 咱們能夠根據損失函數數值最小來選出最優模型(很好的預測能力).blog

1.2. 算法

這裏我將介紹兩種基於損失函數最小的算法: 梯度降低法和最小二乘法.同步

1. 梯度降低法數學

什麼是梯度? 引出百度百科定義:class

梯度的本意是一個向量(矢量),表示某一函數在該點處的方向導數沿着該方向取得最大值,即函數在該點處沿着該方向(此梯度的方向)變化最快,變化率最大(爲該梯度的模)。

在單個自變量函數曲線中, 梯度也就是曲線上某點處的斜率, 而對於咱們的損失函數來講, 其有兩個自變量, 故這兩個自變量與損失函數將構成三維曲面.

能夠將這三維曲面想象成一座山, 咱們如今的目標是山底, 咱們要想最快下山, 就須要走最陡峭的方向, 而最陡峭的方向能夠當作是當前方向(下山方向)中變化最大的反方向. (其中, 變化最大的方向是指從下山改成上山, 與目標不符, 故取其反方向, 即最大的反方向).

梯度降低法與下山過程相似, 咱們的目標是求出使得損失函數數值最小的最優解. 具體過程就是給定一個初始位置, 沿着梯度的反方向(也就是負的梯度)走一個步長的距離, 更新當前位置, 如此反覆, 直至找到使得損失函數最小的最優解, 能夠表示爲:

其中, 爲學習效率, 也稱爲步長,  等號右邊的爲每次更新以前的模型參數(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 小結

當訓練數據特徵數量較少時, 且擬合函數爲線性, 則能夠直接採用最小二乘法, 若是擬合函數非線性, 能夠先對其進行對數轉換再運用最小二乘法; 

當訓練數據特徵數量較多時, 因爲其對擬合函數無要求, 若數據量不大, 則可選用批量梯度降低, 若數據量很大, 則能夠選用小批量梯度降低.

相關文章
相關標籤/搜索