好的资料

类型
文献 1. Normalization Techniques in Training DNNs: Methodology, Analysis and Application Github

基础的标准化技术

  1. 中心化(Centering)
  2. 标准化(Standardizing)
  3. 去相关(Decorrelating)
  4. 白化(Whitening)
    1. 原理:【数学】矩阵白化原理及推导
      白化的目的:有时候特征之间会有很强的相关性,而这就存在很大的冗余。对于一个batch的特征:X∈RB×dimX \in \mathbb{R}^{B\times dim}X∈RB×dim,注意B是样本数,dim是特征维度。这样协方差矩阵就是 Σ=XTX∈Rdim×dim\Sigma=X^{T} X \in \mathbb{R}^{dim\times dim}Σ=XTX∈Rdim×dim。正常情况下 Σ\SigmaΣ 不会是单位阵,也就是说,特征各个维度之间存在冗余。所以,特征白化的目的就是要找到一个矩阵 PPP 来对 XXX 矩阵进行变换,使得变换后的矩阵 Y=PXY=PXY=PX 的协方差为单位矩阵

      即:
      1.特征之间相关性较低
      2.所有特征具有相同的方差(图像处理中我们一般设置为单位方差)

      具体操作见参考文献,注意,参考文献里XXX和我们的XXX表达不太相同,主要体现在我们的协方差是 Σ=XTX∈Rdim×dim\Sigma=X^{T} X \in \mathbb{R}^{dim\times dim}Σ=XTX∈Rdim×dim

    2. 关于PCA白化与ZCA白化。
      PCA白化后的数据与原数据有 相位差,为了能使白化后的数据尽可能地接近原来的数据,ZCA白化应运而生。下图就能充分展现PCA与ZCA之间的差别。

      上图转载自博客园-白化(Whitening): PCA 与 ZCA (转)

    3. 好的资料。
      CSDN-DeepLearning (三) 预处理:主成分分析与白化

