这是一篇从笔记里摘录的知识点,因为发现在不同的文献或者文章里,对图片数据规范化、归一化的具体方法都不一样,很是困惑。下面这几种,都是广义上的数据规范化
- 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)I−min(I)∗(newmax−newmin)
当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)I−min(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)I−mean(I)
(另外一提,下面这种也可以被称为数据的规范化,|| I ||代表L1 规范化或L2规范化:
I
n
e
w
=
I
∣
∣
I
∣
∣
I_{new}=\frac{I}{||I||}
Inew=∣∣I∣∣I
)
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)I−mean(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的算法
这些算法在设计的时候,就对特征的大小进行了有效的处理,会分配给不同的特征对应的权重。