线性回归算法拟合数据原理分析以及源代码解析
前言
前面的博客讲的都是分类问题,接下来的几篇博客,会着重于回归,倾向于对数据进行预测。大家是不是一听到预测就眼睛一闪,是不是可以用来预测股票涨跌、彩票号码什么的!我只能告诉你有人做出来的股票预测软件,而且正确率挺可观的。作为一个学习者,别着急,千里之行始于足下。踏踏实实的从原理到代码,一步一脚印。
项目源码已上传至GitHubb上,有需要的自取:项目地址
如果项目对你有些许帮助,不要忘记给个小⭐⭐
线性回归原理以及公式
1. 简单知识回顾
二元一次方程式大家都已经非常熟悉了,下面这个是他的一般式【式子1】:
不过通常呢,我们会将这个一般式中的y单独拿到等式一侧,其余的放在另一侧【式子2】:
注意,这两个式子的a和b不是一回事,各自表示对应式子的系数或者常数。
我们都知道,对于式子2来讲,决定这个式子在图像中的显示位置的是系数a,和常数b。
对于图上这张图来说,红色这条直线对应的二元一次方程式子2的系数a为2,b为-1.蓝色这条线对应的式子2的系数a为-1,b为5.
也就是说,只要给出a和b的值,那么,我就能画出这样一条直线。
那这跟我们的算法有什么关系呢?
说到的,我们就是针对数据,找出这样的a和b,以此得出一条直线方程。
本次呢,主要是针对单属性数据量做算法介绍,针对多属性值数据来讲, 道理相同,无非就是将数据2的系数a和变量x变成向量,同时对于常量b,我们也可以写道向量里。也就相当于下面公式:
这里的n表述数据的属性个数,m表示数据量。
2. 最小二乘法解二元一次方程
首先我们得先了解一下最小二乘法的原理,先看一下下面这张图:
图中浅蓝色的点是我们真实数据点的位置,黄色点是预测的数据点,中间这个绿色直线就是我们所
拟合出来的直线。预测点和真实数据点之间的距离,我们称之为误差。我们假设这条直线方程:
那么,针对这个误差,我们使用误差平方和来表示(其好处是能够解决正负值相互抵消问题):
为了达到更好的拟合效果,我们需要这个误差平方和达到最小。理想情况下,所有数据点均在拟合直线上,那么此时,这个误差平方和为0.
在代码方面,我们通常会将累积求和公式,使用向量的形式来进行表示,下面,我们对上面的公式进行向量化书写:
</