IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 特征工程:归一化与标准化 -> 正文阅读

[人工智能]特征工程:归一化与标准化

样本特征由于来源以及度量单位不同,它们的尺度(Scale),或者说是取值范围有可能差异很大。如果一个机器学习算法在缩放全部或者部分特征后不影响它的学习和预测,我们就称该算法具有尺度不变性(Scale Invariance)。神经网络从理论上应该具有尺度不变性,可以通过参数的调整来适应不同特征的尺度。但是尺度不同的输入特征会增加训练的难度。1

1/ 最小最大值归一化

归一化(Normalization)方法泛指把数据特征转换为相同尺度的方法。最小最大值归一化(Min-Max Normalization)是最为简单的归一化方法,通过简单的缩放将每一个特征的取值范围归一到 [ 0 , 1 ] [0,1] [0,1] [ ? 1 , 1 ] [-1, 1] [?1,1]. 假如样本数据 { x ( n ) } n = 1 N \{\boldsymbol{x}^{(n)}\}^N_{n=1} {x(n)}n=1N?,最小最大归一化到 [ 0 , 1 ] [0,1] [0,1] 的公式为:
x ^ ( n ) = x ( n ) ? min ? ( x ( n ) ) max ? n ( x ( n ) ) ? min ? n ( x ( n ) ) , \hat{x}^{(n)}=\frac{x^{(n)}-\min{(x^{(n)})}}{\max_n(x^{(n)})-\min_n(x^{(n)})}, x^(n)=maxn?(x(n))?minn?(x(n))x(n)?min(x(n))?,
最小最大归一化到 [ ? 1 , 1 ] [-1,1] [?1,1] ,可以先将数据归一化到 [ 0 , 1 ] [0, 1] [0,1] 之间,然后再进行平移缩放:
x ^ ( n ) = 2 max n ( x ( n ) ) ? min n ( x ( n ) ) ( x ( n ) ? min n ( x ( n ) ) ) ? 1 , \hat{x}^{(n)}=\frac{2}{\text{max}_n(x^{(n)})-\text{min}_n(x^{(n)})}\left(x^{(n)}-\text{min}_n(x^{(n)})\right)-1, x^(n)=maxn?(x(n))?minn?(x(n))2?(x(n)?minn?(x(n)))?1,

所以将数据利用最小最大归一化到某个范围 [ r 1 , r 2 ] [r_1, r_2] [r1?,r2?] 的代码为:

import torch
import numpy as np
from sklearn import preprocessing
np.random.seed(9) # 设置随机种子为 9

def min_max_norm(X, feature_range=(0, 1)):
    r1, r2 = feature_range  # 将数据归一化到 [r1, r2] 之间
    xmin, xmax = X.min(axis=0), X.max(axis=0) # 得到数据的最大最小值
    X_std = (X - xmin) / (xmax - xmin)     # 标准化到 [0, 1]
    X_scaled = X_std * (r2 - r1) + r1      # 数据平移缩放到 [r1, r2]
    return X_scaled

sklearn.preprocessing 中的 MinMaxScaler() 进行对比:

sample_size = 5
X = np.random.randn(sample_size) * 255
X = X.reshape(-1, 1)
min_max_norm(X, feature_range=(0, 1))    # 数据归一化到 [0, 1] 之间
preprocessing.MinMaxScaler(feature_range=(0, 1)).fit_transform(X.reshape(-1, 1))
# array([1.        , 0.73983247, 0.        , 0.98747617, 0.66033068])

min_max_norm(X, feature_range=(-1, 1))   # 数据归一化到 [-1, 1] 之间
preprocessing.MinMaxScaler(feature_range=(-1, 1)).fit_transform(X.reshape(-1, 1))
# array([ 1.        ,  0.47966494, -1.        ,  0.97495233,  0.32066137])

# 两种方法得到的结果是一样的

2/ 标准化

标准化(Standardization)也叫 Z 值归一化(Z-Score Normalization),它的作用是将每一维特征都调整为均值为 0,方差为 1. 首先计算均值与方差:
μ = 1 N ∑ n = 1 N x ( n ) σ 2 = 1 N ∑ n = 1 N ( x ( n ) ? μ ) 2 \begin{aligned} \mu &=\frac{1}{N} \sum_{n=1}^{N} x^{(n)} \\ \sigma^{2} &=\frac{1}{N} \sum_{n=1}^{N}\left(x^{(n)}-\mu\right)^{2} \end{aligned} μσ2?=N1?n=1N?x(n)=N1?n=1N?(x(n)?μ)2?
然后将特征 x ( n ) x^{(n)} x(n) 减去均值,并除以标准差,得到新的特征值 x ^ ( n ) \hat{x}^{(n)} x^(n)
x ^ ( n ) = x ( n ) ? μ σ \hat{x}^{(n)}=\frac{x^{(n)}-\mu}{\sigma} x^(n)=σx(n)?μ?
标准差 σ \sigma σ 不能为零,否则说明这一维的特征没有任何区分性,可以直接删掉。

标准化的代码:

def z_score_norm(X):
    mu = X.mean()   # 计算数据的均值
    sigma = X.std() # 计算数据的标准差(方差的平方根)
    return (X - mu) / sigma

z_score_norm(X)
preprocessing.StandardScaler().fit_transform(X)
# array([ 0.88537948,  0.17106352, -1.86022047,  0.85099404, -0.04721657])

3/ 归一化与标准化的作用2

归一化与标准化的本质其实是一种线性变换,即可以看成是对数据进行比例为 α \alpha α 的压缩,然后再平移 β \beta β 个单位。线性变化具有的良好性质是,线性变化不改变原始数据的数值排序。

而归一化是将数据直接缩放到一个区间内,相对来说比较「硬」,它仅仅只跟数据的最大最小值有关。标准化更加「软」,它的缩放跟每一个点都有关,通过方差(Variance)体现。

从公式上看,当数据较为集中, α \alpha α 更小,数据在标准化后更为分散,原始数据分布广,那么 α \alpha α 比较大,那么标准化后数据就会被集中到更为小的范围。

那么什么时候使用归一化,什么时候使用标准化?

  • 如果对输出结果范围有要求,用归一化;
  • 数据较为稳定,不存在极端的最大最小值,用归一化;
  • 数据存在异常值或者较多噪音,用标准化;

当然使用归一化与标准化并没有一个明确的指标,可以两个方法都试一下,选择表现比较好的。


  1. 邱锡鹏:《神经网络与深度学习》??

  2. 知乎回答:特征工程中的「归一化」有什么作用?— 微调??

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-02-03 01:12:38  更:2022-02-03 01:14:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 20:37:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码