git:https://github.com/linyi0604/MachineLearning

正则化:
提高模型在未知数据上的泛化能力
避免参数过拟合
正则化常用的方法:
在目标函数上增加对参数的惩罚项
削减某一参数对结果的影响力度 L1正则化:lasso
在线性回归的目标函数后面加上L1范数向量惩罚项。 f = w * x^n + b + k * ||w||1 x为输入的样本特征
w为学习到的每个特征的参数
n为次数
b为偏置、截距
||w||1 为 特征参数的L1范数,作为惩罚向量
k 为惩罚的力度 L2范数正则化:ridge
在线性回归的目标函数后面加上L2范数向量惩罚项。 f = w * x^n + b + k * ||w||2 x为输入的样本特征
w为学习到的每个特征的参数
n为次数
b为偏置、截距
||w||2 为 特征参数的L2范数,作为惩罚向量
k 为惩罚的力度 下面模拟 根据蛋糕的直径大小 预测蛋糕价格
采用了4次线性模型,是一个过拟合的模型
分别使用两个正则化方法 进行学习和预测
 from sklearn.linear_model import LinearRegression, Lasso, Ridge
# 导入多项式特征生成器
from sklearn.preprocessing import PolynomialFeatures '''
正则化:
提高模型在未知数据上的泛化能力
避免参数过拟合
正则化常用的方法:
在目标函数上增加对参数的惩罚项
削减某一参数对结果的影响力度 L1正则化:lasso
在线性回归的目标函数后面加上L1范数向量惩罚项。 f = w * x^n + b + k * ||w||1 x为输入的样本特征
w为学习到的每个特征的参数
n为次数
b为偏置、截距
||w||1 为 特征参数的L1范数,作为惩罚向量
k 为惩罚的力度 L2范数正则化:ridge
在线性回归的目标函数后面加上L2范数向量惩罚项。 f = w * x^n + b + k * ||w||2 x为输入的样本特征
w为学习到的每个特征的参数
n为次数
b为偏置、截距
||w||2 为 特征参数的L2范数,作为惩罚向量
k 为惩罚的力度 下面模拟 根据蛋糕的直径大小 预测蛋糕价格
采用了4次线性模型,是一个过拟合的模型
分别使用两个正则化方法 进行学习和预测 ''' # 样本的训练数据,特征和目标值
x_train = [[6], [8], [10], [14], [18]]
y_train = [[7], [9], [13], [17.5], [18]]
# 准备测试数据
x_test = [[6], [8], [11], [16]]
y_test = [[8], [12], [15], [18]]
# 进行四次线性回归模型拟合
poly4 = PolynomialFeatures(degree=4) # 4次多项式特征生成器
x_train_poly4 = poly4.fit_transform(x_train)
# 建立模型预测
regressor_poly4 = LinearRegression()
regressor_poly4.fit(x_train_poly4, y_train)
x_test_poly4 = poly4.transform(x_test)
print("四次线性模型预测得分:", regressor_poly4.score(x_test_poly4, y_test)) # 0.8095880795746723 # 采用L1范数正则化线性模型进行学习和预测
lasso_poly4 = Lasso()
lasso_poly4.fit(x_train_poly4, y_train)
print("L1正则化的预测得分为:", lasso_poly4.score(x_test_poly4, y_test)) # 0.8388926873604382 # 采用L2范数正则化线性模型进行学习和预测
ridge_poly4 = Ridge()
ridge_poly4.fit(x_train_poly4, y_train)
print("L2正则化的预测得分为:", ridge_poly4.score(x_test_poly4, y_test)) # 0.8374201759366456

通过比较 经过正则化的模型 泛化能力明显的更好啦

