规范化(normalize)到底是什么,以及哪些算法需要规范化

这是一篇从笔记里摘录的知识点,因为发现在不同的文献或者文章里,对图片数据规范化、归一化的具体方法都不一样,很是困惑。下面这几种,都是广义上的数据规范化

  • Data normalization
  • Data standarization
  • Data streching
    总体上来说,standarization与streching都是规范化的选择,只不过他们作用到数据上导致的结果有些许不同,所以有了更为细致的说法。

Data normalization

或者叫做 data (re-)scaling, 数据被映射到一个新定义的范围(通常是[0,1],或[-1,1]),当数据来自不同的数据库,想用同一个算法对其进行处理时,这种方法很有用。
最标准的定义是

I n e w = I − m i n ( I ) m a x ( I ) − m i n ( I ) ∗ ( n e w m a x − n e w m i n ) I_{new}=\frac{I - min(I)}{max(I)-min(I)}*(newmax - newmin) Inew=max(I)min(I)Imin(I)(newmaxnewmin)
当newmax=1, newmin=0时,(即数据被映射到[0,1]之间)
I n e w = I − m i n ( I ) m a x ( I ) − m i n ( I ) I_{new}=\frac{I - min(I)}{max(I)-min(I)} Inew=max(I)min(I)Imin(I)
也被叫做Min-Max Scaling

还有一个与standarization很类似,需要注意区别的是 Mean Normalization,这可以将数据映射到[-1,1]的范围之间,同时具有均值=0的特性注意区别,standarization可以使数据均值为0,方差为1
I n e w = I − m e a n ( I ) m a x ( I ) − m i n ( I ) I_{new}=\frac{I - mean(I)}{max(I)-min(I)} Inew=max(I)min(I)Imean(I)
(另外一提,下面这种也可以被称为数据的规范化,|| I ||代表L1 规范化或L2规范化:
I n e w = I ∣ ∣ I ∣ ∣ I_{new}=\frac{I}{||I||} Inew=II
)

Data standarization

是另一种规范化数据方法,standarization和Mean Normalization在很多机器学习中算法中用得多,数据标准化保证了均值为0,方差为1的高斯分布。
I n e w = I − m e a n ( I ) s t d ( I ) I_{new}=\frac{I - mean(I)}{std(I)} Inew=std(I)Imean(I)

Data streching

(当处理图片时,Data streching也叫做直方图拉伸),数据被截断至给定范围之间。
I n e w = I I n e w [ I < a ] = a I n e w [ I > b ] = b I_{new}=I\\ I_{new}[I < a]=a\\ I_{new}[I > b]=b Inew=IInew[I<a]=aInew[I>b]=b

哪些算法需要数据的scaling

之所以很多机器学习算法需要进行数据的拉伸,是因为算法在计算时使用了数据的欧式距离
下面这些算法在使用前记得进行数据的scaling工作

  • k-nearest neighbors
    使用欧式距离的k临近算法对于数据的大小(magnitude)很敏感,因此在使用之前记得将所有特征缩放到大小相同。
  • PCA
    主成分分析算法会倾向于找到方差最大的特征,而magnitude大的数据也会有更大的方差。如果不进行数据的scaling,pca就会偏向于magnitude大的数据。
  • 使用了梯度下降的算法
    因为magnitude大的数据,其下降的速度将会小于magnitude小的数据。这会造成极致点寻找过程中低效的震荡现象。
  • 使用了正则化参数的算法
  • 使用了ridge and lasso regression的算法

哪些算法不需要数据的scaling

  • 基于树的模型
    因为基于树的模型并不依赖于距离
  • 类似于Linear Discriminant Analysis,和Naive Bayes的算法
    这些算法在设计的时候,就对特征的大小进行了有效的处理,会分配给不同的特征对应的权重。

你可能感兴趣的:(机器学习,深度学习)