import numpy as np
import matplotlib.pyplot as plt###################################
### 1. generate batch 2-D data  ###
###################################
BatchSize= 200
DIM=2# data = np.random.randn(BatchSize, DIM) # normal distribution [x, y]
data = np.random.random(size=(BatchSize,DIM))
angle = np.array([[1, 0.5],[0.5, 1]])
data = np.matmul(data, angle) + 0.01
data_x = data[:, 0]
data_y = data[:, 1]### Plot Curve ------ ###
fig = plt.figure(figsize=(8, 5))
plt.subplots_adjust(left=0.05,bottom=0.05,top=0.95,right=0.95)
ax1 = fig.add_subplot(231)
ax1.scatter(data_x, data_y, s=5)   # 在ax1中画图
# ax1.set_xlabel('x')
# ax1.set_ylabel('y')
ax1.spines['left'].set_position('center')  # 设置轴的位置
ax1.spines['right'].set_color('none')  # 设置轴的颜色
ax1.spines['bottom'].set_position('center')   # 设置轴的位置
ax1.spines['top'].set_color('none')   # 设置轴的颜色
ax1.set_title('Origin Data')
ax1.set_xlim(-3, 3); ax1.set_ylim(-3, 3)
# plt.show()###########################################
###   2. normalization - (1) Centering  ###
###########################################
mu = np.mean(data, axis=0)  # alone batch axis
data_mean = data - mu
data_x = data_mean[:, 0]
data_y = data_mean[:, 1]# Plot Curve
ax2 = fig.add_subplot(232)
ax2.scatter(data_x, data_y, s=5)   # 在ax2中画图
# ax2.set_xlabel('x')
# ax2.set_ylabel('y')
ax2.spines['left'].set_position('center')  # 设置轴的位置
ax2.spines['right'].set_color('none')  # 设置轴的颜色
ax2.spines['bottom'].set_position('center')   # 设置轴的位置
ax2.spines['top'].set_color('none')   # 设置轴的颜色
ax2.set_title('Centering')
ax2.set_xlim(-3, 3); ax2.set_ylim(-3, 3)###############################################
###   2. normalization - (2) Standardizing  ###
###############################################
std = np.std(data, axis=0)
data_std = data_mean / std
data_x = data_std[:, 0]
data_y = data_std[:, 1]# Plot Curve
ax3 = fig.add_subplot(233)
ax3.scatter(data_x, data_y, s=5)   # 在ax3中画图
# ax3.set_xlabel('x')
# ax3.set_ylabel('y')
ax3.spines['left'].set_position('center')  # 设置轴的位置
ax3.spines['right'].set_color('none')  # 设置轴的颜色
ax3.spines['bottom'].set_position('center')   # 设置轴的位置
ax3.spines['top'].set_color('none')   # 设置轴的颜色
ax3.set_title('Standardizing')
ax3.set_xlim(-3, 3); ax3.set_ylim(-3, 3)########################
### 3. Decorrelating ###
########################
cov_matrix = np.dot(data_mean.T, data_mean) / BatchSize  ## [dim, dim]
eigval, eigvec = np.linalg.eig(cov_matrix)
data_decor = np.dot(data_mean, eigvec)
data_x = data_decor[:, 0]
data_y = data_decor[:, 1]# Plot Curve
ax4 = fig.add_subplot(234)
ax4.scatter(data_x, data_y, s=5)   # 在ax3中画图
# ax4.set_xlabel('x')
# ax4.set_ylabel('y')
ax4.spines['left'].set_position('center')  # 设置轴的位置
ax4.spines['right'].set_color('none')  # 设置轴的颜色
ax4.spines['bottom'].set_position('center')   # 设置轴的位置
ax4.spines['top'].set_color('none')   # 设置轴的颜色
ax4.set_title('Decorrelating')
ax4.set_xlim(-3, 3); ax4.set_ylim(-3, 3)####################
### 4. Whitening ###
####################### Normal Whitening ###
data_whiten = data_decor/np.sqrt(eigval+1e-5)
data_x = data_whiten[:, 0]
data_y = data_whiten[:, 1]# Plot Curve
ax5 = fig.add_subplot(235)
ax5.scatter(data_x, data_y, s=5)   # 在ax3中画图
# ax5.set_xlabel('x')
# ax5.set_ylabel('y')
ax5.spines['left'].set_position('center')  # 设置轴的位置
ax5.spines['right'].set_color('none')  # 设置轴的颜色
ax5.spines['bottom'].set_position('center')   # 设置轴的位置
ax5.spines['top'].set_color('none')   # 设置轴的颜色
ax5.set_title('Whitening')
ax5.set_xlim(-3, 3); ax5.set_ylim(-3, 3)### ZCA-like Whitening ###
data_whiten_zca = data_whiten.dot(eigvec)
data_x = data_whiten_zca[:, 0]
data_y = data_whiten_zca[:, 1]# Plot Curve
ax6 = fig.add_subplot(236)
ax6.scatter(data_x, data_y, s=5)   # 在ax3中画图
# ax6.set_xlabel('x')
# ax6.set_ylabel('y')
ax6.spines['left'].set_position('center')  # 设置轴的位置
ax6.spines['right'].set_color('none')  # 设置轴的颜色
ax6.spines['bottom'].set_position('center')   # 设置轴的位置
ax6.spines['top'].set_color('none')   # 设置轴的颜色
ax6.set_title('ZCA-like Whitening')
ax6.set_xlim(-3, 3); ax6.set_ylim(-3, 3)plt.show()

实验结果:

注意,ZCA白化一般性的方法应该是用SVD,具体参考:CSDN-Python数据处理 PCA/ZCA 白化(UFLDL教程:Exercise:PCA_in_2D&PCA_and_Whitening)

