4.弹性网络( Elastic Net)
ElasticNet 是一种使用L1和L2先验作为正则化矩阵的线性回归模型.这种组合用于只有很少的权重非零的稀疏模型,比如:class:Lasso, 但是又能保持:class:Ridge 的正则化属性.我们可以使用 l1_ratio 参数来调节L1和L2的凸组合(一类特殊的线性组合)。
当多个特征和另一个特征相关的时候弹性网络非常有用。Lasso 倾向于随机选择其中一个,而弹性网络更倾向于选择两个.
在实践中,Lasso 和 Ridge 之间权衡的一个优势是它允许在循环过程(Under rotate)中继承 Ridge 的稳定性.
弹性网络的目标函数是最小化:

ElasticNetCV 可以通过交叉验证来用来设置参数 alpha (
) 和 l1_ratio (
)
- print(__doc__)
- import numpy as np
- import matplotlib.pyplot as plt
- from sklearn.linear_model import lasso_path, enet_path
- from sklearn import datasets
- diabetes = datasets.load_diabetes()
- X = diabetes.data
- y = diabetes.target
- X /= X.std(axis=0) # Standardize data (easier to set the l1_ratio parameter)
- # Compute paths
- eps = 5e-3 # the smaller it is the longer is the path
- print("Computing regularization path using the lasso...")
- alphas_lasso, coefs_lasso, _ = lasso_path(X, y, eps, fit_intercept=False)
- print("Computing regularization path using the positive lasso...")
- alphas_positive_lasso, coefs_positive_lasso, _ = lasso_path(
- X, y, eps, positive=True, fit_intercept=False)
- print("Computing regularization path using the elastic net...")
- alphas_enet, coefs_enet, _ = enet_path(
- X, y, eps=eps, l1_ratio=0.8, fit_intercept=False)
- print("Computing regularization path using the positve elastic net...")
- alphas_positive_enet, coefs_positive_enet, _ = enet_path(
- X, y, eps=eps, l1_ratio=0.8, positive=True, fit_intercept=False)
- # Display results
- plt.figure(1)
- ax = plt.gca()
- ax.set_color_cycle(2 * ['b', 'r', 'g', 'c', 'k'])
- l1 = plt.plot(-np.log10(alphas_lasso), coefs_lasso.T)
- l2 = plt.plot(-np.log10(alphas_enet), coefs_enet.T, linestyle='--')
- plt.xlabel('-Log(alpha)')
- plt.ylabel('coefficients')
- plt.title('Lasso and Elastic-Net Paths')
- plt.legend((l1[-1], l2[-1]), ('Lasso', 'Elastic-Net'), loc='lower left')
- plt.axis('tight')
- plt.figure(2)
- ax = plt.gca()
- ax.set_color_cycle(2 * ['b', 'r', 'g', 'c', 'k'])
- l1 = plt.plot(-np.log10(alphas_lasso), coefs_lasso.T)
- l2 = plt.plot(-np.log10(alphas_positive_lasso), coefs_positive_lasso.T,
- linestyle='--')
- plt.xlabel('-Log(alpha)')
- plt.ylabel('coefficients')
- plt.title('Lasso and positive Lasso')
- plt.legend((l1[-1], l2[-1]), ('Lasso', 'positive Lasso'), loc='lower left')
- plt.axis('tight')
- plt.figure(3)
- ax = plt.gca()
- ax.set_color_cycle(2 * ['b', 'r', 'g', 'c', 'k'])
- l1 = plt.plot(-np.log10(alphas_enet), coefs_enet.T)
- l2 = plt.plot(-np.log10(alphas_positive_enet), coefs_positive_enet.T,
- linestyle='--')
- plt.xlabel('-Log(alpha)')
- plt.ylabel('coefficients')
- plt.title('Elastic-Net and positive Elastic-Net')
- plt.legend((l1[-1], l2[-1]), ('Elastic-Net', 'positive Elastic-Net'),
- loc='lower left')
- plt.axis('tight')
- plt.show()
4.弹性网络( Elastic Net)的更多相关文章
- 【笔记】简谈L1正则项L2正则和弹性网络
L1,L2,以及弹性网络 前情提要: 模型泛化与岭回归与LASSO 正则 ridge和lasso的后面添加的式子的格式上其实和MSE,MAE,以及欧拉距离和曼哈顿距离是非常像的 虽然应用场景不同,但是 ...
- 机器学习:模型泛化(L1、L2 和弹性网络)
一.岭回归和 LASSO 回归的推导过程 1)岭回归和LASSO回归都是解决模型训练过程中的过拟合问题 具体操作:在原始的损失函数后添加正则项,来尽量的减小模型学习到的 θ 的大小,使得模型的泛化能力 ...
- 机器学习算法--Elastic Net
1) alpha : float, optional Constant that multiplies the penalty terms. Defaults to 1.0. See the note ...
- [源码解析] 深度学习分布式训练框架 horovod (20) --- Elastic Training Operator
[源码解析] 深度学习分布式训练框架 horovod (20) --- Elastic Training Operator 目录 [源码解析] 深度学习分布式训练框架 horovod (20) --- ...
- 基于C#的机器学习--颜色混合-自组织映射和弹性神经网络
自组织映射和弹性神经网络 自组织映射(SOM),或者你们可能听说过的Kohonen映射,是自组织神经网络的基本类型之一.自组织的能力提供了对以前不可见的输入数据的适应性.它被理论化为最自然的学习方式之 ...
- 阿里云弹性裸金属服务器-神龙架构(X-Dragon)揭秘
在5月16日的飞天技术会新品直播中,特别邀请了业界知名大咖狒哥以及阿里云虚拟化资深专家旭卿作为现场直播的嘉宾.本次直播主要从产品背景到“X-Dragon架构”,从硬件设备到软件应用来深度的剖析“X-D ...
- [Machine Learning] 机器学习常见算法分类汇总
声明:本篇博文根据http://www.ctocio.com/hotnews/15919.html整理,原作者张萌,尊重原创. 机器学习无疑是当前数据分析领域的一个热点内容.很多人在平时的工作中都或多 ...
- Spark入门实战系列--8.Spark MLlib(上)--机器学习及SparkMLlib简介
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .机器学习概念 1.1 机器学习的定义 在维基百科上对机器学习提出以下几种定义: l“机器学 ...
- 转:netflix推荐系统竞赛
原文链接:Netflix recommendations: beyond the 5 stars (Part 1), (Part 2) 原文作者:Xavier Amatriain and Justin ...
随机推荐
- 使用Idea初始化一个spring boot 项目
配置环境 Idea配置jdk8.0 1.打开Idea,点击右上角file,找到Other Settings选项,点击下方的Default Project Structure,如下所示 2.点击下图中所 ...
- gcc 编译的四大过程
gcc 编译的四大过程(预处理-编译-汇编-链接 ) 我们来编译一个hello world 程序. #include <stdio.h> int main(int argc,const c ...
- kvm虚拟化环境的搭建
首先搭建kvm的虚拟化环境,我选择的环境是在vmvare上的Centos 7的虚拟机,在该环境上搭建kvm的虚拟化环境 1:安装虚拟机(该过程自行安装) 2:操作系统环境的设置 (1)修改内核模式为兼 ...
- PAT基础级-钻石段位样卷2-7-5 福到了 (15 分)
“福”字倒着贴,寓意“福到”.不论到底算不算民俗,本题且请你编写程序,把各种汉字倒过来输出.这里要处理的每个汉字是由一个 N × N 的网格组成的,网格中的元素或者为字符 @ 或者为空格.而倒过来的汉 ...
- Redis 从入门到放弃
Redis 从入门到放弃 http://www.iocoder.cn/Fight/Redis-went-from-getting-started-to-quitting/
- [CTSC2008]网络管理Network
题意 M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个部门之间协同工作,公司搭建了一个连接整个公司的通信网络.该网络的结构由N个路由器和N-1条高速光 ...
- 22 Jquery 事件
一.概述: 当用户与浏览器进行交互时这些方法被用于注册行为生效, 并进一步处理这些注册行为. 二.绑定事件处理器 .bind() ..unbind():为一个元素绑定一个事件处理程序.3.0版本已经弃 ...
- ElementUI2.0组件库el-table表格组件如何自定义表头?
效果图: npm run dev 编译项目之后,报错,要使用jsx语法需要先安装编译插件 1.安装下列安装包 npm install babel-plugin-syntax-jsx --save-de ...
- Luogu 4751 动态DP 模板
题面 动态求最大独立集 题解 树剖后用矩阵转移. 具体见Tweetuzki的洛谷博客 CODE #include <bits/stdc++.h> using namespace std; ...
- java 设计模式 --委派模式
委派模式(Delegate)原理: 类B和类A是两个互相没有任何关系的类,但是B具有和A一模一样的方法和属性:并且调用B中的方法/属性就是调用A中同名的方法和属性. B好像就是一个受A授权委托的中介, ...