Regularization(正则化)

article/2025/10/1 16:13:28

前言

       这一章还是紧接着上一章的,在上一章我们讨论了logistic regrsssion(逻辑回归),在更早我们还讨论了linear regression(线性回归),对于这两种问题,我们在进行用函数去预测结果时,我们根据已知的数据集去推测一个函数关系,然后去模拟输入和输出的关系。那么问题就来了,什么样的函数关系更能准确表示两者之间的关系呢?对于linear regression问题,是不是找到一个函数关系能表示训练集的所有数据之间输入和输出之间的关系就是最好了?而对于logistic regression问题,是不是找到一个边界决策可以完全把所有数据进行完全地无误分离出来就最好了?答案先卖个关子,在这一章我们将和大家讨论这个问题。

      最后,如果在内容见解上有什么不对地地方,希望大家不吝赐教,谢谢!

【机器学习系列】【第四章:逻辑回归】【第六章:神经网络】

第五章  Regularization(正则化)

5.1 The problem of overfitting(过度拟合问题)

    5.1.1 linear regression

           对于linear regression问题,我们还是用前面的房子的price和size来说明这个问题,对于我们给定的一些price和size的数据 集,我们可以用如图1的一些函数关系去模拟两者之间的关系。

                                                                 图1 用不同的函数关系去描述price和size的关系

    在图1中,我们可以看到,对于第一个,我们用一次函数\theta _{0}+\theta _{1}x去描述两者之间的关系,对于有很多数据不能更好地落在这条线上,而且我们清楚在实际中,随着后面size越大,price是趋于稳定的,而对于这个关系来说是无限上升的,明显不符合两者之间的关系,对于这个问题我们称为underfit(不充分拟合),再看第二个,我们用一个二次函数\theta _{0}+\theta _{1}x+\theta _{2}x^2来描述两者之间的关系,对于训练中的数据少数落在这个函数以外,对于函数的趋势走向也比较符合二者之间的关系,所以对于这个函数来说,就是比较符合训练集的,我们称为just right,最后来看看第三个,我们用了一个四次函数\theta _{0}+\theta _{1}x+\theta _{2}x^2+\theta _{3}x^3+\theta _{4}x^4来描述两者之间的关系,虽然使训练集中的数据都落在在了函数上,但由于曲线太过于扭曲,不符合整体的走向,所以这也不是很合理的函数关系,我们把这个问题就称为overfit。

      在上述这个问题中,我们很直观地了解了什么是overfit,而对于overfit来讲,如果我们有更多的特征,则h(x)更接近y,这个时候我们的误差函数J(\theta )=\frac{1}{2m}\sum_{i=1}^{m}(h(x^{(i)})-y^{(i)})^2\approx 0,对于J(\theta)来看似乎是很好的关系,但对于预测新的数据来看,是不能很好地预测出比较合理的结果的。

    5.1.2 Logistic regression

          现在给大家介绍下logistic regression关于overfit的问题,下面还是用一个具体的例子来向大家说明这个问题,如图2所示。

                                                                图2 用不同的边界决策去分离两类

      如图2所示,对于具体的分析,我就不跟大家一一道来了,和linear regression问题一样,对于第一个仍然是underfit,第二个是just right,第三个就是overfit。

5.2 解决过度拟合的问题

      根据以上的分析,我们该如何来解决过度拟合了?当特征变量很多时,我们用来分析出的h(x)会更接近y,出现过度拟合的可能性更大,所以第一个解决办法就是减少特征变量,先通过手动选择减少特征变量,再进行模型选择。但很多时候,有很多变量是不能之间去掉的,比如房子price的问题中,不管是size,age of house,no. of bedrooms等等都是不可少的特征,那么我们就有了第二中解决办法,即我们要给大家详细介绍的regularization(正则化),保持所有的特征,来减少\theta _{j},在后面会跟大家详细介绍。

