iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >梯度下降、过拟合和归一化
  • 123
分享到

梯度下降、过拟合和归一化

梯度归一化 2023-01-30 22:01:21 123人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

好的课程应该分享给更多人:人工智能视频列表-尚学堂,点开任意一个之后会发现他们会提供系列课程整合到一起的百度网盘下载地址,包括视频+代码+资料,免费的优质资源。当然,现在共享非常多,各种mooc、博客、论坛等,很容易就可以找到各种各样的知

好的课程应该分享给更多人:人工智能视频列表-尚学堂,点开任意一个之后会发现他们会提供系列课程整合到一起的百度网盘下载地址,包括视频+代码+资料,免费的优质资源。当然,现在共享非常多,各种mooc、博客、论坛等,很容易就可以找到各种各样的知识,能走到哪一步,都在我们自己。希望我能够一直坚持下去,加油!

参考书籍:《机器学习》-周志华,中文书,各种概念都讲解的很清晰,赞。点这里下载,在百度网盘上,密码是:8tmk

参见官方文档:scikit-learn官网Http://scikit-learn.org/stable/supervised_learning.html#supervised-learning

看这个吧,简书上的:深入浅出--梯度下降法及其实现

批量梯度下降

  · 初始化W,即随机W,给初值

  · 沿着负梯度方向迭代,更新后的W使得损失函数J(w)更小

  · 如果W维度是几百维度,直接算SVD也是可以的,几百维度以上一般是梯度下降算法

# 批量梯度下降
import numpy as np

# 自己创建建数据,哈哈
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
X_b = np.c_[np.ones((100, 1)), X]

learning_rate = 0.1     # 学习率,步长=学习率x梯度
n_iterations = 1000     # 迭代次数,一般不设置阈值,只设置超参数,迭代次数
m = 100     # m个样本

theta = np.random.randn(2, 1)   # 初始化参数theta,w0,...,wn
count = 0   # 计数

for iteration in range(n_iterations):
    count += 1
    # 求梯度,每次迭代使用m个样本求梯度
    gradients = 1/m * X_b.T.dot(X_b.dot(theta)-y)
    # 迭代更新theta值
    theta = theta - learning_rate * gradients
    # print(count, theta)
    
print(count, theta)

随机梯度下降

  · 优先选择随机梯度下降

  · 有些时候随机梯度下降可以跳出局部最小# 随机梯度下降

import numpy as np

X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
X_b = np.c_[np.ones((100, 1)), X]

n_epochs = 500 
t0, t1 = 5, 50
m = 100

def learning_schedule(t):
    return t0/(t + t1)

# 随机初始化参数值
theta = np.random.randn(2, 1)

for epoch in range(n_epochs):
    for i in range(m):
        random_index = np.random.randint(m)
     # 每次迭代使用一个样本求梯度 xi = X_b[random_index:random_index+1] yi = y[random_index:random_index+1] gradients = 2*xi.T.dot(xi.dot(theta)-yi) learning_rate = learning_schedule(epoch*m + i) theta = theta - learning_rate * gradients print(theta)

归一化

预处理

这个CSDN的博客挺好的:机器学习常见归一化方法及实现,我觉得还是看书效果最好了。

基于梯度下降法求最优解时,都要归一化,why,为什么?

数据的归一化/标准化/规范化,顾名思义,就是有量纲数据集经过某种变换后,变成无量纲的数据,比如变到[0,1],应该是这样便于处理吧,使各个维度梯度尽量同时收敛。

过拟合、拟合与欠拟合

过拟合:模型很好的拟合了训练集数据,但预测的准确率反而降低了,拟合过度,泛化能力弱。

欠拟合:与过拟合相反,模型尚未能很好的拟合训练数据集,拟合不足。

拟合:模型适当拟合训练集且预测准确率较高,泛化能力强。

