原文链接:《》
问题描述
首先我们定义问题,线性回归要解决的问题就是根据给出的数据学习出一个线性模型。
例如我们最常说的身高和体重的关系,以及房屋面积和房价的关系,这里给出一个瑞典汽车保险数据集 数据集 可以直接复制出来用 两列分别表示 索赔要求数量 对所有索赔的总赔付,以千瑞典克朗计 数据前五行1 108 392,52 19 46,23 13 15,74 124 422,25 40 119,4
我们按照这个数据集作出图如下
大概观察一下可以用线性模型去定义,现在的问题是根据现有的这个数据集合,我们要学习出一个模型,然后给出索赔要求数量我们能够预测总赔付。
下面给出两种解决方法,并分析这两种方法区别。最小二乘法
定义损失函数如下:
上面是损失函数,我们现在目的使得损失函数尽可能的小,就是求如上Q的最小值,函数求极值问题,这里就用到了导数,导数的意义是导数大于0的x处函数递增,导数小于0处x的函数递减,导数为0既为函数的极值点
证明也很简单,这里给个证明的,剩下就是几次求和的事儿了。
多元线性回归
梯度下降法
我们要求解的问题和上面一样,同样定义的模型和损失函数都一样,模型为线性模型,损失函数为平方差值和最小,同样这里要求解的是线性方程的参数。
首先我们给每个参数赋值一个随机数,然后按照下面公式进行迭代:
随机梯度下降
上面公式我们发现,每迭代一次我们都要遍历所有的数据去求和,如果数据量大的话可能计算一次很耗时,于是就有了随机梯度下降,这样虽然解决了数据量大的问题,但是学习速度比较曲折,并且学习到的结果可能只是几个局部最优解。如果数据量小建议用批量梯度下降: