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

背景

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

線性迴歸(Linear Regression)

恰好今天聽大媽講機器學習,各類複雜高大上的算法,其背後都是在求」擬合「。python

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

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

首先,Regression 迴歸,指的是研究變量之間的關係,這個由來在Python 線性迴歸(Linear Regression) - 到底什麼是 regression?一文中講多了,這裏很少重複。算法

而後,linear 線性,很直觀:直線。機器學習

兩者連在一塊兒,即是:變量之間呈直線關係。學習

那具體是哪些變量之間?3d

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

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

當只有一個 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 發佈!

相關文章
相關標籤/搜索