当前位置: 首页 > news >正文

机器学习---正则化、过拟合抑制与特征筛选

专栏:机器学习

个人主页:云端筑梦狮

注:上一篇机器学习还差一小节,日后坑必会填上

一.正则化

  • 什么是正则化 / 如何进行正则化

其实机器学习中正则化(regularization)的外在形式非常简单,就是在模型的损失函数中加上一个正则化项(regularizer),有时也被称为惩罚项(penalty term),如下方程所示,其中 L 为损失函数,J 为正则化项。通常来说,正则化项往往是关于模型参数的 1 - 范数或者 2 - 范数,当然也有可能是这两者的某种结合,例如 sklearn 的逻辑回归中的弹性网正则化项,其中加入模型参数的 1 - 范数的正则化也被称为 l1 正则化,加入模型参数的 2 - 范数的正则化也被称为 l2 正则化。

注:在数学和线性代数里,范数是衡量向量(或矩阵 )“大小、长度” 的工具,1 - 范数和 2 - 范数是常用类型,常应用于机器学习正则化等场景,以下从向量和矩阵角度说明: 

向量的 1 - 范数、2 - 范数

  • 1 - 范数(曼哈顿范数)

    比如向量 v=(3,−2,5),1 - 范数为 ∣3∣+∣−2∣+∣5∣=3+2+5=10 ,可理解为在 “曼哈顿街区” 从一点到另一点的折线距离。

  • 2 - 范数(欧几里得范数)
    对向量 v=(v1​,v2​,…,vn​),2 - 范数是各元素平方和的平方根,公式:

为什么需要正则化?有什么作用

一般来说,正则化核心的作用是缓解模型过拟合倾向,此外,由于加入正则化项后损失函数的形体发生了变化,因此也会影响损失函数的求解过程,在某些时候,加入了正则化项之后会让损失函数的求解变得更加高效。如此前介绍的岭回归,其实就是在线性回归的损失函数基础上加入了 w 的 1 - 范数,而 Lasso 则是加入了 w 的 2 - 范数。并且,对于逻辑回归来说,如果加入 l2 正则化项,损失函数就会变成严格的凸函数。

经验风险与结构风险

在我们构建损失函数求最小值的过程,其实就是依据以往经验(也就是训练数据)追求风险最小(以往数据误差最小)的过程,而在给定一组参数后计算得出的损失函数的损失值,其实就是经验风险。而所谓结构风险,我们可以将其等价为模型复杂程度,模型越复杂,模型结构风险就越大。而正则化后的损失函数在进行最小值求解的过程中,其实是希望损失函数本身和正则化项都取得较小的值,即模型的经验风险和结构风险能够同时得到控制

模型的经验风险需要被控制不难理解,因为我们希望模型能够尽可能的捕捉原始数据中的规律,但为何模型的结构风险也需要被控制?核心原因在于,尽管在一定范围内模型复杂度增加能够有效提升模型性能,但模型过于复杂可能会导致另一个非常常见的问题 —— 模型过拟合,一旦模型过拟合了,尽管模型经验风险在降低、但模型的泛化能力会下降。因此,为了控制模型过拟合倾向,我们可以把模型结构风险纳入损失函数中一并考虑,当模型结构风险的增速高于损失值降低的收益时,我们就需要停止参数训练(迭代)

二.过拟合

只有挖掘出贯穿始终的规律(同时影响训练数据和新数据的规律),模型才能够进行有效预测。不过,既然有些贯穿始终的全局规律,那就肯定存在一些只影响了一部分数据的局部规律。一般来说,由于全局规律影响数据较多,因此更容易被挖掘,而局部规律只影响部分数据,因此更难被挖掘,因此从较为宽泛的角度来看,但伴随着模型性能提升,也是能够捕获很多局部规律的。但是需要知道的是,局部规律对于新数据的预测并不能起到正面的作用,反而会影响预测结果,此时就出现模型过拟合现象。

以下解释代码明天后补

http://www.lqws.cn/news/535915.html

相关文章:

  • 抖音图文带货权限怎么开通
  • Vue3 中 Axios 深度整合指南:从基础到高级实践引言总结
  • 《解锁FFmpeg - python:开启多媒体处理新时代》
  • 多线程编程 ----线程主动退出pthread_exit与线程被动退出pthread_cancel
  • DAY 33 简单的神经网络
  • 前端面试专栏-主流框架:14. Vue Router与Vuex核心应用
  • Spring Boot使用Redis常用场景
  • Python爬虫多线程并发时的503错误处理最佳实践
  • HTTP-Cookie和Session
  • 算法第48天|单调栈:42. 接雨水、84.柱状图中最大的矩形
  • 鸿蒙边缘智能计算架构实战:从环境部署到分布式推理全流程
  • window显示驱动开发—DirectX 图形内核子系统(一)
  • 树莓派超全系列教程文档--(67)rpicam-apps可用选项介绍之检测选项
  • 算法-最大子数组
  • 【Python】For
  • Agentic AI爆发前夜,合作伙伴如何把握时代机遇?
  • 2D写实交互数字人如何重塑服务体验?
  • MP1652GTF-Z:MPS高效3A降压转换器 工业5G通信专用
  • windows内核句柄判断有效
  • LeetCode刷题-top100(和为 K 的子数组)
  • ISP Pipeline(4): Anti Aliasing Noise Filter 抗锯齿与降噪滤波器
  • 【thinkphp5】Session和Cache记录微信accesstoken
  • QT实现一个三轴位移台的控制界面
  • QT Creator构建失败:-1: error: Unknown module(s) in QT: serialport
  • 【CMake基础入门教程】第七课:查找并使用第三方库(以 find_package() 为核心)
  • 【缓存技术】深入分析如果使用好缓存及注意事项
  • Flux.create
  • Linux 内核 TCP 的核心引擎:tcp_input.c 与 tcp_output.c 的协同之道
  • ubuntu安装docker遇到权限问题
  • TCP 重传机制详解:原理、变体与故障排查应用