机器学习之路: python线性回归 过拟合 L1与L2正则化

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次线性模型,是一个过拟合的模型分别使用两个正则化方法 进行学习和预测
 1 from sklearn.linear_model import LinearRegression, Lasso, Ridge
 2 # 导入多项式特征生成器
 3 from sklearn.preprocessing import PolynomialFeatures
 4
 5
 6 ‘‘‘
 7 正则化:
 8     提高模型在未知数据上的泛化能力
 9     避免参数过拟合
10 正则化常用的方法:
11     在目标函数上增加对参数的惩罚项
12     削减某一参数对结果的影响力度
13
14 L1正则化:lasso
15     在线性回归的目标函数后面加上L1范数向量惩罚项。
16
17     f = w * x^n + b + k * ||w||1
18
19     x为输入的样本特征
20     w为学习到的每个特征的参数
21     n为次数
22     b为偏置、截距
23     ||w||1 为 特征参数的L1范数,作为惩罚向量
24     k 为惩罚的力度
25
26 L2范数正则化:ridge
27     在线性回归的目标函数后面加上L2范数向量惩罚项。
28
29     f = w * x^n + b + k * ||w||2
30
31     x为输入的样本特征
32     w为学习到的每个特征的参数
33     n为次数
34     b为偏置、截距
35     ||w||2 为 特征参数的L2范数,作为惩罚向量
36     k 为惩罚的力度
37
38
39 下面模拟 根据蛋糕的直径大小 预测蛋糕价格
40 采用了4次线性模型,是一个过拟合的模型
41 分别使用两个正则化方法 进行学习和预测
42
43 ‘‘‘
44
45 # 样本的训练数据,特征和目标值
46 x_train = [[6], [8], [10], [14], [18]]
47 y_train = [[7], [9], [13], [17.5], [18]]
48 # 准备测试数据
49 x_test = [[6], [8], [11], [16]]
50 y_test = [[8], [12], [15], [18]]
51 # 进行四次线性回归模型拟合
52 poly4 = PolynomialFeatures(degree=4)  # 4次多项式特征生成器
53 x_train_poly4 = poly4.fit_transform(x_train)
54 # 建立模型预测
55 regressor_poly4 = LinearRegression()
56 regressor_poly4.fit(x_train_poly4, y_train)
57 x_test_poly4 = poly4.transform(x_test)
58 print("四次线性模型预测得分:", regressor_poly4.score(x_test_poly4, y_test))  # 0.8095880795746723
59
60 # 采用L1范数正则化线性模型进行学习和预测
61 lasso_poly4 = Lasso()
62 lasso_poly4.fit(x_train_poly4, y_train)
63 print("L1正则化的预测得分为:", lasso_poly4.score(x_test_poly4, y_test))  # 0.8388926873604382
64
65 # 采用L2范数正则化线性模型进行学习和预测
66 ridge_poly4 = Ridge()
67 ridge_poly4.fit(x_train_poly4, y_train)
68 print("L2正则化的预测得分为:", ridge_poly4.score(x_test_poly4, y_test))  # 0.8374201759366456

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

原文地址:https://www.cnblogs.com/Lin-Yi/p/8999455.html

时间: 2024-09-30 22:58:52

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

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

python3学习使用api 线性回归,和 随机参数回归 git: https://github.com/linyi0604/MachineLearning 1 from sklearn.datasets import load_boston 2 from sklearn.cross_validation import train_test_split 3 from sklearn.preprocessing import StandardScaler 4 from sklearn.linear

L1与L2正则化

目录 过拟合 结构风险最小化原理 正则化 L2正则化 L1正则化 L1与L2正则化 参考链接 过拟合 机器学习中,如果参数过多.模型过于复杂,容易造成过拟合. 结构风险最小化原理 在经验风险最小化(训练误差最小化)的基础上,尽可能采用简单的模型,以提高模型泛化预测精度. 正则化 为了避免过拟合,最常用的一种方法是使用正则化,例如L1和L2正则化. 所谓的正则化,就是在原来损失函数的基础上,加了一些正则化项,或者叫做模型复杂度惩罚项. L2正则化 L2正则化即:\(L=E_{in}+\lambda

L1 与 L2 正则化

参考这篇文章: https://baijiahao.baidu.com/s?id=1621054167310242353&wfr=spider&for=pc https://blog.csdn.net/jinping_shi/article/details/52433975 参考这篇文章: https://baijiahao.baidu.com/s?id=1621054167310242353&wfr=spider&for=pc https://blog.csdn.net/

l1和l2正则化

https://blog.csdn.net/tianguiyuyu/article/details/80438630 以上是莫烦对L1和L2的理解 l2正则:权重的平方和,也就是一个圆 l1正则:权重的绝对值之和,等价与一个正方形. 图中,正则项和损失项的交点就是最优解的位置,我们可以看到,在只有2个参数的情况下,l1倾向使得某个参数直接为0:l2倾向使得某些参数逼近0 再看下吴恩达的理解 正则化的意义:在于让高阶的参数逼近0,使其对拟合函数的贡献变小:可以看到theta3和theta4,我们给

机器学习之路: python k近邻分类器 鸢尾花分类预测

使用python语言 学习k近邻分类器的api 欢迎来到我的git查看源代码: https://github.com/linyi0604/kaggle 1 from sklearn.datasets import load_iris 2 from sklearn.cross_validation import train_test_split 3 from sklearn.preprocessing import StandardScaler 4 from sklearn.neighbors i

机器学习之路: python 决策树分类 预测泰坦尼克号乘客是否幸存

使用python3 学习了决策树分类器的api 涉及到 特征的提取,数据类型保留,分类类型抽取出来新的类型 需要网上下载数据集,我把他们下载到了本地, 可以到我的git下载代码和数据集: https://github.com/linyi0604/MachineLearning 1 import pandas as pd 2 from sklearn.cross_validation import train_test_split 3 from sklearn.feature_extraction

机器学习之路: python 回归树 DecisionTreeRegressor 预测波士顿房价

python3 学习api的使用 git: https://github.com/linyi0604/MachineLearning 代码: 1 from sklearn.datasets import load_boston 2 from sklearn.cross_validation import train_test_split 3 from sklearn.preprocessing import StandardScaler 4 from sklearn.tree import De

L1 和L2正则化,拉普拉斯分布和高斯分布

正则化是为了防止过拟合. 1. 范数 范数是衡量某个向量空间(或矩阵)中的每个向量以长度或大小. 范数的一般化定义:对实数p>=1, 范数定义如下: L1范数: 当p=1时,是L1范数,其表示某个向量中所有元素绝对值的和. L2范数: 当p=2时,是L2范数, 表示某个向量中所有元素平方和再开根, 也就是欧几里得距离公式. 2. 拉普拉斯分布 如果随机变量的概率密度函数分布为: 那么它就是拉普拉斯分布.其中,μ 是数学期望,b > 0 是振幅.如果 μ = 0,那么,正半部分恰好是尺度为 1/

机器学习中正则化项L1和L2的直观理解

正则化(Regularization) 机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作?1-norm和?2-norm,中文称作L1正则化和L2正则化,或者L1范数和L2范数. L1正则化和L2正则化可以看做是损失函数的惩罚项.对于线性回归模型,使用L1正则化的模型建叫做Lasso回归,使用L2正则化的模型叫做Ridge回归(岭回归).下图是Python中Lasso回归的损失函数,式中加号后面一项α||w||1即为L1正则化项. 下图是Python中Ri