Python实现逻辑回归:如何在损失不再改善时终止训练过程?
实现逻辑回归的早停训练
要实现早停(Early Stopping),核心思路是跟踪测试集的损失,当损失连续多个epoch没有有效改善时就终止训练——这既能避免过拟合,又能节省不必要的计算资源。下面是修改后的代码,我会一步步拆解关键改动:
修改后的完整代码
def train(X_train, y_train, X_test, y_test, epochs, alpha, eta0, patience=5, epsilon=1e-6): N = len(X_train) dim = len(X_train[0]) # 修正:原代码的dim = X_train[0]是取样本而非特征维度,这里调整为特征数量 w, b = initialize_weights(dim) # 初始化早停核心变量 best_test_loss = float('inf') best_w, best_b = w.copy(), b.copy() patience_counter = 0 for i in tqdm(range(epochs)): # 单轮梯度下降更新权重 for x, y in zip(X_train, y_train): dw = gradient_dw(x, y, w, b, alpha, 1) db = gradient_db(x, y, w, b) w = w + (eta0 * dw) b = b + (eta0 * db) # 计算当前轮次的训练/测试损失 train_prob = [sigmoid((np.dot(w.T, x)) + b) for x in X_train] train_loss = logloss(y_train, train_prob) test_prob = [sigmoid((np.dot(w.T, x)) + b) for x in X_test] test_loss = logloss(y_test, test_prob) # 早停逻辑判断 # 只有当测试损失比最优值小至少epsilon时,才认为是有效改善 if test_loss < best_test_loss - epsilon: best_test_loss = test_loss best_w, best_b = w.copy(), b.copy() # 保存当前最优权重 patience_counter = 0 # 重置耐心计数器 else: patience_counter += 1 # 连续patience轮无改善,终止训练 if patience_counter >= patience: print(f"早停触发,在第{i+1}轮终止训练") break # 返回训练过程中最优的模型及对应损失,而非最后一轮的结果 final_train_loss = logloss(y_train, [sigmoid((np.dot(best_w.T, x)) + best_b) for x in X_train]) return best_w, best_b, final_train_loss, best_test_loss
关键改动说明
- 修正特征维度获取:原代码的
dim = X_train[0]是取单个样本而非特征数量,这里调整为len(X_train[0])更合理。 - 早停变量初始化:
best_test_loss:初始化为无穷大,用来记录训练过程中出现的最小测试损失。best_w/best_b:保存对应最小测试损失的权重和偏置,确保最终返回的是最优模型。patience_counter:计数连续多少轮测试损失没有有效改善。
- 损失改善的严谨判断:加入
epsilon小阈值,避免因浮点精度误差把微小的损失波动当成“没有改善”——只有当测试损失比之前最优值小至少epsilon时,才认为是有效提升。 - 耐心机制:设置
patience参数(默认5轮),如果连续patience轮都没有有效改善,就终止训练。这能避免因偶然的损失上升就提前停止,给模型足够的收敛空间。 - 返回最优模型:最后返回的是训练过程中测试损失最小的模型,而非最后一轮的模型,这是早停策略的核心价值。
额外实用建议
- 优先用验证集而非测试集:实际训练中,建议把训练集再拆分出一个验证集来做早停判断,避免测试集信息泄露导致最终评估结果失真。
- 同步监控训练损失:如果训练损失还在下降但测试损失持续上升,说明模型开始过拟合,此时早停会及时终止训练。
- 灵活调整参数:根据数据集大小和模型收敛速度,调整
patience和epsilon——比如复杂模型可以把patience设大一点,epsilon则根据损失的量级调整。
内容的提问来源于stack exchange,提问作者Haseeb Abdul
相关产品推荐
相关产品推荐

