线性回归
博主微信公众号(左)、Python+智能大数据+AI学习交流群(右):欢迎关注和加群,大家一起学习交流,共同进步!
一、连续值预测
二、线线方程
二元一次方程:
对于方程组求解过程:
闭式解(closed form solution):也叫解析解(analytical solution),就是一些严格的公式,给出任意的自变量就可以求出其因变量,也就是问题的解,他人可以利用这些公式计算各自的问题。
三、噪声
在现实生活中很难精确对 和 进行求解,因为:1、模型本身我们是未知的,所采集到的数据会有一定的偏差;2、观测的数据往往都是带有一定噪声的。
噪声的表示:
我们给出现有的模型,添加一个额外的因素 ,假设 符合高斯 分布,如函数图所示:因此在大部分情况下,对于我们观测的影响是比较小的,在一个值附近左右变动,只有比较小的可能性会出现观测误差。
当我们的拿到的样本值存在观测误差,如果我们只根据两个拿到的样本值去估计,估计到的 和 的值往往带有很大的随机性,可能会在一个很大的范围内波动。那么如何解决这个问题呢?往往是通过多观测几组数据样本。
四、示例
假设已经知道模型的 ground-truth,,已经知道了真实的 和 ,并添加一个简单的高斯噪声 。这时我们就可以通过这个分布去得到 的样本对,如下图所示,在 区间 间,我们很有理由相信该模式是符合某一个线性分布的。
而在现实生活中模型的ground-truth往往是不可知的,我们需要自己去求解模型参数 和 。
五、求解 ,
如何去很好的求解 , 呢?为了求解这个问题,我们构造一个新的函数 函数,当 函数值越来越小的时候,说明了对于任意的样本 ,经过 计算之后,是很有可能接近真实的 值的,这时的 , 的值就是我们所要求解的线性模型的参数。
所以,我们把模型参数估计的问题转换成了 的问题,通过 我们就可以求得 , 的值就是我们所要求解的线性模型的参数。
六、梯度下降
可以看出,函数的导数的方向是沿着函数值变大的方向,当我们在求解极小值时, 值的变化应该是向着导数值变化的反方向行进。
由于将导数的长度作为步长前进的话 的跨度会比较大,所以我们乘以一个固定的衰减因子 0.005。
梯度下降可能没法找到一个全局的最小解,但是可以找到一个合适的范围,这个范围里面当我们发现 performance(性能) 足够好的话,我们将这个解作为一个实际可行的解。
故而求解 , 的过程为:
的结果总是好于 ,因为 , 是由 , 不停的更新得到的值。
七、计算 loss
我们拿到100个数据点,每个数据点有两个数值([100,2]),结构为 ,随机初始化 ,所以 的计算公式为:
在实际计算过程中, 会有一个累加的过程,计算结果将变得非常大,在计算 的时候,我们通常除以一个 (数据点个数100),得到一个平均 :
1、Numpy 版本
(1) 计算
(2) 计算梯度 ,
(3) 更新梯度
(4) 函数调用
(5) 计算结果: