【漫话机器学习系列】020.正则化强度的倒数C(Inverse of regularization strength)

devtools/2024/12/25 15:45:26/

正则化强度的倒数 C (Inverse of Regularization Strength)

机器学习中,特别是线性模型(如逻辑回归、支持向量机)中,正则化参数的倒数 C 是控制正则化强度的重要超参数。


1. 定义

C 的数学定义为:

C = \frac{1}{\lambda}

其中:

  • λ 是正则化参数,表示正则化强度。
  • C 越大,正则化强度越弱;C 越小,正则化强度越强。

正则化的目标是通过在损失函数中添加正则项,控制模型的复杂度,从而防止过拟合或欠拟合。


2. 损失函数与正则化项

以逻辑回归为例,损失函数为:

L(w) = \frac{1}{N} \sum_{i=1}^N \text{log loss}(y_i, \hat{y}_i) + \frac{\lambda}{2} \|w\|^2

引入 C 后,公式变为:

L(w) = \frac{1}{N} \sum_{i=1}^N \text{log loss}(y_i, \hat{y}_i) + \frac{1}{2C} \|w\|^2

  • 第一项:数据误差,衡量模型对训练数据的拟合程度。
  • 第二项:正则化项,控制模型参数 w 的大小以避免过拟合。

3. C 的作用

(1) C 大小对模型的影响
  • C 大(即 λ 小):

    • 正则化强度弱,模型更关注拟合训练数据。
    • 可能导致过拟合。
  • C 小(即 λ 大):

    • 正则化强度强,模型更关注限制参数的大小。
    • 可能导致欠拟合。
(2) 直观理解
  • C \to \infty
    • 正则化项被忽略,模型完全拟合数据。
  • C \to 0
    • 正则化项占主导,模型趋于简单,可能表现为所有参数趋于 0。

4. 如何选择 C

(1) 网格搜索

通过交叉验证,尝试不同的 C 值,选择使模型性能最优的参数。

from sklearn.model_selection import GridSearchCV
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split# 生成二分类数据
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 定义模型和参数范围
model = LogisticRegression()
param_grid = {'C': [0.01, 0.1, 1, 10, 100]}# 使用网格搜索
grid_search = GridSearchCV(model, param_grid, cv=5)
grid_search.fit(X_train, y_train)print(f"最佳参数: {grid_search.best_params_}")

 输出结果

最佳参数: {'C': 0.01}

(2) 对数据特性的考虑
  • 数据维度高:可能需要较大的正则化(小 C)。
  • 数据维度低:可以尝试较小的正则化(大 C)。
(3) 观察过拟合或欠拟合
  • 如果训练集性能高但测试集性能低:减小 C(增加正则化强度)。
  • 如果训练集和测试集性能均低:增大 C(减小正则化强度)。

5. 示例代码

以下是一个逻辑回归模型中使用 C 控制正则化强度的示例:

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split# 生成二分类数据
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 使用不同的C值训练模型
for C in [0.01, 0.1, 1, 10, 100]:model = LogisticRegression(C=C, random_state=42, max_iter=1000)model.fit(X_train, y_train)# 预测并计算准确率y_pred = model.predict(X_test)accuracy = accuracy_score(y_test, y_pred)print(f"C={C}, 测试集准确率={accuracy:.4f}")

输出结果

C=0.01, 测试集准确率=0.8500
C=0.1, 测试集准确率=0.8467
C=1, 测试集准确率=0.8500
C=10, 测试集准确率=0.8467
C=100, 测试集准确率=0.8467

6. 总结

  • 正则化强度的倒数 C 是控制模型正则化的重要参数。
  • C 的大小决定了模型对数据拟合能力与正则化强度的权衡。
  • 在实践中,合理选择 C 可以显著提升模型的性能,同时避免过拟合或欠拟合。

http://www.ppmy.cn/devtools/145290.html

相关文章

debian linux 连网自动调整时间 (报错 Unit systemd-timesyncd.service could not be found.)

debian linux 连网自动调整时间 如果有报错 Unit systemd-timesyncd.service could not be found. 就用 apt 装一下 systemd-timesyncd 吧 参考: https://github.com/MichaIng/DietPi/issues/5472 sudo apt-get install systemd-timesyncd... ┌──(kali㉿kali)-[~] └─$ t…

VSCode搭建Java开发环境 2024保姆级安装教程(Java环境搭建+VSCode安装+运行测试+背景图设置)

名人说:一点浩然气,千里快哉风。—— 苏轼《水调歌头》 创作者:Code_流苏(CSDN) 目录 一、Java开发环境搭建二、VScode下载及安装三、VSCode配置Java环境四、运行测试五、背景图设置 很高兴你打开了这篇博客,更多详细的安装教程&…

17. 非严格递增连续数字序列

题目: 输入一个字符串仅包含大小写字母和数字,求字符串中包含的最长的非严格递增连续数字序列的长度(比如12234属于非严格递增连续数字序列)。 一、问题分析 首先读题,仔细看描述中的内容,发现需求是 1.输…

最新高性能多目标优化算法:多目标麋鹿优化算法(MOEHO)求解LRMOP1-LRMOP6及工程应用---盘式制动器设计,提供完整MATLAB代码

一、麋鹿优化算法 麋鹿优化算法(Elephant Herding Optimization,EHO)是2024年提出的一种启发式优化算法,该算法的灵感来源于麋鹿群的繁殖过程,包括发情期和产犊期。在发情期,麋鹿群根据公麋鹿之间的争斗分…

map和set

1.关联式容器 在前面的阶段,我们已经接触过STL中的部分容器,如:vector,list ,queue ,forward_list(单链表)等,这些容器都统称为序列式容器,因为其底层为线性序列的数据结…

我的JAVA-Web基础(2)

1.JDBC 防止sql注入 2.JSP JSP的基本语法 基本语法是 <% %> Java代码 <% %> 输出变量 可以转换成${变量}的EL表达式 <%! %>定义变量 JSP的基本语法包括以下几个主要部分&#xff1a; 1. 表达式&#xff08;Expression&#xff09; 表达式用于将…

PostgreSQL编译安装教程

下载安装 1.在家目录创建一个文件夹放下载安装包 mkdir softwarecd software 2.下载文件压缩包 wget https://ftp.postgresql.org/pub/source/v16.0/postgresql-16.0.tar.gz 3.解压 tar -xzvf postgresql-16.0.tar.gz 4.编译 在software/postgresql-16.0下 cd software…

新手SEO指南如何快速入门与提升网站排名

内容概要 搜索引擎优化&#xff08;SEO&#xff09;是提高网站可见度和排名的重要手段&#xff0c;尤其对新手来说&#xff0c;掌握其基本概念和实用技巧至关重要。本文将针对新手提供一系列的指导&#xff0c;帮助你快速入门并逐步提升网站排名。 首先&#xff0c;了解SEO的…