【发布时间】:2013-03-24 12:28:53
【问题描述】:
在 Mahout in Action 中有描述,归一化可以稍微提高准确性。 谁能解释一下原因,谢谢!
【问题讨论】:
-
正在讨论哪种学习方法或哪种模型? (例如感知器、kmeans 等)
-
朴素贝叶斯,K-means...
标签: machine-learning nlp classification mahout
在 Mahout in Action 中有描述,归一化可以稍微提高准确性。 谁能解释一下原因,谢谢!
【问题讨论】:
标签: machine-learning nlp classification mahout
由于集群在形成集群时使用距离度量(如欧几里得),因此对输入进行标准化/归一化以确保小幅度的重要输入不会在集群过程中失去其重要性。
示例:
√(3-1)^2+(1000-900)^2 ≈ √(1000-900)^2
这里,(3-1) 对结果几乎没有贡献,因此模型认为与这些值对应的输入是无效的。
同样,大多数(不是全部)分类器也使用距离度量进行分类。因此,在这些分类器中标准化输入数据是一种很好的做法。
归一化在直观重要的参数值较小时确实很有帮助。
【讨论】:
其背后的原因是有时不同变量的测量本质上是不同的,因此通过标准化来调整结果的方差。 例如,在一组儿童的年龄 (x) 与体重 (y) 比较中,年龄可以从 1 岁到 10 岁,体重可以从 10 磅到 100 磅。 如果您不对图形进行规范化,则会在图形右侧产生两个非常奇怪的长椭圆形,因为两个比例都需要从 1 到 100。 归一化会给两个轴一个 1 到 100 的比例,因此图形将显示更有意义的集群。
【讨论】:
标准化并不总是需要,但它很少会造成伤害。
一些例子:
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')
(仅供参考:How can I detect if my dataset is clustered or unclustered (i.e. forming one single cluster)
对比分析表明分布式聚类结果 取决于标准化过程的类型。
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) 是两个分离良好的集群。另一方面,当高度为 以英尺表示 1 获得表 4 和图 4,其中明显 集群现在是 {A, C} 和 {B, D}。这个分区完全 与第一个不同,因为每个主题都收到了另一个 伴侣。 (如果年龄有 以天为单位。)
为了避免这种对测量单位选择的依赖,我们有 标准化数据的选项。这将原始 测量无单位变量。
Kaufman et al. 继续一些有趣的考虑(第 11 页):
从哲学的角度来看,标准化并不真正 解决这个问题。事实上,测量单位的选择会引起 变量的相对权重。用较小的形式表示变量 单位将导致该变量的范围更大,然后 对生成的结构有很大的影响。另一方面,由 标准化尝试赋予所有变量相同的权重,在 实现客观性的希望。因此,它可以由一个 没有先验知识的从业者。不过,很可能是 某些变量在本质上比其他变量更重要 特定的应用,然后权重的分配应该是 基于主题知识(参见,例如,Abrahamowicz,1985)。在 另一方面,有人尝试设计聚类 独立于变量规模的技术 (弗里德曼和鲁宾,1967)。 Hardy 和 Rasson (1982) 的提议是 搜索最小化总体积的分区 簇的凸包。原则上这种方法是不变的 关于数据的线性变换,但不幸的是 不存在用于其实现的算法(除了 限于二维的近似值)。因此, 标准化的困境在目前看来是不可避免的 本书中描述的程序将选择权留给用户。
【讨论】:
gscatter 来绘制 k-means 示例。