机器学习2:过拟合和正则化

机器学习2:过拟合和正则化【旧笔记整理】

(1)过拟合和欠拟合:

         ①相关概念:

             1)泛化:机器学习模型学习到的概念在新输入样本上的表现;

             2)拟合:用逼近目标函数的远近程度来描述拟合的好坏。

         ②过拟合:

             指某个模型过度学习了训练数据中的细节和噪声,以致模型在新的数据上表现很差。

             过拟合更可能在无参数非线性模型中发生,如决策树。

         ③欠拟合:

             指某个模型在训练和预测时表现都不好,不能在训练集上获得足够低的误差。

(2)正则化方法:

         ①范数:

              1)范数简介:

                    范数是将向量映射到非负值的函数,是一种强化了的距离概念,如向量a的范数衡量了从原点到点a的距离,不同范数相当于度量距离的不同单位。范数满足:

                     1. f(a)=0a=0

                     2. f(a+b)\leq f(a)+f(b)

                     3.f(a+b)=|a|f(b)

               2)几种范数:

                      1.L0范数:()

                         L0范数主要用来度量向量中非零元素的个数;

                      2.L1范数:||x||_{1}=\sum |x_{i}|

                         L1范数用来表示向量中非零元素的绝对值之和,可用于度量两个向量间的差异,即为曼哈顿距离。

                      3.L2范数:||x||_{2}=\sqrt{\sum x_{i^{2}}}

                         L2范数表示向量元素的平方和再开方,通常用于做优化目标函数的正则项,即为欧氏距离。

                      4.L\infty范数:||x||_ {\infty }=max(|x_{i}|)

                         L\infty范数主要用来度量向量元素的最大值。

          ②正则化防止过拟合的原理的几种解释:

                 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)

 

 

 

         

你可能感兴趣的:(机器学习,机器学习,正则化,过拟合)