線性模型(一)普通線性回歸到廣義線性模型

2021-02-23 機器學習軟體工程方法


普通線性回歸

線性回歸

線性模型如何解決非線性問題

建模方法論


背景

線性模型為什麼能解決非線性問題。同時提醒讀者避免只從字面理解「線性」帶來誤會,即線性模型只能解決線性問題。

本章將線性模型定位和表述為在數學表達式上具有線性的表示方式的數學模型,包含普通線性回歸模型和廣義線性模型(線性支持向量機本章不進行講述)。

前者是傳統意義上的線性模型,後者則具有一定非線性的解決能力,尤其是當結合一定的特徵工程(如交叉衍生)後,所謂的線性模型同樣能處理非線性問題。

廣義線性模型是普通線性回歸模型的推廣,有多種變體或衍生,以處理更廣泛的現實問題。

本章將帶領讀者從普通的線性回歸自然遷移到廣義線性模型中常用的邏輯回歸模型(包含正則的邏輯回歸)和金融領域的評分卡模型,從而形成線性模型的知識體系。

普通線性回歸

「回歸」( Regression)二字早在19世紀80年代 就已出現,由英國統計學家Francis Galton在研究父代和子代身高之間的關係時提出。

他發現在同一族群中,子代的平均身高介於其父代身高和族群平均身高之間。即高個子的父親,其兒子的身高有低於其父親的趨勢,而矮個子父親,其兒子的身高有高於其父親的趨勢。也就是說,子代的身高有向族群平均身高回歸的趨勢,這就是「回歸」最初的含義——回歸到均值,這就是回歸模型的本質。

回歸廣泛應用於自變量和因變量關係的探索和由自變量預測因變量的數據分析和統計中,常見的有3種應用場景:

用於描述自變量和因變量的因果關係,即數據產生的某種機制。得知自變量和因變量的關係後,應用新數據得到預測結果。

在機器學習學科的框架下,構建模型的目的是預測,也就是第3點的描述。前2點則更多的是從統計學科的方向定義。

筆者認為正因為不同的應用場景導致了不同的研究方向,使得統計和機器學習產生了千絲萬縷的聯繫。

回歸建模中主要涉及的步驟有:樣本假設、參數估計、方差分析/顯著性檢驗/擬合優度檢驗等。但這些統計分析技術都屬於統計學範疇,所以在眾多的機器學習書籍中並不常介紹

線性回歸一元線性回歸

其模型的統計表達式為式:

式中𝑦𝑖表示因變量,是一個連續正態隨機變量;𝑥𝑖表示已知的自變量,可以是連續、離散或者兩者的組合,𝛽0和𝛽1表示未知的模型參數;𝜖𝑖表示隨機誤差項,也是一個隨機變量,並且設該隨機誤差項的期望為0;方差固定為𝜎2

該式的線性表現為如下兩個方面。

模型的自變量也是線性的:自變量是一次項,而不是指數等非線性的形式「

注意:上述式子雖然和一元一次方程形式一致,但並不是函數關係而是統計關係。函數關係精確地表示了變量與變量之間關係,而統計關係則不表示精確關係,表示的是變量與變量的趨勢關係。統計機器學習所有模型表達式都是統計關係而不是單純的函數關係。請注意學習過程中數學到統計知識的遷移和轉化。

在現實中由於樣本有限,由樣本估計得到的參數稱為經驗參數,其回歸方程表示為經驗回歸方程,由經驗回歸方程得到的估計值和觀察值y的差表示為殘差。殘差的幾何意義表現為樣本到回歸線上的歐式距離。

回歸方程一般使用普通最小二乘法(Ordinary Least Square,OLS)求解,使得殘差平方和(Residual Sum of Squares,RSS)最小或均方誤差最小.

多元線性回歸

由多個自變量描述的線性回歸模型稱之為多元線性回歸模型,其通用的模型表達式為(9-3)

式(9-3)和式(9-2)的相關參數含義基本一致,此時𝛽稱為偏回歸係數,表示對因變量的一種偏效應(控制其他自變量不變,自變量對因變量的淨效應)

將式(9-3)重寫成向量的形式(9-4):

如果在X矩陣中添加一項常數為1的列,那麼式(9-4)可以簡寫為式(9-5):

同一元線性回歸一樣,取條件期望後消去誤差項,就開始估計模型參數。在經典的統計模型開源包statmodel中,多元回歸的實現就是這樣的,示例如下:

import statsmodels.api as sm
np.random.seed(42)

# 兩個自變量x1和x2,生成100個樣本
nsample = 100

# 0-10等分100
x1 = np.linspace(0, 10, 100)

