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

一.逻辑回归基本介绍

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

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

二.正则化基本介绍

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

1、L1正则化
公式如下:

标题

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

2、L2正则化
公式如下:

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

三.超参数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逐渐增大时,对模型的惩罚越来越小,训练集上的表现越来越高;但是测试集的表现,L1正则化在C在0.5左右时,就不再提升,但是L2正则化在0.5之后还有提升,且在0.62左右达到最高,在0.9左右开始下降。虽然训练集表现在一路走高,但是测试集上模型已经表现出了过拟合的倾向。因此我们会倾向选择0.62作为我们最优的C。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/175932.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB R2018b详细安装教程(附资源)

云盘链接: pan.baidu.com/s/1SsfNtlG96umfXdhaEOPT1g 提取码:1024 大小:11.77GB 安装环境:Win10/Win8/Win7 安装步骤: 1.鼠标右击【R2018b(64bit)】压缩包选择【解压到 R2018b(64bit)】 2.打开解压后的文件夹中的…

轧钢测径仪在螺纹钢负公差轧制中的四大作用!

螺纹钢为什么要进行负公差轧制? 在标准允许范围内,越接近负公差,那么在合格规范内,所损耗的原材料越少,而螺纹钢轧制速度快,更是以吨的量进行成交,因此控制的原材料积少成多,对其成本…

数字展厅搭建平台要具备哪些功能,如何选择数字展厅搭建平台

引言: 数字展厅搭建平什台是现代营销中不可或缺的重要工具之一。它可以帮助企业打造个性化、多媒体、互动性强的展示空间,吸引、引导和留住目标用户。在选择数字展厅搭建平台时,我们需要考虑各方面的功能和性能,以确保能够满足企业的需求并取…

三十九、CANdelaStudio实践-19服务(ReadDTCInformation)

本专栏将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希望能对大家有所帮助,与大家共同成长,早日成为一名车载诊断、通信全栈工程师。 本文介绍CANdelaStudio的19服务(ReadDTCInformation)编辑,欢迎…

【k8s】5、资源管理命令-声明式

目录 一、 yaml和json介绍 1、yuml语言介绍 2、k8s支持的文件格式 3、yaml和json的主要区别 二、声明式对象管理 1、命令式对象配置 2、声明式对象配置 3、声明式对象管理命令介绍 三、编写资源配置清单 1、 编写yaml文件 2、 启动并查看资源 3、创建service服务对外…

知识付费系统的技术架构和设计原则

知识付费系统的成功取决于其坚实的技术架构和设计原则。本文将探讨创建一个高效、可扩展和安全的知识付费系统所需的技术要素和设计原则,并提供一些示例代码,以帮助您开始构建自己的系统。 技术架构 1. 后端服务 知识付费系统的后端服务是其核心组成部分…

堆排序 详解+图解

堆排序是一种基于堆数据结构的排序算法,它的基本思想是将待排序序列构造成一个最大堆,然后将堆顶元素和堆底元素交换,再把堆的大小减一,使堆顶元素下沉到合适的位置,重复以上操作,直到整个序列有序。 堆排…

Python的错误和异常处理

一、错误和异常 编程中出现的错误大致可以分为两类:错误和异常。 (一)错误 错误又可以分为两类:语法错误和逻辑错误。 1. 语法错误 语法错误又称解析错误,它是指在编写程序时,程序的语法不符合Python语言的规范,导致…

【Python百练——第2练】使用Python做一个猜数字小游戏

💐作者:insist-- 💐个人主页:insist-- 的个人主页 理想主义的花,最终会盛开在浪漫主义的土壤里,我们的热情永远不会熄灭,在现实平凡中,我们终将上岸,阳光万里 ❤️欢迎点…

Pycharm 搭建 Django 项目,看完这一篇就够了

1. 安装需求 在使用 python 框架 Django 需要注意下面事项 Pycharm 版本是专业版而不是社区版本Pycharm 配置好了 python 解释器 (一般我们现在用的都是python3)我自己使用的是 Pycharm 版本是2020.1.2 2. 准备工作 2.1 新建项目 首先我们打开 Pycharm …

超融合数据库:解锁全场景数据价值的钥匙

前言 近日,四维纵横对外官宣已完成上亿元 B 轮融资。作为超融合数据库理念的提出者,三年来 YMatrix 持续在超融合数据库领域中保持精进与迭代,对于超融合数据库在行业、场景中的应用和理解也更为深刻。 本篇文章,我们将基于 YMa…

【Linux】常见指令以及具体其使用场景

君兮_的个人主页 即使走的再远,也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们,这里是君兮_,随着博主的学习,博主掌握的技能也越来越多,今天又根据最近的学习开设一个新的专栏——Linux,相信Linux操作系…

window11最新版终于可以取消任务栏合并了

windows11一个软件开了多个窗口之后,会自动合并任务栏,很不方便选择其中一个窗口,且没有选项能关闭这一配置 今日发现,最新版完善了这一功能,现在可以关闭自动合并任务栏了 右击任务栏,选择任务栏设置选择…

element表格自定义筛选

文章目录 前言一、简介二、效果展示三、源码总结 前言 提示:这里可以添加本文要记录的大概内容: …待续 提示:以下是本篇文章正文内容,下面案例可供参考 一、简介 修改el-table的筛选…待续 二、效果展示 三、源码 使用方法…

Python爬虫程序中的504错误:原因、常见场景和解决方法

概述 在编写Python爬虫程序时,我们经常会遇到各种错误和异常。其中,504错误是一种常见的网络错误,它表示网关超时。是指客户端与服务器之间的网关通信过程中,服务器在规定的时间内没有返回响应,导致请求超时。此类错误…

【Qt控件之QMessageBox】详解

Qt控件之QMessageBox 描述基于属性的API富文本和文本格式属性严重程度以及图标和Pixmap属性静态函数API 高级用法默认按钮和退出按钮示例使用场景 描述 QMessageBox类提供了一个模态对话框,用于通知用户或向用户提问并接收答案。 消息框显示一个主要文本以提醒用户…

从小白到精通:揭秘perf工具的全部功能与操作技巧

揭秘perf工具的全部功能与操作技巧 一、引言二、理解perf工具的基本概念三、安装与配置perf工具3.1、不同操作系统的perf工具安装3.2、perf工具的配置选项和环境设置 四、perf工具的常用命令和功能4.1、perf工具的基本命令结构和常用参数4.2、perf工具的常见用法和功能4.3、per…

解决恶意IP地址攻击:保卫网络安全的有效方法

随着互联网的发展,网络安全威胁变得日益复杂,其中包括恶意IP地址攻击。这些攻击通常是网络犯罪分子的手段之一,用于入侵系统、窃取数据或进行其他恶意活动。本文将探讨如何解决恶意IP地址攻击,以保护网络安全。 恶意IP地址攻击是…

关于测试组件junit切换testng的示例以及切换方式分享

文章目录 概要首先看看junit和testng的区别实践篇摸拟业务逻辑代码简单对象数据层摸拟类业务逻辑层摸拟类后台任务摸拟类 基于springmockjunit基于springmocktestng 示例的差异点junit与testng的主要变动不大,有以下几个点需要注意注解部分在before,after中testng多出按配置执行…

华为数通方向HCIP-DataCom H12-831题库(多选题:101-120)

第101题 LSR对收到的标签进行保留,且保留方式有多种,那么以下关于LDP标签保留一自由方式的说法 A、保留邻居发送来的所有标签 B、需要更多的内存和标签空间 C、只保留来自下一跳邻居的标签,丢弃所有非下一跳铃邻居发来的标签 D、节省内存和标签空间 E、当IP路由收敛、下一跳…