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


60

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

Answers:


25

这只是以相同的比例获取所有数据的一种情况:如果不同功能的比例截然不同,则会对您的学习能力产生连锁反应(取决于您使用的是哪种方法) 。确保标准化特征值在其表示中对所有特征进行隐式加权。


3
“这可能对您的学习能力产生连锁反应”是什么意思,也许您可​​以对此进行扩展?
查理·帕克

14
这并不是一个很好的解释。为了获得真正的理解,您至少需要更深入的解释。
Zelphir Kaltstahl '16年

我需要参考我的论文
x-rw

40

的确,机器学习中的预处理在某种程度上是非常黑的。为什么要进行几个预处理步骤对于使其正常工作并没有太多的书面记录。我也不确定是否在每种情况下都可以理解。为了使事情变得更复杂,它很大程度上取决于您使用的方法以及问题域。

一些方法例如是仿射变换不变的。如果您具有神经网络,并且仅对数据进行仿射变换,则该网络理论上不会丢失或获得任何收益。但是,实际上,如果输入居中且为白色,则神经网络的效果最佳。这意味着它们的协方差是对角线的,平均值是零向量。为什么它可以改善状况?这仅仅是因为神经网络的优化工作更为顺畅,因为隐藏的激活函数不会很快饱和,因此在学习初期不会为您提供接近零的梯度。

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

归根结底,您想了解您对数据所做的事情。例如,计算机视觉中的美白和明智的样本归一化是人脑在其视觉管道中所做的同样出色的事情。


17

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

K-均值

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

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将会更加平坦。)

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

在此处输入图片说明 在此处输入图片说明

Kaufman等。继续进行一些有趣的考虑(第11页):

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


6

为什么功能缩放有效?我可以举一个例子(来自Quora

让我从一般的ML角度来回答这个问题,而不仅仅是神经网络。当您收集数据并提取要素时,通常会以不同的比例收集数据。例如,公司员工的年龄可能在21-70岁之间,他们所居住房屋的大小为 Sq英尺,工资可能在。在这种情况下,如果您使用简单的欧几里得指标,年龄功能将不会发挥任何作用,因为它比其他功能小了几个数量级。但是,它可能包含一些可能对任务有用的重要信息。在这里,您可能希望将特征独立地归一化为相同的比例,例如[0,1],以便它们在计算距离时做出同等的贡献。30000


4
如果您引用Quora的帖子,则确实需要链接到源。
马修·德鲁里

5

有两个单独的问题:

a)学习正确的函数,例如k均值:输入尺度基本上指定了相似性,因此找到的聚类取决于尺度。正则化-例如l2权重正则化-您假设每个权重应该“相等小”-如果您的数据未“适当地”按比例缩放,则不会如此

b)优化,即通过梯度下降(例如大多数神经网络)进行优化。对于梯度下降,您需要选择学习率...但是好的学习率(至少在第一隐藏层上)取决于输入比例:较小的[相关]输入通常将需要较大的权重,因此您希望进行较大的学习权重(更快到达目的地)的速度,大输入的vv ...由于您只想使用单一学习率,因此您可以调整输入的比例。(出于相同的原因,美白即去壳也很重要)



1

本文仅讨论k-means,但它很好地解释和证明了数据预处理的要求。

标准化是数据挖掘中的中央预处理步骤,用于将要素或属性的值从不同的动态范围标准化到特定范围。在本文中,我们分析了三种标准化方法在常规K均值算法上的性能。通过在传染病数据集上比较结果,发现z-score标准化方法获得的结果比min-max和十进制缩放标准化方法更有效。

...如果存在某些特征,这些特征具有较大的大小或较大的可变性,则这些特征会严重影响聚类结果。在这种情况下,数据标准化将是缩放或控制数据集可变性的重要预处理任务。

……特征必须是无量纲的,因为维度特征范围的数值取决于测量单位,因此,选择测量单位可能会显着改变聚类的结果。因此,在不对数据集进行归一化的情况下,不应使用欧几里得距离之类的距离度量

资料来源: http : //maxwellsci.com/print/rjaset/v6-3299-3303.pdf


1

预处理通常会起作用,因为它会删除与您要解决的分类问题无关的数据特征。例如,考虑对来自不同扬声器的声音数据进行分类。响度(幅度)的波动可能无关紧要,而频谱才是真正相关的方面。因此,在这种情况下,归一化幅度将对大多数ML算法真正有用,因为它会删除不相关的数据方面,并会导致神经网络过度拟合虚假模式。


1

我认为这样做很简单,以便在学习分类器时,具有较大值的特征不会掩盖具有较小值的特征的效果。如果具有较小值的特征实际上有助于类的可分离性,则这尤其重要。例如逻辑回归等分类器将难以学习决策边界,例如,如果它存在于特征的微观级别,而我们具有数百万个数量级的其他特征还可以帮助算法更好地收敛。因此,将这些编码到我们的算法中时,我们不会有任何机会。对于分类器而言,以这种方式学习特征的贡献(权重)要容易得多。当使用欧几里得范数时,K也同样适用(因规模而引起的混淆)。某些算法无需标准化也可以工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.