APP下载

基于自分簇自学习算法的垃圾短信识别

2021-10-26王科峰贲卫国刘鸿儒徐亦晋

吉林大学学报(信息科学版) 2021年5期
关键词:权值准确率短信

李 根, 王科峰, 贲卫国, 宋 微, 刘鸿儒, 徐亦晋

(1. 中国联通网络通信集团有限公司 吉林省分公司, 长春 130021; 2. 吉林大学 计算机科学与技术学院, 长春 130012)

0 引 言

垃圾短信是指内容违反相关规定或其内容引起用户反感的短信, 例如金融欺诈、 违法营销、 诅咒威胁和反动言论等。垃圾短信发送者会在内容上尽一切可能伪装混淆, 常见的伪装手段包括: 同型字替换、 同音字替换、 组合字替换、 拆解字替换、 乱序替换和暗语替换等多种方式, 使其在保持一定的可读性的同时不被过滤系统识别。

常见的垃圾短信识别方法有两种[1], 分别为基于关键字规则的方法和基于短信内容的方法。基于关键字规则的识别方法需要人工录入关键字和规则, 效率低下且识别效果差, 更无法及时应对垃圾短信发送者的故意伪装混淆。目前主流的识别技术是基于短信内容的方法, 主要是指通过机器学习算法对短信内容的特征进行分类, 典型的方法如黄文明等[2]提出的文本加权KNN(K-Nearest Neighbor)算法, 赖文辉等[3]采用的词向量卷机神经网络方法, 以及朴素贝叶斯、 逻辑回归、 支持向量机和随机森林等方法[4-5], 这些方法对已知相似样本效果较好, 但对垃圾短信的变种, 即人为故意伪装混淆后的垃圾短信, 识别效果并不理想[6]。

导致这种问题的原因是传统的文本分类算法将样本预先分为几个簇, 并训练形成识别模型, 当垃圾短信被人工伪装混淆后, 如采用拼接字法、 同音相似字法等, 造成原有特征缺失, 识别模型的效果会急剧下降。虽然词向量[7]和LSTM(Long Short-Term Memory)网络[8]取得了一定的效果, 但由于垃圾短信是人工主动针对识别模型进行伪装, 导致样本特征具有复杂性和多样性, 随着新样本的不断加入, 簇特征边界越来越模糊, 甚至与正常短信样本有交集, 导致识别模型效果下降。

笔者提出一种垃圾短信自分簇和自学习方法, 采用编辑距离构建垃圾短信关系链, 通过聚类算法实现垃圾短信的动态自分簇能力, 使簇与簇的特征边界清晰, 提高识别准确率。寻找簇核心, 并以簇核心计算簇内各个垃圾短信样本的权值, 以权值样本构建识别模型, 每次新样本加入后, 会重新计算簇核心及簇内样本权值, 更新分类器, 实现自学习能力。

1 垃圾短信自分簇方法

垃圾短信伪装的方法多种多样, 但其目的是固定的, 对短信内容的伪装只是在文本的展现形式上做出一些变化, 在确保不影响接收者阅读的前提下躲避垃圾短信过滤系统的识别, 所以, 发布者通常会采用少变快变的策略。对同一个类型的垃圾短信, 可以将发布者对短信内容的伪装看作是垃圾短信的变种, 其特征是渐进的、 高频率的变化, 通过收集一定时间内的全量短信数据, 就可以通过内容对比构建出这条垃圾短信的演化关系链。

构建垃圾短信关系链的关键方法是内容相似度比较, 即对任意两条短信的内容做相似度计算, 相似度高则认为两条短信的亲缘关系近, 相似度低则认为没有关系。因为垃圾短信的变种是通过人工少量修改短信内容隐藏关键字, 所以适合采用编辑距离[9]方法对内容进行相似度计算, 经过对比选用Levenshtein编辑距离算法[10-12]。

编辑距离是指两个字符串之间, 由一个转成另一个所需的最少编辑操作次数, 允许的编辑操作包括: 替换一个字符、 插入一个字符和删除一个字符3种操作。一个字符串变成另一个字符串所需要的编辑次数越少, 则认为两个字符串的相似度越大。

两个字符串a和b的Levenshtein编辑距离计作:Llevab, 表示为

(1)

以现有垃圾短信样本构成原始样本库, 任意选取其中一条垃圾短信作为节点, 计算与该条短信编辑距离小于k的节点(k的取值与短信样本的全量程度有关, 初始值为5, 需根据网络构成情况调整), 并建立关联, 重复此过程对所有节点进行计算, 最终构成垃圾短信相似度关系链示意图, 如图1a所示。

通过图1可知, 存在多个相似度较高且集中的垃圾短信簇群, 通过聚类算法可以完成簇群的分类聚类。因为无法提前预知垃圾短信簇群的数量, 所以经过比较选择可自动确定分类数量的MeanShift聚类算法[12-14], MeanShift的滑窗半径r为编辑距离, 可以控制簇群的分割程度, 即变化到一定程度则认定为是另一种类的垃圾短信, 实现垃圾短信的自分簇能力, 如图1b所示。

当新的垃圾短信样本加入时, 重新计算样本间的编辑距离并重新聚类便可以对垃圾短信的分簇进行更新。

自分簇方法比人工分簇更加准确和高效, 可以解决簇与簇之间样本交叉问题, 以及特征边界模糊的问题, 也可以解决后续识别模型训练过程中的样本特征不均衡问题, 通过自分簇能力使每种类型的垃圾短信的特征在训练过程中都能突出体现, 进一步提高了识别模型的准确率。

图1 垃圾短信相似度关系链示意图Fig.1 Schematic diagram of the similarity relationship chain of spam messages

2 垃圾短信自学习方法

在遇到垃圾短信的未知变种时, 如果内容特征变化较小, 通过自分簇方法仍可以维持较好的识别效果。随着时间的增加, 内容变化由于累积逐步变大, 识别模型的准确率开始降低, 这就需要使识别模型具有一定的自学习能力。自学习方法就是将新的垃圾短信变种样本加入到相应的垃圾短信簇中, 并重新训练识别模型, 如何准确判定一条短信是否为垃圾短信是自学习算法的关键。

垃圾短信的来源主要有3个: 系统拦截、 用户举报和管理员处理。系统拦截存在一定的不可控的错误率; 用户举报由用户主观决定, 同样存在不理智行为; 管理员处理可认为可靠, 但管理员效率低下, 无法完全依赖。垃圾短信的来源是一个典型的弱可信系统[9], 这需要算法对所有来源的垃圾短信提供一定的容错性, 即实现被错误判定的短信即使归类到垃圾短信样本库中, 经过训练也不影响识别模型的整体准确率和稳定性, 或在一定时间内能恢复被错误判定的短信对识别模型的影响。

垃圾短信发送者为达到目的, 垃圾短信是被大量发送的, 典型特征是大量和高重复性, 反之被错误判定的垃圾短信的特征是少量, 即错误样本一定是少部分用户因为情绪、 偏见或其他原因导致的, 多数用户并不会有这种判定。因此, 通过垃圾短信数量特征和时效性特征, 对垃圾短信样本进行加权处理, 可以有效解决垃圾短信来源弱可信问题, 使识别模型具有一定的容错性[12,15-16]。

具体方法如下。

1) 簇核心选取。为使每个簇都具有一个代表性特征, 所以需要选取每个簇的簇核心c, 簇核心选取簇内样本最集中的样本节点, 即与簇内与所有样本距离最小的样本节点, 如下

(2)

其中si为分类中样本节点i到其他节点的平均距离, 核心集合ci为si最小的样本节点。如有多个核心满足条件, 则选取与最新的样本节点距离最短的样本节点作为簇核心。

2) 样本基础权值。其计算方法如下

bi=alnNi

(3)

其中Ni为某个样本出现的数量, 出现一次增加1,a为基础权值调节系数, 根据识别模型效果进行调整,bi为样本节点i的基础权值。

3) 样本权值分层调整。以簇核心为中心, 根据编辑距离区间d对分类中的样本进行分层, 取

l1:d∈[1,5],l2:d∈[5,10],l3:d∈[10,∞]

每层样本在神经网络训练中的样本权重调整系数为o1,o2,o3, 分别取1,0.75,0.25, 则调整后权值如下

wi=bioi

(4)

如上实现了在识别模型训练过程中强化新样本的权重, 减弱旧样本的权重。随着新样本的不断加入, 整个簇的簇核心会有所移动, 移动后会逐渐圈入高频出现的新样本、 逐渐圈出低频出现旧样本, 并构成新的不同的样本权重, 使整个识别模型倾向于新的、 大量的被判定的样本, 而少量的、 误判的样本会被渐渐排除分类, 实现识别模型的容错能力, 如图2所示。

图2 垃圾短信自学习核心移动示例图Fig.2 Examples of spam messages self-learning core movement

