IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 正则化(Regularization) -> 正文阅读

[数据结构与算法]正则化(Regularization)

在前面介绍了线性回归和逻辑回归,他们经常会遇到一个叫做过拟合(overfitting)的问题。
例如前面讲的房价预测例子,用线性回归拟合我们的数据:

在这里插入图片描述

(图1)

如果假设函数 h θ ( x ) h_{\bm{\theta}}(\boldsymbol{x}) hθ?(x)(hypothesis function)参数太多,容易形成第 ③ 个曲线的样子。
如果假设函数过于简单,则结果像 ① 那样,欠拟合。

对于逻辑回归的分类问题也是如此:

在这里插入图片描述

(图2)

从图中可以看到,通常在参数较多的时候发生过拟合(最右边的曲线)。
这个时候它会拼命地拟合训练集,并且损失看起来很低
但是对新的样本泛化能力不强。

处理办法:
(1) 减少选取变量的数量。
??---- 手动选出要删除或保留的特征。(重要的保留,无用的去掉)
??---- 模型算法自动选择。(后面讲)
(2) 正则化。
??---- 所有特征都要,但是降低第 j j j 个特征的权重 θ j \theta_j θj?


看回这个例子:
在这里插入图片描述

(图3)

明显第 ① 条曲线是很优秀的,第 ② 条有点过拟合。

为了改进图 ② ,我们想把 θ 3 \theta_3 θ3? θ 4 \theta_4 θ4? 干掉,我们在代价函数加上两项蓝色的东西:
J ( θ ) = 1 2 m ∑ i = 1 m ( ?? h θ ( x i ) ? y i ?? ) 2 + 1000 ? θ 3 2 + 1000 ? θ 4 2 J(\bm{\theta})=\frac{1}{2m} \sum^{m}_{i=1} \left( \; h_{\bm{\theta}}\left(x^i\right)- y^i \;\right)^2 \color{blue}{+ 1000 \, \theta_3^2 + 1000\, \theta_4^2} J(θ)=2m1?i=1m?(hθ?(xi)?yi)2+1000θ32?+1000θ42?

这两个东西会使整个代价函数变得很大。

在拟合参数的时候,为了降低这两个东西对代价函数的影响, θ 3 \theta_3 θ3? θ 4 \theta_4 θ4? 会尽量变得小,甚至为零。于是就达到了我们的目的: θ 3 ≈ 0 , θ 4 ≈ 0 \theta_3 \approx 0,\theta_4 \approx 0 θ3?0θ4?0
在这里插入图片描述
就变得和第 ① 条曲线一样了。




通常的写法是这样:
J ( θ ) = 1 2 m [ ∑ i = 1 m ( ?? h θ ( x i ) ? y i ?? ) 2 + λ ∑ j = 1 n θ j 2 ] (1) J(\bm{\theta})=\frac{1}{2m} \left[ \sum^{m}_{i=1} \left( \; h_{\bm{\theta}}\left(x^i\right)- y^i \;\right)^2 +\color{red}{\lambda \sum^{n}_{j=1} \theta_j^2} \right]\tag{1} J(θ)=2m1?[i=1m?(hθ?(xi)?yi)2+λj=1n?θj2?](1)

其中 λ \lambda λ 是正则化参数,决定了惩罚的强度。

如果 λ \lambda λ 过大,会使所有 θ \theta θ 都趋于 0 0 0,最后得到一条欠拟合的直线。
如果 λ \lambda λ 太小,就和没有一样。最后还是过拟合。

关于 λ \lambda λ 的取值,主要看经验。。。也有一些自动化的取值方法。


在运用梯度下降法的时候,对式子 (1) 第 j j j 个参数求偏导得到:
θ j : = θ j ? α [ 1 m ∑ i = 1 m ( ?? h θ ( x i ) ? y i ?? ) x j i + λ m θ j ] \theta_j := \theta_j - \alpha \left[ \frac{1}{m} \sum^{m}_{i=1} \left( \; h_{\bm{\theta}}\left(x^i\right)- y^i \;\right) x_j^i +\frac{\lambda}{m}\theta_j \right] θj?:=θj??α[m1?i=1m?(hθ?(xi)?yi)xji?+mλ?θj?]
改写一下,把 θ j \theta_j θj? 弄出来:

θ j : = θ j ( 1 ? α λ m ) ? α 1 m ∑ i = 1 m ( ?? h θ ( x i ) ? y i ?? ) x j i \theta_j := \theta_j(1-\alpha \frac{\lambda}{m}) - \alpha \frac{1}{m} \sum^{m}_{i=1} \left( \; h_{\bm{\theta}}\left(x^i\right)- y^i \;\right) x_j^i θj?:=θj?(1?αmλ?)?αm1?i=1m?(hθ?(xi)?yi)xji?

其中 ( 1 ? α λ m ) (1-\alpha \dfrac{\lambda}{m}) (1?αmλ?) 是很小的数,大概 0.99 0.99 0.99 的样子,相当于每次更新时先把 θ j \theta_j θj? 缩小一点点,然后再减去梯度。


上面是线性回归的代价函数。


逻辑回归也是一样:
J ( θ ) = ? 1 m [ ∑ i = 1 m y i ? log ? ( h θ ( x i ) ) + ( 1 ? y i ) ? log ? ( 1 ? h θ ( x i ) ) ] + λ 2 m ∑ j = 1 n θ j 2 J(\bm{\theta}) =- \frac{1}{m} \left[ \sum^{m}_{i=1} y^i \cdot \log(h_{\bm{\theta}}(\boldsymbol{x}^i)) + {(1-y^i) \cdot \log(1-h_{\bm{\theta}}(\boldsymbol{x}^i))} \right] +\color{red}{\frac{\lambda}{2m} \sum^{n}_{j=1} \theta_j^2} J(θ)=?m1?[i=1m?yi?log(hθ?(xi))+(1?yi)?log(1?hθ?(xi))]+2mλ?j=1n?θj2?

其中红色的部分为新增的正则化项。

θ j \theta_j θj? 求偏导得到:
θ j : = θ j ? α [ 1 m ∑ i = 1 m ( ?? h θ ( x i ) ? y i ?? ) x j i + λ m θ j ] \theta_j := \theta_j - \alpha \left[ \frac{1}{m} \sum^{m}_{i=1} \left( \; h_{\bm{\theta}}\left(x^i\right)- y^i \;\right) x_j^i +\frac{\lambda}{m}\theta_j \right] θj?:=θj??α[m1?i=1m?(hθ?(xi)?yi)xji?+mλ?θj?]

发现和前面线性回归的惊人相似。
当然它们并不是同一个算法,逻辑回归的假设函数是这样的:
h θ ( x ) = 1 1 + e ? θ T x h_{\bm{\theta}}(\boldsymbol{x}) = \dfrac{1}{1+e^{-\bm{\theta}^T\boldsymbol{x}}} hθ?(x)=1+e?θTx1?

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-08-02 11:02:29  更:2021-08-02 11:04:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/10 16:35:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码