知乎不能正确显示markdown的数学公式,想看数学公式可移步:用梯度下降法处理多元线性回归_weixin_36198467的博客-CSDN博客
多元线性回归
公式:$h_θ$ = $θ_0$ + $θ_1x$ + $θ_2x_2$ +……+$θ_nx_n$
我们假设$x_0$ = 1,则我们的特征向量$X$为: $$ left[ begin{matrix} x_0 & x_1 & …… & x_n end{matrix} right] $$ 我们的参数θ为: $$ left[ begin{matrix} θ_0 & θ_1 & …… & θ_n end{matrix} right] $$ $h_θ(x) = θ^T*X$
平方差代价函数:$J(θ_0,θ_1,……,θ_n)$ = $frac1{2m}sum_{i=1}^{m}{(h_θ(x^{(i)}) - y^{(i)})}^2$
我们把$θ_0,θ_1,……,θ_n$看作是一个向量$θ$:$J(θ)$ = $frac1{2m}sum_{i=1}^{m}{(h_θ(x^{(i)}) - y^{(i)})}^2$
我们要不断的更新每个$θ_j$参数: $θ_j := θ_j - αfrac∂{∂θ_j }J(θ_0,θ_1,……,θ_n))$,把$j$从$0$更新到$n$。
停止条件为$J(θ_0,θ_1,……,θ_n)$ = $frac1{2m}sum_{i=1}^{m}{(h_θ(x^{(i)}) - y^{(i)})}^2$收敛。
python代码实现
首先,我们生成一些数据:
import
如下:
![639681ef96920743234f7cff7e2931ac.png](https://i-blog.csdnimg.cn/blog_migrate/cd53e5ef6e7dd2419acc9a037e376191.png)
def
如下图所示,我们可以看到当迭代次数大概在2700次左右的时候,代价函数达到最小值,之后代价函数反而开始上升。
![b758c9216245e1b1ce52cee0df86cd8d.png](https://i-blog.csdnimg.cn/blog_migrate/97df71b1b552d095f8da3b8d2af45869.png)
所以我们要指定迭代停止条件,就是代价函数不再减小的时候,取此时的$θ$值为最终参数。
![c6709e1f86b6764825fa0816ac426bae.png](https://i-blog.csdnimg.cn/blog_migrate/7b64904814dca46b75773b2f8f802018.png)
此时的$θ$为: $$ left[ begin{matrix} 1.5937727145838314 & 0.4110413265543656 & 2.166920188201938 & 0.650512565672142 & 3.133321333193598 end{matrix} right] $$ 即: $y = 1.6 + 0.41x_1 +2.17x_2 + 0.65x_3 + 3.13x_4$ 和我们生成数据的公式比较接近(有随机项)
y