5.3 Cost Function(代价函数)

    在这里,我们又来讨论这个cost function,在这里还是用前面的linear regression中的房子price和size的问题来向大家说明这个问题。如图3所示。

                                                                               图3 Just right和overfit

     在图3中,我们对两者进行比较,会发现对于overfit这个表达式来看,如果没有了\theta _{3}x^3+\theta _{4}x^4后面这两项,或者让他们的影响不是很大,则可以变成前面的关系,前面我们也说了,我们可以让\theta _{3},\theta _{4}的值很小,则后面两项就没什么影响了。在这里我们可以对cost function重新定义为:\frac{1}{2m}\sum_{i=1}^{m}(h(x^{(i)})-y^{(i)})^2+1000\theta _{3}+1000\theta _{4},关于\theta _{3},\theta _{4}前面的系数1000,只是我们随便设置的一个数,足够大就行,对于这个新的表达式,在前面的章节中,我们也说了代价函数是用来评判我们所选的模型是否符合数据集的关系,所以我们需要代价函数的值尽量小,为0最好,而对于这个新的式子,对于后面新添的两项,如果我们希望整个式子的值比较小,则\theta _{3},\theta _{4}的值必须很小才行,这样即达到了我们前面的要求。

      对于这个regularization(正则化)问题,就是我们使我们的参数\theta _{1},\theta _{2},...,\theta _{n}减小,这样就可以减小过度拟合。对于特征还是x_{1},x_{2},...,x_{n},参数还是:\theta _{0},\theta _{1},\theta _{2},...,\theta _{n},而J(\theta )=\frac{1}{2m}[\sum_{i=1}^{m}(h(x^{(i)})-y^{(i)})^2+\lambda \sum_{j=1}^{n}\theta _{j}^{2}],注意后面新添的一项,我们对于\theta _{0}是不做惩罚的。对于后面新添的一项,我们则称为正则化变量。

      对于\lambda我们只知道要选取一个比较大的数,那么\lambda选取太大会怎么样了?对于这个问题,我们还是用一个房子的例子来向大家说明这个问题。如图4所示,对于我们这个新的代价函数J(\theta )=\frac{1}{2m}[\sum_{i=1}^{m}(h(x^{(i)})-y^{(i)})^2+\lambda \sum_{j=1}^{n}\theta _{j}^{2}],如果我们所选\lambda太大,即意味着\theta _{1},\theta _{2},\theta _{3},\theta _{4}会很小,接近于0,在这里我们就几乎可以不考虑后面的四项了,那么这个模型函数就成了h(x)=\theta _{0},是一条水平的直线,很明显这个没有很好地描述这个关系,即失败的预测。

                                                                                图4 price and size

5.4 Regularized linear regression(线性回归的正则化)

     对于J(\theta )=\frac{1}{2m}[\sum_{i=1}^{m}(h(x^{(i)})-y^{(i)})^2+\lambda \sum_{j=1}^{n}\theta _{j}^{2}],我们在前面也进行了分析,而我们还需要讨论的一个问题就是\theta _{j}的问题,我们做的那么多工作,就是为了选择出最好的\theta _{j},那么对于这个新的代价函数,我们的\theta _{j}会是怎样了?关于\theta _{j},这个式子是永远不会变的,就是\theta _{j}:=\theta _{j}-\frac{\partial }{\partial \theta _{j}}J(\theta ),所以\theta _{0}:=\theta _{0}-\alpha \frac{1}{m}\sum_{i=1}^{m}(h(x^{(i)})-y^{(i)})x_{0}^{(i)}\theta _{j}:=\theta _{j}-\alpha [\frac{1}{m}\sum_{i=1}^{m}(h(x^{(i)})-y^{(i)})x_{j}^{(i)}+\frac{\lambda }{m}\theta _{j}],对这个式子进行整理下,得到\theta _{j}:=\theta _{j}(1-\alpha \frac{\lambda }{m})-\alpha \frac{1}{m}\sum_{i=1}^{m}(h(x^{(i)})-y^{(i)})x_{j}^{(i)},关于1-\alpha \frac{\lambda }{m}是小于1的,所以有了\lambda使\theta _{j}变小了。

