神经网络基础-神经网络补充概念-08-逻辑回归中的梯度下降算法

概念

逻辑回归是一种用于分类问题的机器学习算法,而梯度下降是优化算法,用于更新模型参数以最小化损失函数。在逻辑回归中,我们使用梯度下降算法来找到最优的模型参数,使得逻辑回归模型能够更好地拟合训练数据。

逻辑回归中的梯度下降算法的步骤:

神经网络基础-神经网络补充概念-08-逻辑回归中的梯度下降算法_第1张图片

伪代码

初始化参数向量 theta
重复迭代直到收敛或达到最大迭代次数:
    计算模型预测值 h_theta(x)
    计算损失函数 J(theta)
    计算梯度 ∂J(theta)/∂theta
    更新参数 theta: theta := theta - learning_rate * gradient

代码实现

import numpy as np

def sigmoid(z):
    return 1 / (1 + np.exp(-z))

def compute_loss(X, y, theta):
    m = len(y)
    h = sigmoid(X.dot(theta))
    loss = (-1/m) * np.sum(y * np.log(h) + (1 - y) * np.log(1 - h))
    return loss

def gradient_descent(X, y, theta, learning_rate, num_iterations):
    m = len(y)
    losses = []
    
    for _ in range(num_iterations):
        h = sigmoid(X.dot(theta))
        gradient = X.T.dot(h - y) / m
        theta -= learning_rate * gradient
        
        loss = compute_loss(X, y, theta)
        losses.append(loss)
        
    return theta, losses

# 生成一些模拟数据
np.random.seed(42)
X = np.random.randn(100, 2)
X = np.hstack((np.ones((X.shape[0], 1)), X))
theta_true = np.array([1, 2, 3])
y = (X.dot(theta_true) + np.random.randn(100) * 0.2) > 0

# 初始化参数和超参数
theta = np.zeros(X.shape[1])
learning_rate = 0.01
num_iterations = 1000

# 执行梯度下降
theta_optimized, losses = gradient_descent(X, y, theta, learning_rate, num_iterations)

# 打印优化后的参数
print("优化后的参数:", theta_optimized)

# 绘制损失函数下降曲线
import matplotlib.pyplot as plt
plt.plot(losses)
plt.xlabel('迭代次数')
plt.ylabel('损失')
plt.title('损失函数下降曲线')
plt.show()

你可能感兴趣的:(神经网络补充,神经网络,算法,神经网络,逻辑回归)