为什么矢量归一化可以提高聚类和分类的准确性?

时间:2013-04-03 01:08:50

标签: machine-learning nlp classification mahout

Mahout in Action中描述了规范化可以略微提高准确性。 任何人都可以解释原因,谢谢!

3 个答案:

答案 0 :(得分:39)

并不总是需要标准化,但它很少受到伤害。

一些例子:

K-means

  

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')

enter image description here

enter image description here

(仅供参考:How can I detect if my dataset is clustered or unclustered (i.e. forming one single cluster

Distributed clustering

  

比较分析表明分布式聚类结果   取决于规范化程序的类型。

Artificial neural network (inputs)

  

如果输入变量是线性组合的,就像在MLP中一样,那么它就是   标准化输入很少是严格必要的,至少在   理论。原因是任何重新缩放输入向量都可以   通过改变相应的权重和偏见有效地撤消,   为您留下与之前完全相同的输出。然而,   为什么标准化输入有多种实际原因   可以加快训练速度,减少陷入困境的可能性   当地最佳。此外,可以进行权重衰减和贝叶斯估计   使用标准化输入更方便。

Artificial neural network (inputs/outputs)

  

您是否应该对数据执行以下任何操作?答案是,它   取决于。

     

标准化输入或目标变量往往会进行培训   过程通过改善数值条件表现得更好(见   ftp://ftp.sas.com/pub/neural/illcond/illcond.html)优化   问题并确保涉及的各种默认值   初始化和终止是合适的。标准化目标   也可以影响目标函数。

     

应谨慎对待案件的标准化,因为它   丢弃信息。如果那些信息无关紧要的话   标准化案例可能非常有用。如果该信息是   重要的是,标准化案件可能是灾难性的。


有趣的是,更改测量单位甚至可能导致人们看到一个非常不同的聚类结构:Kaufman, Leonard, and Peter J. Rousseeuw.. "Finding groups in data: An introduction to cluster analysis." (2005).

  

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

     

为了避免这种对测量单位选择的依赖,人们就有了   标准化数据的选项。这会转换原件   对无单位变量的测量。

enter image description here enter image description here

Kaufman et al.继续提出一些有趣的考虑因素(第11页):

  

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

答案 1 :(得分:1)

背后的原因是有时不同变量的测量结果本质上是不同的,因此通过标准化来调整结果的方差。 例如,在一组儿童的年龄(x)vs体重(y)比较中,年龄可以从1到10,体重可以从10磅到100。 如果你不规范化图形将在图形的右边产生两个非常奇怪的长椭圆形状,因为两个尺度需要从1到100。 标准化将使两个轴都具有1到100的比例,图形将显示更有意义的聚类。

答案 2 :(得分:0)

由于聚类在形成聚类时使用距离度量(如欧几里得),因此执行输入的标准化/归一化以确保小幅度的重要输入不会在聚类过程中失去其重要性。

<块引用>

示例:

√(3-1)^2+(1000-900)^2≈√(1000-900)^2

这里,(3-1)对结果几乎没有贡献,因此与这些值对应的输入被模型认为是无用的。

同样,大多数(不是全部)分类器也使用距离度量进行分类。因此,在这些分类器中对输入数据进行归一化是一个很好的做法。

结论

<块引用>

归一化在直觉上重要的参数值很小的时候真的很有帮助。