【最优化方法】最速下降法

给出点

复制代码
x = [1,4,5,8,12]
y = [7,9,15,14,27]

要找出温度和冰淇淋销量之间的关系,通过线性回归来拟合求出属性和结果之间的线性关系。

如果直接把这些点连起来,是吃力不讨好的,因为如果有新数据进来大概率不在这条线上,这个行为也叫做过拟合。

对于这种明显有相关关系的数据,直接用一条直线去拟合这些数据,一次函数y=kx+b,k、b确定了直线也就确定了。找最合适的直线的过程就叫线性回归。

评判标准

找出每个真实数据点到直线的距离。

列个表看看:

定义损失函数 f(k,b)=z

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

x = np.array([1, 4, 5, 8, 12])
y_true = np.array([7, 9, 15, 14, 27])

def model(x, k, b):
    return k * x + b
def mse_loss(y_true, y_pred):
    return np.mean((y_true - y_pred) ** 2)

# 生成参数 k 和 b 的取值范围
k_values = np.linspace(0, 3, 100)  
b_values = np.linspace(-5, 5, 100) 

# 创建网格
K, B = np.meshgrid(k_values, b_values)

# 计算每个 (k, b) 组合下的损失值
Z = np.zeros_like(K)
for i in range(len(k_values)):
    for j in range(len(b_values)):
        y_pred = model(x, K[i, j], B[i, j])
        Z[i, j] = mse_loss(y_true, y_pred)

# 绘制三维损失函数曲面图
fig = plt.figure(figsize=(10, 7))
ax = fig.add_subplot(111, projection='3d')

ax.plot_surface(K, B, Z, cmap='viridis')

ax.set_xlabel('Slope (k)')
ax.set_ylabel('Intercept (b)')
ax.set_zlabel('MSE Loss')
ax.set_title('3D Loss Function Surface')

plt.show()

问题就转化成了找到图像的谷底。

对于一次函数:

高等数学下中对于梯度的介绍:

相关推荐
lczdyx3 小时前
【胶囊网络 - 简明教程】02-1 胶囊网络 - 整体架构设计
人工智能·深度学习·机器学习·ai·大模型·反向传播·胶囊网络
小雨中_3 小时前
2.6 时序差分方法(Temporal Difference, TD)
人工智能·python·深度学习·机器学习·自然语言处理
落羽的落羽3 小时前
【Linux系统】磁盘ext文件系统与软硬链接
linux·运维·服务器·数据库·c++·人工智能·机器学习
民乐团扒谱机3 小时前
【硬科普】位置与动量为什么是傅里叶变换对?从正则对易关系到时空弯曲,一次讲透
人工智能·线性代数·正则·量子力学·傅里叶变换·对易算符
陈天伟教授3 小时前
人工智能应用- 推荐算法:05.推荐算法的社会争议
算法·机器学习·推荐算法
七夜zippoe3 小时前
图神经网络实战:从社交网络到推荐系统的工业级应用
网络·人工智能·pytorch·python·神经网络·cora
啊阿狸不会拉杆3 小时前
《计算机视觉:模型、学习和推理》第 1 章 - 绪论
人工智能·python·学习·算法·机器学习·计算机视觉·模型
X54先生(人文科技)3 小时前
叙事响应:《当预言泛起涟漪——碳硅智能时代的叙事开篇》
人工智能·ai编程·ai写作
硅谷秋水3 小时前
具身智能中的生成多智体协作:系统性综述
人工智能·深度学习·机器学习·语言模型·机器人
爱吃羊的老虎4 小时前
【大模型应用】MCP (Model Context Protocol):AI界的USB接口
人工智能