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

Z-Score 标准化 (Standardization),Min-Max 归一化 (Normalization / Rescaling)

在构建 Lasso 回归模型时,特征标准化是至关重要的一步,因为 Lasso 的 L1 正则化惩罚项对特征的尺度非常敏感。如果特征量纲不同(例如“年龄”范围是 0-100,“收入”范围是 0-100,000),未标准化的数据会导致模型对大数值特征施加过大的惩罚,从而影响特征选择的准确性。

常用的两种特征标准化/缩放方法分别是 ‌Z-Score 标准化 (Standardization)‌ 和 ‌Min-Max 归一化 (Normalization)‌。

1. Z-Score 标准化 (Standardization)

原理‌:
将数据转换为均值为 0、标准差为 1 的分布。它保留了原始数据的分布形状,但消除了量纲影响。
公式:x′=x−μσx′=σx−μ​
其中 μμ 是均值,σσ 是标准差。

适用场景‌:

  • Lasso/Ridge 回归的首选‌。大多数机器学习算法(特别是基于距离或正则化的算法)假设数据符合正态分布或至少具有零均值和单位方差。
  • 数据中存在异常值时,虽然标准化受异常值影响,但相比归一化,它不会将数据强制压缩到固定区间,因此在某些情况下更稳健(尽管通常建议先处理异常值)。

代码实现‌:

Python (sklearn):

python

from sklearn.preprocessing import StandardScaler
import numpy as np

# 假设 X 是你的特征数据矩阵
X = np.array([[10, 200], [20, 300], [30, 400]])

# 创建标准化器
scaler = StandardScaler()

# 拟合并转换训练数据
X_scaled = scaler.fit_transform(X)

# 转换测试数据(只 transform,不 fit)
# X_test_scaled = scaler.transform(X_test)

print("标准化后的数据:\n", X_scaled)
print("均值:", X_scaled.mean(axis=0)) # 接近 0
print("标准差:", X_scaled.std(axis=0)) # 接近 1

R 语言:

# 假设 df 是你的数据框,排除目标变量列
# scale() 函数默认进行 Z-Score 标准化
data_scaled <- scale(df[, -which(names(df) == "target")])

# 查看结果
head(data_scaled)


2. Min-Max 归一化 (Normalization / Rescaling)

原理‌:
将数据线性映射到 [0, 1] 区间(也可以指定其他区间,如 [-1, 1])。
公式:x′=x−xminxmax−xminx′=xmax​−xmin​x−xmin​​

适用场景‌:

  • 当算法要求输入数据必须在特定 bounded 区间时(如神经网络的一些激活函数、图像处理像素值)。
  • 数据分布不符合正态分布,且你希望保留原始数据的相对比例关系。
  • 注意‌:对于 Lasso 回归,虽然可以使用归一化,但 ‌Standardization (Z-Score)‌ 通常更推荐,因为 Lasso 的正则化路径在标准化数据上表现更稳定。如果数据中有极端异常值,Min-Max 会将大部分数据压缩到非常小的区间,导致区分度降低。

代码实现‌:

Python (sklearn):

from sklearn.preprocessing import MinMaxScaler
import numpy as np

X = np.array([[10, 200], [20, 300], [30, 400]])

# 创建归一化器
min_max_scaler = MinMaxScaler(feature_range=(0, 1)) # 默认就是 0-1

# 拟合并转换
X_normalized = min_max_scaler.fit_transform(X)

print("归一化后的数据:\n", X_normalized)
print("最小值:", X_normalized.min(axis=0)) # 0
print("最大值:", X_normalized.max(axis=0)) # 1

R 语言:

# R 基础包中没有直接的 MinMax 函数,可以手动编写或使用 caret/scales 包
# 手动实现 Min-Max 归一化
min_max_norm <- function(x) {
return ((x - min(x)) / (max(x) - min(x)))
}

# 对数据框中的每一列应用
df_numeric <- df[, sapply(df, is.numeric)] # 仅选择数值列
df_normalized <- as.data.frame(lapply(df_numeric, min_max_norm))


总结与建议

表格

特性Z-Score 标准化 (StandardScaler)Min-Max 归一化 (MinMaxScaler)
输出范围无固定范围,均值=0,标准差=1固定在 [0, 1] (或指定范围)
对异常值敏感度中等 (均值和标准差受异常值影响)‌ (最大值/最小值直接决定缩放比例)
Lasso 回归推荐度⭐⭐⭐⭐⭐ (强烈推荐)⭐⭐⭐ (可用,但不如标准化普遍)
主要用途线性回归、SVM、KNN、PCA、聚类神经网络、图像处理、需要边界值的算法

针对 Lasso 模型的最佳实践:

  1. 优先使用StandardScaler(Z-Score)‌。
  2. 务必在‌训练集‌上fit,然后同时转换训练集和测试集,以防止数据泄露。
  3. 如果使用 Python 的sklearn,推荐使用Pipeline将标准化和 Lasso 模型封装在一起,确保交叉验证时每一步都正确执行。

Python Pipeline 示例 (最佳实践):

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LassoCV
from sklearn.model_selection import train_test_split

# 假设 X, y 已准备好
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建管道:先标准化,再运行 Lasso
pipeline = Pipeline([
('scaler', StandardScaler()),
('lasso', LassoCV(cv=5)) # LassoCV 自动通过交叉验证选择最佳 alpha
])

# 训练模型 (管道会自动对训练数据进行 fit_transform,对测试数据 transform)
pipeline.fit(X_train, y_train)

# 预测
y_pred = pipeline.predict(X_test)

# 查看最佳 alpha 和系数
print("Best Alpha:", pipeline.named_steps['lasso'].alpha_)
print("Coefficients:", pipeline.named_steps['lasso'].coef_)

http://www.jsqmd.com/news/1090526/

相关文章:

  • 从1Gb/s带宽与10ms时延出发,探究TCP窗口65535字节下的性能极限
  • Guna UI WinForms 2.0.4.4:解锁现代桌面应用界面的高效开发利器
  • 终极指南:3步轻松打造你的个人小说图书馆
  • 工业物联网(IIoT)数据采集的5个坑,我都替你踩过了
  • 如何使用oec-hardware快速验证服务器与openEuler兼容性:完整指南 [特殊字符]
  • 05 通信协议设计时的注意事项
  • 防火墙双机热备实战:从组网规划到状态切换的完整配置解析
  • MSPM0Lxx低功耗与中断协同设计:从原理到实战优化
  • Three.js 简单3d拓扑图教程
  • 芝麻粒TK版:模块化架构下的蚂蚁森林自动化终极方案
  • Win11Debloat深度解析:Windows系统定制化优化技术方案
  • 如何轻松实现AI智能分层:Layerdivider完整使用教程
  • D3keyHelper终极指南:一键解放双手的暗黑3智能助手
  • Illustrator脚本终极指南:如何用自动化工具提升90%设计效率
  • 无硬件学LVGL:基于Web模拟器+MiroPython速通GUI开发—布局与空间管理篇
  • PCL2启动器性能优化终极指南:彻底解决Minecraft卡顿问题
  • 服务发现——让服务“自动寻址“
  • HS2-HF Patch终极指南:如何通过模块化架构实现Honey Select 2的全面增强
  • 如何用MeEdu快速搭建专属在线网校系统:完整指南
  • 7个技巧让你在Blender中实现机械级精度:CAD_Sketcher参数化设计终极指南
  • 如何5分钟实现STL到STEP格式转换:从网格到实体的专业蜕变指南
  • Blender插件管理终极指南:2000+插件一键掌控的完整解决方案
  • 3个步骤彻底告别XCOM 2模组管理噩梦:AML启动器完整解决方案
  • 终极指南:YgoMaster局域网PvP对战完整教程 - 轻松实现好友联机决斗
  • AFE5805评估板实战指南:从硬件解析到性能测试
  • 3D打印新手必看:BambuStudio终极指南,轻松掌握智能切片与远程控制
  • 082、Flask 进阶:蓝图、上下文栈、g 对象与大规模项目组织
  • 深入解析MSPM0工厂预编程区域:从内存映射寄存器到芯片校准数据实战
  • 大模型记忆容量的物理定律:3.6比特每参数量化原理
  • 从一次端口监听冲突的解决,深入理解127.0.0.1、0.0.0.0与网卡IP的绑定机制