题解|使用梯度下降的线性回归

使用梯度下降的线性回归

https://www.nowcoder.com/practice/e9f12bb403f44847b44e287d5a71e56c?tpId=377&tags=&title=&difficulty=0&judgeStatus=0&rp=0&sourceUrl=%2Fexam%2Foj

梯度下降在机器学习中是一种常用的优化算法,用于求解最小化损失函数的问题。其具体步骤如下:

1. 初始化参数

  • 创建一个与输入矩阵 和输出矩阵 相关的矩阵
  • 数学表达式为:

本题初始化参数为0,但在实际使用中更常见的是使用随机初始化。

2. 计算梯度

  • 计算损失函数 对参数 的梯度
  • 数学表达式为:

本题使用的损失函数为均方误差,即:

其中, 是预测值, 是真实值, 是样本数量。 因此,梯度为: 值得注意是,均方误差有两种形式,区别在于是否乘以1/2,本题使用的是乘以1/2的形式,这种形式的好处在于求梯度时可以消去1/2,使得计算更加简洁。

3. 更新参数

  • 更新参数
  • 数学表达式为:

值得注意的是,梯度下降有三种形式,分别是批量梯度下降、随机梯度下降和mini-batch梯度下降。

标准代码如下

def linear_regression_gradient_descent(X, y, alpha, iterations):
    m, n = X.shape
    # 初始化权重
    theta = np.zeros((n, 1))
    for _ in range(iterations):
        predictions = X @ theta
        errors = predictions - y.reshape(-1, 1)
        updates = X.T @ errors / m
        theta -= alpha * updates
    return np.round(theta.flatten(), 4)
全部评论

相关推荐

11-19 18:44
已编辑
成都理工大学 Java
程序员花海:我面试过100+校招生,大厂后端面试不看ACM,竞赛经历含金量低于你有几份大厂实习 这个简历整体来看不错 可以海投
如何写一份好简历
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务