如何在【逻辑回归】中优化控制正则化程度的超参数C

这篇具有很好参考价值的文章主要介绍了如何在【逻辑回归】中优化控制正则化程度的超参数C。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.逻辑回归基本介绍

逻辑回归也称作logistic回归,是一种广义的线性回归分析模型,主要是用来解决二分类问题(也可以解决多分类问题)。通过训练集来训练模型,并在训练结束后对测试集进行分类。
         通过激活函数,也就是sigmoid函数可以将线性回归模型的值缩放到(0,1)之间,公式和图像如下所示:

如何在【逻辑回归】中优化控制正则化程度的超参数C,逻辑回归,算法,机器学习

如何在【逻辑回归】中优化控制正则化程度的超参数C,逻辑回归,算法,机器学习

通过这种方式我们就可以将结果靠近1的判定为一类,靠近0的判定为另外一类了。

二.正则化基本介绍

正则化的意义:避免过拟合。模型如果很复杂,变量稍微变动就会引起模型的剧烈变动,这会导致模型在训练集上表现非常好,但是在测试集上会出现过拟合,不具备泛化能力,这不是我们想要的。因此我们选用正则化来避免过拟合,这是因为正则项是非负的,要使得损失最小必须让正则项趋近于0,它降低了特征参数的权重,使得模型更简单。

1、L1正则化
公式如下:

如何在【逻辑回归】中优化控制正则化程度的超参数C,逻辑回归,算法,机器学习
标题

L1正则化可以让一部分权重变为零(降维),因此产生稀疏模型,能够去除某些特征(权重为0则等效于去除)

2、L2正则化
公式如下:

如何在【逻辑回归】中优化控制正则化程度的超参数C,逻辑回归,算法,机器学习

L2正则化使各个维度权重普遍变小,减少了权重的固定比例,使权重平滑。

三.超参数C的介绍

如何在【逻辑回归】中优化控制正则化程度的超参数C,逻辑回归,算法,机器学习

C:浮点型(为正的浮点数),默认为1.0;表示正则化强度的倒数。数值越小表示正则化越强。

接下来我们通过绘制图像来可视化超参数C的大小对模型准确率的影响,从而选出最优的C:

四.python实战

先导入必要的模块:

from sklearn.linear_model import LogisticRegression as LR
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
import numpy as np

导入乳腺癌数据集,查看特征矩阵和标签值,并将其划分为训练集和测试集:

data = load_breast_cancer()
x = data.data
y = data.target
x.shape # (569, 30)
y.shape # (569,)
np.unique(y) # array([0, 1]) 二分类问题
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=420)

为了同时对比L1正则化和L2正则化的效果,因此创建四个空列表:

l1 = [] # 创建l1正则化的训练集准确率的空列表
l2 = [] # 创建l2正则化的训练集准确率的空列表
l1test = [] # 创建l1正则化的测试集准确率的空列表
l2test = [] # 创建l2正则化的测试集准确率的空列表
x_ = np.linspace(0.05, 1, 19) # 从0.05到1之间取19个数
for i in x_:
    lrl1 = LR(penalty="l1", solver="liblinear", C=i, max_iter=1000).fit(x_train, y_train)
    lrl2 = LR(penalty="l2", solver="liblinear", C=i, max_iter=1000).fit(x_train, y_train)
    l1.append(accuracy_score(lrl1.predict(x_train), y_train)) # l1正则化的训练集准确率
    l1test.append(accuracy_score(lrl1.predict(x_test), y_test)) # l1正则化的测试集准确率
    l2.append(accuracy_score(lrl2.predict(x_train), y_train)) # l2正则化的训练集准确率
    l2test.append(accuracy_score(lrl2.predict(x_test), y_test)) # l2正则化的测试集准确率
graph = [l1, l2, l1test, l2test]
color = ["green", "black", "lightgreen", "gray"]
label = ["L1", "L2", "L1test", "L2test"]
plt.figure(figsize=(6, 6))
for i in range(len(graph)):
    plt.plot(x_, graph[i], color[i], label=label[i])
plt.legend(loc=4) # 图例位置.4表示右下角 
plt.show()

结果如下所示:

如何在【逻辑回归】中优化控制正则化程度的超参数C,逻辑回归,算法,机器学习

由图可知,用训练集的测试结果显著优于用测试集的测试结果,这说明模型在训练集上表现很好,在测试集上表现欠佳,这说明有轻微的过拟合。还可以发现,当C逐渐增大时,对模型的惩罚越来越小,训练集上的表现越来越高;但是测试集的表现,L1正则化在C在0.5左右时,就不再提升,但是L2正则化在0.5之后还有提升,且在0.62左右达到最高,在0.9左右开始下降。虽然训练集表现在一路走高,但是测试集上模型已经表现出了过拟合的倾向。因此我们会倾向选择0.62作为我们最优的C。文章来源地址https://www.toymoban.com/news/detail-724220.html

到了这里,关于如何在【逻辑回归】中优化控制正则化程度的超参数C的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 游戏性能优化指南:如何最大程度提升Unity游戏的帧率和流畅度

    FPS (Frames per Second):显示当前游戏帧率。帧率越高,游戏画面越流畅。为提高帧率,可减少游戏对象数量、优化渲染方式等。 Draw Calls :显示当前帧需要渲染的次数。过多的Draw Calls会导致游戏运行缓慢。降低此指标可通过优化场景、材质或使用批处理技术等方式。 Tris :显

    2024年02月06日
    浏览(88)
  • Python实现基于Optuna超参数自动优化的xgboost回归模型(XGBRegressor算法)项目实战

    说明:这是一个机器学习实战项目(附带 数据+代码+文档+视频讲解 ),如需 数据+代码+文档+视频讲解 可以直接到文章最后获取。  1.项目背景 Optuna是一个开源的超参数优化(HPO)框架,用于自动执行超参数的搜索空间。 为了找到最佳的超参数集,Optuna使用贝叶斯方法。 xgbo

    2024年02月03日
    浏览(60)
  • “维度削减+逻辑回归”:如何使用PCA大幅提升乳腺癌的预测成功率?

    乳腺癌是女性中最常见的恶性肿瘤之一,也影响着全球范围内许多人们的健康。据世界卫生组织(WHO)的数据,乳腺癌是全球癌症发病率和死亡率最高的肿瘤之一,其对个体和社会的危害不可忽视。因此,早期乳腺癌的预测和诊断变得至关重要,以便及早采取适当的治疗措施

    2024年02月12日
    浏览(46)
  • 神经网络中的超参数调整

    背景         在深度神经网络学习和优化中,超参数调整一项必备技能,通过观察在训练过程中的监测指标如损失loss和准确率来判断当前模型处于什么样的训练状态,及时调整超参数以更科学地训练模型能够提高资源利用率。在本研究中使用了以下超参数,下面将分别介

    2024年04月15日
    浏览(28)
  • 支持向量机(SVM)的超参数调整 C 和 Gamma 参数

    作者:CSDN @ _养乐多_ 支持向量机(Support Vector Machine,SVM)是一种广泛应用的监督式机器学习算法。它主要用于分类任务,但也适用于回归任务。在本文中,我们将深入探讨支持向量机的两个重要参数:C和gamma。在阅读本文前,我假设您对该算法有基本的了解,并专注于这些

    2024年02月16日
    浏览(41)
  • 129基于matlab的粒子群算法、遗传算法、鲸鱼算法、改进鲸鱼算法优化最小二乘支持向量机(lssvm)的gam正则化参数和sig2RBF函数的参数

    基于matlab的粒子群算法、遗传算法、鲸鱼算法、改进鲸鱼算法优化最小二乘支持向量机(lssvm)的gam正则化参数和sig2RBF函数的参数。输出适应度曲线,测试机和训练集准确率。程序已调通,可直接运行。 129 matlabLSSVM优化算法 (xiaohongshu.com)

    2024年01月16日
    浏览(59)
  • 使用Optuna进行PyTorch模型的超参数调优

    Optuna是一个开源的超参数优化框架,Optuna与框架无关,可以在任何机器学习或深度学习框架中使用它。本文将以表格数据为例,使用Optuna对PyTorch模型进行超参数调优。 Optuna可以使用python pip安装,如pip install Optuna。也可以使用conda install -c conda-forge Optuna,安装基于Anaconda的py

    2024年02月08日
    浏览(48)
  • YOLOv8超参数调优教程! 使用Ray Tune进行高效的超参数调优!

    原创文章为博主个人所有,未经授权不得转载、摘编、倒卖、洗稿或利用其它方式使用上述作品。违反上述声明者,本站将追求其相关法律责任。 这篇博文带大家玩点新的东西,也是一直以来困扰大家最大的问题— 超参数调优 ! 之前的 YOLOv5 我使用遗传算法做过很多次调优

    2024年02月09日
    浏览(58)
  • 数据分析之Logistic回归分析(二元逻辑回归、多元有序逻辑回归、多元无序逻辑回归)

    在研究X对于Y的影响时: 如果Y为定量数据,那么使用多元线性回归分析; 如果Y为定类数据,那么使用Logistic回归分析。 结合实际情况,可以将Logistic回归分析分为3类: 二元Logistic回归分析 多元有序Logistic回归分析 多元无序Logistic回归分析 Logistic回归分析用于研究X对Y的影响

    2024年03月13日
    浏览(68)
  • 深度学习 -- 逻辑回归 PyTorch实现逻辑回归

    线性回归解决的是回归问题,而逻辑回归解决的是分类问题,这两种问题的区别是前者的目标属性是连续的数值类型,而后者的目标属性是离散的标称类型。 可以将逻辑回归视为神经网络的一个神经元,因此学习逻辑回归能帮助理解神经网络的工作原理。 逻辑回归是一种 广

    2024年02月06日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包