TensorFlow 学习笔记(四)—— 特征组合与特征化

特征组合

在实际应用中,某些问题并不是线性问题,比如下面这张图:

非线性问题

我们无法用一条线来分开所有的蓝点和橙点。这个时候我们需要采用特征组合的方法。

特征组合是指通过将两个或多个输入特征相乘来对特征空间中的非线性规律进行编码的合成特征。

对于数值特征,可以通过将 $x_1$ 与 $x_2$ 组合来创建一个名为 $x_3$ 的特征组合:

$$ x_3 = x_1x_2 $$

这样我们的线性公式变成:

$$ y = b + \omega_1x_1 + \omega_2x_2 + \omega_3x_3 $$

训练的方式跟以前相同。组合的方式可以有很多种,比如:

  • [ A x B ]:将两个特征值相乘。
  • [ A x B x C x D x E]:将五个特征值相乘。
  • [ A x A]:对单个特征值求平方。

但是实际应用中用得更多的是独热矢量的组合。例如下面两个独热矢量:

1
2
binned_latitude = [0, 1, 0]
binned_longitude = [0, 0, 1]

它们的组合是一个包含 9 个元素的独热矢量(8 个 0 和 1 个 1)。

1
binned_latitude X binned_longitude = [0, 0, 0, 0, 0, 1, 0, 0, 0]

如果根据经纬度来预测房价,显然房价与单独的经度、维度相关性就没有与经纬度结合在一起的相关性高。

正规化

前面介绍过拟合概念时提到,过度的训练可能会出现过拟合的情况。通过降低模型复杂度来防止过拟合的原则被称作正则化。

因此训练模型的衡量目标并非只是获得最小的损失,而是要同时考虑损失和复杂度:

$$minimize(Loss(Data|Model) + complexity(Model))$$

于是我们衡量训练效果的因素分为两个部分:损失项和正则化项。

正则化项目有两种计算方法:

  • 所有特征的权重的函数。
  • 所有非零权重的特征总数的函数。

例如 $L_2$正则化公式采用的是第一种方法,定义是:

$$L_2 regularization term = ||\omega||_2^2 = \omega_1^2 + \omega_2^2 + … + \omega_n^2$$

权重越接近 0 对模型的影响越小。因此执行 $L_2$正则化会有下面的影响:

  • 权重接近于 0。
  • 权重的平均值接近于 0,并且呈正态分布。

在实际操作中,我们会增加 lambda 参数来稍稍调整衡量目标:

$$minimize(Loss(Data|Model) + \lambda complexity(Model))$$

  • $\lambda$ 过大时,模型过于简单会出现欠拟合的情况,模型从数据中获得的信息不足,预测不准确。
  • $\lambda$ 过小时,模型过于简单会出现过拟合的情况,模型无法泛化,预测不准确。
  • $\lambda$ 取决于数据,需要根据数据手动调整。
给鸡排饭加个蛋