当前位置: 首页>后端>正文

机器学习(二):线性回归

就像学习代码总会有第一个hello world一样,先来学习第一个机器学习算法,线性回归算法,这是机器学习算法中较为简单且容易理解的算法模型

一,线性回归详解

1,线性回归理解

拆开理解,线性,即代表能画个直的出来;回归,即代表预测连续纸的回归问题。结合起来就是用线性模型解决预测连续纸的回归问题

比如,使用一次函数(y=kx+b),如下

机器学习(二):线性回归,第1张

上图中, 蓝线就是我们的回归模型,x就是我们的样本点,用蓝线来拟合样本点的走向的过程就是训练过程

在此回归方程y = kx+b中,x和y是我们输入的样本特征值和结果,k就是这个线性回归模型的权值参数,b就是这个模型的偏差值。训练的过程就是求出合适的k和b

2,预测流程

(1)数据采集

任何模型训练都离不开数据,需要选定你需要的特征和对应的结果(称为标签),再去搜集对应的值

数据样本的采集是一个很繁琐的事情,哪些特征对结果的影响比较大,都是需要慎重考虑的,而且想要更加准确的预测就要收集更多的数据

将数据集分为训练集和测试集

(2)构建线性回归模型

在有了数据并且确定适合线性回归模型之后,就需要构建一个线性回归模型,也就是设定一个假设函数,如y=kx+b

(3) 训练模型

给k和b一个初始值,给定损失函数,将训练集的样本放入模型中,得到损失函数的返回值,不符合预期时,则通过优化方法调整k和b,再继续放训练集的样本,再计算损失函数的返回值和预期目标,从而循环,一直到达到预期目标时,即训练结束

(4)测试验证

为了验证模型的泛化能力,将测试集放入训好的模型中,再看得到的指标是否符合预期目标,在判断模型的拟合情况

二,损失函数和假设函数

1,假设函数

在前面我们用的是一次函数,这时候就是只有一个特征量,但是在实际应用中都是有很多的,这时候,假设函数的函数表达式应该如下所示

机器学习(二):线性回归,第2张

Y1和X1此时是矩阵形式,wT表示权值系数的转置,这么写的原因主要是在矩阵相乘中,是前一个矩阵的列向量和后一个矩阵的横向量相乘

2,损失函数

损失函数就是用来衡量真实结果和预测结果的差异的,在计算单个样本的误差的时候,我们直接用预测值减去真实值即可,但只能适用于二维平面的直线方程。所以可以采用数学中的均方误差来计算:

机器学习(二):线性回归,第3张

这是单样本的误差,总样本误差就如下:

机器学习(二):线性回归,第4张

最后,将假设函数代入,得到损失函数如下:

机器学习(二):线性回归,第5张

函数中n、Y、X1都是已知的,那么只需要找到一组w与b使得函数取得最小值

而b也可以放到wT中变成w0,换个写法θ,也就是

机器学习(二):线性回归,第6张

损失函数就变为


机器学习(二):线性回归,第7张

三,优化方法-梯度下降法

在上述中,可以知道只需要找到一组w和b使得函数取得最小值就行,其实就可以借鉴找极值来解决。

在数学中,如果要求一个函数的极值,通常是求这个函数的导数为0的地方,因为导数的数学含义如下:

机器学习(二):线性回归,第8张

其实可以理解为导数就是这个函数在这个点的切线斜率,斜率为0就说明这块的切线斜率为0,可能就是这个函数的极大或极小值,而我们要考虑的就是切线的斜率

但在应用中,常常涉及的不止一个未知数,这时候就可以用偏导数,求一个未知数的偏导时把其他未知数当成常量求导即可,得到的偏导函数就代表了此未知数方向上的切线斜率

在微积分中,有一个概念叫做梯度,表示函数在某一点处的沿着梯度的方向变化最快,变化率最大,所以沿着梯度的方向就是指向该函数极大值的方向,相反就是极小值。

举一个浅显的例子,一个人现在在山顶,如何最快的走到山脚?就以当前位置为基准,找到最陡的方向走,每走一段距离,都去找最陡的方向,一直走到不能往下走的位置

机器学习(二):线性回归,第9张

这个过程其实就叫梯度下降法

在机器学习的实际应用中,就是要去找Loss函数的最小值,那么就可以对照使用梯度下降法

(1)先求Loss关于θ的偏导

机器学习(二):线性回归,第10张

(2)再更新θ,θ = θ - α * 关于θ偏导数 ,完全的推导公式如下

机器学习(二):线性回归,第11张

α为学习率,用来控制下降的幅度;

更新的公式中是用原θ减去一个和θ偏导有关的数,那么随着训练的不断进行,θ偏导数会越来越小直到减去之后的θ和之前的相等,就说明到达了极小值,此时的θ即是我们需要的θ,整个模型也就训练完,进入到测试验证阶段


https://www.xamrdz.com/backend/3rk1928279.html

相关文章: