机器学习的练功方式(九)——线性回归

文章目录

    • 致谢
  • 9 线性回归再相遇
    • 9.1 再遇
      • 9.1.1 概述
      • 9.1.2 矩阵和向量
      • 9.1.3 矩阵加减乘除
        • 9.1.3.1 矩阵——矩阵加减
        • 9.1.3.2 矩阵——标量加减乘
        • 9.1.3.3 矩阵——向量相乘
        • 9.1.3.4 矩阵——矩阵相乘
        • 9.1.3.5 矩阵的逆
        • 9.1.3.6 矩阵的转置
      • 9.1.4 向量化
      • 9.1.5 广义线性模型
    • 9.2 正规方程
    • 9.3 线性回归的实现
    • 9.4 模型评估
    • 9.5 正规方程和梯度下降
    • 9.6 关于优化方法
    • 9.7 后话

致谢

为什么计算函数极值用梯度下降算法而不直接令导数为0求解? - 知乎 (zhihu.com)

解释为什么用梯度下降而不是直接求导数为0的解?_weixin_43167121的博客-CSDN博客_梯度下降为什么不直接导数=0

python的numpy向量化语句为什么会比for快? - 知乎 (zhihu.com)

机器学习:波士顿房价数据集 - wjunneng - 博客园 (cnblogs.com)

随机梯度下降(SGD)与经典的梯度下降法的区别_米兰小子SHC-CSDN博客_随机梯度下降和梯度下降的区别

1.1-广义线性模型 - sklearn中文文档 (sklearncn.cn)

线性回归(模型的评估) - 知乎 (zhihu.com)

9 线性回归再相遇

在第二讲中,实际上我们已经谈论了线性回归的基本知识。但是你是否在当时发现了我的一些漏洞呢?如果你没有发现,你要好好反思自己了。

在当时我们谈到了对于损失函数如何求最小值的问题,那时候我对于求导避而不谈,转而使用了梯度下降来作为求最小值的方法,这是为何呢?

首先我们来试想,我们用求导来求极小值是怎么求的?我们是通过令导函数为0来求导的,可是实际问题中,如果损失函数非凸,那势必会出现y=x3y = x^3y=x3x0x_0x0位置的拐点。因此我们可以得出:并不是所有的函数都可以根据导数求导取得0值的点的,我们需要一种更通用的方式来解决损失函数极小值的问题。

在最优化中,牛顿迭代和梯度下降都可以计算极值。区别在于,梯度下降法的算法复杂度低一些, 但是迭代次数多一些; 牛顿迭代法计算的更快(初值必须设置的很合理), 但是牛顿迭代法因为有"除法"参与(对矩阵来说就是求逆矩阵), 所以每一步迭代计算量很大. 一般会根据具体的情况取舍。

梯度下降相比于牛顿迭代法还有一个好处就是,它的完成方式允许一个简单的并行化,即在多个处理器或机器上分配计算,所以当你使用神经网络来训练模型时,梯度下降变得尤为重要。

好了,坑填上了,下面进入我们这一讲学习的部分。

9.1 再遇

9.1.1 概述

线性回归并不是我们初中学习的那个一次函数了,实际上在机器学习中的线性回归更加地广义。我们初中熟知的一次函数在机器学习中被称为单变量回归。而自变量大于一个的我们叫做多元回归。在第二讲中我们谈到房价预测的模型hθ(x)=θ0+θ1x1+θ2x2h_θ(x) = θ_0+θ_1x_1+θ_2x_2hθ(x)=θ0+θ1x1+θ2x2即为多元回归。

我们给出通用公式:h(w)=w1x1+w2x2+...wnxn+b=wT+bh(w) = w_1x_1+w_2x_2+...w_nx_n+b = w^T+bh(w)=w1x1+w2x2+...wnxn+b=wT+b

其中w,x可以理解为矩阵,这实际上是向量化的一种应用方式,在后面,我会提到向量化,不必担心。但是在这之前,我们必须重温线性代数。

9.1.2 矩阵和向量

矩阵一般用方括号括起,里面写有若干个数字。我们一般表示矩阵的维度通常是采用行数×列数来表示的。如下图所示:

image-20220314100743910

有时我们也会遇见下图所示的符号:

image-20220314100924054

这个看似像R的符号实际上代表任意2×3规模的矩阵集合。

如上面的矩阵所示,我们会用AijA_{ij}Aij来表示A矩阵中第i行第j列的某一个元素。

对于向量也是相应的表示方法,它实际上是一个n×1的矩阵,也就是说,实际上标量是0维,向量是2维,矩阵是三维。

9.1.3 矩阵加减乘除

9.1.3.1 矩阵——矩阵加减

矩阵的加法和减法实际上就是,两个矩阵对应元素相加相减即可。但是在这里需要注意,如果两个矩阵不是同型(即不同维度的)的,那么两个矩阵是不能相加相减的。

image-20220314102115810

在python中两个矩阵即使不同型也能相加,即python的广播机制,在后面的论述中,我们再细谈。

9.1.3.2 矩阵——标量加减乘

对于一个标量和一个矩阵相加相减,如果该标量是n,那么实际上我们可以把该标量看成是一个n的单位矩阵(n的单位矩阵是主对角线全n,可不是矩阵所有元素都是n哈),且与另外需要相加相减的矩阵同型。也就是说,标量加矩阵,即矩阵对应元素全部加上或减去该标量。

同样地,标量和矩阵相乘,即矩阵所有元素全部乘上该标量。

image-20220314102320172

9.1.3.3 矩阵——向量相乘

矩阵和一个向量相乘,假如一个矩阵为m×n,则要求向量一定要为n×1,否则不能相乘。

相乘的时候,矩阵的行元素与向量的列元素对应相乘再相加。

image-20220314102818537

9.1.3.4 矩阵——矩阵相乘

矩阵矩阵相乘和矩阵向量相乘同理,假如一个矩阵为m×n,则要求另外一个矩阵必须是n×k,否则不能相乘。其相乘的结果矩阵为m×k。

相乘的时候,A矩阵的行元素和B矩阵的列元素对应相乘再相加。

实际上,AB矩阵相乘和BA矩阵相乘是不一样的,也就是说,其不享有标量运算中的乘法交换律。所以在进行计算的时候,这个问题是十分需要注意的。不过有一个特例,假如矩阵和单位矩阵进行相乘,两者是满足乘法交换律的。

9.1.3.5 矩阵的逆

有些人很奇怪,上面怎么都是相加相减相乘,可就是没有相除呢?这是因为在线性代数中矩阵的除法不太一样。

在线性代数中,矩阵的除法叫做。比如标量1/3和3/1相乘,其必定为1。我们称3/1为1/3的逆。在矩阵中,假如有A矩阵和A的逆矩阵A−1A^{-1}A1,则满足A(A−1)=I(I为单位矩阵)A(A^{-1}) = I(I为单位矩阵)A(A1)=I(I)。且需要提到的是,只有形如m×m的方阵才有逆矩阵。

逆矩阵一般怎么求呢?外国学生一般用软件算,而中国学生就比较“惨”了,一般靠手算。

如果靠手算,我们一般使用初等行变换法或者利用伴随矩阵来求,这里我们就不过多叙述了,因为脱离了主要内容了。

9.1.3.6 矩阵的转置

转置就不多说了,直接行列互换即可。假如一个A为m×n,则ATA^TAT为n×m。

9.1.4 向量化

在线性回归中,我们会把若干个特征放入x向量中,而把若干个w放入w向量中,最后运用上述的线性代数知识将其加上b。这么做的话,相比于用for循环一个特征一个特征的去扫描,然后一个样本一个样本训练模型来说,使用numpy来启用线性代数机制去计算明显速度要提高几番不止。至于为什么用线性代数机制快,你可以去网上查查,这里涉及底层知识,这里不过多讲解。

9.1.5 广义线性模型

线性模型中实际上有狭义线性模型和广义线性模型。狭义的线性模型就是我们所知的y = kx+b,而广义线性模型即为y=w1x1+w2x2+by = w_1x_1+w_2x_2+by=w1x1+w2x2+b,画在图上实际上这个函数是一个平面。甚至于你可以无限扩展其维度,变成y=w1x1+w2x2+...wnxn+by = w_1x_1+w_2x_2+...w_nx_n+by=w1x1+w2x2+...wnxn+b

然而,线性模型也并非一定要线性,也可以是非线性的。形如y=w1x1+w2x22+by = w_1x_1+w_2x_2^2+by=w1x1+w2x22+b也被称为线性模型。线性模型实际上追求的不是线性,而是追求模型中某个东西一次(方):即自变量一次或参数一次。

参数和自变量多,实际上可以提高模型精度;但是不控制好,则会导致过拟合,这一点在第五讲我们已经做过论述了,这里不再提了。

9.2 正规方程

我们在第二讲曾经提到过正规方程。现在是时候填上我们的坑了。

正规方程和梯度下降都是求得损失函数最小值对应参数的方法。但是不同的是,正规方程并不需要进行迭代,它可以一步求解。而对于梯度下降,其必须勤勤恳恳进行迭代无限逼近最小值。

但是正规方程也有不好的地方,当特征过多过复杂的时候,正规方程求解速度会很慢,且常常求不出结果。所以其实际上具有局限性。

正规方程的基本形式为:
w=(XTX)−1XTyw = (X^TX)^{-1}X^Ty w=(XTX)1XTy
由于正规方程的不通用性,所以这里我们不做过多讲解,初学者只需牢牢掌握梯度下降即可。

9.3 线性回归的实现

结合第二讲和这一讲的叙述,相信我们对线性回归都有一定地了解了,现在让我们看看,我们如何使用sklearn为我们提供的API。

sklearn.linear_model.LinearRegression(fit_intercept = True)

  • 通过正规方程优化
  • fit_intercept:是否计算偏置
  • LinearRegression.coef_:回归系数
  • LinearRegression.intercept_:偏置

sklearn.linear_model.SGDRegression(loss = “squared_loss”,fit_intercept = True,learning_rate = ‘invscaling’,eta0 = 0.01)

  • loss:损失类型
  • loss = “squared_loss”:普通最小二乘法
  • fit_intercept:是否计算偏置
  • learning_rate:string,optinal
  • 用于学习率填充
  • ‘constant’:eta = eta0
  • ‘optimal’:eta = 1.0/(alpha*(t+t0))[default]
  • ‘invscaling’:eta = eta0/pow(t,power_t)
    • power_t = 0.25:存在于父类中
  • 对于一个常数值的学习率来说,可以使用’constant’,并使用eta0来指定学习率
  • SGDRegressor.coef_:回归系数
  • SGDRegressor.intercept_:偏置

我们利用上面的API,对sklearn内置的波士顿房价数据集做预测。

波士顿房价数据集

使用sklearn.datasets.load_boston即可加载相关数据。该数据集是一个回归问题。每个类的观察值数量是均等的,共有 506 个观察,13 个输入变量和1个输出变量。

每条数据包含房屋以及房屋周围的详细信息。其中包含城镇犯罪率,一氧化氮浓度,住宅平均房间数,到中心区域的加权距离以及自住房平均房价等等。

img

在上面的数据中,我们可以总结出以下处理步骤:

  • 获取数据集
  • 划分数据集
  • 特征工程:标准化(各项指标有小数有整数,需要标准化一下)
  • 预估器流程
  • 模型评估

代码如下所示:

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import SGDRegressordef linear_model_1():"""利用正规方程来优化损失函数"""# 1 获取数据boston_data = load_boston()# 2 划分数据x_train, x_test, y_train, y_test = train_test_split(boston_data.data, boston_data.target, random_state=22)# 3 标准化transfer = StandardScaler()x_train = transfer.fit_transform(x_train)x_test = transfer.transform(x_test)# 4 预估器estimator = LinearRegression()estimator.fit(x_train, y_train)# 5 得出模型print("------经果正规方程的优化后------")print("权重系数为:\n", estimator.coef_)print("偏置为:\n", estimator.intercept_)def linear_model_2():"""利用梯度下降来优化损失函数"""# 1 获取数据boston_data = load_boston()# 2 划分数据x_train, x_test, y_train, y_test = train_test_split(boston_data.data, boston_data.target, random_state=22)# 3 标准化transfer = StandardScaler()x_train = transfer.fit_transform(x_train)x_test = transfer.transform(x_test)# 4 预估器estimator = SGDRegressor()estimator.fit(x_train, y_train)# 5 得出模型print("------经果梯度下降的优化后------")print("权重系数为:\n", estimator.coef_)print("偏置为:\n", estimator.intercept_)linear_model_1()
linear_model_2()

9.4 模型评估

在回归任务中,其不像分类任务一样直接对比分类效果获得准确率即可。对于模型的好坏采用的是评估指标,评估指标一般都是用我们在第二讲讲到的那几个误差函数。在线性回归中,常用的误差函数即为平方误差函数,即均方误差(Mean Square Error,MSE)。其他的误差函数,在神经网络中会一一涉及。

均方误差如下所示:
MSE=1m∑i=1m(y^−yi)2MSE = \frac{1}{m}\sum^m_{i = 1}(\hat y - y^i)^2 MSE=m1i=1m(y^yi)2
MSE的作用就是当你训练出了模型后,我用测试集中的数据来对比你预测出来的结果,看看差距到底有多大,这个多大是用均方误差来估计的。

在sklearn中也有相应的API,如下所示:

sklearn.metrics.mean_squared_error(y_true, y_pred)

  • 均方误差回归损失
  • y_true:真实值
  • y_pred:预测值
  • return:误差,浮点数结果

应用在上面的线性回归中:

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import SGDRegressor
from sklearn.metrics import mean_squared_errordef linear_model_1():"""利用正规方程来优化损失函数"""# 1 获取数据boston_data = load_boston()# 2 划分数据x_train, x_test, y_train, y_test = train_test_split(boston_data.data, boston_data.target, random_state=22)# 3 标准化transfer = StandardScaler()x_train = transfer.fit_transform(x_train)x_test = transfer.transform(x_test)# 4 预估器estimator = LinearRegression()estimator.fit(x_train, y_train)y_predict = estimator.predict(x_test)# 5 得出模型print("------经果正规方程的优化后------")print("权重系数为:\n", estimator.coef_)print("偏置为:\n", estimator.intercept_)# 6 评估模型error = mean_squared_error(y_test, y_predict)print("均方误差为:\n", error)def linear_model_2():"""利用梯度下降来优化损失函数"""# 1 获取数据boston_data = load_boston()# 2 划分数据x_train, x_test, y_train, y_test = train_test_split(boston_data.data, boston_data.target, random_state=22)# 3 标准化transfer = StandardScaler()x_train = transfer.fit_transform(x_train)x_test = transfer.transform(x_test)# 4 预估器estimator = SGDRegressor()estimator.fit(x_train, y_train)y_predict = estimator.predict(x_test)# 5 得出模型print("------经果梯度下降的优化后------")print("权重系数为:\n", estimator.coef_)print("偏置为:\n", estimator.intercept_)# 6 评估模型error = mean_squared_error(y_test, y_predict)print("均方误差为:\n", error)linear_model_1()
linear_model_2()

9.5 正规方程和梯度下降

正规方程和梯度下降在上面的案例中已经有了很明显的对比:

梯度下降正规方程
需要选择学习率不需要
需要迭代求解一次运算就能得出
特征数量较大可以使用需要解方程,时间复杂度很高

在选择优化方法时,我觉得真的没必要花里胡哨,梯度下降就对了。如果那你真的很想搞事,那么sklearn给了一个参考图,你可以根据这个来判定你要使用哪种优化方法。

9.6 关于优化方法

实际上,我们在上面提到的sklearn.linear_model.SGDRegression并不是传统的梯度下降(GD),而是经过多次改进的随机梯度下降(SGD)

传统的梯度下降需要在迭代过程中使用所有的训练数据。记得梯度下降怎么做的吗?

线性代数的损失函数假设为:J(θ1)=12m(y^−y)2J(θ_1) = \frac {1}{2m}(\hat y - y)^2J(θ1)=2m1(y^y)2,则模型参数更新为:θj=θj−α∂∂θjJ(θ0,θ1)θ_j = θ_j - \alpha \frac{\partial}{\partial θ_j} J(θ_0,θ_1)θj=θjαθjJ(θ0,θ1)

因此,在经典的梯度下降法中每次对模型参数进行更新时,需要遍历所有的数据。当m很大的时候,就需要耗费巨大的计算资源和计算时间。为此,随机梯度下降(SGD)应运而生。