4) 样本权值时间调整。新样本的权重较低, 如果系统长期运行, 旧样本累积权值较高, 核心很难向新样本移动, 为解决此问题引入时间戳, 如新样本为原有样本则更新原有样本时间戳, 时间戳过旧则按照比例降低样本权值, 方法如下

ti=1/m

(5)

其中m为距离当前日期的月份数,ti为节点i的时间调整系数, 调整后的样本权值为

wi=biti

(6)

通过时间调整, 可以保持识别模型对新型变种垃圾短信的灵敏度。

5) 样本权值。最终样本权值如下

wi=bioiti

(7)

最终对自分簇后的垃圾短信样本簇与正常短信样本使用CNN(Convolutional Neural Networks) 神经网络分类算法进行分类训练, 在训练中, 以样本权值大小为采样几率进行样本抽取参与训练, 高权值垃圾短信样本高几率被抽中, 低权值垃圾短信样本低几率被抽中, 最终形成识别模型。

随着新样本的不断加入, 通过对样本库整体重复进行自分簇和自学习过程, 可以实现识别模型的自学习能力。

3 实验结果与分析

自分类算法的实验部分, 数据集选自真实短信网关数据, 对发送号码和接收号码做脱敏处理后构成训练数据集, 通过人工进行筛选, 共整理84 557条短信, 其中垃圾短信52 169条, 包括被投诉短信或明显违反规定的短信, 其余为正常短信。训练采用6 ∶2 ∶2的方式划分为训练集, 验证集和测试集。

测试方法为无预分簇(垃圾短信、 正常短信两类)、 人工分簇(正常短信8类、 垃圾短信17类)、 笔者自分簇方法。

笔者算法主要集中在样本的分簇处理与样本的权值处理, 是一种样本预处理方法, 可以与多种分类算法相结合, 实验部分选用CNN神经网络[3]和RNN神经网络[8]算法进行训练对比。结果选取训练过程30 min内的最高准确率情况下最低loss率的模型, 在测试集进行准确率测试, 进行10次, 结果分别如图3、 图4、 表1、 表2所示。

图3 CNN神经网络分类训练结果 图4 RNN神经网络分类训练结果图 Fig.3 CNN neural network classification Fig.4 RNN neural network classification training result diagram training result diagram

表1 CNN神经网络分类训练

表2 RNN神经网络分类训练

由实验结果可知, 笔者自分簇算法相对于无预分类、 人工分类准确率提高2.51%~5.14%, 且模型的准确率稳定, 证明自分簇算法可以有效提高模型识别效果。

自学习算法的实验部分, 数据集采用所在地区一年内真实网关数据历史记录, 进行脱密处理后以月为单位生成样本集, 通过随机抽取方式使每周的样本集的大小在80 000条左右, 共产生12个样本集, 模型采用自分类算法, CNN神经网络分类模型, 分别采用开启自学习方式和不开启自学习方式, 按照月份顺序通过模型进行判断, 准确率如图5、 图6、 表3、 表4所示。

图5 第1次测试结果图 图6 第2次测试结果图 Fig.5 Graph of the first test result Fig.6 Graph of the second test result

表3 第1次测试

表4 第2次测试

由实验数据可知, 在开启自学习功能的情况下, 经历过12个月时长的样本后, 模型依然保持着稳定的准确率, 而未开启自学习功能的方式, 经历过12个月时长的样本后, 准确率有较明显的下降, 证明笔者算法对垃圾短信的变种样本具有自学习能力。

4 结 语

笔者针对垃圾短信变种的特征, 提出了基于距离特征的垃圾短信自分簇算法和自学习算法, 使垃圾短信识别模型能根据新的垃圾短信样本特征进行自学习, 并自我更新, 使识别模型具有持续识别新型垃圾短信变种的能力。

笔者主要工作是垃圾短信的样本分类和处理, 是一种样本预处理优化方法, 将文中方法与其他更复杂的机器学习算法相结合, 可以进一步提高模型的识别准确率。

猜你喜欢

权值准确率短信
一种融合时间权值和用户行为序列的电影推荐模型
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
2015—2017 年宁夏各天气预报参考产品质量检验分析
基于5G MR实现Massive MIMO权值智能寻优的技术方案研究
颈椎病患者使用X线平片和CT影像诊断的临床准确率比照观察
一种基于互连测试的综合优化算法∗
道歉短信
代发短信
财务风险跟踪评价方法初探