Page 246 - 《软件学报》2020年第10期
P. 246
3222 Journal of Software 软件学报 Vol.31, No.10, October 2020
中出现的次数越少(idf(t,c)值越大),则该特征对类属性 c 的鉴别性越强.即,类属性为 c 的特征 t 的 d(t,c)值越大,
其对类属性 c 的鉴别性越强.为了给出我们定义的特征的鉴别性度量公式的直观解释,下面我们通过一个计算
实例来与其他研究人员常使用的 tf-idf 公式进行对比.
Table 2 A calculation example of formula tf-idf
表 2 tf-idf 公式计算实例
t 1 t 2 t 3 N i
c 1 5 10 90 100
50 100 2 100
c 2
表 2 中 t i 表示第 i 个特征,其所在列中数字表示包含该特征的各类别实例数,c i 表示第 i 类,N i 表示数据集中
第 i 类实例的个数.这里,为了计算方便,我们假定每个特征在每个包含该特征的实例中的出现频数为 1.
Senin 等人 [19] 和 Schafer [28] 使用的 tf-idf 计算公式虽有小的不同,但本质上是一致的.这里,我们使用 Schafer
在文献[28]中的公式进行说明.基于文献[28]中的公式,特征 t 1 对类属性 c 1 的 tf 值为该特征在 c 1 类中频数取对数
加 1,即,tf(t 1 ,c 1 )=1+ln(5)=2.6;idf 值为数据类别总数和包含该特征的类别数的比取对数加 1,即,idf(t 1 ,c 1 )=1+
ln(2/2)=1;特征 t 1 对类属性 c 1 的鉴别性评价值为 df(t 1 ,c 1 )=2.6×1=2.6.
同理可得:
tf ( , ) 1 ln(50)t c =+ = 4.9; idf ( , )1 ln(2/ 2)1;t c = + 1 2 = df (, )t c = 2 4.9 1 4.9,× =
2
1
1
tf ( , ) 1 ln(90)t c =+ = 5.5; idf (, ) 1 ln(2/ 2) 1;t c = + 3 1 = df ( , )t c = 3 1 5.5 1 5.5,× =
1
3
tf (, ) 1 ln(2) 1.7;t c =+ = idf ( , )1 ln(2/ 2)1;t c = + 3 2 = df ( , ) 1.7 1 1.7.t c = 2 × =
3
2
3
上面的计算公式主要存在两个问题.
(1) 在 tf 值的计算过程中直接对频数取对数,极大地缩小了频数间的差异.例如,c 1 类中特征 t 1 和 c 2 类中特
征 t 1 的频数比为 1:10,而计算 tf 值后比例变为 1:1.9.
(2) idf 值不能准确反映特征的鉴别性.例如,特征 t 1 和 t 3 对各类别的 idf 值都为 1,这导致实际的鉴别性评价
值仅为 tf 值,不能准确反映这两个特征对不同类别的鉴别性.这是由于 Schafer 在文献[28]中的 idf 计算公式使
用类属性取值个数和包含某特征的类的个数的比值来衡量特征对于某一类的鉴别性.然而,实际上,由于类内变
异的存在,某类中的少数实例中可能具有其他类的特征,这会导致 idf 度量出现偏差.
下面我们介绍基于本文定义的 tf-idf 计算公式得到的特征鉴别性评价值.
首先,由于我们假定每个包含特征 t 的实例中特征 t 出现的频数都为 1,因此,某类特征的最大频数不超过该
类实例数.为了简便起见,在计算过程中,我们假定各类特征的最大频数为该类实例数.同时,根据表 2,我们可知
类别为 c 1 的特征 t 1 的频数为 5,则其频率为 5/100=0.05,因此 tf 值为 tf(t 1 ,c 1 )=ln(1+0.05)=0.05.
由于在其他类实例(即,c 2 类,该类实例数为 100)中包含类 c 1 的特征 t 1 的实例数为 50,因此,根据公式(9),idf
值为 idf(t 1 ,c 1 )=ln[(200–100+1)/51]=0.7.进而可得 df(t 1 ,c 1 )=0.05×0.7=0.035.
同理可得:
tf (, )t c = 0.4; idf (, )t c = 2.8; df (, )t c = 2 0.4 2.8 1.12,× =
1
1
1
2
2
tf (, )t c = 0.6; idf (, )t c = 3.5; df (, )t c = 3 1 0.6 3.5× = 2.1,
1
3
1
3
tf (, )t c = 0.02; idf (, )t c = 0.1; df ( , )t c = 3 2 0.02 0.1 0.002.× =
3
2
3
2
从上面的计算结果可以看出,基于本文的计算公式,特征 t 1 对类 c 1 和 c 2 的 tf 值比为 1:8,与实际的频数比 1:10
接近,更准确地反映了特征和各类别的相关性.另一方面,特征 t 3 的对类别 c 1 和 c 2 的 idf 值分别为 3.5 和 0.1.从中
可以看出,特征 t 3 对类别 c 1 具有更强的鉴别性.这样就有效解决了由简单地通过特征所属的类的个数进行鉴别
性评价所导致的误差.因此,从计算得到的 df(t,c)值更容易区分同一特征对不同类别的鉴别性.例如,基于 Schafer
等人给出的公式,特征 t 3 对类别 c 1 和 c 2 的 df(t,c)值比为 3.2:1,而基于本文定义的公式比值为 1050:1.综上所述,
利用本文定义的鉴别性度量公式,更有利于区分各类别的鉴别性特征.