固定基函数的局限性
介绍
固定基函数是帮助我们将机器学习中的线性模型扩展到更高维度的方法,通过对非线性函数进行线性组合来实现。由于线性模型依赖于参数的线性组合,因此它们存在一个显著的局限性。
径向基函数通过利用数据中的非线性来帮助建模这类模型,同时保持参数的线性。
线性回归通过创建复杂的函数,使用固定基函数的不同线性组合。
在本文中,让我们深入了解固定基函数及其局限性。
固定基函数
线性回归模型可以用以下方程表示:
$$\mathrm{y(x\:,\:y)\:=\:w^{T}\:x}$$
上述模型表示参数和输入特征之间的线性关系。
它无法处理非线性关系。为了使上述模型能够处理非线性关系,可以使用基函数或基函数的组合来代替输入变量。整个模型仍然保持其线性的本质,如下所示:
$$\mathrm{y(x\:,\:y)\:=\:w_{o}\theta_{0}(x)\:+\:w_{1}\theta_{1}(x)\:+\:w_{2}\theta_{2}(x)\:......\:w_{N-1}\theta_{N-1}(x)}$$
$$=\mathrm{\displaystyle\sum\limits_{n=0}^{N-1}w_{n}\theta_{n}(x)}$$
$$=\mathrm{w^{T}\theta(x)}$$
因此,可以使用非线性固定基函数来处理x的非线性关系。
固定基函数的局限性
固定基函数通常将输入转换为更高维度。它们的一些局限性包括:
固定基函数无法消除两个类别之间已存在的重叠,但它们可能会增加重叠。
有时固定基函数不适合某项任务,因为很难判断这些函数是否最适合该模型。
这些函数可能会导致过拟合,因为我们可能想要使用固定函数,并且我们可能会尝试很多函数。
示例
线性固定基函数的代码实现
## fixed basis import numpy as np def gb(x_arr, mue, gam=1): return np.exp(-gam * np.linalg.norm(mue-x_arr)**2) x_arr = np.array([-0.5, -1, -0.5, -0.3, -0.1, 0, 0.4, 0.3, 0.6, 0.7, 1]) t_arr = np.array([-3.9, -3.6, -2.0, 0.8, 0.5, -1.9, -1.6, 0.7, 2.2, 2.8, 6.6]) N = 5 l = 0.0001 # phi matrix phi = np.ones((t_arr.shape[0], N)) for n in range(N-1): mue = n/N phi[:, n+1] = np.vectorize(gb)(x_arr, mue) # alpha & w calculation W = np.linalg.inv(l * np.identity(N) + phi.T @ phi) @ phi.T @ t_arr alp = sum((t_arr - phi @ W)**2) / len(t_arr) print(alp)
输出
2.090565904553811
结论
固定基函数在对使用非线性基函数组合的线性方程进行建模时是一种流行的选择。但是,使用固定基函数存在一些局限性:它们在存在类别重叠的情况下并不适用,并且有时会存在过拟合问题,因为有时我们可能会同时尝试很多函数。