文本分类与垃圾邮件过滤技术研究
1. 文本分类中的最大熵模型与特征选择
1.1 相关概念引入
在文本分类任务里,为衡量特征重要性,引入相对文档频率的概念。它指的是某一特征在一个类别中的文档频率与该类别平均文档频率的比值。具体公式如下:
- 对于相关类别:$relativeDF(t,y)=\frac{a}{a_y}$
- 对于不相关类别:$relativeDF(t,\tilde{y})=\frac{b}{b_y}$
其中,$a$ 和 $b$ 分别为相关和不相关类别的平均文档频率,计算方式为:
- $a = \frac{1}{M}\sum_{t=1}^{M}ta$
- $b = \frac{1}{M}\sum_{t=1}^{M}tb$
这里的 $M$ 是特征选择前的原始特征数量。有了相对文档频率,就可以定义特征的计数差异得分,即两个相对文档频率的差值:$CD(t)=\frac{a}{a_y}-\frac{b}{b_y}$
直观来讲,相对文档频率衡量了一个特征相对于某一类别的平均特征的重要性。特征越罕见,其相对文档频率越低;特征越常见,相对文档频率越高。计数差异倾向于选择在某一类别中相对文档频率高于另一类别的特征。若一个特征在两个类别中都很常见,其计数差异得分会降低。
1.2 最大熵建模
1.2.1 特征函数
借鉴前人方法,将特征表示为特征函数。对于文本分类,为每个词 - 类别组合定义特征函数:
[
f_{w,c}(d,y)=\begin{cases}
\frac{N(d,w)}{N(d)} & \text{if } y = c \
0 & \text{otherwise}
\end{cases}
]
其中,$N(d,w)$ 是词 $w$ 在文档 $d$ 中出现的次数,$N(d)$ 是文档 $d$ 中的词数。
1.2.2 对数线性模型
最大熵模型通常采用以下参数形式:
[
p(c,x)=\frac{1}{Z}\prod_{i=1}^{K}\alpha_i^{f_i(c,x)}
]
其中,$K$ 是特征函数的数量,$\alpha_i$ 是特征函数 $f_i$ 的权重,$Z$ 是归一化常数。该模型也被称为对数线性模型,因为对两边取对数后,可得到特征函数的线性组合。此模型允许特征重叠或相关,不仅可以使用单个词作为特征,还能扩展到词对、更长的短语,甚至非文本特征。同时,通过为不同特征函数分配权重 $\alpha_i$,可以进一步区分特征。当 $\alpha_i = 1$ 时,该特征在组合过程中被消除。
1.3 实验结果
1.3.1 分类性能
使用 Reuters RCV1 数据集进行实验,该数据集包含超过 80 万篇新闻文章,聚焦于 103 个类别的主题方案。采用 F1.0 指标衡量分类性能,对于多类别情况,使用宏平均和微平均。实验中选择分层分类,因为它更适合分层方案。使用改进的迭代缩放算法更新权重参数,为避免过拟合,训练 50 次后终止。
不同特征选择方法的实验结果如下表所示:
| 特征数量 | DF | χ² | CD | LR | MI | IG | OC | TD |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| 100 |.601 |.267 |.676 |.292 |.061 |.448 |.628 |.599 |
| 500 |.741 |.553 |.769 |.703 |.067 |.736 |.764 |.728 |
| 1k |.774 |.717 |.795 |.745 |.094 |.757 |.791 |.748 |
| 1.5k |.789 |.755 |.793 |.752 |.112 |.762 |.789 |.748 |
| 2k |.790 |.760 |.791 |.754 |.135 |.764 |.788 |.746 |
| 4k |.786 |.763 |.780 |.756 |.223 |.763 |.778 |.740 |
| 8k |.776 |.758 |.768 |.749 |.514 |.757 |.766 |.728 |
从表中可以看出:
- 随着特征数量增加,所有选择方法的分类性能先上升,达到一定程度后缓慢下降,这表明特征选择既能降低计算成本,又能提高性能。
- 不同选择方法的性能提升速率不同,可大致分为几组。文档频率、计数差异和最优正交质心方法表现较好,即使只有 100 个特征时性能也较高,在 1000 - 2000 个特征时达到最高性能。计数差异方法在 1000 个特征时取得最佳性能 0.795。而互信息方法性能最差,因为它倾向于选择罕见特征。
- 当特征数量达到 1000 及以上时(互信息除外),不同选择方法的性能接近,说明最大熵建模对特征选择不太敏感,只要特征池中包含最重要的特征,通过对数线性组合的权重就能进一步区分用于文本分类的特征。
1.3.2 与其他方法比较
与支持向量机、K - 近邻和 Rocchio 风格分类器等方法进行比较,结果如下表:
| 方法 | 宏平均 | 微平均 |
| ---- | ---- | ---- |
| SVMs |.619 |.816 |
| K - NN |.560 |.765 |
| Rocchio |.504 |.693 |
| MaxEnt |.472 |.794 |
从表中可知,最大熵建模在微平均方面优于 K - 近邻和 Rocchio 风格分类器,但不如支持向量机。在宏平均方面,最大熵建模是四种方法中最低的。这表明最大熵建模在训练文档能充分覆盖某个类别时表现较好,否则性能会受较大影响。
下面是文本分类实验流程的 mermaid 流程图:
graph LR
A[数据准备: Reuters RCV1 数据集] --> B[特征选择]
B --> C[最大熵建模]
C --> D[训练模型: 改进的迭代缩放算法]
D --> E[评估性能: F1.0 指标]
E --> F[结果分析]
2. 在线垃圾邮件过滤的主动学习方法
2.1 问题背景与目标
垃圾邮件过滤可视为在线环境下的二分类问题。在线特性体现在两个方面:一是邮件行为随时间不断变化,要求垃圾邮件过滤器具有较强的及时泛化能力,机器学习可帮助过滤器根据用户反馈不断优化;二是在线应用需要高处理速度,这就要求过滤器减少训练时间,因此选择合适的训练邮件至关重要。为了更快达到稳定性能,可采用主动学习方法,该方法能从大量未标记邮件中选择部分邮件,向用户询问标签,然后用这些标记的邮件训练过滤器。
2.2 集成学习
2.2.1 集成学习原理
通过集成学习,可将复杂的垃圾邮件过滤问题分解为几个简单的方面,从而降低分析和计算每个方面的复杂度。使用语言特征(邮件正文全词、主题全词、正文关键词)和行为特征(发送和接收特征、主题 Re: 特征)构建五个简单过滤器。SVMEL(支持向量机集成学习)过滤器通过组合多个简单过滤器的结果做出最终决策。
2.2.2 SVM 模型训练与优化
使用核函数映射的支持向量机适合非线性数值分类问题,每个简单过滤器可生成一个介于 0 和 1 之间的数值垃圾邮件置信度分数(SCS)。SVM 集成方法如下:设 SVM 分类器的对象空间为 {垃圾邮件, 正常邮件},每个训练向量为 (C1, C2, …, Cn),其中 Ci 表示第 i 个简单过滤器输出的 SCS。在学习过程中,可从训练向量得到 SVM 模型;在过滤过程中,SVM 分类器使用该模型对邮件进行分类并输出 SCS。
由于训练 SVM 模型耗时,为减少训练时间,提出记忆窗口的概念,即只记住最后一定数量(如 4000 个)不同的训练邮件,忘记较早的邮件。这样既能减少训练时间,又能使 SVM 模型具有较强的及时泛化能力,且性能下降较小。
2.3 主动学习
2.3.1 过滤架构
具有主动学习的垃圾邮件过滤架构中,每个简单过滤器和学习器对是一个独立的自适应学习系统。集成过滤器将简单过滤器生成的 SCS 组合成新的 SCS,通过将新 SCS 与阈值比较,为邮件标记为垃圾邮件或正常邮件。主动学习器根据邮件的新集成 SCS 做出决策,如果认为该邮件是更有信息价值的样本,能提高训练性能,则主动向用户询问响应,并将响应发送给每个简单学习器和集成学习器。学习后,这些学习器在线优化其知识。
下面是具有主动学习的垃圾邮件过滤架构的 mermaid 流程图:
graph LR
A[邮件输入] --> B[简单过滤器]
B --> C[生成 SCS]
C --> D[集成过滤器: 组合 SCS]
D --> E[判断邮件类别: 与阈值比较]
E --> F{主动学习器决策}
F -- 有价值样本 --> G[询问用户响应]
G --> H[发送响应给学习器]
H --> I[学习器在线优化知识]
F -- 无价值样本 --> J[结束处理]
2.3.2 选择训练邮件
选择更有信息价值的训练邮件是主动学习的关键。采用不确定性采样(UBS)方法,该方法选择那些容易被错误过滤的样本进行训练,因为越不确定的样本能带来越大的训练改进。此方法需要一个预过滤器来估计邮件被错误过滤的可能性,这个可能性是一个关键因素。
在实验中,可以通过以下操作步骤来实现:
1. 从其他先前邮件训练一个模型,构建一个早期更好的预过滤器。
2. 使用 SVMEL 方法结合一些早期用户响应训练一个更好的模型,并将该模型应用于 UBS 方法。
3. 将当前版本的过滤器作为预过滤器,估计邮件被错误过滤的可能性。
4. 选择集成 SCS 约为 0.5 的邮件进行训练。
2.3.3 缓存改进
由于垃圾邮件具有批量特征,通过将新邮件内容与记忆的标记邮件内容进行比较,可以更好地改进 SCS。但逐一比较内容耗时,因此利用缓存来记忆最后一定数量(即之前的记忆窗口大小)的邮件。
为提高内容比较速度,用 SCS 向量对邮件内容进行建模。缓存中的每个项包括一个 SCS 向量和一个用户响应标签。如果简单过滤器生成的输出 SCS 向量等于缓存中的一个向量,则根据缓存的垃圾邮件或正常邮件标签,将 SCS 设为 1 或 0。缓存改进的效果取决于重复邮件的数量,重复邮件越多,改进越明显。
2.4 实验与讨论
2.4.1 实验设置
首先实现五个简单过滤器,构建 SVMEL 垃圾邮件过滤器作为基线系统。然后将主动学习和缓存改进添加到基线系统。在 TREC07p 语料库和 TREC07 主动学习任务中进行实验,TREC07p 语料库包含 75419 条消息,其中 25220 条正常邮件和 50199 条垃圾邮件。
实验分组及参数设置如下表所示:
| 组 | 测试运行 | 主动学习 | 缓存 | 允许查询数/实际使用查询数 |
| ---- | ---- | ---- | ---- | ---- |
| 1 | Del | No | No | 10000/10000 |
| 1 | Act10000 | Yes | No | 10000/10000 |
| 1 | ActCac10000 | Yes | Yes | 10000/10000 |
| 2 | Par | No | No | 30388/30388 |
| 2 | Act30388 | Yes | No | 30388/30388 |
| 2 | ActCac30388 | Yes | Yes | 30388/30388 |
2.4.2 实验结果
实验结果表明:
- 主动学习过滤器在性能上优于基线系统,缓存技术能进一步提高主动学习过滤器的性能。
- UBS 方法适合垃圾邮件过滤,因为它能选择有信息价值的邮件;缓存改进也很有用,因为垃圾邮件具有批量特征。
- 在处理 30000 条消息之前,缓存改进明显;处理 30000 条消息之后,由于重复邮件减少,缓存改进不明显。
综上所述,文本分类中的最大熵模型与特征选择方法以及在线垃圾邮件过滤的主动学习方法都在相应领域展现出了一定的优势和潜力。在实际应用中,可以根据具体需求和数据特点选择合适的方法和参数,以达到更好的性能。
超级会员免费看
5351

被折叠的 条评论
为什么被折叠?



