非线性变换

NC ML

在学完线性回归和逻辑回归后你一定会有一个疑问,我们既然定义模型为线性函数,而线性函数中所有的输入特征都是线性的,那么我们如何处理非线性的特征呢?例如我们应该如何用线性模型来拟合一个二次函数呢?

非线性变换可以解决这个问题。

定义

我们可以通过对输入进行一定变换从而使得原本的线性特征变成非线性特征。

我们定义一个变换函数 ,将原本的 维特征转换为 维特征。我们可以将原本的特征 通过 映射到更高维的空间 ,然后使用线性模型拟合

最简单的例子是对于输入空间 ,即 ,我们可以定义一个二次变换函数 ,然后使用线性模型拟合

通过这种映射,我们可以拟合很多非线性函数。

一些其他的变换例子是:

代价

We take the benefit, we pay the price.

非线性变化允许我们拟合更多的函数,但是也有一些代价。

升高输入维度同样也会导致升高权重的维度。例如

我们原来只需要 3 维的权重,而现在需要 6 维的权重。这会导致更多的计算量。

而最严重的则是权重爆炸。当我们的特征空间变得非常大时,我们的权重也会变得非常大。模型过度复杂会导致过拟合(模型只记住了数据集的点,而不能泛化)。

非侵入性

非线性变换是一种非侵入性的方法。我们可以在不改变原始数据的情况下,通过变换函数 来拟合非线性函数。

因此非线性变化也不会影响我们推导出的公式(包括梯度、封闭解等),我们只是需要将公式内的 替换为 (或 替换为 )。

例如对于线性回归,我们定义的封闭解公式为:

如果我们应用非线性变化 ,我们因此则有: