Python 線性回歸(Linear Regression) 基本理解


背景

學習 Linear Regression in Python – Real Python,對線性回歸理論上的理解做個回顧,文章是前天讀完,今天憑着記憶和理解寫一遍,再回溫更正。

線性回歸(Linear Regression)

剛好今天聽大媽講機器學習,各種復雜高大上的算法,其背后都是在求”擬合“。

線性回歸估計是最簡單的擬合了。也是基礎中的基礎。

依然是從字面上先來試着拆解和組合:

首先,Regression 回歸,指的是研究變量之間的關系,這個由來在Python 線性回歸(Linear Regression) - 到底什么是 regression?一文中講多了,這里不多重復。

然后,linear 線性,很直觀:直線。

二者連在一起,便是:變量之間呈直線關系。

那具體是哪些變量之間?

因變量 y 和 自變量 (x1...xr) 之間。

𝑦 = 𝛽₀ + 𝛽₁𝑥₁ + ⋯ + 𝛽ᵣ𝑥ᵣ + 𝜀

當只有一個 x1 的時候,就是最簡單的線性回歸 𝑦 = 𝛽₀ + 𝛽₁𝑥₁

具體怎么理解這個公式呢?

舉個簡化的例子:員工的工資 y 與 學歷 x 的關系。

假設學歷越高,工資也越高,二者是某種程度上的線性關系,

那在理論上會存在這么一個公式 y = 𝛽₀ + 𝛽₁𝑥,其中,x1...xn, y1...yn:

  • x 和 y 的數據很容易拿到(當然合法渠道了,假設你是 hr 總監)
  • hr 總監想做的是,根據這組 (x y)數據,找出 𝛽₀ 和 𝛽₁ 的值,二者稱為回歸系數
  • 這樣,下一次招聘的時候,根據應聘者的學歷,可以先估一個工資了。

這個過程便是:數據 -> 建立模型 f(x) -> 預測

只是,理論和實際總是有差別的,就像 1/3 ~= 0.3333333333333...

所以,實際擬合到的模型可能是這樣的: f(x) = 𝑏₀ + 𝑏₁𝑥

𝛽₀ 和 𝛽₁ 分別與 𝑏₀ 和 𝑏₁ 有多接近?

當然是擬合出來的越接近越好;

如何知道有多接近?

簡單,

  • 將 x1...xn 代入到擬合后的模型中 f(x),
  • 求得新的 new_y1...new_yn
  • 再跟原 y1...yn 比較,比如 new_y1 - y1 (稱為殘差)
    • 這里要用到最小二乘法(method of ordinary least squares)
    • 因為殘差可能是負的,
    • 所以用殘差平方和

回歸要解決的問題就是:以最簡單的線性回歸為例:

  • 找到最佳的 𝑏₀ 和 𝑏₁, 使模型 f(x) = 𝑏₀ + 𝑏₁𝑥 最接近理論上的線性模型 y = 𝛽₀ + 𝛽₁𝑥
  • 然后,用這個擬合好的模型 f(x) = 𝑏₀ + 𝑏₁𝑥 來預測新的數據

線性回歸好多種

除了上面例子中的最簡單的線性回歸,還有:

  • 多元線性回歸:Multiple linear Regression
    • 𝑓(𝑥₁, 𝑥₂) = 𝑏₀ + 𝑏₁𝑥₁ + 𝑏₂𝑥₂
  • 多項式回歸:Polynomial Regression
    • 𝑓(𝑥) = 𝑏₀ + 𝑏₁𝑥 + 𝑏₂𝑥²....

即從二維轉為三維、多維空間擬合了。這個有點復雜了,不過原理和前面是相通的。

擬合的程度

過猶不及用在這里也適合,過度擬合也很脆弱的,因為可能新增加一個或幾個數據就破壞了之前的完美,就好像專門為你定制的帽子戴在別人頭上就沒那么合適和美了。

overfitting](https://files.realpython.com/media/poly-reg.5790f47603d8.png)

當然,擬合的不及也不好,這時候可能就要換模型或者調參了吧

underfitting

Reference

本文由博客一文多發平台 OpenWrite 發布!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM