欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 逻辑回归之参数选择:从理论到实践

逻辑回归之参数选择:从理论到实践

2025/5/1 17:03:37 来源:https://blog.csdn.net/2201_75345884/article/details/147640760  浏览:    关键词:逻辑回归之参数选择:从理论到实践

在机器学习的广阔领域中,逻辑回归作为一种经典的有监督学习算法,常用于解决分类问题。它以其简单易懂的原理和高效的计算性能,在实际应用中备受青睐。然而,要充分发挥逻辑回归的优势,参数选择是关键环节。本文将结合信用卡欺诈检测的实际案例代码,深入探讨逻辑回归参数选择的方法与技巧。

一、逻辑回归概述

逻辑回归虽然名字中带有“回归”,但它是一种用于处理二分类或多分类问题的算法。其核心思想是通过构建一个线性模型,将输入特征进行线性组合,再利用逻辑函数(如Sigmoid函数)将线性组合的结果映射到0到1之间的概率值,以此来判断样本属于某一类别的可能性。例如,在信用卡欺诈检测中,我们可以根据交易金额、时间等特征,预测该笔交易是否为欺诈行为。

二、案例背景与数据处理

在上述代码中,使用了信用卡交易数据集creditcard.csv。在进行逻辑回归建模之前,数据预处理是必不可少的步骤。

  1. 数据标准化:对Amount列进行Z标准化,即通过StandardScaler将数据转换为均值为0,标准差为1的标准正态分布。这一步骤可以消除不同特征之间量纲的影响,加速模型的收敛速度。代码如下:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
a = data[['Amount']]
data['Amount'] = scaler.fit_transform(data[['Amount']])
  1. 特征选择与数据划分:删除对模型影响较小的Time列,并将数据集划分为训练集和测试集。这里采用train_test_split函数,将30%的数据作为测试集,70%的数据作为训练集,同时设置random_state固定随机种子,以保证实验结果的可重复性。
from sklearn.model_selection import train_test_split
X = data.drop('Class',axis=1)
y = data.Class
x_train,x_test,y_train,y_test =\
train_test_split(X,y,test_size = 0.3,random_state = 0)

三、逻辑回归关键参数介绍

在逻辑回归模型LogisticRegression中,有几个关键参数对模型性能有着重要影响。

  1. C参数:C是正则化强度的倒数,它控制模型对训练数据的拟合程度。C值越大,正则化强度越弱,模型越倾向于拟合训练数据,容易出现过拟合现象;C值越小,正则化强度越强,模型的泛化能力越强,但可能会导致欠拟合。在实际应用中,需要通过合适的方法来选择最优的C值。
  2. penalty参数:该参数用于指定正则化的类型,常见的有'l1''l2''l1'正则化会使部分系数变为0,从而起到特征选择的作用;'l2'正则化则是对所有系数进行约束,使系数更加平滑。在上述代码中,使用的是'l2'正则化。
  3. solver参数:该参数用于指定求解器的类型,不同的求解器适用于不同的数据规模和问题特点。例如,'lbfgs'适用于大多数情况,尤其是数据量较大时;'liblinear'则适用于小数据集。

四、参数选择方法——交叉验证

为了选择最优的C参数,代码中采用了交叉验证的方法。交叉验证是一种评估模型性能和选择参数的有效技术,它将训练数据划分为多个子集,通过多次训练和验证,得到模型在不同数据子集上的性能指标,最终取平均值作为模型的评估结果。

  1. 具体实现:在代码中,定义了一个c_param_range列表,包含了多个候选的C值。然后,通过循环将每个C值传入LogisticRegression模型,并使用cross_val_score函数进行8折交叉验证,计算模型的召回率(scoring ='recall')。召回率是衡量模型在正样本识别能力的重要指标,在信用卡欺诈检测中,较高的召回率意味着能够尽可能多地识别出欺诈交易。
scores = []
c_param_range =[0.01,0.1,1,10,100]
for i in c_param_range:lr = LogisticRegression(C = i, penalty='l2', solver='lbfgs', max_iter=1000)score = cross_val_score(lr, x_train, y_train, cv = 8, scoring ='recall')score_mean = sum(score) / len(score)scores.append(score_mean)print(score_mean)
  1. 选择最优参数:通过np.argmax(scores)找到scores列表中最大值对应的索引,从而确定最优的C参数。使用最优C参数重新构建逻辑回归模型,以期望在测试集上获得更好的性能。
best_c = c_param_range[np.argmax(scores)]
lr = LogisticRegression(C = best_c,penalty = 'l2',max_iter = 1000)
lr.fit(x_train, y_train)

五、模型评估与结果分析

为了评估模型的性能,代码中使用了混淆矩阵和分类报告。

  1. 混淆矩阵:通过cm_plot函数绘制混淆矩阵,它直观地展示了模型在不同类别上的预测情况。例如,矩阵的对角线元素表示预测正确的样本数量,非对角线元素表示预测错误的样本数量。通过分析混淆矩阵,可以深入了解模型的错误类型,为进一步优化模型提供依据。
train_predicted =lr.predict(x_train)
print(metrics.classification_report(y_train, train_predicted))
cm_plot(y_train,train_predicted).show()test_predicted = lr.predict(x_test)
print(metrics.classification_report(y_test, test_predicted))
cm_plot(y_test,test_predicted).show()
  1. 分类报告classification_report函数生成的分类报告提供了精确率、召回率和F1值等关键指标,这些指标从不同角度评估了模型的性能。通过对比训练集和测试集上的分类报告,可以判断模型是否存在过拟合现象。

六、运行结果

在这里插入图片描述

七、总结与展望

逻辑回归的参数选择直接影响模型的性能和泛化能力。通过交叉验证等方法,可以有效地找到最优参数,提高模型的预测准确性。在实际应用中,还可以结合更多的参数调整和模型优化技巧,如特征工程、调整正则化类型等,进一步提升逻辑回归模型的效果。随着机器学习技术的不断发展,逻辑回归也在与其他算法融合,发挥着更大的作用。未来,我们可以探索更多的参数选择方法和模型优化策略,以适应更加复杂和多样化的应用场景。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词