机器学习之路: python线性回归 过拟合 L1与L2正则化的更多相关文章

  1. 机器学习(二十三)— L0、L1、L2正则化区别

    1.概念  L0正则化的值是模型参数中非零参数的个数. L1正则化表示各个参数绝对值之和. L2正则化标识各个参数的平方的和的开方值. 2.问题  1)实现参数的稀疏有什么好处吗? 一个好处是可以简化 ...

  2. 机器学习之路: python 线性回归LinearRegression, 随机参数回归SGDRegressor 预测波士顿房价

    python3学习使用api 线性回归,和 随机参数回归 git: https://github.com/linyi0604/MachineLearning from sklearn.datasets ...

  3. Spark2.0机器学习系列之12: 线性回归及L1、L2正则化区别与稀疏解

    概述 线性回归拟合一个因变量与一个自变量之间的线性关系y=f(x).       Spark中实现了:       (1)普通最小二乘法       (2)岭回归(L2正规化)       (3)La ...

  4. 机器学习中的L1、L2正则化

    目录 1. 什么是正则化?正则化有什么作用? 1.1 什么是正则化? 1.2 正则化有什么作用? 2. L1,L2正则化? 2.1 L1.L2范数 2.2 监督学习中的L1.L2正则化 3. L1.L ...

  5. 4.机器学习——统计学习三要素与最大似然估计、最大后验概率估计及L1、L2正则化

    1.前言 之前我一直对于“最大似然估计”犯迷糊,今天在看了陶轻松.忆臻.nebulaf91等人的博客以及李航老师的<统计学习方法>后,豁然开朗,于是在此记下一些心得体会. “最大似然估计” ...

  6. L1与L2正则化的对比及多角度阐述为什么正则化可以解决过拟合问题

    正则化是一种回归的形式,它将系数估计(coefficient estimate)朝零的方向进行约束.调整或缩小.也就是说,正则化可以在学习过程中降低模型复杂度和不稳定程度,从而避免过拟合的危险. 一. ...

  7. 深入理解L1、L2正则化

    过节福利,我们来深入理解下L1与L2正则化. 1 正则化的概念 正则化(Regularization) 是机器学习中对原始损失函数引入额外信息,以便防止过拟合和提高模型泛化性能的一类方法的统称.也就是 ...

  8. day-17 L1和L2正则化的tensorflow示例

    机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作ℓ1-norm和ℓ2-norm,中文称作L1正则化和L2正则化,或者L1范数和L2范数.L2范数也被称为权重衰 ...

  9. L1与L2正则化

    目录 过拟合 结构风险最小化原理 正则化 L2正则化 L1正则化 L1与L2正则化 参考链接 过拟合 机器学习中,如果参数过多.模型过于复杂,容易造成过拟合. 结构风险最小化原理 在经验风险最小化(训 ...

随机推荐

  1. Uva 11549 - Calculator Conundrum 找规律加map

    题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  2. DockerFile指令集

     FROM            语法:FROM <image>[:<tag>]         解释:设置要制作的镜像基于哪个镜像,FROM指令必须是整个Dockerfile ...

  3. 8、String练习题

    String练习   1.字符串反转,例如将"abc"变成"cba" 2.统计一个字符串里面另一个字符串出现的次数,例如统计"monkey" ...

  4. 【总结】2017年当下最值得你关注的前端开发框架,不知道你就OUT了!

    近几年随着 jQuery.Ext 以及 CSS3 的发展,以 Bootstrap 为代表的前端开发框架如雨后春笋般挤入视野,可谓应接不暇. 在这篇分享中,我将总结2017年当下最值得你关注的前端开发框 ...

  5. ORB_SLAM2 源码阅读 ORB_SLAM2::Initializer::ComputeF21 (OpenCV 细节)

    ORB_SLAM2 计算 F21 的代码是这样的. cv::Mat Initializer::ComputeF21(const vector<cv::Point2f> &vP1,c ...

  6. 关于runOnUiThread()与Handler两种更新UI的方法

    在Android开发过程中,常需要更新界面的UI.而更新UI是要主线程来更新的,即UI线程更新.如果在主线线程之外的线程中直接更新页面显示常会报错.抛出异常:android.view.ViewRoot ...

  7. 连续的if语句

    use_relu=0 use_tanh=2 a = 2 if use_relu else (1 if use_tanh else 0)#如果use_relu不等于0,则a等于2:如果use_relu等 ...

  8. 【Linux技术】ubuntu常用命令【转】

    转自:http://www.cnblogs.com/lcw/p/3159462.html 查看软件xxx安装内容:dpkg -L xxx查找软件库中的软件:apt-cache search 正则表达式 ...

  9. shell监控网站是否自动运行并自动重启【原创】

    shell监控网站是否自动运行并自动重启 #!/bin/bash -T www.baidu.com ];then echo "`date` 网站访问正常!" >> /r ...

  10. 十二、springcloud之展示追踪数据 Sleuth+zipkin

    一.Zipkin简介 Zipkin是Twitter的一个开源项目,它基于Google Dapper实现.我们可以使用它来收集各个服务器上请求链路的跟踪数据,并通过它提供的REST API接口来辅助我们 ...