三种特征归一化的方法之SumNormalizer

来源:互联网 发布:淘宝产品参数 编辑:程序博客网 时间:2024/06/10 18:34

特征归一化(Normalizer):就是将一条记录中各个特征取值范围固定到【0,1】之间。从而使每一个特征值都在一个范围内。不至于各个特征值之间相差较大的范围。


特征归一化主要有3种方法:

1.总和归一化(sumNormalizer):就是计算所有文档同一个特征值的总和。即每一个特征下标都有一个总和。

2. zscore归一化(ZscoreNormalizer):就是我们大学中学的转为标准正态化。利用均值和方差。

3.linear归一化(LinearNormalizer):就是利用最大值和最小值。


一、SumNormalizer归一化:


1.先简单来说一下这个sumNormalizer的归一化操作的原理:如何将各个特征值化成【0,1】之间的范围之间的数

1.1 一个查询中可能包含多条记录(就是特征向量)。我们将多条记录中相同特征下标的特征值相加。(将多条记录(是同一个查询)中特征下标为【1】的特征值加在一起。)。我们就算出n个(一共有n个特征)数。

1.2 然后将每一个特征值除以对应的下标的总和。我们就会得到一个【0,1】之间的数,将这个值作为新的特征值。


2.说完原理之后,来看一个例子:(假如一共有两个查询,每个查询中有3个特征向量,每一个特征向量包含5个

特征),特征向量如下:

第一个查询1:

2 qid:1 1:3 2:3 3:0 4:7 5:167

2 qid:1 1:3 2:0 3:3 4:5 5:416

0 qid:1 1:3 2:0 3:2 4:7 5:156

第二个查询

2 qid:2 1:1 2:3 3:0 4:156 5:4

2 qid:2 1:2 2:0 3:3 4:406 5:2

0 qid:2 1:3 2:0 3:2 4:146 5:1


2.1 我们先进行1.1的操作,

将同一个查询(查询1)中下标为1(也就是那一列的值)的相加。也就是3+3+3=9。然后将下标为2的相加,也就是3+0+0=3,以此类推:我们可以得到5个值。分别为:9, 3, 5, 19, 739

2.2 我们进行1.2中的操作。

查询1中每一个特征除以对应的sum和。我们将下标为1(也就是第一列的值)的每一个值除以9。第一个就是3/9=0.33333334。第二个就是3/9=0.33333334。第三个就是3/9=0.33333334。我们在将下标为2(也就是第二列)的每一个值除以3,第一个就是3/3=1,第二个就是0/3=0,第三个就是0/3=0。

以此类推:我们就可以得到新的特征值(这些特征值都在【0,1】的范围之间)


sumNormalizer之后的特征向量值:

第一个查询1:

2 qid:1 1:0.33333334 2:1.0 3:0.0 4:0.36842105 5:0.22598106

2 qid:1 1:0.33333334 2:0.0 3:0.6 4:0.2631579 5:0.5629229

0 qid:1 1:0.33333334 2:0.0 3:0.4 4:0.36842105 5:0.21109608


第二个查询2:

2 qid:2 1:0.166666672:1.0 3:0.04:0.22033899 5:0.5714286

2 qid:2 1:0.333333342:0.0 3:0.64:0.57344633 5:0.2857143

0 qid:2 1:0.52:0.0 3:0.44:0.2062147 5:0.14285715


原创粉丝点击