机器学习2:过拟合和正则化【旧笔记整理】
(1)过拟合和欠拟合:
①相关概念:
1)泛化:机器学习模型学习到的概念在新输入样本上的表现;
2)拟合:用逼近目标函数的远近程度来描述拟合的好坏。
②过拟合:
指某个模型过度学习了训练数据中的细节和噪声,以致模型在新的数据上表现很差。
过拟合更可能在无参数非线性模型中发生,如决策树。
③欠拟合:
指某个模型在训练和预测时表现都不好,不能在训练集上获得足够低的误差。
(2)正则化方法:
①范数:
1)范数简介:
范数是将向量映射到非负值的函数,是一种强化了的距离概念,如向量a的范数衡量了从原点到点a的距离,不同范数相当于度量距离的不同单位。范数满足:
1. 则
2.
3.
2)几种范数:
1.L0范数:()
L0范数主要用来度量向量中非零元素的个数;
2.L1范数:()
L1范数用来表示向量中非零元素的绝对值之和,可用于度量两个向量间的差异,即为曼哈顿距离。
3.L2范数:()
L2范数表示向量元素的平方和再开方,通常用于做优化目标函数的正则项,即为欧氏距离。
4.L范数:(
)
L范数主要用来度量向量元素的最大值。
②正则化防止过拟合的原理的几种解释:
1)正则化的作用,就是在用小数据集拟合模型的过程中,强行加入人为偏转,从而控制拟合出来的模型的复杂度,避免过拟合。
当样本数远多于参数数量时,不需要正则化。
2)正则化可理解为在目标函数中加入与训练样本无关,但关乎整个模型的其他项,一方面这些项在目标函数中分担一部分取值,使模型不那么完美拟合训练样本从而减少过拟合情况。
另一方面,这些项根据整个模型加入,可作为模型的先验项,是对整体数据的先验,所以驱使模型不拟合某群具体数据。
正则化削弱了容易过拟合部分的假设空间,从而降低过拟合风险。(我认为比较有力的解释)
3)正则化中保留所有的特征变量,但会减少特征变量的数量级,正则化要做的是在我们的两个目标中取得平衡,一个是使模型更好的拟合训练样本集。另一个是保持参数值较小从而保持模型的形式相对简单,避免过度拟合。
4)正则化自动削弱不重要的特征变量,自动从许多特征变量中提取重要的特征变量,减小特征变量的数量级。
③L1正则化和L2正则化简介:
1)L1正则化:
1.特性:
L1正则化会让参数变得更稀疏,L1正则化公式不可导,因此计算L1正则化损失函数的偏导数更加复杂;
2.实现:
contrib.Layers.L1_regularizer(正则化权重):返回一个函数,计算一个给定参数的L1正则化项的值。
2)L2正则化:
1.特性:
L2正则化公式可导,计算L2正则化损失函数的偏导数更加简洁,L2正则化不会导致参数更稀疏;
2.实现:
contrib.Layers.L2_regularizer(正则化权重):返回一个函数,计算一个给定参数的L2正则化项的值。
(3)其它防止过拟合方法简介:
①bagging(模型平均):
bagging方法通过分别训练几个不用的模型,再用相同的测试集在这些模型上测试,并收集所有模型在测试机上的输出。
bagging是减少泛化误差的可靠方法,但会增加计算量和存储量。
②dropout方法:
1.原理:
在某一层(不包括输出层)随机丢弃部分数据。
在使用Dropout时,在将样本从batch输入到网络模型中厚,通过随机设置某层的单元相乘数值来选择丢弃那些单元,然后正常运行前向、反向传播及参数更新。
每次单元丢弃都理解为一种再采样,以增大样本量,减少特征量的方式防止过拟合。
2.实现:
nn.dropout(数据,每个元素被保留的概率,None,None,None)