這一章我將學習使用一種非常簡單的手段就可以改進我們的線性回歸法,使得它可以對我們非線性的資料進行處理,然後進行相應的**,也就是所謂的多項式回歸這種方法,進而我們通過多項式回歸這種方法將引出在機器學習中或許是最為重要的乙個概念,也就是模型泛化相關的問題。
那下面我們首先看一下什麼是多項式回歸?
之前學習線性回歸的過程中,對於這些資料,我們想要尋找一條直線,讓這條直線能夠盡可能地擬合這些資料,那麼如果在這個簡單的示例中,所有的資料只有乙個特徵的話,那麼相應的這根直線我們可以叫做:y=a
x+by = ax + b
y=ax+b
,其中 x
xx 是我們的樣本特徵,而 a
aa 和 b
bb 是我們這個模型需要求出的引數。
不過對於有一些資料,雖然我們也可以使用線性回歸的方式來擬合這種資料,但是其實它是具有更加強的非線性關係的。換句話說,我們用一根二次曲線來擬合這些資料的話,效果會更好。
對於這條二次曲線來說,如果這些資料也只有乙個特徵,那麼這個方程就可以寫做:y=a
x2+b
x+cy = ax^2 + bx + c
y=ax2+
bx+c
,雖然這個式子是乙個二次方程,但是我們可以從另外乙個角度來理解這個式子,就是我們將 x
2x^2
x2理解成乙個特徵,x
xx 理解成另外乙個特徵。換句話說,我們的樣本本來只有乙個特徵 x
xx, 現在我把它看作是有兩個特徵這樣的乙個資料集,我們多了乙個特徵 x
2x^2
x2,那我們從這個角度理解的話,其實這個式子本身依然是乙個線性回歸的式子。但是從 x
xx 的角度來看,也就是乙個所謂的非線性的方程,那麼這樣的方式就叫做多項式回歸。
相當於我們為我們的樣本多新增了一些特徵,這些特徵是原來樣本的多項式項,比如 x
2x^2
x2其實就是對 x
xx 進行平方,在增加了這些特徵之後,我們可以使用線性回歸的思路更好的擬合原來的資料,但是本質上相當於求出了對於原來的特徵而言這種非線性的曲線。
下面我們就實際程式設計實現一下。
總結下多項式回歸,多項式回歸在機器學習演算法上並沒有新的地方,完全是使用線性回歸的思路,它的關鍵在於為原來的資料樣本新增新的特徵,而我們得到新的特徵的方式是在原有的特徵採用多項式組合這樣的方式來解決一些非線性問題。與此同時,這個思路和我們之前學習的 pca 不同,pca 演算法是要對我們的資料進行降維,而多項式回歸是要對我們的資料進行公升維處理,新增了一些新的特徵之後,使得我們的的演算法可以更好的擬合這個高維度的資料。
具體**見 40 什麼是多項式回歸.ipynb
多項式回歸
import numpy as np import matplotlib.pyplot as plt x np.random.uniform 3,3,size 100 x x.reshape 1,1 y 0.5 x 2 x 2 np.random.normal 0,1,100 plt.scatter...
多項式回歸
多項式回歸 import torch import numpy defmake features x 獲取 x,x 2,x 3 的矩陣 x x.unsqueeze 1 將一維資料變為 n,1 二維矩陣形式 return torch.cat x i for i in range 1 4 1 按列拼接 ...
多項式回歸
線性回歸適用於資料成線性分布的回歸問題,如果樣本是非線性分布,線性回歸就不再使用,轉而可以採用非線性模型進行回歸,比如多項式回歸 多項式回歸模型定義 與線性模型,多項式模型引入了高次項 y w 0 w1 x w2 x2 w 3x3 wnxn y w 0 w 1x w 2x 2 w 3x 3 w nx...