# 構造非相關變量!
x2 = x1**2
X = np.column_stack((x1, x2))

'''X 示例如下
array([[0.00000000e+00, 0.00000000e+00],
       [1.01010101e-01, 1.02030405e-02],
       [2.02020202e-01, 4.08121620e-02],
       ...
'''

# beta0,beta1,beta2
beta = np.array([1, 0.1, 10])

# 生成隨機正態分布的誤差
e = np.random.normal(size=nsample)


添加beta0對應常數項1:

X = sm.add_constant(X)
'''X 加入常數項後
array([[1.00000000e+00, 0.00000000e+00, 0.00000000e+00],
       [1.00000000e+00, 1.01010101e-01, 1.02030405e-02],
       ...
'''

人工構造觀察值y:

y = np.dot(X, beta) + e

模型擬合:

model = sm.OLS(y, X)
results = model.fit()

擬合結果:

results.params

輸出如下,說明很好地接近了beta。

array([ 0.94812365,  0.04049094, 10.00733023])

Skearn中的LinearRegression易用性更好,因為它無須人為加入常數項。請讀者自行實驗,並驗證兩者得到的結果是否一致.

線性回歸的假設

工作中曾經有人質疑:「回歸模型都需要滿足數據的正態分布假設,很明顯現有的數據無法滿足,使用這樣的數據能得到有效的模型嗎?」

本章後續的內容能夠給出答案。

在上述的一元回歸和多元回歸模型中使用最小二乘法求解參數時,確實要求有相關的假定:

1) 線性假設

2) 正交假設

3) 獨立同分布

4) 正態分布

以上分布說明,詳情請參考9.1.2

線性模型如何解決非線性問題

線性模型能夠處理非線性問題嗎?

答案是肯定的,最直接的方式是對自變量進行非線性變換,如常見的對數變換、二次項變換、指數變換等,但現實世界並沒有這麼簡單,自變量進行哪種非線性變換後能使得與因變量線性相關呢?

現實世界在很多情況下是離散、定性的,而非像上述回歸描述的連續的或定量的

對於二分(0和1)或多分的因變量。處理這類二分變量最直接的方式是在小於0時限制為0,大於1時限制為1。這會產生一條Z字形的不連續折線:

a圖的目標變量的值域範圍理論上可以是正、負無窮,

b圖的目標變量的值域範圍在問題定義時限制為0和1.

如果繼續沿用線性回歸的分析方法,b圖散點圖的問題是,中間段接近線性,兩端則是非線性且當x取值足夠小或足夠大到y=0或y=1時,x的改變對因變量就不再有影響。

這樣的擬合回歸已經不滿足正態性和同方差的假設,具體表現為誤差(殘差)不再是正態分布,誤差也與X有了一定的關係(越靠近端點誤差越小),不再無關

線性的概念和相加的性質無法得到滿足。

廣義線性模型和狹義線性模型

廣義線性模型(Generalized Linear Models,GLM)由Nelder和Wedderburn於 1972年提出和發表 ,旨在解決普通線性回歸模型無法處理因變量離散,並發展能夠解決非正態因變量的回歸建模任務的建模方法。

在廣義線性模型的框架下,因變量不再要求連續、正態,當然自變量更加沒有特殊的要求。能夠對正態分布、二項分布、泊松分布、Gamma分布等隨機因變量進行建模.

通俗來說,廣義線性模型是普通線性模型的普遍化,如果把9.1節的普通線性回歸模型稱為狹義線性模型,那麼它就是廣義線性模型中因變量服從正態分布的一個特例

建模方法論

1) 假設因變量服從某個隨機分布,如正態分布、二項分布;

2) 根據上述的假設分布構建因變量的轉換形式(參考下文的連結函數);

3) 對轉換後的隨機變量進行線性擬合。

隨機分布和指數分布族

構建廣義線性模型前,需要對因變量做必要的隨機分布假設。例如邏輯回歸默認了隨機變量服從二項分布。

如上分布有一個共同的特點:它們都可以寫成一致的指數統計表達式,所以稱為指數分布族,其統一的概率分布為式(9-6)。此外指數分布族還包括負二項分布、Tweedie分布等。

其中𝜃稱為標準參數,是均值(𝜇)的一個函數,同理b(𝜃)也是均值的一個函數;𝜙為離散參數,衡量了y的方差;c則為觀察值y和離散參數的函數!

在指數分布族中,隨機變量的均值和方差分別為:μ=b'(θ) 和Var(y)=b''(θ)φ 。

另外,指數函數具有優良的數學特性,在參數估計過程中直接使用最大似然估計求解即可(連乘取對數似然後轉化為累加)。

連結函數

