查看如下泛化曲线,该曲线显示的是训练集和验证集相对于训练迭代次数的损失。算法
上图显示的是某个模型的训练损失逐渐减小,但验证损失最终增长。换言之,该泛化曲线显示该模型与训练集中的数据过拟合。根据奥卡姆剃刀定律,或许咱们能够经过下降复杂模型的复杂度来防止过拟合,这种原则称为正则化。机器学习
通常来讲,监督学习能够看作最小化下面的目标函数.其中,第一项L(yi,f(xi;w)) 衡量咱们的模型(分类或者回归)对第i个样本的预测值f(xi;w)和真实的标签yi以前的偏差.第二项,也就是对参数w的规则化函数Ω(w)去约束咱们的模型尽可能的简单函数
咱们不只要保证训练偏差最小,咱们更但愿咱们的模型测试偏差小,因此咱们须要加上第二项,也就是对参数w的规则化函数Ω(w)去约束咱们的模型尽可能的简单,机器学习的大部分带参模型都和这个不但形似,并且神似。是的,其实大部分无非就是变换这两项而已。对于第一项Loss函数,若是是Square loss,那就是最小二乘了;若是是Hinge Loss,那就是著名的SVM了;若是是exp-Loss,那就是牛逼的 Boosting了;若是是log-Loss,那就是Logistic Regression了;还有等等。不一样的loss函数,具备不一样的拟合特性,这个也得就具体问题具体分析的性能
在这以前,咱们都是以最小化损失(经验风险最小化)为目标:学习
但训练损失小并非咱们的最终目标,咱们的目标是但愿模型的测试损失小,也就是能准确的预测新的样本。因此,咱们须要保证模型“简单”的基础上最小化训练偏差,这样获得的参数才具备好的泛化性能。如今是以最小化损失和复杂度为目标,这称为结构风险最小化:测试
如今,咱们的训练优化算法是一个由两项内容组成的函数:一个是损失项,用于衡量模型与数据的拟合度,另外一个是正则化项,用于衡量模型复杂度。优化
详细理解正则化
L1范数和L0范数能够实现稀疏,L1因具备比L0更好的优化求解特性而被普遍应用。L1会趋向于产生少许的特征,而其余的特征都是0,而L2会选择更多的特征,这些特征都会接近于0spa
这里,只考虑 L2 正则化公式来量化复杂度,该公式将正则化项定义为全部特征权重的平方和:.net
在这个公式中,接近于 0 的权重对模型复杂度几乎没有影响,而离群值权重则可能会产生巨大的影响。
例如,某个线性模型具备如下权重:{w1 = 0.2, w2 = 0.5, w3 = 5, w4 = 1, w5 = 0.25, w6 = 0.75}3d
L2 正则化项为各权重平方和: 26.915
可是 w3的平方值为 25,几乎贡献了所有的复杂度。全部 5 个其余权重的平方和对 L2 正则化项的贡献仅为 1.915。因此咱们让L2范数的规则项||W||2最小,可使得W的每一个元素都很小,都接近于0。,但与L1范数不一样,它不会让它等于0,而是接近于0,这里是有很大的区别的哦。而越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象。为何越小的参数说明模型越简单?我也不懂,个人理解是:限制了参数很小,实际上就限制了多项式某些份量的影响很小(看上面线性回归的模型的那个拟合的图),这样就至关于减小参数个数。这里也一句话总结下:经过L2范数,咱们能够实现了对模型空间的限制,从而在必定程度上避免了过拟合。
模型开发者经过如下方式来调整正则化项的总体影响:用正则化项的值乘以名为 lambda(又称为正则化率)的标量。也就是说,模型开发者会执行如下运算:
执行 L2 正则化对模型具备如下影响
增长 lambda 值将加强正则化效果。 例如,lambda 值较高的权重直方图可能会如图所示。
下降 lambda 的值每每会得出比较平缓的直方图
在选择 lambda 值时,目标是在简单化和训练数据拟合之间达到适当的平衡:
L2 正则化可能会致使对于某些信息缺少的特征,模型会学到适中的权重。L2 正则化下降较大权重的程度高于下降较小权重的程度。随着权重愈来愈接近于 0.0,L2 将权重“推”向 0.0 的力度愈来愈弱。L2 正则化会使类似度高(存在噪点)两个特征的权重几乎相同
逻辑回归会生成一个介于 0 到 1 之间(不包括 0 和 1)的几率值,而不是确切地预测结果是 0 仍是 1。以用于检测垃圾邮件的逻辑回归模型为例。若是此模型推断某一特定电子邮件的值为 0.932,则意味着该电子邮件是垃圾邮件的几率为 93.2%。更准确地说,这意味着在无限训练样本的极限状况下,模型预测其值为 0.932 的这组样本实际上有 93.2% 是垃圾邮件,其他的 6.8% 不是垃圾邮件。
逻辑回归模型如何确保输出值始终落在 0 和 1 之间。巧合的是,S 型函数生成的输出值正好具备这些特性,其定义以下:
S型函数会产生如下曲线图:
若是 z 表示使用逻辑回归训练的模型的线性层的输出,则 S 型(z) 函数会生成一个介于 0 和 1 之间的值(几率)。用数学方法表示为:
其中:
z 是 b + w1x1 + w2x2 + … wNxN
- “w”值是该模型学习的权重和误差。 - “x”值是特定样本的特征值。
请注意,z 也称为对数概率,由于 S 型函数的反函数代表,z 可定义为标签“1”(例如“狗叫”)的几率除以标签“0”(例如“狗不叫”)的几率得出的值的对数:
假设咱们的样本是{x, y},y是0或者1,表示正类或者负类,x是咱们的m维的样本特征向量。那么这个样本x属于正类,也就是y=1的“几率”能够经过下面的逻辑函数来表示:
这里θ是模型参数,也就是回归系数,σ是sigmoid函数。实际上这个函数是由下面的对数概率(也就是x属于正类的可能性和负类的可能性的比值的对数)变换获得的:
逻辑回归与线性回归的不一样点在于:为了将线性回归输出的很大范围的数,例如从负无穷到正无穷,压缩到0和1之间,这样的输出值表达为“可能性”才能说服广大民众。。另外,对于二分类来讲,能够简单的认为:若是样本x属于正类的几率大于0.5,那么就断定它是正类,不然就是负类。因此说,LogisticRegression 就是一个被logistic方程归一化后的线性回归,仅此而已。
线性回归的损失函数是平方损失。逻辑回归的损失函数是对数损失函数,定义以下:
其中:
对数损失函数的方程式与 Shannon 信息论中的熵测量密切相关。它也是似然函数的负对数(假设“y”属于伯努利分布)。实际上,最大限度地下降损失函数的值会生成最大的似然估计值。
上图中,当接近其中一个条形时,损失就会变得越大,并且变化速度很是惊人。这些渐近线的做用是很是重要的。不然,在指定的数据集上,模型会尽量更紧密地拟合数据,让损失接近于0. 所以,大多数逻辑回归模型会使用如下两个策略之一来下降模型复杂性:
正则化在逻辑回归建模中极其重要。若是没有正则化,逻辑回归的渐近性会不断促使损失在高维度空间内达到 0.
假设您向每一个样本分配一个惟一 ID,且将每一个 ID 映射到其本身的特征。若是您未指定正则化函数,模型会变得彻底过拟合。这是由于模型会尝试促使全部样本的损失达到 0 但始终达不到,从而使每一个指示器特征的权重接近正无穷或负无穷。当有大量罕见的特征组合且每一个样本中仅一个时,包含特征组合的高维度数据会出现这种状况。幸运的是,使用 L2 或早停法能够防止出现此类问题。
逻辑回归特色:容易扩展到庞大的数据中;预测速度快,可用于延迟时间极短的预测若是咱们须要非线性逻辑回归,可添加特征交叉乘积来实现。