人工智能必备数学知识· 学习笔记 ·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=w1x1+w2x2+⋯+wnxneg: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.45b=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+w1x1+w2x2+⋯+wnxn∂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∑nwixi−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∑nwixi−y)=2[∑w0+i=1∑n(wi∑xi)−∑y]=2(Nw0+i=1∑n(wiNxˉi)−Nyˉ)=2N(w0+i=1∑nwixˉ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∑nwixˉ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∑nwixi−y)xm=2∑[i=1∑nwi(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∑nwi(xi−xˉi)xm=∑(y−yˉ)xmi=1∑n(wi∑(xi−xˉi)xm)=∑(y−yˉ)xmi=1∑n[wi(∑(xi−xˉi)xm−Nxˉixˉm+Nxˉixˉm)]=∑(y−yˉ)xm−Nxˉmy+Nxˉmyi=1∑n[wi(∑(xi−xˉi)xm−∑(xi−xˉi)xˉm)]=∑(y−yˉ)xm−∑(y−yˉ)xˉmi=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} ⎩⎪⎪⎪⎨⎪⎪⎪⎧a11w1+a12w2+⋯+a1nwn=b1a21w1+a22w2+⋯+a2nwn=b2⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯an1w1+an2w2+⋯+annwn=bn其中,{amnbi=∑(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=∣∣∣∣∣∣∣∣∣a11a21⋮an1a12a22⋮an2⋯⋯⋱⋯a1na2n⋮ann∣∣∣∣∣∣∣∣∣Di=∣∣∣∣∣∣∣∣∣a11a21⋮an1a12a22⋮an2⋯⋯⋱⋯a1(i−1)a2(i−1)⋮an(i−1)b1b2⋮bna1(i+1)a1(i+1)⋮a1(i+1)⋯⋯⋱⋯a1na1n⋮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∑nwixˉiwi=DDi,其中⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧D=∣∣∣∣∣∣∣∣∣a11a21⋮an1a12a22⋮an2⋯⋯⋱⋯a1na2n⋮ann∣∣∣∣∣∣∣∣∣Di=∣∣∣∣∣∣∣∣∣a11a21⋮an1a12a22⋮an2⋯⋯⋱⋯a1(i−1)a2(i−1)⋮an(i−1)b1b2⋮bna1(i+1)a1(i+1)⋮a1(i+1)⋯⋯⋱⋯a1na1n⋮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+w1x1i+w2x2i+⋯+wnxni(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∑Nei2=i=1∑N(yi−y^i)2=i=1∑N[yi−(w0+w1x1i+w2x2i+⋯+wnxni)]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+w1x1i+w2x2i+⋯+wnxni)=∑yi∑(w0+w1x1i+w2x2i+⋯+wnxni)x1i=∑yix1i∑(w0+w1x1i+w2x2i+⋯+wnxni)x2i=∑yix2i⋮∑(w0+w1x1i+w2x2i+⋯+wnxni)xni=∑yixni
解这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个待估参数β=⎝⎜⎜⎜⎜⎜⎛w0w1w2⋮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∑x1i2∑x2ix1i⋮∑xnix1i∑x2i∑x1ix2i∑x2i2⋮∑xnix2i⋯⋯⋯⋱⋯∑xni∑x1ixni∑x2ixni⋮∑xni2⎠⎟⎟⎟⎟⎟⎞(n+1)×(n+1)⎝⎜⎜⎜⎜⎜⎛w0w1w2⋮wn⎠⎟⎟⎟⎟⎟⎞=(n+1)×1⎝⎜⎜⎜⎜⎜⎛1x11x21⋮xn11x12x22⋮xn2⋯⋯⋯⋱⋯1x1Nx2N⋮xnN⎠⎟⎟⎟⎟⎟⎞(n+1)×N⎝⎜⎜⎜⎜⎜⎛y1y2y3⋮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}β=⎝⎜⎜⎜⎜⎜⎛w0w1w2⋮wn⎠⎟⎟⎟⎟⎟⎞X=⎝⎜⎜⎜⎜⎜⎛111⋮1x11x12x13⋮x1N⋯⋯⋯⋱⋯xn1xn2xn3⋮xnN⎠⎟⎟⎟⎟⎟⎞Y=⎝⎜⎜⎜⎜⎜⎛y1y2y3⋮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∑Nei2=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}其中⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧β=⎝⎜⎜⎜⎜⎜⎛w0w1w2⋮wn⎠⎟⎟⎟⎟⎟⎞X=⎝⎜⎜⎜⎜⎜⎛111⋮1x11x12x13⋮x1N⋯⋯⋯⋱⋯xn1xn2xn3⋮xnN⎠⎟⎟⎟⎟⎟⎞Y=⎝⎜⎜⎜⎜⎜⎛y1y2y3⋮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} βinew=βiold−α∂β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(β),确定梯度下降的方向根据βinew=βiold−α∂β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【线性回归,最小二乘法梯度下降法】相关推荐
- 人工智能必备数学知识· 学习笔记 ·002【马尓可夫链,马尓可夫链奖励过程,马尔可夫决策过程】
注:笔记 来自课程 人工智能必备数学知识 Tips①:只是记录从这个课程学到的东西,不是推广.没有安利 Tips②:本笔记主要目的是为了方便自己遗忘查阅,或过于冗长.或有所缺省.或杂乱无章,见谅 Ti ...
- Acwing数学知识——学习笔记
ACwing数学知识听课笔记 文章目录 质数 试除法求素数 分解质因数 板子 质数筛 朴素筛法--每一个数都把自己的倍数全部筛除 埃氏筛法-把所有质数的倍数全部删除(用这个就行了) 约数 试除法求约数 ...
- 最优化学习笔记(三)——梯度下降法
本来这周计划写下逻辑回归的学习笔记,但是其中用到了最优化对数似然函数,因此决定先复习下梯度方法和拟牛顿法.本节先从纯数学的角度总结下梯度下降法. 一.柯西-施瓦茨不等式 对于 Rn\mathbb {R ...
- 数据挖掘学习笔记 5 线性回归知识及预测糖尿病实例
#2018-03-21 16:45:01 March Wednesday the 12 week, the 080 day SZ SSMR http://blog.csdn.net/eastmount ...
- 数学表达式の学习笔记
数学表达式の学习笔记 1 基础格式 2 二元关系 3 范数 3.1 R n \mathbb R^n Rn上的向量范数 3.2 连续函数空间 C [ a , b ] C[a,b] C[a,b]上的函数范 ...
- python基础知识学习笔记(1)
python 基础知识学习笔记(1) 总结一下Python基础知识,以防忘记. 文章目录 python 基础知识学习笔记(1) 一.起步 1.python安装与编译环境 二.变量和简单数据类型 三.列 ...
- 虚幻引擎的数学知识学习教程 Math for Unreal Engine (Early Preview)
通过做真实世界的 Unreal Engine项目来学习数学 你会学到什么 理解游戏开发对数学的基本需求 将数学直接应用到用例中,而不是钻研理论(用我们的示例项目进行实践) 正确编辑短视频,节省您的时间 ...
- 吴恩达《机器学习》学习笔记四——单变量线性回归(梯度下降法)代码
吴恩达<机器学习>学习笔记四--单变量线性回归(梯度下降法)代码 一.问题介绍 二.解决过程及代码讲解 三.函数解释 1. pandas.read_csv()函数 2. DataFrame ...
- Python 基础知识学习笔记——NumPy
Python基础知识学习笔记--NumPy 与 matlab 优秀的矩阵运算类似,python 提供了 numpy 库,这对熟悉 matlab 的用户来说非常友好.向量.矩阵和多维数组是数值计算中必不 ...
最新文章
- c语言退格的值是多少,在c语言里enter的键值是多少啊?
- 成为DBA的10条规则
- 【信号发生器】基于quartusii的信号发生器的设计
- javascript学习总结1
- datatables[columns] 中的详细参数
- apache ignite_Apache Ignite变得简单:第一个Java应用程序
- 前端学习(488):文本标签
- 神经网络中使用Batch Normalization 解决梯度问题
- 2015Cocos游戏开发大赛作品——人鱼塞壬
- 基于链路思想的SpringBoot单元测试快速写法
- 使用Mysql 5.5数据库Hibernate自动建表创建表出错table doesn't exist
- 强化学习的数学基础2---PPO算法
- 使用Tenorshare iCareFone for mac如何对iPhone进行系统修复?
- 性能测试--jmeter响应数据中文乱码【12】
- 英语 —— 辅音浊化
- ECshop 模板制作教程
- 丽江,清晨的小巷在哭泣
- HDU 4489 (DP递推计数)
- 抖音矩阵系统。抖音矩阵系统。抖音矩阵系统。抖音矩阵系统。抖音矩阵系统。
- 计算机键盘的tab键是哪个,电脑键盘中的Tab键都有哪些妙用
热门文章
- 产品经理这个梗是怎么来的?
- A-Night at the Museum 水题
- 人脸关键点: Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks
- 【文献阅读】Augmenting Supervised Neural Networks with Unsupervised Objectives-ICML-2016
- Python之 dict(字典)(回)
- ~~Bellman-Ford算法
- C 库函数 - abs()
- C 库函数 - atoi() 字符串中的数字转换为一个整型
- 《南溪的目标检测学习笔记》——数据集制作(legacy)
- 【干货】60 余家免费正版图片网站