文章目录
过拟合问题
现在我们来认识什么是:欠拟合,过拟合
欠拟合
我们使用线性回归函数预测下面这张图中的数据,我们发现它并没有很好地拟合到数据上,这就叫做欠拟合(underfit),或者叫做高偏差(high bias)。
分类问题举例:
过拟合
当我们选择了一个函数,它完全拟合了训练数据。比如说下图,我们采用了多项式函数:
虽然上图中的函数完全拟合了所有数据点,但是却没有办法很好的预测新的数据,这种情况我们成为:过拟合(overfit),或者叫做高方差(high variance)。
分类问题举例:
高偏差和高方差
- 偏差:说人话就是模型预测出的点和测试数据点的距离,可以用来形容这个模型的预测能力。
- 方差:指的是模型的预测值的变化范围,离散程度。可以用来表示模型的泛化能力:方差越大,预测出来的数据的分布越散,泛化能力越差;方差越小,模型的泛化能力越强。
泛化
选择合适的函数是很重要的,当它很好的拟合到数据上的时候,我们就认为它有很好的泛化能力(genelization)。指的是:模型依据训练时采用的数据,对新出现的数据做出正确预测的能力。
分类问题举例:
解决过拟合
1. 收集更多的训练数据
这个方法非常简单直观:
2. 减少或增加选择的特征
大部分时候我们没有办法获得更多的训练数据,那么我们就可以选择更多或者更少的特征。
举个例子:
现在我们要预测一个房子的价格,并有一百个特征可以选择:
如果我们选择全部的特征,那么就会有很多无效的数据,会使得我们的函数非常复杂,导致过拟合问题:
但如果我们只选择一些重要的特征,那么可能就会更好的拟合我们的数据:(在后面的课程中会学习到一些自动选择最合适的特征用于预测任务的算法)
缺点: 但这有可能造成一些有用的特征被丢掉
3. 正则化
当我们发现我们的模型过拟合的时候,我们尝试减少特征的选择,但是我们发现这可能导致有用的特征被丢弃:
这个时候我们可以使用正则化:也就是把我们想要丢弃的特征(在这里我们假设是x3和x4)的w值设为非常小的值,这样我们即保留了特征,又不会让这个特征对整个模型造成过大的影响,导致过拟合:
正则化
正则化代价函数
现在我们已经知道,正则化的主要思想就是:通过减小w的值在不丢失特征的同时避免过拟合的产生。
举个例子:
我们在上图中看见,如果我们想要右边的图变得比较像左边的图并且不丢弃x3和x4的话,我们就要让w3和w4的值变得很小
那么如何减小w的值呢?
让我们先看看原来的代价函数:
这个原来的代价函数能够使用梯度下降法来让它达到最小,但不能解决它可能过拟合的问题(也就是不能让w3和w4变小),所以我们要给它增加两个惩罚项(也叫正则化项 regularization term):
我刚刚看到上面的函数的时候非常疑惑,为什么给w3和w4乘上1000,它们俩反而会变小呢?
如何理解增加惩罚项后,参数w会变小
直观理解
从概念出发:我们的目的是要找到:
这个函数的最小值,那么我们在w3和w4前面乘上了1000,为了保证整个函数达到最小值,我们就要尽可能的取很小的w3和w4的值,所以w3和w4的值变小。
从数学角度理解
我们来展开这个函数:
然后我们进行梯度下降,更新每个w和b,在这里我们先不管b,着重来看w:(以下的过程均在漏了一个 α ,写的时候忘记了)
正则化参数λ
我们使用上一篇文章的预估房价例子:
现在我们有一百个特征,但是我们不知道应该选择哪些或者是丢弃哪些特征,那么我们就可以添加正则化项(来缩小w参数的值)。
那么如何减小所有w参数的值呢?这时候我们就需要一个正则化参数 λ
原代价函数:
加入正则化项后:
这里除以的2m是为了计算方便
正则化参数 λ 的作用
正则化参数的作用就是控制函数的两项之间的平衡:
- 函数的第一项:我们称为mean squared error,是为了更好的拟合数据
- 函数第二项:也就是正则化项,是为了保持w参数尽可能的小,从而避免出现过拟合现象。
参数 λ 的变化对函数造成的影响:
- 当 λ = 0 的时候,相当于没有加惩罚项(正则化项)的函数,也就是原来的函数
- 当 λ = 0 非常大的时候,所有w的值都会变得非常小,那么函数的结果就会等于一条直线,也就是b的值:
所以对于正则化,我们需要取一个合适的 λ 值,才能更好的应用正则化。
正则化线性回归
对添加了 λ 参数后的代价函数进行梯度下降:
原函数:
添加后:
正则化逻辑回归
逻辑回归的正则化与线性回归相似,我们还是举个例子:
上图是一个过拟合的例子,那么我们希望通过正则化来解决这个问题。
我们先来看原来的逻辑回归的代价函数:
那么要对它进行正则化只需要在后面加上一项:
它的原理和线性回归相同,在次就不过多赘述。
进行梯度下降
我们发现公式与线性回归的公式完全相同,除了这里的函数 f 是逻辑回归的函数而不是线性回归的。