線性模型擬合的是目標變量y的(條件)期望E(y),即y所服從分布的均值,可以得到如式(9-8)的變換,其中帶-1上標的表示反函數

我們把𝜃(即 )稱為連結函數(Link Function),它一般使用g(.) 來表示

連結函數連結了均值和線性表達式,從而構成了統一形式的廣義線性模型,如式(9-9)所示。

Statmodel實現了這些廣義線性模型:Binomial、Gamma、Gaussian、InverseGaussian、NegativeBinomial、Poisson、Tweedie。

例如二項分布的使用示例如下:

import statsmodels.api as sm
logit_model = sm.GLM(y, X, family=sm.families.Binomial())

可以看出:

廣義線性模型是隨機變量期望變換後的線性模型或原期望的非線性模型。

相關焦點

  • 廣義線性模型與邏輯回歸
    所以我們無法直接採用線性回歸模型進行建模。對於這一類問題,可以用邏輯回歸來處理。在講邏輯回歸之前,先簡單介紹下指數族分布、廣義線性模型,因為邏輯回歸是廣義線性模型的一種,所以我們需要了解如何從廣義線性模型得到邏輯回歸。二、指數族分布之所以先介紹指數族分布,因為指數族分布是所有廣義線性模型的假設條件之一。
  • 廣義線性模型學習
    如果需要使用廣義線性模型進行分類,請參閱 logistic 回歸 。1.1.1. 普通最小二乘法LinearRegression 擬合一個帶有係數  的線性模型,使得數據集實際觀測數據和預測數據(估計值)之間的殘差平方和最小。
  • 廣義線性模型到底是個什麼鬼?| 協和八
    畢竟光是理解線性模型的各種用法就已經夠頭疼的了,再加個廣義更繞不清楚了。普通線性模型對數據有著諸多限制,真實數據並不總能滿足。而廣義線性模型正是克服了很多普通線性模型的限制。在筆者的心裡,廣義模型能解決的問題種類比普通線性模型多很多,用圖來表示,大概就是這樣的:圖一:定性對比廣義線性模型和普通線性模型的能解決的問題多少我們前面通過討論邏輯回歸、定序回歸以及泊松回歸模型,已經帶著讀者們在廣義線性模型的世界裡面轉了一大圈。
  • 廣義線性模型GLM(泊松分布)
    對於簡單的一元模型,我們可以直接用泊松模型建模,但是如果要引入多個自變量,我們還是需要線性模型。但是線性模型有以下問題:(1)count data值為非負,單純的線性模型無法滿足這一點。當然,我們可以通過開方再平方響應變量解決;(2)count data的數據往往是非線性的;(3)無法確保模型殘差符合同方差。
  • 一般線性模型與廣義線性模型
    你所接觸到的統計分析方法都是基於已有或者正在探索中的統計模型;醫學統計學,大致應用在醫學科研、藥物臨床試驗兩個領域,兩者有交叉,而後者更加注重實用性;臨床試驗中的統計分析方法基本上都來自於經過實證的數據分析模型。
  • eviews線性回歸模型 - CSDN
    掌握多元線性回歸模型的估計方法、掌握多重共線性模型的識別和修正。多元線性回歸模型,並識別和修正多重共線性。普通最小二乘法、簡單相關係數檢驗法、綜合判斷法、逐步回歸法。最小二乘估計的原理、t檢驗、F檢驗、擬合優度R方值。
  • eviews 線性回歸模型 - CSDN
    掌握多元線性回歸模型的估計方法、掌握多重共線性模型的識別和修正。多元線性回歸模型,並識別和修正多重共線性。普通最小二乘法、簡單相關係數檢驗法、綜合判斷法、逐步回歸法。最小二乘估計的原理、t檢驗、F檢驗、擬合優度R方值。
  • [PRML]線性回歸模型--線性基函數模型
    這通常稱為線性回歸(linear regression)。,這個暗示了模型的限制。『tanh』函數的線性組合。在監督學習中如回歸和分類,我們不是尋找輸入變量的分布模型。然而,確定最優模型複雜度的問題從尋找合適的基函數數量轉移到確定正則化係數
  • 線性模型(二)正則化的回歸
    兩種正則的線性組合稱為ElasticNet(彈性網絡)回歸Sklearn中的正則化的回歸實現較為全面。pd.DataFrame(np.column_stack([x, y]), columns=['x', 'y'])pow_max = 13# 構造不同冪的xfor i in range(2, pow_max):      colname = 'x_%d' % i      data[colname] = data['x']**i普通線性回歸
  • 線性回歸(2)—— 模型評估
    在分類算法中,這種差異的衡量用一種角度來判斷,那就是是否預測到了正確的分類,而對於回歸類算法,有兩種不同的解讀來看待回歸的結果:是否預測到了較為正確的數值1. RSS 殘差平方和RSS 衡量了預測值和真實值的差異,既是損失函數,也是回歸類模型的評估指標之一。
  • spss多元線性回歸模型 - CSDN
    多元線性回歸,主要是研究一個因變量與多個自變量之間的相關關係,跟一元回歸原理差不多,區別在於影響因素(自變量)更多些而已,例如:一元線性回歸方程 為:毫無疑問,多元線性回歸方程應該為:上圖中的 x1,  x2, xp分別代表「自變量」Xp截止,代表有P個自變量
  • 看不懂Logistic模型?別慌,先來了解它和線性回歸模型的區別!
    作為回歸模型的一種,其實它和簡單線性回歸模型分析有著非常相似的地方,它們的模型方程形式是一致的,右邊都可以寫成b1x+c的方程形式,並且b1和c都是未知的係數參數。但是和多元線性回歸模型的不同之處在於,Logistic回歸模型的因變量不同,這是因為我們將因變量的值做了logit處理變換,而不是直接將該方程的值作為因變量的結果。
  • 模型之母:多元線性回歸
    0x00 前言 在線性回歸的前3篇中,我們介紹了簡單線性回歸這種樣本只有一個特徵值的特殊形式,並且了解了一類機器學習的建模推導思想,即:然後通過最優化損失函數或者效用函數,獲得機器學習的模型。然後我們推導並實現了最小二乘法,然後實現了簡單線性回歸。最後還以簡單線性回歸為例,學習了線性回歸的評價指標:均方誤差MSE、均方根誤差RMSE、平均絕對MAE以及R方。
  • eviews線性回歸模型專題及常見問題 - CSDN
    掌握多元線性回歸模型的估計方法、掌握多重共線性模型的識別和修正。多元線性回歸模型,並識別和修正多重共線性。普通最小二乘法、簡單相關係數檢驗法、綜合判斷法、逐步回歸法。最小二乘估計的原理、t檢驗、F檢驗、擬合優度R方值。
  • [PRML]回歸模型--貝葉斯線性回歸
    本文包含以下內容:1 簡介在討論線性回歸模型的最大似然的參數設置中,我們已經看到由基函數的數量控制的有效模型的複雜性需要根據數據集的大小控制。獨立的持有(hold-out)數據可以用來確定模型的複雜性,但是這可能在計算上是昂貴的,並且會浪費有價值的數據。因此我們轉向線性回歸的貝葉斯處理,這將避免最大似然的過擬合問題,也將導致僅使用訓練數據自動確定模型複雜度的方法。
  • 線性模型 || 線性回歸(Linear Regression)算法
    目錄:一、線性模型概念二、LR算法直觀原理三、Python代碼實現算法(notice:1)公式中,字母粗體以示向量2)本文中LR指代Linear Regression,而非Logistic Regression)一、線性模型概念
  • 線性模型(三)邏輯回歸
    至此,經過連結函數轉化後的原值域為正、負無窮該變換稱為logit變換,經過logit變換後可以順利地使用線性回歸模型擬合觀察值的對數機率。如果反過來講,單純從值域上看,實際上可以使用其他非線性的轉化函數替代(下文即將提到的)Sigmoid函數,如三角函數tan,但連結函數logit本質上將線性預測值約束到了二項分布,從而得到式(9-12)的必然結果.
  • [PRML]線性分類模型--概率判別模型
    在統計學術語中,這種模型稱為邏輯回歸,但應強調這是一種分類模型,而不是回歸模型。與式13的比較表明,它與線性回歸模型的平方和誤差函數的梯度具有完全相同的形式。首先,將Newton-Raphson方法應用於具有平方和誤差函數(式12)的線性回歸模型(式3)。
  • 如何用線性回歸模型做數據分析?
    編輯導語:在日常工作中,很多時候都會用到數據分析的方法,線性回歸模型看起來非常簡單,但實際上它的十分重要;本文作者分享了關於如何用線性回歸模型做數據分析的方法,我們一起來學習一下。一、什麼是線性回歸線性回歸是利用線性的方法,模擬因變量與一個或多個自變量之間的關係;對於模型而言,自變量是輸入值,因變量是模型基於自變量的輸出值,適用於x和y滿足線性關係的數據類型的應用場景。
  • 兩個例子告訴你:什麼是「線性」回歸模型?
    全文共1534字,預計學習時長3分鐘在機器學習和統計領域,線性回歸模型是最簡單的模型之一。這意味著,人們經常認為對線性回歸的線性假設不夠準確。例如,下列2個模型都是線性回歸模型,即便右圖中的線看起來並不像直線。