學習 Linear Regression in Python – Real Python,對線性迴歸理論上的理解作個回顧,文章是前天讀完,今天憑着記憶和理解寫一遍,再回溫更正。html
恰好今天聽大媽講機器學習,各類複雜高大上的算法,其背後都是在求」擬合「。python
線性迴歸估計是最簡單的擬合了。也是基礎中的基礎。git
依然是從字面上先來試着拆解和組合:github
首先,Regression 迴歸,指的是研究變量之間的關係,這個由來在Python 線性迴歸(Linear Regression) - 到底什麼是 regression?一文中講多了,這裏很少重複。算法
而後,linear 線性,很直觀:直線。機器學習
兩者連在一塊兒,即是:變量之間呈直線關係。學習
那具體是哪些變量之間?3d
因變量 y 和 自變量 (x1...xr) 之間。code
𝑦 = 𝛽₀ + 𝛽₁𝑥₁ + ⋯ + 𝛽ᵣ𝑥ᵣ + 𝜀
htm
當只有一個 x1 的時候,就是最簡單的線性迴歸 𝑦 = 𝛽₀ + 𝛽₁𝑥₁
。
具體怎麼理解這個公式呢?
舉個簡化的例子:員工的工資 y 與 學歷 x 的關係。
假設學歷越高,工資也越高,兩者是某種程度上的線性關係,
那在理論上會存在這麼一個公式 y = 𝛽₀ + 𝛽₁𝑥
,其中,x1...xn, y1...yn:
這個過程即是:數據 -> 創建模型 f(x) -> 預測
只是,理論和實際老是有差異的,就像 1/3 ~= 0.3333333333333...
因此,實際擬合到的模型多是這樣的: f(x) = 𝑏₀ + 𝑏₁𝑥
𝛽₀ 和 𝛽₁ 分別與 𝑏₀ 和 𝑏₁ 有多接近?
固然是擬合出來的越接近越好;
如何知道有多接近?
簡單,
new_y1 - y1
(稱爲殘差)
迴歸要解決的問題就是:以最簡單的線性迴歸爲例:
f(x) = 𝑏₀ + 𝑏₁𝑥
最接近理論上的線性模型 y = 𝛽₀ + 𝛽₁𝑥
f(x) = 𝑏₀ + 𝑏₁𝑥
來預測新的數據除了上面例子中的最簡單的線性迴歸,還有:
𝑓(𝑥₁, 𝑥₂) = 𝑏₀ + 𝑏₁𝑥₁ + 𝑏₂𝑥₂
𝑓(𝑥) = 𝑏₀ + 𝑏₁𝑥 + 𝑏₂𝑥²
....即從二維轉爲三維、多維空間擬合了。這個有點複雜了,不過原理和前面是相通的。
過猶不及用在這裏也適合,過分擬合也很脆弱的,由於可能新增長一個或幾個數據就破壞了以前的完美,就好像專門爲你定製的帽子戴在別人頭上就沒那麼合適和美了。
](https://files.realpython.com/media/poly-reg.5790f47603d8.png)
固然,擬合的不及也很差,這時候可能就要換模型或者調參了吧
本文由博客一文多發平臺 OpenWrite 發佈!