使用线性回归学习多项式回归

数据挖掘 机器学习 回归 线性回归 麻木的
2022-02-23 02:47:07

让我们从考虑一维数据开始,即d=1. 在 OLS 回归中,我们将学习函数

f(x)=w0+w1x,
在哪里x是数据点和w=(w0,w1)是权重向量。实现多项式拟合度p,我们将前面的表达式修改为
f(x)=j=0pwjxj
在哪里p是多项式的次数。我们将使用一组基函数重写这个表达式为 其中我们只需将此转换应用于每个数据点以获得新的数据集然后我们对这个数据集使用线性回归,得到权重和非线性预测器它是原始观察空间中的多项式(非线性)函数。笔记
f(x)=j=0pwjϕj(x)=wϕ
ϕj(x)=xjϕ=(ϕ0(x),ϕ1(x),,ϕp(x))xi{(ϕ(xi),yi)}wf(x)=j=0pwjϕj(x),

这是如何运作的?谁能给我一个例子并简单地向我解释一下吗?我将如何在 Numpy 中实现这一点?

1个回答

这很容易理解(并使用矩阵来实现)。

考虑一个具体的例子(稍后概括)。你有一个单一特征的多项式函数):x

f(x)=ω0x0+ω1x1+ωnxn

您可以在向量中组织系数和特征,并通过标量积获得f

ω=(ω0,ωn),x=(1,xx2xn)

因此

f(x)=ωTx

这只不过是一个多特征线性回归,其中第个特征现在次方iix

在 numpy 中,假设您有一个 data 数组x

要创建上面的向量,您可以这样做(例如,对于xn=3

X = np.ones((len(x), 4))
X[:,1] = x
X[:,2] = np.power(x,2)
X[:,3] = np.power(x,3)

然后使用 sklearn LinearRegression

model = LinearRegression()
model.fit(X, y)

更新sklearn最近引入了 In PolynomialFeatures,它精确地执行了我在 numpy 中描述的转换(你在 numpy 中问过,但这也可能有用)。