机器学习:模型泛化(L1、L2 和弹性网络)

一、岭回归和 LASSO 回归的推导过程

1)岭回归和LASSO回归都是解决模型训练过程中的过拟合问题

  • 具体操作:在原始的损失函数后添加正则项,来尽量的减小模型学习到的 θ 的大小,使得模型的泛化能力更强;

 2)比较 Ridge 和 LASSO

  • 名词
  1. Ridge、LASSO:衡量模型正则化;
  2. MSE、MAE:衡量回归结果的好坏;
  3. 欧拉距离、曼哈顿距离:衡量两点之间距离的大小;
  • 理解
  1. Ridge、LASSO:在损失函数后添加的正则项不同;
  2. MSE、MAE:两种误差的表现形式与对应的 Ridge 和 LASSO 的两种正则项的形式很像;
  3. 欧拉距离、曼哈顿距离:欧拉距离和曼哈顿距离的整体表现形式,与 Ridge、LASSO 两种正则项的形式也很像;
  • 其它
  1. 在机器学习领域,对于不同的应用会有不同的名词来表达不同的衡量标准,但其背后本质的数学思想非常相近,表达出的数学的含义也近乎一致,只不过应用在了不同的场景中而产生了不同的效果,进而生成了不同的名词;

 3)明科夫斯基距离

  • 明科夫斯基距离
  • 将明科夫斯基距离泛化:Lp 范数
  1. p = 1:称为 L1 范数,相当于从 (0, 0) 点到 X 向量的曼哈顿距离;
  2. p = 2:称为 L2 范数,相当于从 (0, 0) 点到 X 向量的欧拉距离;

 4)L1 正则、L2 正则

  • Ridge 回归中添加了 L2 正则项,LASSO 回归中添加了 L1 正则项;
  • L2 正则项和 L2 范数的区别在于,L2 正则项没有开平方,但有时候也直接称 L2 正则项为 L2 范数;(同理 L1 范数与 L1 正则项的关系)
  1. 原因: L2 正则项是用于放在损失函数中进行最优化,如果将 L2 正则项加上开根号,不会影响损失函数优化的最终结果,但是不带根号会显得整个式子更加简单,所以对于 L2 正则项的式子中不带根号;
  • 同理在数学理论上也存在 Ln 正则项;

 5)L0 正则

  • 目的:使 θ 的个数尽量少,进而限制 θ,使得拟合曲线上下抖动幅度不要太大,模型的泛化能力也会得以提高;
  • L0 的正则项:描述非 0 的 θ 参数的个数;
  • 实际中很少使用 L0 正则来进行模型正则化的过程,而是用 L1 正则代替;
  1. 原因: L0 正则的优化是一个 NP 难的问题;它不能使用诸如梯度下降法,甚至是直接求出一个数学公式这样的方式来直接找到最优解; L0 正则项本质是一个离散最优化的问题,可能需要穷举所有的让各种 θ 的组合为 0 的可能情况,然后依次来计算 J(θ) ,进而来觉得让哪些 θ 为 0 哪些 θ 不为 0,所以说 L0 正则的优化是一个 NP 难的问题;
  • 如果想限制 θ 的个数,通常使用 L1 正则

二、弹性网(Elastic Net)

 1)公式

  • 功能:也是解决模型训练过程中的过拟合问题;
  • 操作:在损失函数后添加 L1 正则项和 L2 正则项;
  • 特点:同时结合了 岭回归和 LASSO 回归的优势;
  • r:新的超参数,表示添加的两个正则项的比例(分别为 r、1-r );

 2)现实中,在进行正则化的过程中,通常要先使用 岭回归

  • 优点:岭回归计算更精准;
  • 缺点:不具有特征选择的功能;
  1. 原因:如果特征非常多的话,岭回归不能将某些 θ 设置为 0,若 θ 的量太大的话到导致整体计算量也非常的大;

 3)当特征非常多时,应先考虑使用 弹性网

  • 原因:弹性网结合了岭回归的计算的优点,同时又结合了 LASSO 回归特征选择的优势;

三、总结与开拓

 1)总结

  • 训练的机器学习模型不是为了在训练数据集上有好的测试结果,而是希望在未来面对未知的数据集上有非常好的结果;
  • 模型在面对未知数据集表现的能力,为该模型的泛化能力;(模型泛化是机器学习领域非常非常重要的话题
  • 分析和提升模型泛化能力的方法
  1. 看学习曲线;
  2. 对模型进行交叉验证;
  3. 对模型进行正则化;

 2)开拓

  • LASSO 回归的缺点:急于将某些 θ 化为 0,过程中可能会产生一些错误,使得最终的模型的偏差比较大;
  1. 问题:LASSO 回归在模型优化的过程中是有选择的将某些 θ 化为 0 吗?或者说有没有什么条件使得尽量避免让相关性比较强的特征的系数化为 0 ?还是说这一行为只是单纯的数学运算,就为目标函数尽量达到目标状态?
  2. “可能产生的错误”:将一些相关性比较强的特征的参数 θ 也化为 0,导致该特征丢失;
  • 开拓思路
  1. 弹性网结合了岭回归和 LASSO 回归二者的优势,小批量梯度下降法结合了批量梯度下降法和随机批量梯度下降法二者的优势,类似的方法在机器学习领域经常被运用,用来创造出新的方法。
  • 打个比方理解机器学习
  1. 参加考试前要做很多练习题,练习题就相当于训练数据,目的不是为了在做练习题的过程中达到满分,而是通过做练习题让我们在面对新的考试题时得到更高的分数,考试中面对的新的题目相当于模型在未来生成环境中见到的新的数据。

原文地址:https://www.cnblogs.com/volcao/p/9306821.html

时间: 2024-11-06 13:57:07

