知乎markdown展示有问题,不能正确显示数据公式,如果想看数学公式,请移步:用python实现一元线性回归的梯度下降_weixin_36198467的博客-CSDN博客
线性回归
线性回归公式:$h_θ$ = $θ_0$ + $θ_1x$
平方差代价函数:$J(θ)$ = $frac1{2m}sum_{i=1}^{m}{(h_θ(x^{(i)}) - y^{(i)})}^2$
梯度下降
$θ_j := θ_j - αfrac∂ {∂ θ_j}J(θ_0,θ_1)$
使用上面的公式不断的更新代价函数$J(θ)$,直到$J(θ)$收敛或者不再发散,其中:
$frac∂ {∂ θ_j}J(θ_0,θ_1)$ = $frac∂{∂θ_j}frac1{2m} sum_{i=1}^{m}(θ_0 +θ_1x^{(i)} - y^{(i)})^2$
$j = 0:frac∂ {∂ θ_0}J(θ_0,θ_1) = frac1msum_{i=1}^{m}(h_θ(x^{(i)}) - y^{(i)})$
$j = 1:frac∂ {∂ θ_1}J(θ_0,θ_1) = frac1msum_{i=1}^{m}(h_θ(x^{(i)}) - y^{(i)}) * x^{(i)}$
算出代价函数$j$的斜率后,将其代回梯度下降算法,代入之后的线性回归的梯度下降算法为: $θ_0 := θ_0 - αfrac1msum_{i=1}^{m}(h_θ(x^{(i)}) - y^{(i)})$
$θ_1 := θ_1 -αfrac1msum_{i=1}^{m}(h_θ(x^{(i)}) - y^{(i)}) * x^{(i)}$
不断重复该过程直到收敛或者不再发散。
python代码实现
import
复盘
平方差代价函数:$J(θ)$ = $frac1{2m}sum_{i=1}^{m}{((θ_0 + θ_1x) - y^{(i)})}^2$ 梯度下降法求解的过程就是通过不断的迭代,通过不同的$θ_0 和 θ_1$的组合,来求$J(θ)$的值,使得$J(θ)$最小的那个组合,就是线性回归模型中最优的$θ_0 和 θ_1$。 下面,我们使用python来求解:
from
通过观察可得,曲面大概在x = 0.5,y = 0.5点的点上取得最小值。