主要做的是防止过拟合:

  · 通过正则化修改损失函数,考虑惩罚项的影响,如L1、L2正则化

    L1 = n个维度的w的绝对值和

    L2 = n个维度的w的平方和

    即,loss_function = loss_function + α(L1 or L2),使用惩罚项,模型泛化能力提高,可能影响训练数据集正确率,在惩罚项里面,会有个alpha,即惩罚项的权重,我们可以通过调整alpha超参数,根据需求来决定是更看重模型的正确率还是模型的泛化能力!

难受的,代码:

损失函数 + L2正则项:

# 岭回归/脊回归,随机梯度下降,crtl+B查看函数文档以调整参数…
import numpy as np
from sklearn.linear_model import Ridge
from sklearn.linear_model import SGDRegressor

# 模拟真实数据集
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)

# # 方法一:脊/岭回归,损失函数=最小二乘+L2正则项
# # alpha=1,惩罚项权重-Regularization strength;
# ridge_reg = Ridge(alpha=1, solver='auto')
# ridge_reg.fit(X, y)    # 模型
# print(ridge_reg.predict(2))    # 预测x=2时,y=?
# print("w0 =", ridge_reg.intercept_)    # 打印w0或者说bias
# print("w1 =", ridge_reg.coef_)     # 打印weights

# 方法二:随机梯度下降
# # penalty='l2',使用L2正则化,迭代n_iter=100次
sgd_reg = SGDRegressor(penalty='l1', n_iter=100)
sgd_reg.fit(X, y.ravel())
print(sgd_reg.predict(2))
print("w0 =", sgd_reg.intercept_)
print("w1 =", sgd_reg.coef_)

 损失函数 + L1正则项:

# 套索回归,随机梯度下降回归函数
import numpy as np
from sklearn.linear_model import Lasso, SGDRegressor

# 模拟真实数据集
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)

# One:lasso regression,损失函数=最小二乘项? + L1正则项
lasso_reg = Lasso(alpha=0.15, max_iter=1000)
lasso_reg.fit(X, y)
print(lasso_reg.predict(2))
print(lasso_reg.intercept_, lasso_reg.coef_)

# # Two:sgd regression
# sgd_reg = SGDRegressor(penalty='l1', n_iter=1000)
# sgd_reg.fit(X, y)
# print(sgd_reg.predict(2))
# print(sgd_reg.intercept_, sgd_reg.coef_)

 

 

--结束END--

本文标题: 梯度下降、过拟合和归一化

