机器学习 —— 线性回归(2)

上一篇讲到损失函数。

https://blog.csdn.net/i_k_o_x_s/article/details/159929680?spm=1001.2014.3001.5501

如何让损失函数最小呢?

一、正规方程求解

1.求导

2.求偏导

3.矩阵运算

高数内容这篇已大概讲述

https://blog.csdn.net/i_k_o_x_s/article/details/159999903?spm=1001.2014.3001.5502

4.概念

正规方程是一种有效解决小规模线性回归问题的方法,但对于大规模数据集或者特征数量较多的情况,可能会遇到计算效率问题。(矩阵的逆必须存在,否则无法使用正规方程

第一个公式:假设函数(模型公式 ) -> w(权重)、x(特征)、b(偏置)、h(预测值)

第二个公式:正规方程(求解公式

统一符号后的 w, x, b, h 形式

把 θ 直接替换为参数向量 w,公式变为:

原始符号 统一后符号 含义
θ w 包含偏置 b 的完整参数向量:w=[b,w1​,w2​,...,wn​]T
X X 带全 1 列的特征矩阵(第一列对应 x0​=1,用于承载偏置 b)
y y m×1 的真实标签向量
矩阵 X 的转置
矩阵 的逆矩阵(不可逆时用伪逆)

步骤 1:定义模型(用 w, x, b, h 写预测公式)

作用:定义模型结构,说明如何用输入特征 x、权重 w、偏置 b 计算预测值 h

步骤 2:求解最优参数(用正规方程求 w,包含 b

作用:直接计算出最优的 w(包含 b),让预测值 h=尽可能接近真实值 y(最小化均方误差)

步骤 3:得到最终模型

把求解出的代回步骤 1 的公式,就得到了最终的预测模型:

具体例子

假设我们有 3 个样本,1 个特征 x1​,真实标签 y 如下:

样本 x1​ y
1 1 2
2 2 4
3 3 6
1. 构造特征矩阵 X(带全 1 列)
2. 用正规方程求 w(包含 b)
3. 代回假设函数,得到最终模型

完美拟合数据,验证了两个公式的一致性。

优化:

1.不需要选择学习率

2.直接计算模型参数的方法,而不需要迭代过程。

3.不需要对特征进行缩放处理

基于最小化代价函数来找到最佳拟合直线的参数

缺点:

数据量大的时候,慢。尤其是特征数量很大时候,计算逆矩阵非常慢。

=========================================================================

二、梯度下降法

概念

沿着梯度下降的方向 求解极小值

下山过程:连绵不断的山,第一座山的最低点(极小值点)-> 第二座山(极小值)->....

目标逼近山底。

单变量函数中,梯度就是某一点的切线斜率,有方向为函数增长最快的方向

多变量函数中,梯度就是某一点的偏导数,有方向:偏导数分量的向量方向

梯度下降公式(核心)

循环迭代求当前点的梯度,更新当前的权重参数

:学习率(步长) 不能太大,也不能太小。机器学习中: 0.001 ~ 0.01

太大:梯度震旦

太小:太慢

梯度是上升最快的方向,我们需要是下降最快的方向,所以需要加负号

单变量梯度下降 -- 例子


小结:经过四次的运算,即走了四步,基本抵达了函数的最低点
什么时候停止?
满足停止条件:
1.如果设置了具体迭代次数就停止
2.如果满足范围要求 比如: θ (0.001 - 0.003)即停止

梯度下降优化过程

1.给定初始位置、步长(学习率)

2.计算该点当前的梯度步长

3.向该负方向移动步长

4.重复2-3步,直到收敛(设置的满足停止条件)

有关学习率步长(Learning rate)

1.步长决定了在梯度下降迭代的过程中,每一步沿梯度负方向前进的长度

2.学习率太小,下降的速度会慢

3.学习率太大:容易造成错过最低点、产生下降过程中的震荡、甚至梯度爆炸

梯度下降法分类:

1.全梯度下降算法 FGD:

使用全部数据集,训练速度较慢。效果比较好

2.随机梯度下降算法 SGD:

简单,高效,不稳定。SG每次只使用一个样本迭代,容易遇上异常数据写入局部最优解

3.小批量梯度下降算法 mini-bach (用的比较多

结合SG的大单和FG的心细,正好居于SG和FG二者之间。

证因为它避开了FG运算效率低成本大和SG收敛效果不稳定的缺点。

4.随机平均梯度下降算法SAG

训练初期表现不佳,优化速度较慢。因为常将初始梯度设为0,而SAG每轮梯度更新都结合了上一轮梯度值。

早期数据量小,效率不好。 数据越多效率越好。

三、两个方法的比较

梯度下降 正规方程
怎么求 w 一步步迭代更新 直接矩阵求逆
是否需要学习率 α 需要,要调参 不需要
特征多 (n 很大) 跑得动 跑不动(求逆太慢)
特征少 (n 很小) 可以用,但没必要 超快、首选
是否缩放特征 需要(否则不收敛) 不需要
迭代次数 需要很多次 0 次,一步到位
适用模型 线性 / 逻辑 / 神经网络都能用 只能线性回归
矩阵不可逆 没问题 会出问题,要用伪逆 / 正则
相关推荐
foundbug9998 分钟前
自适应滤除直达波干扰的MATLAB实现
开发语言·算法·matlab
沪漂阿龙15 分钟前
OpenAI Agents SDK 深度解析(三):执行层——Agent 的“幕后指挥部”
人工智能·深度学习
还是奇怪16 分钟前
AI 提示词工程入门:用好的语言与模型高效对话
大数据·人工智能·语言模型·自然语言处理·transformer
健忘的萝卜18 分钟前
Clawdbot 爆红硅谷,也把 AI Agent 和 Mac mini 推上风口
人工智能·macos·agent·数字员工·clawbot
迁旭27 分钟前
claude code 提示词
人工智能·语言模型·gpt-3·知识图谱
不知名的老吴30 分钟前
深度探索:直接预测多个token可行吗?
人工智能·回归
数智工坊41 分钟前
【SAM-DETR论文阅读】:基于语义对齐匹配的DETR极速收敛检测框架
网络·论文阅读·人工智能·深度学习·transformer
小康小小涵1 小时前
基于ESP32S3实现无人机RID模块底层源码编译
linux·开发语言·python
风落无尘1 小时前
LangChain 完全入门指南:从基础到实战(附面试题)
人工智能·langchain
IT_陈寒1 小时前
Vue的这个响应式陷阱,我debug了一整天才爬出来
前端·人工智能·后端