ML 简介
在ML问题中,当给定一批数据集,我们所要做的就是找到一个函数(或者一个分布),使得当给定一个新的输入X时,可以得出一个准确输出Y。
在机器学习中,有三要素分别是:模型、策略和算法。
- 模型:
在接到一问题时,首先考虑的就是模型选择,我们是使用概率模型,还是贝叶斯模型,是使用线性模型还是非线性模型。模型的选择是为我们正确解决问题制定的方向。 - 策略:
当选择好模型之后,面对众多模型实例,到底哪个模型实例比较好,哪个比较差;这时就需要通过策略来选择,策略就是指导我们以什么样的准则学习或者选择最优模型。 - 算法:
算法就是学习模型的具体方法,应该采用什么样的计算方法来求解最优模型。
ML模型学习的目的是不仅仅对已知数据有很好的预测能力,而且对未知数据同样有很好的预测能力。但是数据本身存在一些噪音,这就导致模型在训练和预测过程中必然导致一定误差。这些误差可以分成经验误差和测试误差:
经验误差
所谓的经验误差就是样本数据和策略,模型再训练数据上产生的平均误差:N 为训练集大小
而测试误差自然就是,模型在测试集上产生的误差:M 为测试集大小
我们自然希望经过训练得到的模型可以在训练集合测试集上效果都非常好,但是,事实并非如此。我们经常会遇到模型在训练集上表现不好(损失很大),或者训练集上效果很好,但是在测试上效果很差(假设测试和训练数据集的满足IID);对于前者我们称之为欠拟合,而对于后者我们把它叫做过拟合。我们可以这样的理解欠拟合与过拟合:
- 欠拟合: 模型根据给定数据集,还没有学会(学生考试:附有答案的课后练习都没搞懂)
- 过拟合: 模型的把给定数据集都记住了(学生考试:把模拟试卷背诵了下来,对其他考试无能力为)
结构风险
到底什么时候会出现过拟合呢?其实就是我们模型一味追求在训练集上的效果,尽一切努力去拟合训练集数据。为了追求训练效果,向模型中添加了过多的参数,进而提高训练集上的预测能力(参数越多,表达空间越大就越能包括测试集上所有数据)。当我们模型复杂度(参数个数)比真模型还要高时,就会发生过拟合。
为了使模型减少过拟合现象,我们在追求最小的经验误差时,同时还想让我们模型尽可能简单。这样就引出了结构风险
在上面公式中,就是经验风险加上了一个表示模型复杂度的正则化项或者惩罚项, 一般是关于模型参数的函数;而 是一个权重系统,当 时表示不对模型对任何惩罚,最追求的经验风险最小。
添加正则项后,会让模型参数尽可能趋于0,这样可以降低模型复杂度(使部分参数失效),提高模型的泛化能力。
正则项的选择
在实际项目中,对于正则项的选择一般都是用范数表示,最常用的就是L1 范数与L2范数。
范数定义
范数就是一种计算方法,是一个公式:
L1 范数-Lasso回归:
- L2 范数-Ridge 回归:
L1 与L2 的区别
L1范数会的到更加稀疏的参数矩阵。 因为L1范数是参数绝对值之和,而任何的规则化算子,如果他在 0的地方不可微,并且可以分解为一个“求和”的形式,那么这个规则化算子就可以实现稀疏化。
L1范数的作用
由于L1范数可以产生稀疏矩阵(给定的参数中,大部分值都为0,少量是非0 值),所以:
- 特征选择
一般来说,在训练阶段为了追求经验风险最小会加入一些额外特征,但是特征虽然可以降低经验风险,但是很可能在预测阶段对结果造成一些影响。这时我们加入L1正则项,把这些特征权重拉回为0 ,这样可以自动进行特征选择。 - 提供可解释性
当给定特征维度很高时(比如1000 维),但是在模型模型最终发现其中只有少量特征对最终结果Y 起决定性作用,使得模型做解释性变强。
L2范数的作用
L2范数一般称为岭回归,有时也叫作权重衰减。使用L2范数会让权重接近于0,但是却不等于0。权重接近0 ,使得模型空间被压缩,限制空间范围。控制了模型复杂度。L2范数具体来说有以下几个作用
- 限制模型复杂度,提高模型泛化能力
- 线性回归模型,损失函数为平方损失时,当样本量少于特征个数时,参数的解析解可能求不出来(无法求逆),加入L2正则项,使得解析解变成了(半正定矩阵 加上对角阵)逆肯定存在。
直观的L1 与 L2 比较
到此L1与L2区别已经得出结论,下面从直观角度看一下L1为什么会产生稀疏解而L2不会。
依然还是使用比较经典的网络图片解释。
上面图中,L1彩虹色等高线表示目标函数的等高线,黑色线表示L1 范式球。当范式球与等高线首次相交的地方就是最优解。对于L1正则化,大部分相交点都在坐标轴上,除非等高线角度非常合适才可能与边相交。所以L1正则化的结果就是产生比较稀疏的结果。上面例子 ,对应矩阵就是
相较于L1范式,L2范式的范式球为一个圆形,坐标轴的与等高线相交的概率大大减少。所以L2会选择比较多的特征,而这些特征值的权重基本接近0 。
总结
L1会趋向于产生少量的特征,而其他的特征都是0,Lasso在特征选择时候非常有用
L2会选择更多的特征,这些特征都会接近于0。Ridge就只是一种规则化而已