机器学习基础算法之线性回归与梯度下降

举报
yd_295669432 发表于 2023/01/16 13:28:35 2023/01/16
【摘要】 本文主要是机器学习中的基础算法线性回归于梯度下降的知识,没有代码实例。

机器学习基础算法之线性回归与梯度下降

1. 线性回归

1. 什么是线性回归

线性回归算法基于数学中的线性回归,线性回归要解决的问题就是根据已知的数据建立一个模型,当给出一个未知的数据时,我们要通过线性回归的模型对未知值进行预测。


图一 线性回归

2. 线性回归算法的符号表示

线性回归算法中的数据可能不止有两组,所以单纯使用二维的平面直角坐标系并不能够使用所有数据建立模型。这时我们需要使用三维甚至更高维度的坐标系来建立模型,在这些数据中找到一个平面或者超平面来进行预测。

图二 线性回归数据表格

在计算时,面对多种数据,我们需要统一的符号进行表示,线性回归的符号表示如下:

对于多组数据,我们用x*(n)=[a1,a2,a3……]表示一行的数据,将数据竖着排列并将上标改成下标表示一列的数据,用y(n)=b1来表示数据对应的预测值。比如对于图二,x上标一下标一表示的就是第一行第一列的m。

3. 形式化定义

线性回归是机器学习中的一种预测算法,根据线性回归的原理,在预测时,总会有一个根据模型预测出来的假设值,假设值与实际值总会有损失,而平均损失的多少就是我们要付出的代价。

(1) 假设函数

假设函数就是用来求预测值的。假设函数的得出就是根据线性回归的原理得出的。对于数学中的线性回归,我们总将得出的预测直线用y=ax+b表示,但是在实际问题中,得出一个y往往有多个不同的x,为了表示方便,我们将b写成θ_0,并为其乘上x0(x0恒等于一),将a换成θ_n并和相对应的x相乘,这样每一个数据在公式中对应的格式都是相同的,我们就可以用数学的求和符号将整个公式化简,如下图:

图三 假设函数公式 这里的z一般用hθ(x)表示)

(2) 损失函数

损失函数的作用就是用来计算假设值和实际值之间的误差,误差多少就是我们损失的多少。所以只需要用假设值减去实际值就是损失值。这里会将假设值减去实际值之后的结果再平方,因为损失值要是一个正数,方便后续的计算,并且平方有一个放大的效果。

L(θ)=(hθ(x)-y)^2

损失函数公式

(3) 代价函数

代价就是我的损失值多少。对于每一个点的损失值各不相同,所以将损失函数求平均值就是每一个点的代价。所以方法就是将所有的损失函数求和,再除以点数m,这里的二分之一是为了方便后续的求导计算,可以不带。

图四 代价函数公式

2. 梯度下降算法

1. 什么是梯度下降算法

梯度下降算法的出现与数学中的导数有关。梯度下降算法的目的是用来求解最小值对应的x。导数表示函数上升的速率。在求解最小的x时,首先我们会随机初始化一个θ,然后希望这个θ可以不断减小直到在原函数中找到最小值对应的x,那么,让θ减小的方法就是让θ减去原函数在θ这一点对应的导数,因为导数的意义是表示函数变化的快慢,能表示函数变化的方向,随着x的变化,函数变化趋势也在不停的变化。但是,x对应的导数值可能过大,所以我们会在导数前面乘一个alpha,alpha表示步长(在开始时初始化),让x可以一点一点的下降,从而找到最小的x。这里的梯度指的就是导数。

图五 多维函数图像

2. 梯度下降算法数学表示

公式 X0=x-alpha×(x的导数)

3. 梯度下降算法的步骤

首先先随机初始化一个θ,然后设置一个步长alpha,设置迭代的次数m,求解原函数的导数,最后将θ放入公式中进行迭代。当存在多个θ时,将多个θ放入循环中进行迭代。如图五所示,根据函数求得的导数不同,函数变化的趋势也有所不同,那么在求最小的x、是,迭代的次数和每一次的结果都会有所差异。当函数较为复杂时,可能有局部最小值的情况存在,根据设置的初始值x不同,求出的最小值可能不同。

4. 使用梯度下降法求解线性回归问题

使用梯度下降算法来解决线性回归问题的原因就是,使用梯度下降算法之后,可以使代价函数的损失值最小。所以使用梯度下降算法求解线性回归问题就是对代价函数进行梯度下降。

对于代价函数,代价函数中的θ可能有很多个,所以我们在对代价函数公式梯度下降时要对多个θ进行。

每次取一个θ时,在去导数时含有其他θ值的项 和常数项都会为零。

所以,求得公式如下:

公式:θv=θv - alpha(1/m)(∑(hθ^(x(i)) -- y^(i))x^(i)_v)

Alpha乘的部分就是代价函数的导数。

5. 特征归一化

在进行梯度下降算法时,随机初始化的x往往会使得结果并不理想,所以这里我们要对x进行特征归一化。

特征归一化的方法就是让进行梯度下降的x减去所有x均值再除以所有x的方差。

6. 梯度下降算法的变形

(1) 批量梯度下降

批量梯度下降就是对数据进行大批量的梯度下降,但是遇到数据量特别大的情况下就会很耗时不占优势。

(2) 随机梯度下降

在面对数据量十分大时,在对数据进行梯度下降时,只抽取其中一个样本来进行梯度下降。但是因为每次只抽取一个样本,梯度下降并不会朝着最快速的方向进行,而是震荡进行的。

(3) 小批量梯度下降

小批量梯度下降就是指在面对大量的样本数据时,只抽取小批量的样本来进行梯度下降。做法就是将样本打乱,然后随机抽取一部分进行梯度下降。然后在抽取另一部分,进行梯度下降,直到所有样本都被抽取完。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。