随机梯度下降不再去求平均数了,而是使用随机的单个样本的损失来作为平均损失。它是一种简单但非常有效的方法。适用于支持向量机和回归中。在以前小数据是SGD实际上作用并不明显,但是在数据愈发蓬勃发展的时刻它越来越重要。

所以综上所述,SGD的优点就是效率高易于实现。而SGD的缺点是其包含众多的超参数,需要自己指定,而且其对于标准化很敏感。

9.7 后话

实际上回归远不止于此,线性回归是回归问题一种最为简单的实现方式。除了线性回归,前面学过的决策树也能做回归,贝叶斯也可以,如果后面有机会,我们还会接触到岭回归、逻辑斯蒂回归(实际上是分类)、最小角回归、弹性网络、感知机、稳健回归等,它们都属于广义线性模型。

好了,这一讲有点长,你也累了,晚安。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

12个月份统计分组

/** 根据月份来统计trade里面的入账,支出,总盈利*/public function countMonth(){$in array();$out array();$res array();$year date("Y",time());$in_sql SELECT SUM(money) AS mon, FROM_UNIXTIME(cdate, "%m") AS m FR…

idea 调试技巧1

1 多线程调试 开发过多线程应用的朋友应该有体会,有些时候,为了观察多个线程间变量的不同状态,以及锁的获取等,就会想到在代码里加个断点debug一下。 在IDE里断点停下来的时候,可以切换到另外的线程中,跑其…

SQL server 复习一

第一天 下面我们从最基础的开始: 在运行里面输入:services.msc 一、启动服务 二、数据库登录的两种身份验证方式 另外一种身份验证方式就是SQL Server身份验证. sa不能使用的时候可以这样的操作: 1.用windows登录,然后在“实例”右键“属性”…

[分享]iOS开发-实现view底部控件随着键盘的弹出而上移的效果

首先说一下思路:想要达到底部控件随着键盘的弹出而上移的效果,那么我们必然需要的到键盘在弹出时的高度,以及原点坐标。说白了我们的大致思路就是,用view的高度-键盘弹出时的高度,得到的值就是底部控件与vi…

深度学习修炼(二)——数据集的加载

文章目录致谢2 数据集的加载2.1 框架数据集的加载2.2 自定义数据集2.3 准备数据以进行数据加载器训练致谢 Pytorch自带数据集介绍_godblesstao的博客-CSDN博客_pytorch自带数据集 2 数据集的加载 与sklearn中的datasets自带数据集类似,pytorch框架也为我们提供了数…

Css3之基础-5 Css 背景、渐变属性

一、CSS 背景概述背景属性的作用- 背景样式可以控制 HTML 元素的背景颜色、背景图像等 - 背景色- 设置单一的颜色作为背景- 背景图像- 以图片作为背景- 可以设置图像的位置、平铺、尺寸等二、CSS 背景属性背景色 background-color - 属性用于为元素设置背景色- 接受任何合法的颜…

机器学习的练功方式(十)——岭回归

文章目录十 岭回归10.1 岭回归的接口10.2 岭回归处理房价预测十 岭回归 岭回归是线性回归的改进,有时候迫不得已我们的参数确实不能少,这时候过拟合的现象就可能发生。为了避免过拟合现象的发生,既然不能从减少参数上面下手,那我…

OpenCV修养(一)——引入

文章目录1 引入1.1 OpenCV是啥1.2 OpenCV——Python1 引入 1.1 OpenCV是啥 OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 它轻量级而且高…

被解放的姜戈08 远走高飞

作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系。 之前在单机上实现了一个Django服务器(被解放的姜戈07 马不停蹄),现在我们可以把这个服务器推上一个云平台。这里我选择使用阿里云。 看着复仇的火焰…

OpenCV修养(二)——OpenCV基本操作

文章目录2 OpenCV基本操作2.1 IO操作2.2 图像基本操作2.2.1 图像绘制2.2.1.1 绘制直线2.2.1.2 绘制圆形2.2.1.3 绘制矩形2.2.1.4 添加文字2.2.1.5 试手2.2.2 获取/修改图像的像素点2.2.3 获取图像属性2.2.4 图像通道拆分/合并2.2.5 色彩空间改变2.2.6 边界填充2.3图像算数操作2…

ylbtech-LanguageSamples-Porperties(属性)

ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-Porperties(属性)1.A,示例(Sample) 返回顶部“属性”示例 本示例演示属性为何是 C# 编程语言必不可少的一个组成部分。它演示了如何声明和使用属性。有关更多信息,请参见属性(C# 编…

Altium Designer敷铜的规则设定

InPolygon 这个词是铺铜对其他网络的设置,铺铜要离其他网络远点,因为腐蚀不干净会对 电路板有影响... 问题一:: 如下图所示,现在想让敷铜与板子边界也就是keepoutlayer的间距小一点,比如0.2MM。而与走线的间距比较大,比如0.8mm。要怎么设置规…

OpenCV修养(三)——图像处理(上)

文章目录致谢3 图像处理(上)3.1 几何变换3.1.1 图像缩放3.1.2 图像平移3.1.3 图像旋转3.1.4 仿射变换3.2 图像阈值3.3 图像平滑3.3.1 图像噪声3.3.1.1 椒盐噪声3.3.1.2 高斯噪声3.3.2 均值滤波3.3.3 方框滤波3.3.4 高斯滤波3.3.5 中值滤波3.3.6 小结3.4 …

机器学习的练功方式(十一)——逻辑回归

文章目录致谢11 逻辑回归11.1 引入11.2 激活函数11.3 损失函数11.4 梯度下降11.5 案例:癌症分类预测致谢 逻辑回归为什么用Sigmoid? - 知乎 (zhihu.com) 逻辑回归中的损失函数的解释_yidiLi的博客-CSDN博客_逻辑回归损失函数 11 逻辑回归 逻辑回归也被称…

【百度地图API】如何制作一张魔兽地图!!——CS地图也可以,哈哈哈

【百度地图API】如何制作一张魔兽地图!!——CS地图也可以,哈哈哈 原文:【百度地图API】如何制作一张魔兽地图!!——CS地图也可以,哈哈哈摘要: 你玩魔兽不?你知道如何做一张魔兽地图不…

linux系统分两种更普遍的包,rpm和tar,这两种安装包如何解压与安装

2019独角兽企业重金招聘Python工程师标准>>> RPM软件包管理器&#xff1a;一种用于互联网下载包的打包及安装工具&#xff0c;它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。rpm -ivh xxxx.rpm <-安装rpm包 -i install的意思 -v view 查看更详细的…

C++类的数组元素查找最大值问题

找出一个整型数组中的元素的最大值。 1 /*找出一个整型数组中的元素的最大值。*/2 3 #include <iostream>4 using namespace std;5 6 class ArrayMax //创建一个类7 {8 public :9 void set_value(); 10 void max_value(); 11 void sh…

C++从0到1的入门级教学(二)——数据类型

文章目录2 数据类型2.1 简单变量2.2 基本数据类型2.2.1 整型2.2.2 实型&#xff08;浮点型&#xff09;2.2.3 字符型2.2.4 布尔类型2.3 sizeof关键字2.4 类型转换2.5 转义字符2.6 重新谈及变量2.6.1 字面值常量2.6.2 变量2.6.3 列表初始化2.7 数据的输入2 数据类型 2.1 简单变…

深度学习修炼(三)——自动求导机制

文章目录致谢3 自动求导机制3.1 传播机制与计算图3.1.1 前向传播3.1.2 反向传播3.2 自动求导3.3 再来做一次3.4 线性回归3.4.1 回归3.4.2 线性回归的基本元素3.4.3 线性模型3.4.4 线性回归的实现3.4.4.1 获取数据集3.4.4.2 模型搭建3.4.4.3 损失函数3.4.4.4 训练模型3.5 后记致…

深度学习修炼(四)——补充知识

文章目录致谢4 补充知识4.1 微积分4.1.1 导数和微分4.1.2 偏导数4.1.3 梯度4.1.4 链式求导4.2 Hub模块致谢 导数与微分到底有什么区别&#xff1f; - 知乎 (zhihu.com) 4 补充知识 在这一小节的学习中&#xff0c;我们会对上一小节的知识点做一个补充&#xff0c;并且拓展一个…