本文概述
- 什么是过度适合机器学习?
- 什么是正则化?
- 总结
有很多技术可以防止过度拟合。正则化就是这样一种技术。这篇文章都是专门针对这一点的。在这篇文章中, 我将尝试用更少的数学但更多的直觉来解释正则化。与我的其他教程不同, 本教程将不涉及任何案例研究。在研究任何案例研究之前, 我希望你了解正则化的重要性和微妙之处。因为正则化是棘手的, 但是作为数据科学家要知道是非常重要的技术。
这篇文章概述如下:
- 什么是过度适合机器学习?
- 什么是正则化?它如何帮助防止过度拟合现象?
- 总结
泛化是指机器学习模型学习到的概念对模型在学习时未看到的特定示例的适用程度(简称测试集)。
好的机器学习模型的目标是将训练数据很好地推广到问题领域的任何数据。这使你可以在将来对模型从未见过的数据进行预测。
我将从引言部分引述:” 过度拟合是一种机器学习模型对训练数据建模得很好, 但在测试数据上表现不佳的现象。”
当模型学习训练数据中的细节和噪声时, 会过度拟合, 从而对模型在看不见的数据上的性能产生负面影响。这意味着训练数据中的噪声或随机波动被模型拾取并作为概念学习。问题在于这些概念不适用于新数据, 会对模型的泛化能力产生负面影响。
非参数和非线性模型在学习目标函数时具有更大的灵活性, 因此过度拟合的可能性更大。这样, 许多非参数机器学习算法还包括参数或技术, 以限制和约束模型学习的细节量。
例如, 决策树是一种非常灵活的非参数机器学习算法, 并且会过度拟合训练数据。可以通过在学会删除一些已拾取的细节后修剪树来解决此问题。另一方面, 欠拟合指的是既不能对训练数据建模也不能将其推广到新数据的模型。
什么是正则化? 当你听到正则化一词而没有任何其他与机器学习相关的信息时, 你都知道正则化是对某项进行正则化的过程或对某项进行正则化的过程。问题是:到底是什么。关于机器学习, 你谈论的是学习算法或模型, 以及算法或模型中的实际内容是什么?这就是参数集。简而言之, 机器学习中的正则化是对参数进行正则化的过程, 这些参数会将系数估计值约束, 正则化或缩小为零。换句话说, 此技术不鼓励学习更复杂或更灵活的模型, 避免了过拟合的风险。
现在, 你正在慢慢地了解正则化实际上如何有助于防止过度拟合?让我们直接说吧。
【防止过度拟合(正则化)】在知道正则化实际上是对我们的参数进行正则化之后, 你可能会想:为什么对参数进行正则化有助于防止过度拟合?让我们考虑下图:
文章图片
如你在图表中所见, 它具有两个功能, 分别由绿色曲线和蓝色曲线表示。两条曲线都很好地拟合了这些红色点, 因此你可以认为它们都导致了零损失。从过度拟合的直觉上, 你可能已经猜到绿色曲线是过度拟合的结果。是的, 你完全正确!但是你是否曾经想过, 为什么绿色曲线(或任何与其相似的曲线)过拟合数据?
为了以一种更数学的方式理解这一点, 让我们假设用于绘制上述图形的两个函数:
绿色曲线:
文章图片
红色曲线:
文章图片
查看每个函数的方程式, 你会发现绿色曲线的系数更大, 这是过度拟合的主要原因。如前所述, 过度拟合可以解释为你的模型非常适合数据集, 这似乎是在记住我们显示的数据, 而不是实际从中学习。凭直觉, 具有较大的系数可以看作是记忆数据的证据。例如, 你在我们的训练数据集中遇到了一些噪声, 其中数据的大小与其他数据相差甚远, 这些噪声将导致我们的模型将更多的权重放到更高的系数中, 而你收到的是一个过拟合我们的模型训练资料!
经常在数据科学问题中, 随着功能的增加, 机器学习模型可以很好地适合你的数据。但是一切都有其缺点。如果你添加太多功能, 我们将因过度拟合而受到惩罚。你们中的某些人可能会认为, 如果添加太多特征会导致过度拟合, 那么为什么我们在获得可接受的模型后就不停止添加特征呢?但是以这种方式思考。如果你的客户或老板希望学习的模型具有95%的准确度, 但是如果不添加更多功能就无法实现该结果, 这会导致数据过拟合。你下一步将做什么?
或者以另一种方式考虑它。你面临的一个问题是为你提供了一个大型数据集, 并且每个数据集都包含许多功能。你不知道要删除哪些功能, 更糟糕的是, 如果发现每个功能都具有丰富的信息, 则意味着删除某些功能可能会破坏算法的性能。你下一步打算做什么?
答案是正则化。
正则化术语: 因此, 删除某些功能以防止过度拟合并非总是一个好主意。正如你在上面的示例中看到的那样, 它需要进一步分析才能知道你是否可以删除一些信息较少的功能。因此, 良好的做法是一开始就使用所有功能来构建第一个模型。正则化作为解决方案出现。为了更加透明, 我们首先来看一下MSE成本函数(MSE:均方误差):
文章图片
其中
- hθ(X(i))是第i个输入参数Xi给出的学习预测
- y(i)是原始预测
- m是输入样本的总数
文章图片
其中
- λ是控制正则项值的常数
- n是特征数。
总结 我将在这里结束这篇文章。我相信这个职位并不长, 但是你可以自己修改和修改。当你对这篇文章所产生的直觉充满信心时, 下一步将是:
- 研究不同类型的正则化。正则化的L1和L2变体。
- 在任何参数化的机器学习模型中实施正则化。
- 机器学习导论
- R中基于树的模型的机器学习
- 使用Python中基于树的模型进行机器学习
推荐阅读
- Python中的运算符用法全解
- R中的马尔可夫链分析
- 机器学习基础-规范
- 使用VIM包可视化丢失的数据
- 用Python进行集成学习
- 推断神经网络的层数和神经元(图解)
- SQL(报告和分析)
- Python列表(划分为给定大小的块)
- 用PyTorch研究张量