1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 人工智能必备数学知识· 学习笔记 ·001【线性回归 最小二乘法梯度下降法】

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

时间:2021-01-14 11:37:35

相关推荐

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

注:笔记 来自课程 人工智能必备数学知识

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:用最小二乘法为以下数据做线性回归

解:\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 npimport matplotlib.pyplot as pltfrom 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 npimport pandas as pdimport matplotlib.pyplot as pltfrom sklearn.linear_model import LinearRegression# 读取csv文件数据data = pd.read_csv("data.csv")# 将数据类型转换为numpydata = data.values# 分离出输入x和输出yx=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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。