1.归一化可以加快梯度下降法求解最优解的速度。当特征之间的数值变化范围相差太大时,会使得收敛路径呈Z字型,导致收敛太慢,或者根本收敛不到最优解的结果。2.归一化可以提高计算精度。一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。因此,可以看出,当算法需要使用梯度下降的方法求解最优解(比如逻辑回归)或者该算法计算样本点距离时(比如KNN)必须使用归一化处理。归一化的方法有线性归一化,标准差标准化,非线性归一化,最常用的是标准差标准化, 概率模型(树形模型)不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、RF。而像Adaboost、SVM、LR、Knn、KMeans之类的最优化问题就需要归一化。
1)线性归一化
这种归一化方法比较适用在数值比较集中的情况,数据点没有因为特征的基本性质而产生较大差异,即确保数据处于同一数量级(同一量纲),提高不同特征数据的可比性。这种方法有个缺陷,如果max和min不稳定,很容易使得归一化结果不稳定,使得后续使用效果也不稳定。实际使用中可以用经验常量值来替代max和min。
把每个特征向量(特别是奇异样本数据)的值都缩放到相同数值范围。如[0,1]或[-1,1]。最常用的归一化形式就是将特征向量调整为L1范数(就是绝对值相加),使特征向量的数值之和为1。L2范数就是欧几里得之和。
2)标准差标准化 经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:
其中μ为所有样本数据的均值,σ为所有样本数据的标准差。
3)非线性归一化 经常用在数据分化比较大的场景,有些数值很大,有些很小。通过一些数学函数,将原始值进行映射。该方法包括 log、指数,正切等。需要根据数据分布的情况,决定非线性函数的曲线,比如log(V, 2)还是log(V, 10)等。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)