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

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

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


1. 定义

C 的数学定义为:

其中:

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

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


2. 损失函数与正则化项

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

引入 C 后,公式变为:

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

3. C 的作用

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

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

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

4. 如何选择 C

(1) 网格搜索

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

python 复制代码
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_}")

输出结果

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

5. 示例代码

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

python 复制代码
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}")

输出结果

Matlab 复制代码
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 可以显著提升模型的性能,同时避免过拟合或欠拟合。
相关推荐
技术程序猿华锋几秒前
深度解码OpenAI的2025野心:Codex重生与GPT-5 APIKey获取调用示例
人工智能·vscode·python·gpt·深度学习·编辑器
嘀咕博客7 分钟前
Stable Virtual Camera:Stability AI等推出的AI模型 ,2D图像轻松转3D视频
人工智能·3d·音视频·ai工具
北京地铁1号线12 分钟前
机器学习面试题:逻辑回归Logistic Regression(LR)
人工智能·机器学习
云雾J视界15 分钟前
AI赋能与敏捷融合:未来电源项目管理者的角色重塑与技能升级——从华为实战看高技术研发项目的管理变革
人工智能·华为·项目管理·电源研发·敏捷项目·电源项目
canonical_entropy27 分钟前
不同的工作需要不同人格的AI大模型?
人工智能·后端·ai编程
老黄编程30 分钟前
--gpu-architecture <arch> (-arch)
linux·人工智能·机器学习
IT_陈寒37 分钟前
Vite 5.0 终极优化指南:7个配置技巧让你的构建速度提升200%
前端·人工智能·后端
点云SLAM1 小时前
结构光三维重建原理详解(1)
人工智能·数码相机·计算机视觉·三维重建·结构光重建·gray 编码·标定校正
代码AI弗森3 小时前
从 IDE 到 CLI:AI 编程代理工具全景与落地指南(附对比矩阵与脚本化示例)
ide·人工智能·矩阵
xchenhao4 小时前
SciKit-Learn 全面分析分类任务 breast_cancer 数据集
python·机器学习·分类·数据集·scikit-learn·svm