固定基函数的局限性

machine learningnumpyserver side programming

简介

固定基函数是一种函数,它通过对非线性函数进行线性组合,帮助我们扩展机器学习中的线性模型。由于线性模型依赖于参数的线性组合,因此它们存在很大的局限性。

因此,径向函数可以通过利用数据中的非线性,同时保持参数的线性,来帮助建模这类模型。

线性回归中使用固定基函数的不同线性组合来创建复杂函数。

在本文中,我们将探讨固定基函数及其局限性。

固定基函数

线性回归模型可以用以下公式表示:

$$\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

结论

在使用非线性基函数组合建模特定任务的线性方程时,固定基函数是一种流行的选择。然而,使用固定基函数存在一些限制,它们在存在类重叠的情况下没有用处,而且它们有时会出现过度拟合的问题,因为有时我们可能会同时尝试很多个固定基函数。


相关文章