5.5 Regularized logistic regression(逻辑回归的正则化)

      对于logistic regression问题,在前面我们也给出了如图5所示的overfit问题。同样的,我们对cost function做出了一些改变,J(\theta )=-\frac{1}{m}\sum_{i=1}^{m}[y^{(i)}logh(x^{(i)})+(1-y^{(i)})log(1-h(x^{(i)}))]+\frac{\lambda }{2m}\sum_{j=1}^{n}\theta _{j}^{2},而对于\theta _{j}的求法也做出对应的改变,\theta _{0}:=\theta _{0}-\alpha \frac{1}{m}\sum_{i=1}^{m}(h(x^{(i)})-y^{(i)})x_{0}^{(i)}\theta _{j}:=\theta _{j}-\alpha [\frac{1}{m}\sum_{i=1}^{m}(h(x^{(i)})-y^{(i)})x_{j}^{(i)}+\frac{\lambda }{m}\theta _{j}],注意这里的h(x)=\frac{1}{1+e^{-\theta ^{\top }x}}

                                                                      图5 logistic regression


http://chatgpt.dhexx.cn/article/Ngf20YSW.shtml

相关文章

Linear Regression Logistic Regression

Linear Regression & Logistic Regression Keywords List keywords you may encounter when exploring LR(Logistic Regression), or a bigger concept – ML(machine learining): 监督学习 损失函数 梯度下降 学习率 激活函数 神经网络 Let’s kick off wi…

RandomForestClassifier/Regressor

1.集成算法(ensemble ) 1.集成评估器 bagging多个相互独立的评估器,对其预测进行平均或多数表决原则来决定评估器的结果boosting基评估器相关,按顺序一一构建,结合若评估器构成强评估器 2.RandomForestClasifier 1.决策…

Regression 回归

李宏毅老师机器学习课程笔记——Regression 回归 一、理论 问题:已知一批宝可梦样本进化前的特征值x_cp, x_s, x_np, x_w, x_n,预测宝可梦升级后的CP值。模型的目标就是找到一个最合适的函数F(X)Y: 特征条件X包括{x_cp, x_s, x_np, x_w, x_…

线性回归正则化 regularized linear regression

线性回归正则化regularized linear regression 在前几篇博客中介绍了一元线性回归http://blog.csdn.net/u012328159/article/details/50994095和多元线性回归http://blog.csdn.net/u012328159/article/details/51029695等线性回归的知识,具体请参见本人其他博客。但…

# Logistics Regression

目录 一 logistics regression 1 一点介绍 2 评价 3 一点应用 4 代码流程 5 上代码!!! 一 logistics regression 1 一点介绍 逻辑回归是一个分类模型,其突出特点即 模型简单、可解释性强 2 评价 优点 实现简单&#xff0…

Python-Regression

本文归纳整理了线性回归(LinearRegression)、岭回归(Ridge)、Lasso回归(Lasso)、弹性网(ElasticNet)、K近邻、SVM等10多种机器学习模块sklearn中回归算法调用及实现过程,…

大数据挖掘永恒的定律?符号回归(Symbolic Regressor)

大数据挖掘永恒的定律?符号回归(Symbolic Regressor) 符号回归简介 符号回归是一种机器学习技术,旨在识别一个潜在的数学表达式。它首先建立一个朴素随机公式的总体来表示已知自变量和它们的因变量目标之间的关系,以预测新数据。每一个连续的…

Regression

//李宏毅视频官网:http://speech.ee.ntu.edu.tw/~tlkagk/courses.html 点击此处返回总目录 //邱锡鹏《神经网络与深度学习》官网:https://nndl.github.io 今天主要讲的是Regression。会通过一…

从零接入微信公众号(Java实现 附源码)

目录 从零接入微信公众号 一、微信测试号的申请与关注 1.申请 2.访问域名配置 3.关注 二、测试号快速生成底部导航栏 1.获取 access_token 2.自定义菜单 三、微信公众号网页授权 1.网页授权原理 2.代码实现 1)NetUtil.java 2)Oauth2Token.java 3)WxUserDO.java…