本文链接: https://www.lsjlt.com/news/179508.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 梯度下降、过拟合和归一化
    好的课程应该分享给更多人:人工智能视频列表-尚学堂,点开任意一个之后会发现他们会提供系列课程整合到一起的百度网盘下载地址,包括视频+代码+资料,免费的优质资源。当然,现在共享非常多,各种mooc、博客、论坛等,很容易就可以找到各种各样的知...
    99+
    2023-01-30
    梯度 归一化
  • Python实现批量梯度下降法(BGD)拟合曲线
    1. 导入库 import numpy as np #矩阵运算 import matplotlib.pyplot as plt #可视化 import random #产生数据扰...
    99+
    2024-04-02
  • python实现梯度下降求解逻辑回归
    本文实例为大家分享了python实现梯度下降求解逻辑回归的具体代码,供大家参考,具体内容如下 对比线性回归理解逻辑回归,主要包含回归函数,似然函数,梯度下降求解及代码实现 线性回归 ...
    99+
    2024-04-02
  • python如何实现梯度下降求解逻辑回归
    线性回归1.线性回归函数似然函数的定义:给定联合样本值X下关于(未知)参数 的函数似然函数:什么样的参数跟我们的数据组合后恰好是真实值 2.线性回归似然函数对数似然: 3.线性回归目标函数(误差的表达式,我们的目的就是使得真实值与预...
    99+
    2023-05-14
    Python
  • PyTorch加载数据集梯度下降优化
    目录一、实现过程1、准备数据2、设计模型3、构造损失函数和优化器4、训练过程5、结果展示二、参考文献一、实现过程 1、准备数据 与PyTorch实现多维度特征输入的逻辑回归的方法不同...
    99+
    2024-04-02
  • Pytorch梯度下降优化的示例分析
    这篇文章主要介绍了Pytorch梯度下降优化的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、激活函数1.Sigmoid函数函数图像以及表达式如下:通过该函数,可以...
    99+
    2023-06-25
  • python怎么实现梯度下降求解逻辑回归
    今天小编给大家分享一下python怎么实现梯度下降求解逻辑回归的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。线性回归1.线性...
    99+
    2023-07-06
  • Python实现多元线性回归的梯度下降法
    目录1. 读取数据2.定义代价函数3. 梯度下降4.可视化展示1. 读取数据 首先要做的就是读取数据,请自行准备一组适合做多元回归的数据即可。这里以data.csv为例,这里做的是二...
    99+
    2024-04-02
  • 机器学习(二):线性回归之梯度下降法
    文章目录 专栏导读 1、梯度下降法原理 2、梯度下降法原理代码实现 3、sklearn内置模块实现 专栏导读 ✍ 作者简介:i阿极,CSDN Python领域新星创作者,...
    99+
    2023-09-07
    机器学习 线性回归 python 梯度下降法
  • python机器学习逻辑回归随机梯度下降法
    目录写在前面随机梯度下降法参考文献写在前面 随机梯度下降法就在随机梯度上。意思就是说当我们在初始点时想找到下一点的梯度,这个点是随机的。全批量梯度下降是从一个点接着一点是有顺序的,全...
    99+
    2024-04-02
  • python中逻辑回归随机梯度下降法怎么用
    这篇文章主要为大家展示了“python中逻辑回归随机梯度下降法怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python中逻辑回归随机梯度下降法怎么用”这篇文章吧。随机梯度下降法随机梯度下...
    99+
    2023-06-25
  • 如何使用Nadam进行梯度下降优化
    这篇文章主要介绍如何使用Nadam进行梯度下降优化,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!梯度下降是一种优化算法,遵循目标函数的负梯度以定位函数的最小值。梯度下降的局限性在于,...
    99+
    2024-04-02
  • Pyspark线性回归梯度下降交叉验证知识点详解
    我正在尝试在 pyspark 中的 SGD 模型上执行交叉验证,我正在使用pyspark.mllib.regression,ParamGridBuilder和CrossValidat...
    99+
    2024-04-02
  • 使用Python在实现一个梯度下降算法
    这期内容当中小编将会给大家带来有关使用Python在实现一个梯度下降算法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3...
    99+
    2023-06-06
  • Pyspark 线性回归梯度下降交叉验证的知识点是什么
    这期内容当中小编将会给大家带来有关Pyspark 线性回归梯度下降交叉验证的知识点是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。我正在尝试在 pyspark 中的 SGD 模型上执行交叉验...
    99+
    2023-06-22
  • 人工智能学习Pytorch梯度下降优化示例详解
    目录一、激活函数1.Sigmoid函数2.Tanh函数3.ReLU函数二、损失函数及求导1.autograd.grad2.loss.backward()3.softmax及其求导三、...
    99+
    2024-04-02
  • pytorch实现梯度下降和反向传播图文详细讲解
    目录反向传播手动完成线性回归pytorch API完成线性回归优化器类实现反向传播 这里说一下我的理解,反向传播是相对于前向计算的,以公式J(a,b,c)=3(a+bc)为例,前向计...
    99+
    2023-05-17
    pytorch梯度下降 pytorch反向传播 pytorch梯度下降和反向传播
  • 鲍鱼数据集案例分析-预测鲍鱼年龄(线性回归/梯度下降法实操)
    数据集来源UCI Machine Learning Repository: Abalone Data Set 目录 一、数据集探索性分析 二、鲍鱼数据预处理 1.对sex特征进行OneHot编码,便于后续模型纳入哑变量 2...
    99+
    2023-10-05
    线性回归 python 机器学习 数据挖掘 回归
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作