固定基函数的局限性
简介
固定基函数是一种函数,它通过对非线性函数进行线性组合,帮助我们扩展机器学习中的线性模型。由于线性模型依赖于参数的线性组合,因此它们存在很大的局限性。
因此,径向函数可以通过利用数据中的非线性,同时保持参数的线性,来帮助建模这类模型。
线性回归中使用固定基函数的不同线性组合来创建复杂函数。
在本文中,我们将探讨固定基函数及其局限性。
固定基函数
线性回归模型可以用以下公式表示:
$$\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 计算 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
结论
在使用非线性基函数组合建模特定任务的线性方程时,固定基函数是一种流行的选择。然而,使用固定基函数存在一些限制,它们在存在类重叠的情况下没有用处,而且它们有时会出现过度拟合的问题,因为有时我们可能会同时尝试很多个固定基函数。