机器学习,名义数据归一化

时间:2017-01-20 09:49:05

标签: machine-learning cluster-analysis normalization k-means

我正在研究kmeans聚类。 我有3d数据集作为no.days,频率,食物 - > day通过& std偏差(SD)或更好地说标准化。这给了我[-2到14]

的范围

- >对于频率和食物,我的数据集中的NOMINAL数据由DIVIDE BY MAX(x / max(x))归一化,这给出了范围[0到1]

问题是kmeans只考虑日轴进行分组,因为在这个轴上有明显的间隙b / w点,几乎忽略了频率和食物中的另外两个(我认为是因为频率和食物的差距可以忽略不计dims)。

如果我仅在日轴上单独应用kmeans(1D),我会得到与我在3D(天,频率,食物)上应用的完全相似的结果。

"之前,我也做了x / max(x)几天但不能接受"

所以我想知道有没有办法规范其他两个频率和食物的名义数据,我们可以根据DAY轴进行公平缩放。

food => 1,2,3 频率=> 1-36

2 个答案:

答案 0 :(得分:0)

您可以尝试使用Value Difference Metric,VDM(或任何变体)将您遇到的几乎所有名义属性转换为有效数字表示。之后,您可以像往常一样将标准化应用于整个数据集。

原始定义如下:

http://axon.cs.byu.edu/~randy/jair/wilson1.html

虽然在其他地方找到每种通用语言的实现应该很容易。

N.B。对于有序的名义属性,例如你的“频率”,大多数情况下它足以将它们表示为整数。

答案 1 :(得分:0)

归一化的关键不仅仅是使值变小。

目的是具有可比较的值范围 - 这对于不同单位的属性来说确实很难,并且对于名义数据来说可能是不可能的。

对于你的数据类型,k-means可能是最差的选择,因为k-means 依赖连续值来工作。如果您有名义价值,通常很容易卡住。所以我的主要建议是不要使用k-means

对于数据的k-means到wprk,每个属性的差值必须相同。所以1天的差异=食物q和食物之间的差异2.而且因为k-means是基于平方误差,食物1与食物3的差异是食物与食物2的4倍。

除非你拥有上述财产,否则不要使用k-means。