前后端分别部署教程 ---- 第三部分项目部署和挂载到微信公众号

3. 前端 这里介绍的是idea开发工具下的项目打包 3.1 项目打包 一定要在指定项目路径下打开 Terminal,不然会打错项目的包. 右击项目名称,然后点击 Open in Terminal: 在下面的 Terminal窗口中, 输入打包命令: npm …

springboot+h5页面+微信公众号获取微信用户信息

springboot项目,h5页面通过微信公众号获取微信用户信息 最近本人有一个项目需求,微信公众号里点击一个菜单进入一个商城购物系统。 对于在微信公众号还是小白的我来说难度有点大,但是做完后发现也就这样,用多了就熟悉了。下面记录…

【公众号】微信进入公众号链接自动获取授权登陆

文章目录 前言一、准备二、开发2.1 搭建项目2.2 WeixinUtil 工具2.3 回调接口与登陆接口2.4 过滤器自动登陆2.4 其他类2.5 测试 三、总结 前言 最近项目上有一个需求,用户反映每次从微信打开链接都需要手动登陆,比较繁琐,想点开微信连接后自…

java向微信公众号---发送模板和图文消息

微信公众号初次开发 其他操作 项目搭建mavenapplication.ymlyml参数配置微信客户端配置 搭建完成 实现业务模板消息推送准备工作模板消息填写要求图文消息填写要求 推送模板消息推送模板消息结果——效果 推送图文消息推送图文消息工具类问题和结果 获取关注的用户openId既然有…

微信公众号接入天行机器人案例和方法

首先使用的是天行机器人: 1、接入基本原理: https://www.tianapi.com/apiview/47 申请完成后的结果如下 调用对应的接口的参数如下: http://api.tianapi.com/txapi/robot/index?keyae5e9a72c8d4cb1f5e096f7bb4daf1f3&questionrobot…

微信公众号的端口映射及服务开发

一. 开发准备 微信公众号申请---->实名认证---->服务器开发---->绑定服务器 PS: 这里有一点需要注意的就是, 微信开发必须是80端口或者443端口, 如果我们有云服务器主机一切都好办. 但是如果没有我们还有几个备选方案: 1. 花生壳 , net123 : 这两个都需要实名认证(…

[JAVA实现]微信公众号网页授权登录,java开发面试笔试题

我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家。 扫描二维码或搜索下图红色VX号,加VX好友,拉你进【程序员面试学习交流群】免费领取。也欢迎各位一起在群里探讨技术。 推荐文章:Java 面试知识点解析;Mysql优化技巧…

后端操作微信公众号

一、功能说明 员工端使用微信公众号完成审批操作,涉及到的功能包含:自定义菜单、授权登录、消息 1、微信公众号一级菜单为:审批列表、审批中心、我的 2、员工关注公众号,员工第一次登录微信公众号,通过微信授权登录进行…

Java基于微信公众号接口实现授权登录源码及原理分析

微信公众号授权登录操作前提必须注册微信公众平台账号,注意的是订阅号不支持授权登录操作,因此对于个人开发者注册的订阅号是无法实现的,必须注册企业号的微信平台账号而具体注册流程就不详细介绍了,有什么疑问可去微信公众号平台…

微信公众号多域名回调系统1.0发布

这是一款基于ThinkPHP6.0框架的微信公众号多域名回调系统。 微信公众号后台默认只能授权2个网页域名,用本系统可突破这个限制,用同一个公众号对接无限多个网站。网站后台支持回调域名白名单的管理,以及登录记录的查看。 本系统还有微信access…

PHP微信扫码关注公众号并授权登录源码

PHP微信扫码登录看起来简单,但做起来有点麻烦,开发起来就会浪费很多的时间。 PHP判断是否首次关注公众号,扫码关注公众号获取微信用户头像、openid和省市等信息源码。 演示体验地址: https://www.skpan.cn/user/login.html 网盘下载地址:…