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

《Mahout in Action》一书中提到,归一化可以略微提高准确性。能否有人解释一下原因,谢谢!


回答:

归一化并非总是必要的,但它很少会造成损害。

一些例子:

K-means

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

Matlab中的示例:

X = [randn(100,2)+ones(100,2);...     randn(100,2)-ones(100,2)];% 引入去归一化% 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 onplot(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

(仅供参考:如何检测我的数据集是否聚类或未聚类(即形成单一聚类))

分布式聚类

比较分析显示,分布式聚类结果取决于归一化程序的类型。

人工神经网络(输入)

如果输入变量是线性组合的,如在MLP中,那么理论上至少很少需要标准化输入。其原因是任何输入向量的重新缩放都可以通过改变相应的权重和偏置来有效地撤销,从而使您得到与之前相同的输出。然而,出于各种实际原因,标准化输入可以使训练更快,并减少陷入局部最优的几率。此外,使用标准化输入可以更方便地进行权重衰减和贝叶斯估计。

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

您应该对数据进行这些操作吗?答案是,这取决于情况。

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

对案例进行标准化应谨慎处理,因为它会丢弃信息。如果这些信息无关紧要,那么标准化案例可能非常有帮助。如果这些信息很重要,那么标准化案例可能会带来灾难性的后果。


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

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

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

enter image description hereenter image description here

Kaufman等人继续提出了一些有趣的考虑(第11页):

从哲学的角度来看,标准化并没有真正解决问题。实际上,测量单位的选择引起了变量的相对权重。用较小的单位表达一个变量会导致该变量的范围变大,从而对结果结构产生较大的影响。另一方面,通过标准化,人们试图给所有变量赋予相同的权重,希望达到客观性。因此,它可能被没有先验知识的从业者使用。然而,在特定应用中,某些变量可能本质上比其他变量更重要,那么权重的分配应该基于主题知识(例如,Abrahamowicz, 1985)。另一方面,已经尝试设计出与变量规模无关的聚类技术(Friedman和Rubin, 1967)。Hardy和Rasson(1982)的提议是寻找一个最小化聚类凸包总体积的划分。原则上,这种方法对于数据的线性变换是不变的,但遗憾的是目前没有实现它的算法(除了一个仅限于二维的近似)。因此,目前标准化的困境似乎是不可避免的,本文描述的程序将选择权留给用户。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注