【机器学习】专题学习丨2. 数据标准化 Normalization丨相关推荐

  1. 影像组学视频学习笔记(19)-数据标准化、归一化极简概述、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(19)主要介绍: 数据的标准化.归一化 为什么要进行标准化.归一化? 机器学习算法的要求 便于横向比较 # 标准化 (影像组学中最常用) ...

  2. Sklearn——对数据标准化(Normalization)

    文章目录 1.前言 2.数据标准化 3.对比标准化前后 3.1.数据标准化前 3.2.数据标准化后 1.前言 由于数据的偏差与跨度会影响机器学习的成效,因此正规化(标准化)数据可以提升机器学习的成效 ...

  3. 最大最小标准化 数值_分享丨实验数据标准化处理方法

    能力验证上报数据(n个数据)通过什么方法处理后进行的判定?这些问题都涉及数据标准化. 在数据分析之前,通常需要先将数据标准化,利用标准化后的数据进行数据分析.数据标准化也就是统计数据的指数化. 为什么 ...

  4. matlab矩阵0-1归化,数据标准化归化处理.doc

    数据标准化归化处理 数据的标准化 在数据分析之前,我们通常需要先将数据标准化(normalization),利用标准化后的数据进行数据分析.数据标准化也就是统计数据的指数化.数据标准化处理主要包括数据 ...

  5. python标准化_数据标准化与Python实现

    一.原理 数据标准化(Normalization):将数据按照一定比例进行缩放,使其落入到一个特定的小区间. 数据标准化的类别: Min-Max标准化 Z-Score标准化(Standard Scor ...

  6. 深度学习和大数据之间,主要是什么关系?

    1)深度学习(Deep Learning)只是机器学习(Machine Learning)的一种类别,一个子领域.机器学习 > 深度学习 2)大数据(Big Data)不是具体的方法,甚至不算具 ...

  7. python 数据标准化常用方法,z-score\min-max标准化

    <div class="article-copyright"><span class="creativecommons"><a r ...

  8. Python数据科学学习笔记之——机器学习专题

    机器学习专题 1.专题:朴素贝叶斯分类 1.1.朴素贝叶斯分类 朴素贝叶斯分类器建立在贝叶斯分类方法的基础上,其数学基础是贝叶斯定理--一个描述统计量条件概率关系的公式.在贝叶斯分类中,我们希望确定一 ...

  9. 【机器学习】专题学习丨1. 损失函数loss积累丨

    一.超分辨率重建loss 1.感知损失(Perceptual Losses) 论文地址 动机:MSE损失能够取得很高的PSNR,但是对图片高频部分(边缘)会过去平滑,如图: 方法:与比较pixel-w ...

最新文章

  1. 高文院士:为什么中国的AI发展必须要有开源开放平台?
  2. oraclf 复杂查询练习_刷完这些烧脑的SQL练习题,复杂查询才能熟能生巧
  3. python编程100例画图-Python练习实例56 | 画图,学用circle画圆形
  4. 使用docker运行微信wechat的安装脚本
  5. viper4android 生效,另一种让V4a音效在Poweramp上生效的方法
  6. 计算机考试单招考试面试,单招计算机面试题.docx
  7. Linux下获取CPUID、硬盘序列号与MAC地址
  8. asp exce l连接字符串_C++基础知识篇:C++ 字符串
  9. 如何运用所掌握的技术构建一个完整的业务架构
  10. webpack使用七
  11. ubuntu eclipse for php,ubuntu 安装 Eclipse 支持PHP
  12. 04_用户注册与自定义数据转换器Conventer
  13. ati 缺少关键性文件_ATI显卡优化
  14. javascript编程知识点
  15. 如何使android应用开机时自动启动,如何使APP开机自启动
  16. FB是磁珠的符号,磁珠有很高的电阻率和磁导率,他等效于电阻和电感串联
  17. 史上最详细的WordPress安装教程(六):安装WordPress
  18. mysql大翻页limt 1700,100慢优化方案
  19. 牛客练习赛85 A~D题题解
  20. 【JAVA】力扣第197场周赛代码+解题思路

热门文章

  1. Fisher线性分类器和贝叶斯决策
  2. 斩·赤红之瞳动漫网页 html源码 期末大作业 课程设计
  3. 计算机组成实验,利用虚拟平台
  4. 架构演化之SOA和微服务
  5. 嵌入式Linux设备驱动程序开发指南20(Linux USB设备驱动)——读书笔记
  6. Unity打包失败的Bug:Could not resolve com.tencent.mm.opensdk:wechat-sdk-android:+.
  7. double、long、unsigned、int、char类型数据所占字节数(C语言)
  8. 想给自己的实景三维模型做个案例集?Wish3D Earth再合适不过了
  9. 关于团队管理过程中的一些总结
  10. 企业微信hook接口开发,获取群组列表