当前位置: 首页 > news >正文

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

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

一、逻辑回归概述

逻辑回归虽然名字中带有“回归”,但它是一种用于处理二分类或多分类问题的算法。其核心思想是通过构建一个线性模型,将输入特征进行线性组合,再利用逻辑函数(如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值等关键指标,这些指标从不同角度评估了模型的性能。通过对比训练集和测试集上的分类报告,可以判断模型是否存在过拟合现象。

六、运行结果

在这里插入图片描述

七、总结与展望

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

相关文章:

  • GNU gettext 快速上手
  • 两向量平行公式、向量与平面平行公式、两平面平行公式;两向量垂直公式、向量与平面垂直公式、两平面垂直公式
  • 基于 HT 构建 2D 智慧仓储可视化系统的技术解析
  • IP 地址和 MAC 地址是如何转换的
  • mac下载homebrew 安装和使用git
  • 3.2goweb框架GORM
  • 基于BM1684X+RK3588的智能工业视觉边缘计算盒子解决方案
  • c++线程的创建
  • 【Hive入门】Hive高级特性:事务表与ACID特性详解
  • 大数据平台与数据仓库的核心差异是什么?
  • openharmony 4.1 运行busybox工具包(保姆教程)
  • encodeURI和encodeURICompoent的区别
  • 云备份服务器,数据备份服务器的方法有哪些?
  • 配置和使用基本存储
  • Golang - 实现文件管理服务器
  • 如何用AI生成个人职业照/西装照?
  • SALOME源码分析: SMESH模块
  • 17、商品管理:魔药商店运营——React 19 CRUD实现
  • React 后台管理系统
  • 涨薪技术|0到1学会性能测试第43课-apache status模块监控
  • 中国金茂向滨江集团提供11.21亿元诚意金借款,拟合作开发3月获取的地块
  • 神十九都带回了哪些实验样品?果蝇等生命类样品已交付科学家
  • 全文丨中华人民共和国民营经济促进法
  • 78家公募年度业绩比拼:23家营收净利双升,十强座次微调
  • 专访|200余起诉讼,特朗普上台100天,美国已进入宪政危机
  • 郭继孚被撤销全国政协委员资格,此前为北京交通发展研究院长