想必各位用过数据挖掘算法的朋友都会遇到一个问题,就是如何对分类变量进行量化,这个在回归建模或求距离的时候经常遇见。

在此,我把这个问题分解成三个子问题,如下:

(1)对有序分类变量的量化。

(2)对逻辑变量的量化。

(3)对无序分类变量的量化。

首先,对有序分类变量的量化,这个比较简单,常用顺序编号代替具体的分类来量化。比如一次比赛有三个名次。小明得了第一名,小强得了第三名,小方得了第二名。对于这种情况,小明、小强、小方的名次可以用一个向量来表示A=(第一名,第三名,第二名)。为A编号得到向量B=(1,3,2)。在进行分析时,我们直接使用B就可以了。这是针对有序分类变量量化的一种处理思路。

其次,对于逻辑变量的量化,我们直接将逻辑值分别用0或1表示即可。但是需要注意到具体属性的业务含义,以免弄错。比如,属性‘是否男生’,对于值(男,女,男)这样的值,可以得到量化后的值(1,0,1)。同样的序列,如果针对属性‘是否女生’,则它的量化结果为(0,1,0)。这两个量化结果是完全不一样的。马上就会有人提出这样的问题,”如果属性不是逻辑判断,而是<性别>,那该怎么量化呢“,这其实是接着下面要讨论的量化方法。

最后,这里简单介绍一种针对无序分类变量的量化方法。就拿上一段落的一个问题来说,男和女表示性别,然后对这样的一个序列(男,女,男,男)该如何量化呢?我们可以这样考虑:这里性别为男的出现3次,性别为女的出现1次,男女出现次数之比为3:1。也就是说对性别这个属性而言,男的权重比女的权重要大。我们可以尝试将(男,女,男,男)序列,量化为(3,1,3,3),而通过求秩变为(2,1,2,2),等等。

至于效果这里不作验证,但我觉得既然是开放性的思考,思考自然也可以海阔天空,也希望各位有识之士多提意见~