规范化和特征缩放如何以及为什么起作用?

机器算法验证 机器学习 神经网络 协方差 正常化
2022-01-26 00:45:51

我看到许多机器学习算法在均值消除和协方差均衡方面效果更好。例如,神经网络趋向于更快地收敛,而 K-Means 通常通过预处理特征提供更好的聚类。我不认为这些预处理步骤背后的直觉会导致性能提高。有人可以解释一下吗?

4个回答

确实,机器学习中的预处理在某种程度上是一门非常黑的艺术。论文中并没有大量写下为什么几个预处理步骤对于使其工作至关重要。我也不确定是否在每种情况下都能理解。为了使事情变得更复杂,它在很大程度上取决于您使用的方法以及问题域。

一些方法例如是仿射变换不变的。如果您有一个神经网络并且只是对您的数据应用仿射变换,那么理论上该网络不会丢失或获得任何东西。然而,在实践中,如果输入居中且为白色,则神经网络效果最佳。这意味着它们的协方差是对角的,平均值是零向量。为什么它会改善事情?这只是因为神经网络的优化工作更优雅,因为隐藏的激活函数不会那么快饱和,因此在学习的早期不会给你接近零的梯度。

其他方法,例如 K-Means,可能会根据预处理为您提供完全不同的解决方案。这是因为仿射变换意味着度量空间的变化:两个样本的欧几里得距离在该变换之后将不同。

归根结底,您想了解您对数据所做的工作。例如,计算机视觉中的白化和样本标准化归一化是人类大脑在其视觉管道中所做的事情。

这只是将所有数据以相同的比例获取的情况:如果不同特征的比例差异很大,这可能会对您的学习能力产生连锁反应(取决于您使用的方法) . 确保标准化的特征值在其表示中隐含地对所有特征进行同等加权。

关于为什么输入归一化对 ANN 和 k-means 有用的一些想法、参考和图表:

K-均值

K-means 聚类在空间的所有方向上都是“各向同性的”,因此往往会产生或多或少的圆形(而不是细长的)聚类。在这种情况下,使方差不相等等同于对方差较小的变量赋予更多的权重。

Matlab 中的示例:

X = [randn(100,2)+ones(100,2);...
     randn(100,2)-ones(100,2)];

% Introduce denormalization
% X(:, 2) = X(:, 2) * 1000 + 500;

opts = statset('Display','final');

[idx,ctrs] = kmeans(X,2,...
                    'Distance','city',...
                    'Replicates',5,...
                    'Options',opts);

plot(X(idx==1,1),X(idx==1,2),'r.','MarkerSize',12)
hold on
plot(X(idx==2,1),X(idx==2,2),'b.','MarkerSize',12)
plot(ctrs(:,1),ctrs(:,2),'kx',...
     'MarkerSize',12,'LineWidth',2)
plot(ctrs(:,1),ctrs(:,2),'ko',...
     'MarkerSize',12,'LineWidth',2)
legend('Cluster 1','Cluster 2','Centroids',...
       'Location','NW')
title('K-means with normalization')

在此处输入图像描述

在此处输入图像描述

(仅供参考:我如何检测我的数据集是集群的还是非集群的(即形成一个集群

分布式集群

比较分析表明,分布式聚类结果取决于归一化过程的类型。

人工神经网络(输入)

如果输入变量是线性组合的,就像在 MLP 中一样,那么很少有必要对输入进行标准化,至少在理论上是这样。原因是输入向量的任何重新缩放都可以通过更改相应的权重和偏差来有效地撤消,从而使您获得与以前完全相同的输出。然而,标准化输入可以加快训练速度并减少陷入局部最优的机会有多种实际原因。此外,使用标准化输入可以更方便地完成权重衰减和贝叶斯估计。

人工神经网络(输入/输出)

你应该对你的数据做这些事情吗?答案是,这取决于。

通过改进优化问题的数值条件(参见 ftp://ftp.sas.com/pub/neural/illcond/illcond.html)并确保各种默认初始化和终止中涉及的值是适当的。标准化目标也会影响目标函数。

案例标准化应该谨慎对待,因为它会丢弃信息。如果这些信息无关紧要,那么标准化案例可能会很有帮助。如果这些信息很重要,那么标准化案例可能是灾难性的。


有趣的是,改变测量单位甚至可能导致人们看到一种非常不同的聚类结构:Kaufman、Leonard 和 Peter J. Rousseeuw。“在数据中寻找组:聚类分析简介。” (2005 年)。

在某些应用程序中,更改测量单位甚至可能导致人们看到非常不同的聚类结构。例如,表 3 中给出了四个假想人的年龄(以年为单位)和身高(以厘米为单位)并绘制在图 3 中。看起来 {A, B ) 和 { C, 0) 是两个分离良好的集群. 另一方面,当高度以英尺表示时,可以得到表 4 和图 4,其中明显的簇现在是 {A, C} 和 {B, D}。这个分区与第一个分区完全不同,因为每个主题都收到了另一个同伴。(如果以天为单位来衡量年龄,图 4 会更加扁平。)

为了避免这种对测量单位选择的依赖,可以选择对数据进行标准化。这会将原始测量值转换为无单位变量。

在此处输入图像描述 在此处输入图像描述

考夫曼等人。继续一些有趣的考虑(第 11 页):

从哲学的角度来看,标准化并不能真正解决问题。实际上,测量单位的选择会产生变量的相对权重。以较小的单位表示变量将导致该变量的范围更大,这将对最终的结构产生很大的影响。另一方面,通过标准化尝试赋予所有变量同等权重,以期实现客观性。因此,它可以由没有先验知识的从业者使用。然而,很可能某些变量在特定应用中本质上比其他变量更重要,然后权重的分配应该基于主题知识(例如,参见 Abrahamowicz,1985 年)。另一方面,已经尝试设计独立于变量规模的聚类技术(弗里德曼和鲁宾,1967)。Hardy 和 Rasson (1982) 的建议是寻找一个最小化集群凸包总体积的分区。原则上,这种方法对于数据的线性变换是不变的,但不幸的是,不存在用于其实现的算法(除了限于二维的近似值)。因此,标准化的困境在目前看来是不可避免的,本书中描述的程序将选择权留给了用户。Hardy 和 Rasson (1982) 的建议是寻找一个最小化集群凸包总体积的分区。原则上,这种方法对于数据的线性变换是不变的,但不幸的是,不存在用于其实现的算法(除了限于二维的近似值)。因此,标准化的困境在目前看来是不可避免的,本书中描述的程序将选择权留给了用户。Hardy 和 Rasson (1982) 的建议是寻找一个最小化集群凸包总体积的分区。原则上,这种方法对于数据的线性变换是不变的,但不幸的是,不存在用于其实现的算法(除了限于二维的近似值)。因此,标准化的困境在目前看来是不可避免的,本书中描述的程序将选择权留给了用户。

有两个单独的问题:

a) 学习正确的函数,例如 k-means:输入尺度基本上指定相似度,因此找到的集群取决于尺度。正则化-例如l2权重正则化-您假设每个权重应该“同样小”-如果您的数据没有“适当”缩放,则情况并非如此

b) 优化,即通过梯度下降(例如大多数神经网络)。对于梯度下降,您需要选择学习率......但是一个好的学习率(至少在第一个隐藏层)取决于输入缩放:小的 [相关] 输入通常需要更大的权重,所以你想要更大的学习那些权重的速率(更快地到达那里),以及大输入的 vv ......因为你只想使用一个学习率,你重新调整你的输入。(出于同样的原因,美白即去核也很重要)