注:笔记 来自课程 人工智能必备数学知识
Tips①:只是记录从这个课程学到的东西,不是推广、没有安利
Tips②:本笔记主要目的是为了方便自己遗忘查阅,或过于冗长、或有所缺省、或杂乱无章,见谅
Tips③:本笔记使用markdown编写,相关缩进为了方便使用了LaTeX公式的\qquad,复制粘贴请注意
Tips④:本笔记部分内容为自己的整理拓展,课程中并未提及

文章目录

  • 一、定义
  • 二、评估
  • 三、求解
    • 1、最小二乘法
    • 2、梯度下降法
  • 四、代码案例(Python)

一、定义

回归\color{#6666FF} \textbf{回归}回归
根据已有的数据,建立因变量Y与自变量X的函数关系的模型:\color{#6666FF} \qquad 根据已有的数据,建立因变量Y与自变量X的函数关系的模型:根据已有的数据,建立因变量Y与自变量X的函数关系的模型:
y=f(x1,x2,⋯,xn)\color{#6666FF} y = f(x_1, x_2, \cdots, x_n) y=f(x1​,x2​,⋯,xn​)

线性回归\color{#6666FF} \textbf{线性回归}线性回归
在回归的基础上,要求因变量Y与自变量X成线性关系:\qquad \color{#6666FF} 在回归的基础上,要求因变量Y与自变量X成线性关系:在回归的基础上,要求因变量Y与自变量X成线性关系:
y=w1x1+w2x2+⋯+wnxneg:y=ax+b\color{#6666FF} \begin{aligned} & y = w_1 x_1 + w_2 x_2 + \cdots + w_n x_n \\ & \color{#FFA5FF} eg:y = ax + b \end{aligned} ​y=w1​x1​+w2​x2​+⋯+wn​xn​eg:y=ax+b​

回归与分类的区别\color{#AA66FF} \textbf{回归}与\textbf{分类}的区别回归与分类的区别
回归的预测是连续的,而分类的预测是离散的\color{#AA66FF} \qquad 回归的预测是连续的,而分类的预测是离散的回归的预测是连续的,而分类的预测是离散的

二、评估

通过回归求解,使模型预测值y^尽可能接近真实测量y\color{#6666FF}通过回归求解,使模型预测值\hat{y}尽可能接近真实测量y通过回归求解,使模型预测值y^​尽可能接近真实测量y
即最小化均方误差‾\color{#6666FF}即最小化\textbf{\underline{均方误差}}即最小化均方误差​
MSE=1n∑(y−y^)2\color{#6666FF} \text{MSE} = \frac{1}{n}\sum(y - \hat{y})^2MSE=n1​∑(y−y^​)2

三、求解

1、最小二乘法

以一元输入为例,联立方程组,直接找到全局最小值‾:\color{#FFC000} 以一元输入为例,联立方程组,直接找到\underline{\textbf{全局最小值}}:以一元输入为例,联立方程组,直接找到全局最小值​:
{loss=∑(y^−y)2y^=ax+b∂loss∂a=0∂loss∂b=0⟹{a=∑(x−xˉ)(y−yˉ)∑(x−xˉ)2b=yˉ−axˉ\color{#FFC000} \begin{cases} \text{loss} = \sum(\hat{y} - y)^2 \\ \\ \hat{y} = ax + b \\ \\ \begin{aligned} \frac{\partial \text{loss}}{\partial a} = 0 \end{aligned} \\ \\ \begin{aligned} \frac{\partial \text{loss}}{\partial b} = 0 \end{aligned} \\ \end{cases} \color{#AA66FF} \Longrightarrow \begin{cases} a = \begin{aligned} \frac{\sum(x - \bar{x})(y - \bar{y})}{\sum(x - \bar{x})^2} \end{aligned} \\ \\ b = \bar{y} - a \bar{x} \\ \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​loss=∑(y^​−y)2y^​=ax+b∂a∂loss​=0​∂b∂loss​=0​​⟹⎩⎪⎪⎪⎨⎪⎪⎪⎧​a=∑(x−xˉ)2∑(x−xˉ)(y−yˉ​)​​b=yˉ​−axˉ​

推导过程:\color{#FF8080} 推导过程:推导过程:

loss=∑(ax+b−y)2\color{#FF8080} \qquad \begin{aligned} \text{loss} = \sum(ax + b - y)^2 \end{aligned}loss=∑(ax+b−y)2​

故∂loss∂b=2∑(ax+b−y)=2(a∑x+∑b+∑y)=2(anxˉ+nb+nyˉ)=0\color{#FF8080} \qquad \begin{aligned} 故\frac{\partial \text{loss}}{\partial b} & = 2 \sum(ax + b - y) \\ & = 2 (a\sum x + \sum b + \sum y ) \\ & = 2 (an\bar{x} + nb + n\bar{y}) \\ & = 0 \end{aligned}故∂b∂loss​​=2∑(ax+b−y)=2(a∑x+∑b+∑y)=2(anxˉ+nb+nyˉ​)=0​

得:b=yˉ−axˉ\color{#FF8080} \qquad 得:b = \bar{y} - a \bar{x}得:b=yˉ​−axˉ

故∂loss∂a=2∑(ax+yˉ−axˉ−y)x=2∑(ax2+xyˉ−axˉx−xy)=2[a∑(x2−xˉx)−∑(xy−xyˉ)]=0\color{#FF8080} \qquad \begin{aligned} 故\frac{\partial \text{loss}}{\partial a} & = 2 \sum(ax + \bar{y} - a \bar{x} - y)x \\ & = 2 \sum(ax^2 + x\bar{y} - a \bar{x}x - xy) \\ & = 2 \left[a\sum(x^2- \bar{x}x) - \sum(xy - x\bar{y}) \right] \\ & = 0 \end{aligned}故∂a∂loss​​=2∑(ax+yˉ​−axˉ−y)x=2∑(ax2+xyˉ​−axˉx−xy)=2[a∑(x2−xˉx)−∑(xy−xyˉ​)]=0​

得:a=∑(xy−xyˉ)∑(x2−xˉx)=∑(xy−xyˉ)+nxˉyˉ−nxˉyˉ∑(x2−xˉx)+nxˉ2−nxˉ2=∑(xy−xyˉ)+∑(−xˉy+xˉyˉ)∑(x2−xˉx)+∑(−xˉx+xˉ2)=∑(x−xˉ)(y−yˉ)∑(x−xˉ)2\color{#FF8080} \qquad \begin{aligned} 得:a & = \frac {\sum(xy - x\bar{y})} {\sum(x^2- \bar{x}x)} \\ \\ & = \frac {\sum(xy - x\bar{y}) + n\bar{x}\bar{y} - n\bar{x}\bar{y}} {\sum(x^2- \bar{x}x) + n\bar{x}^2 - n\bar{x}^2} \\ \\ & = \frac {\sum(xy - x\bar{y}) + \sum(-\bar{x}y+\bar{x}\bar{y})} {\sum(x^2- \bar{x}x) + \sum(-\bar{x}x + \bar{x}^2)} \\ \\ & = \frac {\sum(x - \bar{x})(y - \bar{y})} {\sum(x - \bar{x})^2} \\ \end{aligned}得:a​=∑(x2−xˉx)∑(xy−xyˉ​)​=∑(x2−xˉx)+nxˉ2−nxˉ2∑(xy−xyˉ​)+nxˉyˉ​−nxˉyˉ​​=∑(x2−xˉx)+∑(−xˉx+xˉ2)∑(xy−xyˉ​)+∑(−xˉy+xˉyˉ​)​=∑(x−xˉ)2∑(x−xˉ)(y−yˉ​)​​

综上,{a=∑(x−xˉ)(y−yˉ)∑(x−xˉ)2b=yˉ−axˉ\color{#FF8080} \qquad 综上, \begin{cases} a = \begin{aligned} \frac{\sum(x - \bar{x})(y - \bar{y})}{\sum(x - \bar{x})^2} \end{aligned} \\ \\ b = \bar{y} - a \bar{x} \\ \end{cases}综上,⎩⎪⎪⎪⎨⎪⎪⎪⎧​a=∑(x−xˉ)2∑(x−xˉ)(y−yˉ​)​​b=yˉ​−axˉ​

例1:用最小二乘法为以下数据做线性回归\color{#FFA5FF} 例1:用最小二乘法为以下数据做线性回归例1:用最小二乘法为以下数据做线性回归

x
时长(min)
y
产量(个)
20 195
30 305
50 480
60 580

解:\color{#FF8080}解:解:

xˉ=40,yˉ=390\color{#FF8080} \qquad \bar{x} = 40, \bar{y} = 390xˉ=40,yˉ​=390

故{a=(−20)×(−195)+(−10)×(−85)+10×90+20×190202+102+102+202=9.45b=390−9.45×40=12\color{#FF8080} \qquad 故 \begin{cases} a = \begin{aligned} \frac {(-20) \times (-195) + (-10) \times (-85) + 10 \times 90 + 20 \times 190} {20^2+10^2+10^2+20^2} = 9.45 \end{aligned} \\ \\ b = 390 - 9.45 \times 40 = 12 \end{cases}故⎩⎪⎪⎪⎨⎪⎪⎪⎧​a=202+102+102+202(−20)×(−195)+(−10)×(−85)+10×90+20×190​=9.45​b=390−9.45×40=12​

故线性回归方程为y=9.45x+12\color{#FF8080} \qquad 故线性回归方程为 y = 9.45 x +12故线性回归方程为y=9.45x+12

现在我们把问题推广到n元\color{#6666FF} 现在我们把问题推广到n元现在我们把问题推广到n元

因为问题涉及线性方程组,我分为两种形式进行讨论(个人认为,数值形式便于理解,矩阵形式便于计算)\color{#6666FF} 因为问题涉及线性方程组,我分为两种形式进行讨论(个人认为,数值形式便于理解,矩阵形式便于计算)因为问题涉及线性方程组,我分为两种形式进行讨论(个人认为,数值形式便于理解,矩阵形式便于计算)

数值形式:\color{#FF8080} \qquad 数值形式:数值形式:

{loss=∑(y^−y)2y^=w0+w1x1+w2x2+⋯+wnxn∂loss∂w0=0∂loss∂w1=0⋮∂loss∂wn=0\color{#FF8080} \qquad\qquad \begin{cases} \text{loss} = \sum(\hat{y} - y)^2 \\ \\ \hat{y} = w_0 + w_1x_1 + w_2x_2 + \cdots + w_nx_n \\ \\ \begin{aligned} \frac{\partial \text{loss}}{\partial w_0} = 0 \end{aligned} \\ \\ \begin{aligned} \frac{\partial \text{loss}}{\partial w_1} = 0 \end{aligned} \\ \\ \quad \vdots \\ \\ \begin{aligned} \frac{\partial \text{loss}}{\partial w_n} = 0 \end{aligned} \\ \end{cases}⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​loss=∑(y^​−y)2y^​=w0​+w1​x1​+w2​x2​+⋯+wn​xn​∂w0​∂loss​=0​∂w1​∂loss​=0​⋮∂wn​∂loss​=0​​

同样地,按照之前一元的做法,我们先计算关于常数项的偏导\color{#FF8080} \qquad\qquad 同样地,按照之前一元的做法,我们先计算关于常数项的偏导同样地,按照之前一元的做法,我们先计算关于常数项的偏导

loss=∑(w0+∑i=1nwixi−y)2\color{#FF8080} \qquad\qquad \begin{aligned} \text{loss} = \sum(w_0 + \sum\limits_{i = 1}^{n}{w_i x_i}- y)^2 \end{aligned}loss=∑(w0​+i=1∑n​wi​xi​−y)2​

故∂loss∂w0=2∑(w0+∑i=1nwixi−y)=2[∑w0+∑i=1n(wi∑xi)−∑y]=2(Nw0+∑i=1n(wiNxˉi)−Nyˉ)=2N(w0+∑i=1nwixˉi−yˉ)=0\color{#FF8080} \qquad\qquad \begin{aligned} 故 \frac {\partial \text{loss}} {\partial w_0} & = 2 \sum(w_0 + \sum\limits_{i = 1}^{n}{w_i x_i} - y) \\ & = 2 \left[ \sum{w_0} + \sum\limits_{i = 1}^{n}(w_i \sum{x_i}) - \sum{y} \right] \\ & = 2 \left( N w_0 + \sum\limits_{i = 1}^{n}(w_i N \bar{x}_i) - N \bar{y} \right) \\ & = 2N \left( w_0 + \sum\limits_{i = 1}^{n}w_i \bar{x}_i - \bar{y} \right) \\ & = 0 \end{aligned}故∂w0​∂loss​​=2∑(w0​+i=1∑n​wi​xi​−y)=2[∑w0​+i=1∑n​(wi​∑xi​)−∑y]=2(Nw0​+i=1∑n​(wi​Nxˉi​)−Nyˉ​)=2N(w0​+i=1∑n​wi​xˉi​−yˉ​)=0​

得:w0=yˉ−∑i=1nwixˉi\color{#FF8080} \qquad\qquad 得: \begin{aligned} w_0 = \bar{y} -\sum\limits_{i = 1}^{n}{w_i \bar{x}_i} \end{aligned}得:w0​=yˉ​−i=1∑n​wi​xˉi​​

故∂loss∂wm=2∑(w0+∑i=1nwixi−y)xm=2∑[∑i=1nwi(xi−xˉi)−(y−yˉ)]xm=0\color{#FF8080} \qquad\qquad \begin{aligned} 故 \frac {\partial \text{loss}} {\partial w_m} & = 2 \sum(w_0 + \sum\limits_{i = 1}^{n}{w_i x_i} - y) x_m \\ & = 2 \sum \left[ \sum\limits_{i = 1}^{n}{w_i (x_i - \bar{x}_i)} - (y - \bar{y}) \right] x_m \\ & = 0 \end{aligned}故∂wm​∂loss​​=2∑(w0​+i=1∑n​wi​xi​−y)xm​=2∑[i=1∑n​wi​(xi​−xˉi​)−(y−yˉ​)]xm​=0​

可知:∑∑i=1nwi(xi−xˉi)xm=∑(y−yˉ)xm即∑i=1n(wi∑(xi−xˉi)xm)=∑(y−yˉ)xm即∑i=1n[wi(∑(xi−xˉi)xm−Nxˉixˉm+Nxˉixˉm)]=∑(y−yˉ)xm−Nxˉmy+Nxˉmy即∑i=1n[wi(∑(xi−xˉi)xm−∑(xi−xˉi)xˉm)]=∑(y−yˉ)xm−∑(y−yˉ)xˉm即∑i=1n[wi∑(xi−xˉi)(xm−xˉm)]=∑(y−yˉ)(xm−xˉm)\color{#FF8080} \qquad\qquad \begin{aligned} 可知:& \\ & \sum\sum\limits_{i = 1}^{n}{w_i (x_i - \bar{x}_i) x_m} = \sum{(y - \bar{y}) x_m} \\ 即 & \sum\limits_{i = 1}^{n}{\left( w_i \sum{(x_i - \bar{x}_i)} x_m \right)} = \sum{(y - \bar{y}) x_m} \\ 即 & \sum\limits_{i = 1}^{n}{\left[ w_i \left( \sum{(x_i - \bar{x}_i) x_m} - N \bar{x}_i \bar{x}_m + N \bar{x}_i \bar{x}_m \right) \right]} = \sum{(y - \bar{y}) x_m} - N \bar{x}_m y + N \bar{x}_m y \\ 即 & \sum\limits_{i = 1}^{n}{\left[ w_i \left( \sum{(x_i - \bar{x}_i) x_m} - \sum{(x_i - \bar{x}_i) \bar{x}_m} \right) \right]} = \sum{(y - \bar{y}) x_m} - \sum{(y - \bar{y}) \bar{x}_m} \\ 即 & \sum\limits_{i = 1}^{n}{\left[ w_i \sum{(x_i - \bar{x}_i) (x_m - \bar{x}_m) } \right]} = \sum{(y - \bar{y}) (x_m - \bar{x}_m)} \\ \end{aligned}可知:即即即即​∑i=1∑n​wi​(xi​−xˉi​)xm​=∑(y−yˉ​)xm​i=1∑n​(wi​∑(xi​−xˉi​)xm​)=∑(y−yˉ​)xm​i=1∑n​[wi​(∑(xi​−xˉi​)xm​−Nxˉi​xˉm​+Nxˉi​xˉm​)]=∑(y−yˉ​)xm​−Nxˉm​y+Nxˉm​yi=1∑n​[wi​(∑(xi​−xˉi​)xm​−∑(xi​−xˉi​)xˉm​)]=∑(y−yˉ​)xm​−∑(y−yˉ​)xˉm​i=1∑n​[wi​∑(xi​−xˉi​)(xm​−xˉm​)]=∑(y−yˉ​)(xm​−xˉm​)​

由此我们得到n个关于wi的线性方程组:\color{#FF8080} \qquad\qquad 由此我们得到 n 个关于w_i的线性方程组:由此我们得到n个关于wi​的线性方程组:

{a11w1+a12w2+⋯+a1nwn=b1a21w1+a22w2+⋯+a2nwn=b2⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯an1w1+an2w2+⋯+annwn=bn其中,{amn=∑(xm−xˉm)(xn−xˉn)bi=∑(xi−xˉi)(y−yˉ)\color{#FF8080} \begin{aligned} & \begin{cases} a_{11} w_1 + a_{12} w_2 + \cdots + a_{1n} w_n = b_1 \\ a_{21} w_1 + a_{22} w_2 + \cdots + a_{2n} w_n = b_2 \\ \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \\ a_{n1} w_1 + a_{n2} w_2 + \cdots + a_{nn} w_n = b_n \\ \end{cases} \\ \\ & 其中, \begin{cases} a_{mn} & = \sum(x_m - \bar{x}_m)(x_n - \bar{x}_n) \\ b_i & = \sum(x_i - \bar{x}_i)(y - \bar{y}) \end{cases} \end{aligned} ​⎩⎪⎪⎪⎨⎪⎪⎪⎧​a11​w1​+a12​w2​+⋯+a1n​wn​=b1​a21​w1​+a22​w2​+⋯+a2n​wn​=b2​⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯an1​w1​+an2​w2​+⋯+ann​wn​=bn​​其中,{amn​bi​​=∑(xm​−xˉm​)(xn​−xˉn​)=∑(xi​−xˉi​)(y−yˉ​)​​

显然,根据线性代数的\color{#FF8080} \qquad\qquad 显然,根据线性代数的显然,根据线性代数的 克莱姆法则‾\underline{\textbf{克莱姆法则}}克莱姆法则​ ,我们很容易可以求出方程的解\color{#FF8080} ,我们很容易可以求出方程的解,我们很容易可以求出方程的解

令D=∣a11a12⋯a1na21a22⋯a2n⋮⋮⋱⋮an1an2⋯ann∣Di=∣a11a12⋯a1(i−1)b1a1(i+1)⋯a1na21a22⋯a2(i−1)b2a1(i+1)⋯a1n⋮⋮⋱⋮⋮⋮⋱⋮an1an2⋯an(i−1)bna1(i+1)⋯a1n∣\color{#FF8080} \qquad\qquad \begin{aligned} 令 \ & D = \begin{vmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nn} \\ \end{vmatrix} \\ \\ & D_i = \begin{vmatrix} a_{11} & a_{12} & \cdots & a_{1(i-1)} & b_1 & a_{1(i+1)} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2(i-1)} & b_2 & a_{1(i+1)} & \cdots & a_{1n} \\ \vdots & \vdots & \ddots & \vdots & \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{n(i-1)} & b_n & a_{1(i+1)} & \cdots & a_{1n} \\ \end{vmatrix} \\ \\ \end{aligned}令 ​D=∣∣∣∣∣∣∣∣∣​a11​a21​⋮an1​​a12​a22​⋮an2​​⋯⋯⋱⋯​a1n​a2n​⋮ann​​∣∣∣∣∣∣∣∣∣​Di​=∣∣∣∣∣∣∣∣∣​a11​a21​⋮an1​​a12​a22​⋮an2​​⋯⋯⋱⋯​a1(i−1)​a2(i−1)​⋮an(i−1)​​b1​b2​⋮bn​​a1(i+1)​a1(i+1)​⋮a1(i+1)​​⋯⋯⋱⋯​a1n​a1n​⋮a1n​​∣∣∣∣∣∣∣∣∣​​
其中,D为系数行列式,Di为将D中的第i列换成常数项后的行列式\color{#FF8080} \qquad\qquad 其中,D为系数行列式,D_i为将D中的第i列换成常数项后的行列式其中,D为系数行列式,Di​为将D中的第i列换成常数项后的行列式

可求得:wi=DiD\color{#FF8080} \qquad\qquad \begin{aligned} 可求得:w_i = \frac{D_i}{D} \end{aligned}可求得:wi​=DDi​​​

综上,{w0=yˉ−∑i=1nwixˉiwi=DiD,其中{D=∣a11a12⋯a1na21a22⋯a2n⋮⋮⋱⋮an1an2⋯ann∣Di=∣a11a12⋯a1(i−1)b1a1(i+1)⋯a1na21a22⋯a2(i−1)b2a1(i+1)⋯a1n⋮⋮⋱⋮⋮⋮⋱⋮an1an2⋯an(i−1)bna1(i+1)⋯a1n∣amn=∑(xm−xˉm)(xn−xˉn)bi=∑(xi−xˉi)(y−yˉ)\color{#FF8080} \qquad\qquad 综上, \color{#AA66FF} \begin{cases} \begin{aligned} w_0 = \bar{y} -\sum\limits_{i = 1}^{n}{w_i \bar{x}_i} \end{aligned} \\ \\ \begin{aligned} w_i = \frac{D_i}{D} \end{aligned} \\ \end{cases} ,其中 \begin{cases} \begin{aligned} D = \begin{vmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nn} \\ \end{vmatrix} \end{aligned} \\ \\ \begin{aligned} D_i = \begin{vmatrix} a_{11} & a_{12} & \cdots & a_{1(i-1)} & b_1 & a_{1(i+1)} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2(i-1)} & b_2 & a_{1(i+1)} & \cdots & a_{1n} \\ \vdots & \vdots & \ddots & \vdots & \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{n(i-1)} & b_n & a_{1(i+1)} & \cdots & a_{1n} \\ \end{vmatrix} \\ \end{aligned} \\ \\ \begin{aligned} a_{mn} = \sum(x_m - \bar{x}_m)(x_n - \bar{x}_n) \\ \end{aligned} \\ \\ \begin{aligned} b_i = \sum(x_i - \bar{x}_i)(y - \bar{y}) \\ \end{aligned} \\ \end{cases}综上,⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧​w0​=yˉ​−i=1∑n​wi​xˉi​​wi​=DDi​​​​,其中⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​D=∣∣∣∣∣∣∣∣∣​a11​a21​⋮an1​​a12​a22​⋮an2​​⋯⋯⋱⋯​a1n​a2n​⋮ann​​∣∣∣∣∣∣∣∣∣​​Di​=∣∣∣∣∣∣∣∣∣​a11​a21​⋮an1​​a12​a22​⋮an2​​⋯⋯⋱⋯​a1(i−1)​a2(i−1)​⋮an(i−1)​​b1​b2​⋮bn​​a1(i+1)​a1(i+1)​⋮a1(i+1)​​⋯⋯⋱⋯​a1n​a1n​⋮a1n​​∣∣∣∣∣∣∣∣∣​​amn​=∑(xm​−xˉm​)(xn​−xˉn​)​bi​=∑(xi​−xˉi​)(y−yˉ​)​​

就这样的结果来看,我们很明显地可以感觉到,手动计算的计算量非常之大\color{#00A000} \qquad\qquad 就这样的结果来看,我们很明显地可以感觉到,手动计算的计算量非常之大就这样的结果来看,我们很明显地可以感觉到,手动计算的计算量非常之大

n2个amn和n个bi,每个都需要N次相乘累加计算\color{#00A000} \qquad\qquad n^2个a_{mn}和n个b_i,每个都需要N次相乘累加计算n2个amn​和n个bi​,每个都需要N次相乘累加计算

计算完后构成(n+1)个行列式D、Di,共需要(n+1)次n阶行列式计算\color{#00A000} \qquad\qquad 计算完后构成(n + 1)个行列式D、D_i,共需要(n + 1)次n阶行列式计算计算完后构成(n+1)个行列式D、Di​,共需要(n+1)次n阶行列式计算

而行列式计算的复杂度是比较高的(\color{#00A000} \qquad\qquad 而行列式计算的复杂度是比较高的(而行列式计算的复杂度是比较高的( 高斯消元法‾\underline{\textbf{高斯消元法}}高斯消元法​ 的复杂度O(n3)),因此手动计算的计算量非常之大\color{#00A000} 的复杂度O(n^3)),因此\textbf{手动计算的计算量非常之大}的复杂度O(n3)),因此手动计算的计算量非常之大

下面我们从矩阵形式来考虑\color{#00A000} \qquad\qquad 下面我们从矩阵形式来考虑下面我们从矩阵形式来考虑


矩阵形式:\color{#FF8080} \qquad 矩阵形式:矩阵形式:
\qquad\qquad 参考链接1:多元线性回归最小二乘法及其应用‾\underline{\textbf{参考链接1:多元线性回归最小二乘法及其应用}}参考链接1:多元线性回归最小二乘法及其应用​
\qquad\qquad 参考链接2:计量经济学:多元线性回归的最小二乘估计‾\underline{\textbf{参考链接2:计量经济学:多元线性回归的最小二乘估计}}参考链接2:计量经济学:多元线性回归的最小二乘估计​
\qquad\qquad 参考链接3:线性回归与最小二乘法‾\underline{\textbf{参考链接3:线性回归与最小二乘法}}参考链接3:线性回归与最小二乘法​

共n个自变量,N个数据样例\color{#FF8080} \qquad\qquad 共n个自变量,N个数据样例共n个自变量,N个数据样例

y^i=w0+w1x1i+w2x2i+⋯+wnxni(i=1,2,⋯,N)\color{#FF8080} \qquad\qquad \hat{y}_i = w_0 + w_1 x_{1i} + w_2 x_{2i} + \cdots + w_n x_{ni} \; (i = 1, 2, \cdots, N)y^​i​=w0​+w1​x1i​+w2​x2i​+⋯+wn​xni​(i=1,2,⋯,N)

则损失Q=∑i=1Nei2=∑i=1N(yi−y^i)2=∑i=1N[yi−(w0+w1x1i+w2x2i+⋯+wnxni)]2\color{#FF8080} \qquad\qquad 则损失Q = \sum\limits_{i=1}^{N}{{e_i}^2} = \sum\limits_{i=1}^{N}{(y_i - \hat{y}_i)^2} = \sum\limits_{i=1}^{N}{[y_i - (w_0 + w_1 x_{1i} + w_2 x_{2i} + \cdots + w_n x_{ni})]^2}则损失Q=i=1∑N​ei​2=i=1∑N​(yi​−y^​i​)2=i=1∑N​[yi​−(w0​+w1​x1i​+w2​x2i​+⋯+wn​xni​)]2

根据最小二乘原理,有\color{#FF8080} \qquad\qquad 根据最小二乘原理,有根据最小二乘原理,有

{∂Q∂w0=0∂Q∂w1=0∂Q∂w2=0⋮∂Q∂wn=0\color{#FF8080} \qquad\qquad\qquad \begin{cases} \begin{aligned} \frac {\partial Q} {\partial w_0} = 0 \end{aligned} \\ \\ \begin{aligned} \frac {\partial Q} {\partial w_1} = 0 \end{aligned} \\ \\ \begin{aligned} \frac {\partial Q} {\partial w_2} = 0 \end{aligned} \\ \\ \qquad \vdots \\ \\ \begin{aligned} \frac {\partial Q} {\partial w_n} = 0 \end{aligned} \\ \end{cases}⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​∂w0​∂Q​=0​∂w1​∂Q​=0​∂w2​∂Q​=0​⋮∂wn​∂Q​=0​​

即\color{#FF8080} \qquad\qquad 即即

{∑(w0+w1x1i+w2x2i+⋯+wnxni)=∑yi∑(w0+w1x1i+w2x2i+⋯+wnxni)x1i=∑yix1i∑(w0+w1x1i+w2x2i+⋯+wnxni)x2i=∑yix2i⋮∑(w0+w1x1i+w2x2i+⋯+wnxni)xni=∑yixni\color{#FF8080} \qquad\qquad\qquad \begin{cases} \begin{aligned} \sum{(w_0 + w_1 x_{1i} + w_2 x_{2i} + \cdots + w_nx_{ni})} = \sum{y_i} \end{aligned} \\ \\ \begin{aligned} \sum{(w_0 + w_1 x_{1i} + w_2 x_{2i} + \cdots + w_nx_{ni}) x_{1i}} = \sum{y_i x_{1i}} \end{aligned} \\ \\ \begin{aligned} \sum{(w_0 + w_1 x_{1i} + w_2 x_{2i} + \cdots + w_nx_{ni}) x_{2i}} = \sum{y_i x_{2i}} \end{aligned} \\ \\ \qquad \qquad \qquad \qquad \qquad \qquad \vdots \\ \\ \begin{aligned} \sum{(w_0 + w_1 x_{1i} + w_2 x_{2i} + \cdots + w_nx_{ni}) x_{ni}} = \sum{y_i x_{ni}} \end{aligned} \\ \end{cases}⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​∑(w0​+w1​x1i​+w2​x2i​+⋯+wn​xni​)=∑yi​​∑(w0​+w1​x1i​+w2​x2i​+⋯+wn​xni​)x1i​=∑yi​x1i​​∑(w0​+w1​x1i​+w2​x2i​+⋯+wn​xni​)x2i​=∑yi​x2i​​⋮∑(w0​+w1​x1i​+w2​x2i​+⋯+wn​xni​)xni​=∑yi​xni​​​

解这n+1个方程组成的线性方程组,可以得到n+1个待估参数β=(w0w1w2⋮wn)\color{#FF8080} \qquad\qquad 解这 n + 1 个方程组成的线性方程组,可以得到 n + 1 个待估参数\beta = \begin{pmatrix} w_0 \\ w_1 \\ w_2 \\ \vdots \\ w_n \\ \end{pmatrix}解这n+1个方程组成的线性方程组,可以得到n+1个待估参数β=⎝⎜⎜⎜⎜⎜⎛​w0​w1​w2​⋮wn​​⎠⎟⎟⎟⎟⎟⎞​

即\color{#FF8080} \qquad\qquad 即即

(N∑x1i∑x2i⋯∑xni∑x1i∑x1i2∑x1ix2i⋯∑x1ixni∑x2i∑x2ix1i∑x2i2⋯∑x2ixni⋮⋮⋮⋱⋮∑xni∑xnix1i∑xnix2i⋯∑xni2)(w0w1w2⋮wn)=(11⋯1x11x12⋯x1Nx21x22⋯x2N⋮⋮⋱⋮xn1xn2⋯xnN)(y1y2y3⋮yN)(n+1)×(n+1)(n+1)×1(n+1)×NN×1\color{#FF8080} \qquad\qquad\qquad \begin{matrix} \begin{pmatrix} N & \sum{x_{1i}} & \sum{x_{2i}} & \cdots & \sum{x_{ni}} \\ \sum{x_{1i}} & \sum{{x_{1i}}^2} & \sum{x_{1i} x_{2i}} & \cdots & \sum{x_{1i}x_{n_i}} \\ \sum{x_{2i}} & \sum{x_{2i} x_{1i}} & \sum{{x_{2i}}^2} & \cdots & \sum{x_{2i}x_{n_i}} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ \sum{x_{ni}} & \sum{x_{ni} x_{1i}} & \sum{x_{ni} x_{2i}} & \cdots & \sum{{x_{n_i}}^2} \\ \end{pmatrix} & \begin{pmatrix} w_0 \\ w_1 \\ w_2 \\ \vdots \\ w_n \\ \end{pmatrix} \; = \; & \begin{pmatrix} 1 & 1 & \cdots & 1 \\ x_{11} & x_{12} & \cdots & x_{1N} \\ x_{21} & x_{22} & \cdots & x_{2N} \\ \vdots & \vdots & \ddots & \vdots \\ x_{n1} & x_{n2} & \cdots & x_{nN} \end{pmatrix} & \begin{pmatrix} y_1 \\ y_2 \\ y_3 \\ \vdots \\ y_N \\ \end{pmatrix} \\ \\ \small{(n + 1) \times (n + 1)} & \small{(n+1) \times 1} & \small{(n + 1) \times N} & \small{N \times 1} \end{matrix}⎝⎜⎜⎜⎜⎜⎛​N∑x1i​∑x2i​⋮∑xni​​∑x1i​∑x1i​2∑x2i​x1i​⋮∑xni​x1i​​∑x2i​∑x1i​x2i​∑x2i​2⋮∑xni​x2i​​⋯⋯⋯⋱⋯​∑xni​∑x1i​xni​​∑x2i​xni​​⋮∑xni​​2​⎠⎟⎟⎟⎟⎟⎞​(n+1)×(n+1)​⎝⎜⎜⎜⎜⎜⎛​w0​w1​w2​⋮wn​​⎠⎟⎟⎟⎟⎟⎞​=(n+1)×1​⎝⎜⎜⎜⎜⎜⎛​1x11​x21​⋮xn1​​1x12​x22​⋮xn2​​⋯⋯⋯⋱⋯​1x1N​x2N​⋮xnN​​⎠⎟⎟⎟⎟⎟⎞​(n+1)×N​⎝⎜⎜⎜⎜⎜⎛​y1​y2​y3​⋮yN​​⎠⎟⎟⎟⎟⎟⎞​N×1​

即\color{#FF8080} \qquad\qquad 即即

(XTX)β=XTY\color{#FF8080} \qquad\qquad\qquad (X^T X) \beta = X^T Y(XTX)β=XTY

其中\color{#FF8080} \qquad\qquad 其中其中

β=(w0w1w2⋮wn)每行表示线性回归的评估参数(系数)X=(1x11⋯xn11x12⋯xn21x13⋯xn3⋮⋮⋱⋮1x1N⋯xnN)每行表示一个样本的各个输入参数Y=(y1y2y3⋮yN)每行表示一个样本的输出结果\color{#FF8080} \qquad\qquad\qquad \begin{array}{ll} \beta = \begin{pmatrix} w_0 \\ w_1 \\ w_2 \\ \vdots \\ w_n \\ \end{pmatrix} & 每行表示线性回归的评估参数(系数) \\ \\ X = \begin{pmatrix} 1 & x_{11} & \cdots & x_{n1} \\ 1 & x_{12} & \cdots & x_{n2} \\ 1 & x_{13} & \cdots & x_{n3} \\ \vdots & \vdots & \ddots & \vdots \\ 1 & x_{1N} & \cdots & x_{nN} \end{pmatrix} & 每行表示一个样本的各个输入参数 \\ \\ Y = \begin{pmatrix} y_1 \\ y_2 \\ y_3 \\ \vdots \\ y_N \\ \end{pmatrix} & 每行表示一个样本的输出结果 \end{array}β=⎝⎜⎜⎜⎜⎜⎛​w0​w1​w2​⋮wn​​⎠⎟⎟⎟⎟⎟⎞​X=⎝⎜⎜⎜⎜⎜⎛​111⋮1​x11​x12​x13​⋮x1N​​⋯⋯⋯⋱⋯​xn1​xn2​xn3​⋮xnN​​⎠⎟⎟⎟⎟⎟⎞​Y=⎝⎜⎜⎜⎜⎜⎛​y1​y2​y3​⋮yN​​⎠⎟⎟⎟⎟⎟⎞​​每行表示线性回归的评估参数(系数)每行表示一个样本的各个输入参数每行表示一个样本的输出结果​

由于XTX满秩(或者即便极少的情况不满秩,亦可对原始数据进行特征筛选或正则化处理)\color{#FF8080} \qquad\qquad 由于X^TX满秩(或者即便极少的情况不满秩,亦可对原始数据进行特征筛选或正则化处理)由于XTX满秩(或者即便极少的情况不满秩,亦可对原始数据进行特征筛选或正则化处理)

可得:\color{#FF8080} \qquad\qquad 可得:可得:

β=(XTX)−1XTY\color{#FF8080} \qquad\qquad\qquad \beta =(X^T X)^{-1} X^T Yβ=(XTX)−1XTY


上述过程也可直接用矩阵表示:\color{#FF8080} \qquad\qquad 上述过程也可直接用矩阵表示:上述过程也可直接用矩阵表示:

Q=∑i=1Nei2=eTe=(Y−Xβ)T(Y−Xβ)\color{#FF8080} \qquad\qquad Q = \sum\limits_{i=1}^{N}{{e_i}^2} = e^T e = (Y - X \beta)^T (Y - X \beta)Q=i=1∑N​ei​2=eTe=(Y−Xβ)T(Y−Xβ)

令∂∂β(YT−βTXT)(Y−Xβ)=0\color{#FF8080} \qquad\qquad 令 \begin{aligned} \frac {\partial} {\partial \beta} (Y^T - \beta ^ T X^T)(Y - X \beta) = 0 \end{aligned}令∂β∂​(YT−βTXT)(Y−Xβ)=0​

即∂∂β(YTY−YTXβ−βTXTY+βTXTXβ)=0\color{#FF8080} \qquad\qquad 即 \begin{aligned} \frac {\partial} {\partial \beta} (Y^T Y - Y^T X \beta - \beta ^ T X^T Y + \beta^T X^T X \beta) = 0 \end{aligned}即∂β∂​(YTY−YTXβ−βTXTY+βTXTXβ)=0​

即∂∂β(YTY−2YTXβ+βTXTXβ)=0\color{#FF8080} \qquad\qquad 即 \begin{aligned} \frac {\partial} {\partial \beta} (Y^T Y - 2 Y^T X \beta + \beta^T X^T X \beta) = 0 \end{aligned}即∂β∂​(YTY−2YTXβ+βTXTXβ)=0​

矩阵、向量 求导的性质:




根据矩阵向量求导的性质,可知:\color{#FF8080} \qquad\qquad 根据矩阵向量求导的性质,可知:根据矩阵向量求导的性质,可知:

∂YTYβ=0,∂YTXββ=XTY,∂βTXTXββ=2XTXβ\color{#FF8080} \qquad\qquad\qquad \begin{aligned} \frac {\partial Y^T Y} {\beta} = 0, \frac {\partial Y^T X \beta} {\beta} = X^T Y, \frac {\partial \beta^T X^T X \beta} {\beta} = 2X^T X \beta \end{aligned}β∂YTY​=0,β∂YTXβ​=XTY,β∂βTXTXβ​=2XTXβ​

于是有−2XTY+2XTXβ=0\color{#FF8080} \qquad\qquad 于是有-2 X^T Y + 2 X^T X \beta = 0于是有−2XTY+2XTXβ=0

即XTXβ=XTY\color{#FF8080} \qquad\qquad\qquad 即 X^T X \beta = X^T Y即XTXβ=XTY

即β=(XTX)−1XTY\color{#FF8080} \qquad\qquad\qquad 即 \beta = (X^T X)^{-1} X^T Y即β=(XTX)−1XTY

综上,β=(XTX)−1XTY\color{#FF8080} \qquad\qquad 综上, \color{#AA66FF} \beta = (X^T X)^{-1} X^T Y综上,β=(XTX)−1XTY

其中{β=(w0w1w2⋮wn)每行表示线性回归的评估参数(系数)X=(1x11⋯xn11x12⋯xn21x13⋯xn3⋮⋮⋱⋮1x1N⋯xnN)每行表示一个样本的各个输入参数Y=(y1y2y3⋮yN)每行表示一个样本的输出结果\color{#AA66FF} \qquad\qquad\qquad\qquad 其中 \begin{cases} \beta = \begin{pmatrix} w_0 \\ w_1 \\ w_2 \\ \vdots \\ w_n \\ \end{pmatrix} & 每行表示线性回归的评估参数(系数) \\ \\ X = \begin{pmatrix} 1 & x_{11} & \cdots & x_{n1} \\ 1 & x_{12} & \cdots & x_{n2} \\ 1 & x_{13} & \cdots & x_{n3} \\ \vdots & \vdots & \ddots & \vdots \\ 1 & x_{1N} & \cdots & x_{nN} \end{pmatrix} & 每行表示一个样本的各个输入参数 \\ \\ Y = \begin{pmatrix} y_1 \\ y_2 \\ y_3 \\ \vdots \\ y_N \\ \end{pmatrix} & 每行表示一个样本的输出结果 \end{cases}其中⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​β=⎝⎜⎜⎜⎜⎜⎛​w0​w1​w2​⋮wn​​⎠⎟⎟⎟⎟⎟⎞​X=⎝⎜⎜⎜⎜⎜⎛​111⋮1​x11​x12​x13​⋮x1N​​⋯⋯⋯⋱⋯​xn1​xn2​xn3​⋮xnN​​⎠⎟⎟⎟⎟⎟⎞​Y=⎝⎜⎜⎜⎜⎜⎛​y1​y2​y3​⋮yN​​⎠⎟⎟⎟⎟⎟⎞​​每行表示线性回归的评估参数(系数)每行表示一个样本的各个输入参数每行表示一个样本的输出结果​

注:\color{#80E0FF} \qquad\qquad 注:注:
β=(XTX)−1XTY=X−1(XT)−1XTY=X−1Y的化简方法是错误的\color{#80E0FF} \qquad\qquad\qquad \beta = (X^T X)^{-1} X^T Y = X^{-1} (X^T)^{-1} X^T Y = X^{-1}Y的化简方法是错误的β=(XTX)−1XTY=X−1(XT)−1XTY=X−1Y的化简方法是错误的
因为X不一定是方阵,即便是方阵也未必可逆\color{#80E0FF} \qquad\qquad\qquad 因为X不一定是方阵,即便是方阵也未必可逆因为X不一定是方阵,即便是方阵也未必可逆
β=(XTX)−1XTY的记法已是最简\color{#80E0FF} \qquad\qquad\qquad \beta = (X^T X)^{-1} X^T Y的记法已是最简β=(XTX)−1XTY的记法已是最简


根据上述推广我们看到最小二乘法的解析解为β=(XTX)−1XTY\color{#6666FF} 根据上述推广我们看到最小二乘法的解析解为 \beta = (X^T X)^{-1} X^T Y根据上述推广我们看到最小二乘法的解析解为β=(XTX)−1XTY
最小二乘法仍存在着一些缺点:\color{#6666FF} 最小二乘法仍存在着一些缺点:最小二乘法仍存在着一些缺点:
①.XTX可能不可逆\color{#AA66FF} \qquad ①.X^T X 可能不可逆①.XTX可能不可逆
包括以下情形:\color{#6666FF} \qquad\qquad 包括以下情形:包括以下情形:
1。样本个数<参数个数\color{#6666FF} \qquad\qquad\qquad 1^。样本个数 < 参数个数1。样本个数<参数个数
2。一个样本的特征与其他样本线性相关\color{#6666FF} \qquad\qquad\qquad 2^。一个样本的特征与其他样本线性相关2。一个样本的特征与其他样本线性相关
解决方法:\color{#FFC000} \qquad\qquad 解决方法:解决方法:
1。增加样本量\color{#FFC000} \qquad\qquad\qquad 1^。增加样本量1。增加样本量
2。筛选出线性无关的特征,保证不存在线性相关的特征\color{#FFC000} \qquad\qquad\qquad 2^。筛选出线性无关的特征,保证不存在线性相关的特征2。筛选出线性无关的特征,保证不存在线性相关的特征
3。采用正则化的方法\color{#FFC000} \qquad\qquad\qquad 3^。采用正则化的方法3。采用正则化的方法
如,L2正则化,解析解为\color{#FFA5FF} \qquad\qquad\qquad\qquad 如,\text{L}2正则化,解析解为如,L2正则化,解析解为
β=(XTX+λE)−1XTY\color{#FFA5FF} \qquad\qquad\qquad\qquad\qquad\quad \beta = (X^T X + \lambda E)^{-1} X^T Yβ=(XTX+λE)−1XTY
或β=(XTX+NλE)−1XTY\color{#FFA5FF} \qquad\qquad\qquad\qquad\qquad 或 \beta = (X^T X + N\lambda E)^{-1} X^T Y或β=(XTX+NλE)−1XTY
(有没有N取决于损失函数中均方误差部分有没有取平均)\color{#FFA5FF} \qquad\qquad\qquad\qquad\qquad (有没有N取决于损失函数中均方误差部分有没有取平均)(有没有N取决于损失函数中均方误差部分有没有取平均)
②.最小二乘法直接求导,非线性回归中,不一定所有函数在有意义的空间内都有导数\color{#AA66FF} \qquad ②.最小二乘法直接求导,非线性回归中,不一定所有函数在有意义的空间内都有导数②.最小二乘法直接求导,非线性回归中,不一定所有函数在有意义的空间内都有导数
③.最小二乘法直接将极小值作为最小值,非线性回归中,这样做有失偏颇)\color{#AA66FF} \qquad ③.最小二乘法直接将极小值作为最小值,非线性回归中,这样做有失偏颇)③.最小二乘法直接将极小值作为最小值,非线性回归中,这样做有失偏颇)
(梯度下降则比较好的规避此项缺点)\color{#AA66FF} \qquad\quad\; (梯度下降则比较好的规避此项缺点)(梯度下降则比较好的规避此项缺点)

2、梯度下降法

预测函数y^=p(X)\color{#FFC000} 预测函数 \hat{y} = p(X)预测函数y^​=p(X)

需要最小化误差G(β)=∑(y^−y)2\color{#FFC000} 需要最小化误差G(\beta) = \sum(\hat{y} - y)^2需要最小化误差G(β)=∑(y^​−y)2

而最小化误差的过程,我们可以分多步迭代去搜索,如下图所示:\color{#FFC000} 而最小化误差的过程,我们可以分多步迭代去搜索,如下图所示:而最小化误差的过程,我们可以分多步迭代去搜索,如下图所示:

这个迭代的搜索过程,我们可以用公式表示为:\color{#FFC000} 这个迭代的搜索过程,我们可以用公式表示为:这个迭代的搜索过程,我们可以用公式表示为:

βinew=βiold−α∂G(β)∂βi∣β=βold其中,α代表学习率,即每步搜索下降的步伐大小,一般设置比较小(0.001∼0.1即可)\color{#FFC000} \begin{aligned} & {\beta_i}_{\text{new}} = {\beta_i}_{\text{old}} - \alpha \frac {\partial G(\beta)} {\partial \beta_i} \bigg|_{\beta = \beta_{\text{old}}} \\ \\ & 其中,\alpha 代表学习率,即每步搜索下降的步伐大小,一般设置比较小(0.001 \sim 0.1即可) \end{aligned} ​βi​new​=βi​old​−α∂βi​∂G(β)​∣∣∣∣​β=βold​​其中,α代表学习率,即每步搜索下降的步伐大小,一般设置比较小(0.001∼0.1即可)​

当梯度下降的高度∣βnew−βold∣小于某个阈值θ时,停止更新\color{#FFC000} 当梯度下降的高度 \; \mid \beta_{\text{new}} - \beta_{\text{old}} \mid \; 小于某个阈值 \; \theta \; 时,停止更新当梯度下降的高度∣βnew​−βold​∣小于某个阈值θ时,停止更新


总结一下,梯度下降法的上述步骤:\color{#FFC000} 总结一下,梯度下降法的上述步骤:总结一下,梯度下降法的上述步骤:

①.确定梯度下降的步伐大小α,即学习率\color{#FFC000} \qquad ①. 确定梯度下降的步伐大小\alpha,即学习率①.确定梯度下降的步伐大小α,即学习率

②.给定一个任意的初始参数值β初\color{#FFC000} \qquad ②. 给定一个任意的初始参数值\beta_初②.给定一个任意的初始参数值β初​

③.根据梯度∂G(β)∂β,确定梯度下降的方向根据βinew=βiold−α∂G(β)∂βi∣β=βold更新β\color{#FFC000} \qquad \begin{aligned} ③. & 根据梯度 \frac {\partial G(\beta)} {\partial \beta} ,确定梯度下降的方向 \\ & 根据 {\beta_i}_{\text{new}} = {\beta_i}_{\text{old}} - \alpha \frac {\partial G(\beta)} {\partial \beta_i} \bigg|_{\beta = \beta_{\text{old}}} 更新\beta \end{aligned}③.​根据梯度∂β∂G(β)​,确定梯度下降的方向根据βi​new​=βi​old​−α∂βi​∂G(β)​∣∣∣∣​β=βold​​更新β​

④.设置梯度下降高度的阈值θ当∣βnew−βold∣<θ时,停止梯度下降\color{#FFC000} \qquad \begin{aligned} ④. & 设置梯度下降高度的阈值 \; \theta \; \\ & 当 \mid \beta_{\text{new}} - \beta_{\text{old}} \mid < \theta \; 时,停止梯度下降 \end{aligned}④.​设置梯度下降高度的阈值θ当∣βnew​−βold​∣<θ时,停止梯度下降​

四、代码案例(Python)

案例1:\color{#FFA5FF} 案例1:案例1:

根据y=5x+10生成100个带噪声的数据,为其进行线性回归\color{#FFA5FF} \qquad 根据 y = 5x + 10 生成100个带噪声的数据,为其进行线性回归根据y=5x+10生成100个带噪声的数据,为其进行线性回归

代码示例:\color{#FF8080} 代码示例:代码示例:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression# 生成 100份 x 和对应的带噪声的 y,绘制散点图
x = np.linspace(1, 100, 100)
y = 5 * x + 10 + 10 * np.random.randn(100)
plt.plot(x, y, ".k")"""
注意点:sklearn的线性回归模型,在拟合和预测时,输入和输出都是二维的
"""
# 加载sklearn的线性回归模型,根据二维的x、y进行拟合
model = LinearRegression()
model.fit(x.reshape(100, 1), y.reshape(100, 1))# 根据拟合的模型预测结果,在散点图上绘制拟合的直线
y_p = model.predict(x.reshape(100, 1))
plt.plot(x, y, ".k")
plt.plot(x, y_p, "b")# 单个案例的预测
print(model.predict(np.array(10).reshape(1, 1)))

输出示例:\color{#FF8080} 输出示例:输出示例:
\qquad
\qquad
[[60.52575285]]\color{#FF8080} \qquad [[60.52575285]][[60.52575285]]

案例2:\color{#FFA5FF} 案例2:案例2:

读取data.csv文件,做出【食品消费】关于【家庭收入】和【人数】的线性回归模型\color{#FFA5FF} \qquad 读取\text{data.csv}文件,做出【食品消费】关于【家庭收入】和【人数】的线性回归模型读取data.csv文件,做出【食品消费】关于【家庭收入】和【人数】的线性回归模型
data.csv文件内容如下:\color{#FFA5FF} \qquad \text{data.csv}文件内容如下:data.csv文件内容如下:
\qquad\qquad

代码示例:\color{#FF8080} 代码示例:代码示例:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression# 读取csv文件数据
data = pd.read_csv("data.csv")# 将数据类型转换为numpy
data = data.values# 分离出输入x和输出y
x=data[:, 1:3]
y=data[:, 3]# 加载sklearn的线性回归模型,根据二维的x、y进行拟合
model = LinearRegression()
model.fit(x, y)# 根据模型加载预测结果
y_predict=model.predict(x)# 绘图(横轴y,纵轴y_predict)
plt.plot(y, y_predict, ".b")

输出示例:\color{#FF8080} 输出示例:输出示例:
\qquad

人工智能必备数学知识· 学习笔记 ·001【线性回归,最小二乘法梯度下降法】相关推荐

  1. 人工智能必备数学知识· 学习笔记 ·002【马尓可夫链,马尓可夫链奖励过程,马尔可夫决策过程】

    注:笔记 来自课程 人工智能必备数学知识 Tips①:只是记录从这个课程学到的东西,不是推广.没有安利 Tips②:本笔记主要目的是为了方便自己遗忘查阅,或过于冗长.或有所缺省.或杂乱无章,见谅 Ti ...

  2. Acwing数学知识——学习笔记

    ACwing数学知识听课笔记 文章目录 质数 试除法求素数 分解质因数 板子 质数筛 朴素筛法--每一个数都把自己的倍数全部筛除 埃氏筛法-把所有质数的倍数全部删除(用这个就行了) 约数 试除法求约数 ...

  3. 最优化学习笔记(三)——梯度下降法

    本来这周计划写下逻辑回归的学习笔记,但是其中用到了最优化对数似然函数,因此决定先复习下梯度方法和拟牛顿法.本节先从纯数学的角度总结下梯度下降法. 一.柯西-施瓦茨不等式 对于 Rn\mathbb {R ...

  4. 数据挖掘学习笔记 5 线性回归知识及预测糖尿病实例

    #2018-03-21 16:45:01 March Wednesday the 12 week, the 080 day SZ SSMR http://blog.csdn.net/eastmount ...

  5. 数学表达式の学习笔记

    数学表达式の学习笔记 1 基础格式 2 二元关系 3 范数 3.1 R n \mathbb R^n Rn上的向量范数 3.2 连续函数空间 C [ a , b ] C[a,b] C[a,b]上的函数范 ...

  6. python基础知识学习笔记(1)

    python 基础知识学习笔记(1) 总结一下Python基础知识,以防忘记. 文章目录 python 基础知识学习笔记(1) 一.起步 1.python安装与编译环境 二.变量和简单数据类型 三.列 ...

  7. 虚幻引擎的数学知识学习教程 Math for Unreal Engine (Early Preview)

    通过做真实世界的 Unreal Engine项目来学习数学 你会学到什么 理解游戏开发对数学的基本需求 将数学直接应用到用例中,而不是钻研理论(用我们的示例项目进行实践) 正确编辑短视频,节省您的时间 ...

  8. 吴恩达《机器学习》学习笔记四——单变量线性回归(梯度下降法)代码

    吴恩达<机器学习>学习笔记四--单变量线性回归(梯度下降法)代码 一.问题介绍 二.解决过程及代码讲解 三.函数解释 1. pandas.read_csv()函数 2. DataFrame ...

  9. Python 基础知识学习笔记——NumPy

    Python基础知识学习笔记--NumPy 与 matlab 优秀的矩阵运算类似,python 提供了 numpy 库,这对熟悉 matlab 的用户来说非常友好.向量.矩阵和多维数组是数值计算中必不 ...

最新文章

  1. c语言退格的值是多少,在c语言里enter的键值是多少啊?
  2. 成为DBA的10条规则
  3. 【信号发生器】基于quartusii的信号发生器的设计
  4. javascript学习总结1
  5. datatables[columns] 中的详细参数
  6. apache ignite_Apache Ignite变得简单:第一个Java应用程序
  7. 前端学习(488):文本标签
  8. 神经网络中使用Batch Normalization 解决梯度问题
  9. 2015Cocos游戏开发大赛作品——人鱼塞壬
  10. 基于链路思想的SpringBoot单元测试快速写法
  11. 使用Mysql 5.5数据库Hibernate自动建表创建表出错table doesn't exist
  12. 强化学习的数学基础2---PPO算法
  13. 使用Tenorshare iCareFone for mac如何对iPhone进行系统修复?
  14. 性能测试--jmeter响应数据中文乱码【12】
  15. 英语 —— 辅音浊化
  16. ECshop 模板制作教程
  17. 丽江,清晨的小巷在哭泣
  18. HDU 4489 (DP递推计数)
  19. 抖音矩阵系统。抖音矩阵系统。抖音矩阵系统。抖音矩阵系统。抖音矩阵系统。
  20. 计算机键盘的tab键是哪个,电脑键盘中的Tab键都有哪些妙用

热门文章

  1. 产品经理这个梗是怎么来的?
  2. A-Night at the Museum 水题
  3. 人脸关键点: Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks
  4. 【文献阅读】Augmenting Supervised Neural Networks with Unsupervised Objectives-ICML-2016
  5. Python之 dict(字典)(回)
  6. ~~Bellman-Ford算法
  7. C 库函数 - abs()
  8. C 库函数 - atoi() 字符串中的数字转换为一个整型
  9. 《南溪的目标检测学习笔记》——数据集制作(legacy)
  10. 【干货】60 余家免费正版图片网站