机器学习:模型泛化(L1、L2 和弹性网络)的相关文章

机器学习(八) 多项式回归与模型泛化(下)

六.验证数据集与交叉验证 七.偏差方差平衡 偏差方差权衡 Bias Variance Trade off 偏差 Bias 导致偏差的主要原因: 对问题本身的假设不正确! 如:非线性数据使用线性回归 欠拟合 underfitting 方差 Variance 数据的一点点扰动都会较大的影响模型 通常原因,使用的模型太复杂 如高阶多项式回归. 过拟合 overfitting 偏差和方差 有一些算法天生高方差,KNN 非参数学习通常都是高方差算法.因为不对数据进行任何假设. 有一些算法天生是高偏差算法.

5.多项式回归与模型泛化

(一)什么是多项式回归 还记得线性回归法吗?线性回归法有一个很大的局限性,那就是需要数据是有一定的线性关系的,但是现实中的很多数据是没有线性关系的.多项式就是用来解决这个问题的,可以处理非线性数据 在线性回归中,我们是假设数据具有线性关系的,因此我们在简单线性回归中,将直线的方向设置为y=ax+b的形式,那么我们求出a和b即可. 而对于有些数据,我们虽然也可以使用线性回归,但是显然具有更加强的非线性的关系,换句话说,如果我们用一个二次曲线来拟合这些点,效果会更好.因此函数就变成了了y=ax^2+

线性模型 泛化优化 之 L1 L2 正则化

认识 L1, L2 从效果上来看, 正则化通过, 对ML的算法的任意修改, 达到减少泛化错误, 但不减少训练误差的方式的统称 训练误差 这个就损失函数什么的, 很好理解. 泛化错误 假设 我们知道 预测值 和 真实值 之前的 "误差" , 这就是泛化错误 跟训练数据没关系, 就是在用模型预测的时候, 给预测值 "加" 是一个项来修正模型 类似于 给 模型的预测值, 加上了一个 "修正项" 损失函数 = Loss + 正则化项 举个线性回归的栗子

模型泛化

目录 模型泛化 一.交叉验证 二.偏差方差权衡 三.模型正则化 1.岭回归(Ridege Regression) 2.LASSO Regularization 3.解释Ridge和LASSO 4.比较Ridge和Lasso 5.弹性网 我是尾巴 模型泛化 泛化即是,机器学习模型学习到的概念在它处于学习的过程中时模型没有遇见过的样本时候的表现. ? 类似于考试前疯狂刷题不管这些题做的都好都没用,只有在下次考试中才有效果,而下次考试的那些题可能从来没见过,只有学会这些基础的东西,无论怎么变都能认出来

解释机器学习模型的一些方法(二)——在受监管的行业使用机器学习

对于在受监管行业中工作的分析师和数据科学家来说,尽管机器学习可能会带来『能极大提高预测精度』这一好处,然而它可能不足以弥补内部文档需求以及外部监管责任所带来的成本.对于实践者而言,传统线性模型技术可能是预测模型中的唯一选择.然而,创新和竞争的驱动力并不因为你在一个受监管的模式下工作就会止息.在银行,保险以及类似受监管垂直领域里,数据科学家和分析师正面对着这样一个独一无二的难题:他们必须要找到使预测越来越精准的方案,但前提是,保证这些模型和建模过程仍然还是透明.可解释的. 在这一节中所展现的技巧,

最小二乘回归,岭回归,Lasso回归,弹性网络

普通最小二乘法 理论: 损失函数: 权重计算: 1.对于普通最小二乘的系数估计问题,其依赖于模型各项的相互独立性. 2.当各项是相关的,且设计矩阵 X的各列近似线性相关,那么,设计矩阵会趋向于奇异矩阵,这会导致最小二乘估计对于随机误差非常敏感,产生很大的方差. 例如,在没有实验设计的情况下收集到的数据,这种多重共线性(multicollinearity)的情况可能真的会出现. 使用: from sklearn import datasets, linear_model regr = linear

TensorFlow(四) 用TensorFlow实现弹性网络回归算法(多线性回归)

弹性网络回归算法是综合lasso回归和岭回归的一种回归算法,通过在损失函数中增加L1正则和L2正则项,进而控制单个系数对结果的影响 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt from sklearn import datasets sess=tf.Session() #加载鸢尾花集 iris=datasets.load_iris() #花瓣长度,花瓣宽度,花萼宽度 预测 花萼长度 x_va

使用ML.NET + ASP.NET Core + Docker + Azure Container Instances部署.NET机器学习模型

本文将使用ML.NET创建机器学习分类模型,通过ASP.NET Core Web API公开它,将其打包到Docker容器中,并通过Azure Container Instances将其部署到云中. 先决条件 本文假设您对Docker有一定的了解.构建和部署示例应用程序还需要以下软件/依赖项.重要的是要注意应用程序是在Ubuntu 16.04 PC上构建的,但所有软件都是跨平台的,应该适用于任何环境. Docker Azure CLI .NET Core 2.0 Docker Hub Accou

解释机器学习模型的一些方法(三)——理解复杂的机器学习模型

在这一部分中我们所要展现的技术,可以为非线性.非单调的响应函数生成解释.我们可以把它们与前两部分提到的技巧结合起来,增加所有种类模型的可解释性.实践者很可能需要使用下列增强解释性技巧中的一种以上,为他们手中最复杂的模型生成令人满意的解释性描述. 代理模型 图14.  为了解释复杂神经网络而使用代理模型的示意图 代理模型是一种用于解释复杂模型的简单模型.最常见的建立方法是,对原始输入和复杂模型给出的预测值建立简单线性回归或者决策树模型.代理模型中所展示的系数.变量重要性.趋势以及交互作用,是复杂模