编辑:小舟
正如巴菲特所言:「近似的正确好过精确的错误。」
在机器学习中,过拟合(overfitting)会使模型的预测性能变差,通常发生在模型过于复杂的情况下,如参数过多等。本文对过拟合及其解决 *** 进行了归纳阐述。
在机器学习中,如果模型过于专注于特定的训练数据而错过了要点,那么该模型就被认为是过拟合。该模型提供的答案和正确答案相距甚远,即准确率降低。这类模型将无关数据中的噪声视为信号,对准确率造成负面影响。即使模型经过很好地训练使损失很小,也无济于事,它在新数据上的性能仍然很差。欠拟合是指模型未捕获数据的逻辑。因此,欠拟合模型具备较低的准确率和较高的损失。
如何确定模型是否过拟合?
构建模型时,数据会被分为 3 类:训练集、验证集和测试集。训练数据用来训练模型;验证集用于在每一步测试构建的模型;测试集用于最后评估模型。通常数据以 80:10:10 或 70:20:10 的比率分配。
在构建模型的过程中,在每个 epoch 中使用验证数据测试当前已构建的模型,得到模型的损失和准确率,以及每个 epoch 的验证损失和验证准确率。模型构建完成后,使用测试数据对模型进行测试并得到准确率。如果准确率和验证准确率存在较大的差异,则说明该模型是过拟合的。
如果验证集和测试集的损失都很高,那么就说明该模型是欠拟合的。
如何防止过拟合
交叉验证
交叉验证是防止过拟合的好 *** 。在交叉验证中,我们生成多个训练测试划分(splits)并调整模型。K-折验证是一种标准的交叉验证 *** ,即将数据分成 k 个子集,用其中一个子集进行验证,其他子集用于训练算法。
交叉验证允许调整超参数,性能是所有值的平均值。该 *** 计算成本较高,但不会浪费太多数据。交叉验证过程参见下图:
用更多数据进行训练
用更多相关数据训练模型有助于更好地识别信号,避免将噪声作为信号。数据增强是增加训练数据的一种方式,可以通过翻转(flipping)、平移(translation)、旋转(rotation)、缩放(scaling)、更改亮度(changing brightness)等 *** 来实现。
移除特征
移除特征能够降低模型的复杂性,并且在一定程度上避免噪声,使模型更高效。为了降低复杂度,我们可以移除层或减少神经元数量,使 *** 变小。
早停
对模型进行迭代训练时,我们可以度量每次迭代的性能。当验证损失开始增加时,我们应该停止训练模型,这样就能阻止过拟合。
下图展示了停止训练模型的时机:
正则化
正则化可用于降低模型的复杂性。这是通过惩罚损失函数完成的,可通过 L1 和 L2 两种方式完成,数学方程式如下:
L1 惩罚的目的是优化权重绝对值的总和。它生成一个简单且可解释的模型,且对于异常值是鲁棒的。
L2 惩罚权重值的平方和。该模型能够学习复杂的数据模式,但对于异常值不具备鲁棒性。
这两种正则化 *** 都有助于解决过拟合问题,读者可以根据需要选择使用。
Dropout
Dropout 是一种正则化 *** ,用于随机禁用神经 *** 单元。它可以在任何隐藏层或输入层上实现,但不能在输出层上实现。该 *** 可以免除对其他神经元的依赖,进而使 *** 学习独立的相关性。该 *** 能够降低 *** 的密度,如下图所示:
总结
过拟合是一个需要解决的问题,因为它会让我们无法有效地使用现有数据。有时我们也可以在构建模型之前,预估到会出现过拟合的情况。通过查看数据、收集数据的方式、采样方式,错误的假设,错误表征能够发现过拟合的预兆。为避免这种情况,请在建模之前先检查数据。但有时在预处理过程中无法检测到过拟合,而是在构建模型后才能检测出来。我们可以使用上述 *** 解决过拟合问题。
视频链接:https://n.sinaimg.cn/sinakd20211219s/138/w600h338/20211219/9907-45d93401a89f40f888b22dc250f73fab.jpg 区块链项目Ronin发布消息称,黑客从该项目窃取价值6.15亿美元的加密货币。按照R...
不少 WordPress 网站正在遭受黑客们的攻击,通过注入的恶意脚本,利用访问者的浏览器对乌克兰网站进行分布式拒绝服务攻击。今天,MalwareHunterTeam 发现一个 WordPress 网站被入侵使用这个脚本,针对十个网站进行分布式拒绝服务(DDoS)攻击。 这些网站包括乌克兰政府机构、...
Google 安全团队 Project Zero 近日分享了过去几年安全研究的统计数据,在 2019 年 1 月至 2021 年 12 月期间,团队共计报告了 376 个漏洞,期限为 90 天。其中 351 个(93.4%)已被修复,14 个(3.7%)被供应商标记为“WontFix”,11 个(2...
微软今天推出了一个紧急 Windows 修复补丁,以修复存在于 Windows Print Spooler 服务中的一个关键缺陷。该漏洞被称之为“PrintNightmare”,在安全研究人员无意中公布了概念验证(PoC)的利用代码后,于上周被曝光。 微软已经发布了带外安全更新以解决该漏洞,并将其评...
蓝牙核心规范(Bluetooth Core)和蓝牙网状网络连接技术(Mesh Profile)规范近日被爆安全漏洞,可被网络犯罪分子利用进行中间人(man-in-the-middle)攻击。根据卡内基梅隆大学 CERT 协调中心的报告,“支持Bluetooth Core 和 Mesh 规范的设备存在...
一个旨在窃取密码、银行资料和其他敏感信息的恶意软件正在 Android 平台上快速传播。这款恶意软件名为 FluBot,通过声称来自某家快递公司的短信进行安装,要求用户点击一个链接来追踪某个包裹。这个钓鱼链接要求用户安装一个应用程序来跟踪假的快递,但实际上会窃取用户的敏感数据。 一旦安装,FluBo...