1.特征组合
1.1特征组合:编码非线性规律
我们做出如下假设:蓝点代表生病的树。橙色的点代表健康的树。
您可以绘制一条直线将生病的树与健康的树清晰地分开吗?不可以。这是一个非线性问题。您绘制的任何线条都无法很好地预测树的健康状况。
如需解决图 2 中所示的非线性问题,请创建一个特征组合。特征组合是指通过将两个或多个输入特征相乘来对特征空间中的非线性特征进行编码的合成特征。(术语跨来自跨产品。) 下面我们通过组合 x1和x3来创建一个名为“x3”的特征组合:x3=x1x2
1.2 特征组合的种类
我们可以创建许多不同类型的特征组合。例如:
- [A X B]:将两个特征的值相乘形成的特征组合。
- [A x B x C x D x E]:将五个特征的值相乘形成的特征组合。
- [A x A]:通过对单个特征求平方形成的特征组合。
通过采用随机梯度下降法,可以有效地训练线性模型。因此,使用特征组合补充缩放的线性模型一直是对大规模数据集进行训练的高效方法。
2. 简化正则化:L2 正则化
请考虑以下泛化曲线,该曲线显示的是训练集和验证集相对于训练迭代次数的损失。
图 1. 训练集和验证集的损失。
图 1 显示了一个模型,其中训练损失逐渐减少,但验证损失最终增加。换言之,该泛化曲线显示模型与训练集中的数据过拟合。根据奥卡姆的内在结构,或许我们可以通过降低复杂模型的复杂度来防止过拟合,这种原则称为正则化。
换言之,不应只是以最小化损失(经验风险最小化)为目标:
minimize(Loss(Data|Model))
而是以最小化损失和复杂度为目标,这称为结构风险最小化:
minimize(Loss(Data|Model) + complexity(Model))
现在,我们的训练优化算法是一个由两项内容组成的函数:一个是损失项,用于衡量模型与数据的拟合度,另一个是正则化项,用于衡量模型复杂度。
机器学习速成课程重点介绍了两种衡量模型复杂度的常见方式(两者在一定程度上相关):
- 将模型复杂度作为模型中所有特征的权重的函数。
- 将模型复杂度作为具有非零权重的特征总数的函数。
如果模型复杂度是权重的函数,则特征权重的绝对值越高,对模型复杂度的贡献就越大。
我们可以使用 L2 正则化公式量化复杂性,该公式将正则化项定义为所有特征权重的平方和:
在此公式中,接近于 0 的权重对模型复杂度几乎没有影响,而离群值权重则会产生巨大的影响。
例如,某个线性模型具有以下权重:
{w1=0.2,w2=0.5,w3=5,w4=1,w5=0.25,w6=0.75}
L2 正则化项为 26.915:
但是, w3 (上文加粗)的平方值为 25,几乎贡献了所有复杂度。所有其他五种权重的平方和仅为 L2 正则化项加上 1.915。
2.1补充1: 过拟合(overfitting)、 欠拟合
机器学习中最棘手的障碍之一:过拟合(overfitting)、欠拟合。
2.1.1过拟合:
1.理解:学习器把训练样本学得"太好了",很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化能力下降,这就是过拟合。
2.概念:过拟合指的是模型在训练数据上表现很好,但在未见过的测试数据上表现较差的情况。过拟合发生的原因是模型过于复杂,能够记住训练数据的细节和噪声,而不是学习数据的通用模式。
3.特征:
- 模型在训练数据上的准确度高。
- 模型在测试数据上的准确度较低。
- 模型的参数数量过多,容易记忆训练数据。
4.常见引起过拟合的原因
- 建模样本选取有误,如样本数量太少,选样方法错误,样本标签错误等,导致选取的样本数据不足以代表预定的分类规则;
- 样本噪音干扰过大,使得机器将部分噪音认为是特征从而扰乱了预设的分类规则;
- 假设的模型无法合理存在,或者说是假设成立的条件实际并不成立;
- 参数太多,模型复杂度过高。
5.防止过拟合的方法:
- 数据集扩增:增加更多的训练数据,可以减少过拟合的风险。
- 正则化:通过添加正则化项,如L1正则化(Lasso)或L2正则化(Ridge),来惩罚模型参数的大小,使模型更简单。
- 特征选择:选择最重要的特征,降低模型的复杂度。
- 交叉验证:使用交叉验证来估计模型的性能,选择最佳的模型参数。
- 早停止:在训练过程中监控验证集的性能,当性能开始下降时停止训练,以防止过拟合。
2.1.2欠拟合:
1.理解:就是模型没有很好地捕捉到数据特征,不能够很好地拟合数据。
2.概念: 欠拟合表示模型太过简单,无法捕获数据中的关键特征和模式。模型在训练数据和测试数据上的性能都较差。
3.特征:
- 模型在训练数据上的准确度较低。
- 模型在测试数据上的准确度也较低。
- 模型可能太简单,参数数量不足。
4.防止欠拟合的方法:
- 增加模型复杂度:使用更复杂的模型,例如增加神经网络的层数或增加决策树的深度。
- 增加特征:添加更多的特征或进行特征工程,以捕获更多数据的信息。
- 减小正则化强度:如果使用了正则化,可以降低正则化的强度,使模型更灵活。
- 调整超参数:调整模型的超参数,如学习率、批量大小等,以改善模型的性能。
- 使用更多数据:如果可能的话,增加训练数据可以提高模型的性能。
过拟合和欠拟合都是需要非常注意的问题。选择合适的模型复杂度、正则化方法和特征工程技巧可以帮助在训练机器学习模型时避免这些问题,获得更好的泛化性能。
3.简化正则化:Lambda
模型开发者通过以下方式来调整正则化项的整体影响:用正则化项的值乘以名为 lambda(也称为正则化率)的标量。也就是说,模型开发者旨在执行以下操作:
执行 L2 正则化会对模型产生以下影响
- 使权重值接近于 0(但并非正好为 0)
- 使权重的平均值接近 0,并且呈正态(钟形或高斯)分布。
增加 lambda 值会增强正则化效果。例如,lambda 值较高的权重直方图可能如图 2 所示。 图 2. 权重直方图。
降低 lambda 的值往往会生成一个更扁平的直方图,如图 3 所示。
图 3. 由较低的 lambda 值生成的权重直方图。
选择 lambda 值时,目标是在简单性和训练数据拟合之间取得适当的平衡: |
- 如果 lambda 值过高,则模型会非常简单,但是您将面临数据欠拟合的风险。模型将无法从训练数据中获得足够的信息来做出有用的预测。
- 如果 lambda 值过低,则模型会比较复杂,并且您将面临数据过拟合的风险。您的模型将了解过多训练数据的特殊性,无法泛化到新数据。
注意 :将 lambda 设置为零会完全取消正则化。在这种情况下,训练仅专注于使损失降至最低,而这可能会带来最高的过拟合风险。
学习速率与 lambda 之间存在密切关联。L2 正则化值越强,使特征权重接近于 0。较低的学习速率(使用早停法)通常会产生相同的效果,因为与 0 的距离没有那么大。因此,同时调整学习速率和 lambda 可能会产生令人困惑的效果。
早停法是指在模型完全收敛之前结束训练。在实践中,以在线(连续)方式进行训练时,我们通常最终会获得一定程度的隐式早停法。也就是说,一些新趋势的数据尚不足以收敛。
如上所述,改变正则化参数的影响可能与学习速率或迭代次数变化的影响相混淆。一种有用的做法(在对固定批次的数据进行训练时)是进行足够多的迭代,这样提前停止不会产生任何影响。
4. 问题
4.1问题1:
假设某个线性模型具有 100 个输入特征:
- 其中 10 个特征信息丰富。
- 其中 90 个特征信息缺乏。
假设所有特征的值都介于 -1 到 1 之间。以下哪些说法是正确的?
A.L2 正则化可能会导致模型针对某些信息缺乏的特征学习到适中的权重。√
答:出乎意料的是,当某个信息缺乏的特征恰好与标签相关联时,就会发生这种情况。在这种情况下,模型错误地将本应归于信息丰富特征的“功劳”归功于此类信息缺乏的特征。
B.L2 正则化会使大多数信息缺乏的权重正好为 0.0。×
答:L2 正则化不会倾向于使权重正好为 0.0。L2 正则化降低较大权重的程度高于降低较小权重的程度。随着权重越来越接近于 0.0,L2“推”向 0.0 的力度会减弱。
C.L2 正则化会使许多信息缺乏的权重接近(但并非正好)0.0。√
答:是的,L2 正则化会使权重接近于 0.0,但并非正好为 0.0。
4.2 问题2:
假设某个线性模型具有两个密切相关的特征;也就是说,这两个特征几乎是彼此的副本,但其中一个特征包含少量的随机噪点。如果我们使用 L2 正则化训练该模型,这两个特征的权重会发生什么变化?
A:其中一个特征的权重较大,另一个特征的权重几乎为 0.0。×
答:L2 正则化降低较大权重的程度高于降低较小权重的程度。因此,即使一个权重降低的速度比另一个快,L2 正则化也往往会使较大权重降低的速度快于较小的权重。
B:这两个特征将具有大致相等的适度权重。√
答:L2 正则化会使特征的权重大致相等,大约为模型中只有两个特征之一时权重的一半。
C:其中一个特征的权重较大,另一个特征的权重正好为 0.0。×
答:L2 正则化几乎不会使权重正好为 0.0。相比之下,L1 正则化(稍后会介绍)则会使权重正好为 0.0。