基于随机森林算法的骚扰电话识别方法及系统与流程

文档序号:18475397发布日期:2019-08-20 20:58阅读:374来源:国知局
基于随机森林算法的骚扰电话识别方法及系统与流程

本发明涉及自然语言处理领域,具体来说,涉及一种基于随机森林算法的骚扰电话识别方法及系统。



背景技术:

骚扰电话推销产品或者是一些冒充警方、银行工作人员故意进行电话骚扰的行为,骚扰电话具有很强的干扰性、诱惑力与欺骗性,而且容易伪装,拨打次数频繁和不易破案,严重危害了人民的正常生活和个人隐私。

针对相关技术中的问题,目前尚未提出有效的解决方案。



技术实现要素:

针对相关技术中的上述技术问题,本发明提出一种基于随机森林算法的骚扰电话识别方法和系统,能够有效快速识别骚扰电话,有效解决人为误判和漏判骚扰电话问题。

为实现上述技术目的,本发明的技术方案是这样实现的:

一种基于随机森林算法的骚扰电话识别方法,包括以下步骤:

处理原始数据集,确定正负骚扰电话样本的分布比例;

针对不平衡的骚扰电话样本,采用smote算法对所述原始数据集进行过采样后生成新样本集,平衡数据分布;

根据所述新样本集构建骚扰电话识别模型,并初始化所述骚扰电话识别模型中随机森林参数,设置随机森林参数输入、输出变量;

利用十折交叉验证训练骚扰电话识别模型后进行验证,并计算其识别效果评估值;

采用网络搜索获取最优骚扰电话识别模型,提高随机森林的精准度,提高训练效率,利用pickle依次将最优骚扰电话识别模型序列化和反序列化后构建api,将最优骚扰电话识别模型以接口方式部署上线;

待测通话记录到达时,调用api接口,将数据输入到最优骚扰电话识别模型进行预测。

进一步地,利用smote算法对所述原始数据集进行过采样后生成新样本集包括:

对少数类的骚扰电话样本进行分析,并根据所述骚扰电话样本人工合成新样本添加到原始数据集中;

每个少数类的骚扰电话样本,从其最近邻中随机选取若干第一样本;

在骚扰电话样本和第一样本的连线上随机选取第二样本。

进一步地,针对所述新样本集构建骚扰电话识别模型,并初始化所述骚扰电话识别模型中随机森林参数包括:

设置随机森林参数,其中,所述随机森林参数包括决策树的个数、有放回的采样、信息增益、最适属性时划分的特征和树的最大深度;

计算属性的信息增益,选取最合适的节点,子节点重复计算信息增益,并选取信息增益最大节点,依次论推,生成多棵树,所述信息增益的计算公式如下:

g(d,a)=h(d)-h(d|a)

其中,h(d)为经验熵,h(d|a)为选定特征a的经验条件熵;

根据随机森林参数和信息增益值构建随机森林,利用随机森林算法训练多颗决策树生成骚扰电话识别模型。

进一步地,该方法还包括,所述识别效果评估值对所述骚扰电话识别模型进行评估,其中,所述识别效果评估值包括精准率、召回率和f1-score,其计算公式分别如下:

precision(精准率)=tp/(tp+fp)

recall(召回率)=tp/(tp+fn)

f1-score=2*precision*recall/(precision+recall)

其中,tp代表样本为正,预测结果为正的个数,fp代表样本为负,预测结果为正的个数,fn代表样本为正,预测结果为负的个数。

如图2所示,本发明的另一方面,提供一种基于随机森林算法的骚扰电话识别系统,包括:

确定模块,用于处理原始数据集,确定正负骚扰电话样本的分布比例;

生成模块,用于利用smote算法对所述原始数据集进行过采样后生成新样本集;

第一构建模块,用于根据所述新样本集构建骚扰电话识别模型,并初始化所述骚扰电话识别模型中随机森林参数;

验证模块,用于利用十折交叉验证训练骚扰电话识别模型后进行验证,并计算其识别效果评估值;

获取模块,用于获取最优骚扰电话识别模型,利用pickle依次将最优骚扰电话识别模型序列化和反序列化后构建api,将最优骚扰电话识别模型以接口方式部署上线;

识别模块,用于待测通话记录到达时,调用api接口,将数据输入到最优骚扰电话识别模型进行预测。

进一步地,所述生成模块包括:

分析模块,用于对少数类的骚扰电话样本进行分析,并根据所述骚扰电话样本人工合成新样本添加到原始数据集中;

第一选取模块,用于每个少数类的骚扰电话样本,从其最近邻中随机选取若干第一样本;

第二选取模块,用于在骚扰电话样本和第一样本的连线上随机选取第二样本。

进一步地,所述第一构建模块包括:

参数设置模块,用于设置随机森林参数,其中,所述随机森林参数包括决策树的个数、有放回的采样、信息增益、最适属性时划分的特征和树的最大深度;

第一计算模块,用于计算属性的信息增益,选取最合适的节点,子节点重复计算信息增益,并选取信息增益最大节点,依次论推,生成多棵树,所述信息增益的计算公式如下:

g(d,a)=h(d)-h(d|a)

其中,h(d)为经验熵,h(d|a)为选定特征a的经验条件熵;

第二构建模块,用于根据随机森林参数和信息增益值构建随机森林,利用随机森林算法训练多颗决策树生成骚扰电话识别模型。

进一步地,该系统还包括:评估模块,用于所述识别效果评估值对所述骚扰电话识别模型进行评估,其中,所述识别效果评估值包括精准率、召回率和f1-score,其计算公式分别如下:

precision(精准率)=tp/(tp+fp)

recall(召回率)=tp/(tp+fn)

f1-score=2*precision*recall/(precision+recall)

其中,tp代表样本为正,预测结果为正的个数,fp代表样本为负,预测结果为正的个数,fn代表样本为正,预测结果为负的个数。

本发明的有益效果:不仅有效避免人工误判和漏判行为,而且降低模型的误差,同时,提高模型的可用性和实用性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据本发明实施例所述的基于随机森林算法的骚扰电话识别方法的流程图之一;

图2是根据本发明实施例所述的基于随机森林算法的骚扰电话识别系统的结构图;

图3是根据本发明实施例所述的用户还款能力预测单棵树树结构示意图;

图4是根据本发明实施例所述的相亲预测单棵树树结构示意图;

图5是根据本发明实施例所述的运动预测单棵树树结构示意图;

图6是根据本发明实施例中江苏省某市骚扰电话随机森林单棵树结构示意图;

图7是根据本发明实施例中河北省某市骚扰电话随机森林单棵树结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,根据本发明实施例所述的一种基于随机森林算法的骚扰电话识别方法,包括以下步骤:

处理原始数据集,确定正负骚扰电话样本的分布比例;

数据集d为一个月通话记录(加密),原始数据维度为49维,经过数据清洗、变量衍生和特征筛选后得到随机森林的输入变量x1,x2,x3……x14,变量详细说明如下:

x1:在呼叫次数取max时间点,主叫拨打话单总数;

x2:在呼叫次数取max时间点,主叫号码拨打不同被叫号码总数;

x3:在呼叫次数取max时间点,主叫号码总通话时长;

x4:在呼叫次数取max时间点,主叫号码通话时长最大值;

x5:在呼叫次数取max时间点,主叫号码通话时长均值;

x6:在呼叫次数取max时间点,主叫号码通话时长标准差;

x7:在呼叫次数取max时间点,主叫号码通话时长为0话单数;

x8:在呼叫次数取max时间点,主叫号码通话时长不为0话单数;

x9:在呼叫次数取max时间点,主叫号码通话时长非0话单号码数;

x10:在呼叫次数取max时间点,主叫号码本地呼叫总次数;

x11:在呼叫次数取max时间点,主叫号码外地呼叫总次数;

x12:在呼叫次数取max时间点,主叫号码振铃时长最大值;

x13:在呼叫次数取max时间点,主叫号码振铃时长均值;

x14:在呼叫次数取max时间点,主叫号码振铃时长标准差。

利用smote算法对所述原始数据集进行过采样后生成新样本集;

根据所述新样本集构建骚扰电话识别模型,并初始化所述骚扰电话识别模型中随机森林参数;

利用十折交叉验证训练骚扰电话识别模型后进行验证,并计算其识别效果评估值;

结合随机森林参数,为每个参数设置不同的数值,采用10折交叉验证和网格搜索,不断拟合数据及训练骚扰电话识别模型,并输出每次训练的骚扰电话识别模型评估参数。

获取最优骚扰电话识别模型,利用pickle依次将最优骚扰电话识别模型序列化和反序列化后构建api,将最优骚扰电话识别模型以接口方式部署上线;

待测通话记录到达时,调用api接口,将数据输入到最优骚扰电话识别模型进行预测。

具体的,原始话单数据集(加密)处理,确定正负样本的分布比例;采用smote算法对原始数据集进行过采样,形成最终的新样本集,并将新样本集进行分类,训练集和测试集;初始化所述骚扰电话识别模型中随机森林参数;采用十折交叉验证训练骚扰电话识别模型,使用测试集进行验证,并计算出骚扰电话识别模型的精准率、召回率和f1分数;采用网格搜索获得最优的骚扰电话识别模型,并采用pickle将骚扰电话识别模型序列化,保存到服务器;采用pickle将骚扰电话识别模型反序列化,并利用flask框架构建api,以api接口的方式,把满足业务需求的骚扰电话识别模型部署上线,实现诈骗短线实时预测拦截;待测通话记录到达时,调用api接口,将数据输入到骚扰电话识别模型中以实现骚扰电话预测,对骚扰电话识别模型预测后将预测结果返回,即如果是骚扰电话,api接口返回1,如果是正常电话,api接口返回0。

在本发明的一个具体实施例中,利用smote算法对所述原始数据集进行过采样后生成新样本集包括:

对少数类的骚扰电话样本进行分析,并根据所述骚扰电话样本人工合成新样本添加到原始数据集中;

每个少数类的骚扰电话样本,从其最近邻中随机选取若干第一样本;

在骚扰电话样本和第一样本的连线上随机选取第二样本。

即,对少数类的骚扰电话样本a进行分析,并根据少数类的骚扰电话样本人工合成新样本添加到原始数据集中;每个少数类的骚扰电话样本a,从它的最近邻中随机选择一个第一样本b,然后在a、b的连线上随机选取一个点作为新合成的少数类样本(第二样本),具体的算法步骤如下:

(1)对于少数类中每一个样本x,以欧氏距离为标准计算它到少数类样本集中所有样本的距离,得到k近邻,其中,欧式距离d计算如(1)所示:

其中,n代表样本数据的维度,x1i代表第一个样本第i个维度,x2i代表第二个样本第i个维度。

(2)对于每一个少数类样本x,从其k近邻中随机选择若干个样本,假设选择的近邻为xn;

(3)对于每一个随机选出的近邻xn,进行随机线性插值,分别与原样本构建新的样本;

(4)将新样本放入原数据,产生新的训练集,smote采样结束后,形成最终的新样本集,其中,新样本集包括训练样本和测试样本。

在本发明的一个具体实施例中,针对所述新样本集构建骚扰电话识别模型,并初始化所述骚扰电话识别模型中随机森林参数包括:

设置随机森林参数,其中,所述随机森林参数包括决策树的个数、有放回的采样、信息增益、最适属性时划分的特征和树的最大深度,信息增益在决策树模型中是用来进行特征选择的指标,某个特征的信息增益越大,则这个特征的选择性越好。

随机森林参数及参数解释如下:

n_estimators=60:决策树的个数;

bootstrap=true:有放回的采样;

criterion=entropy:计算属性的信息增益,来选择最合适的节点;

max_features=sqrt:选择最适属性时划分的特征不能超过此值;

max_depth=8:树的最大深度;

min_samples_split=20:根据属性划分节点时,每个划分最少的样本数;

min_samples_leaf=100:叶子节点最少的样本数;

计算属性的信息增益,选取最合适的节点,子节点重复计算信息增益,并选取信息增益最大节点,依次论推,生成多棵树,所述信息增益的计算公式如下:

g(d,a)=h(d)-h(d|a)(2)

其中,h(d)为经验熵,h(d|a)为选定特征a的经验条件熵,计算公式分别如公式(3)、公式(4)所示:

训练数据集合d,|d|为样本容量,即样本的个数(d中元素个数),设有k个类ck来表示,|ck|为ci的样本个数,|ck|之和为|d|,k=1,2…..,根据特征a将d划分为n个子集d1,d2.....dn,|di|为di的样本个数,|di|之和为|d|,i=1,2,....,记di中属于ck的样本集合为dik,即交集,|dik|为dik的样本个数。

根据随机森林参数和信息增益值构建随机森林,利用随机森林算法训练多颗决策树生成骚扰电话识别模型。

随机森林是由多棵决策树构建而成,随机森林在构建的过程中只需要两个参数,决策树的个数t,在决策树的每个节点分裂时需要考虑的输入特征的个数m,其中,单棵决策树的构建过程如下:

(1)令n为训练样例的个数,则单棵决策树的输入样例的个数为n个从训练集中有放回的随机抽取n个训练样例;

(2)令训练样例的输入特征的个数为m(m=14),切m远远小于m,则在每颗决策树的每个节点上进行分裂时,从m个输入特征里随机选择m个输入特征,然后从这m个输入特征里选择信息增益最大的节点进行分裂,其中,m在构建决策树的过程中不会改变;

(3)每棵决策树都一直这样分裂下去,直到该节点的所有训练样例都属于同一类,不需要剪枝。

决策树是一种利用树形结构进行决策的算法,对于样本数据根据已知条件或叫特征进行分叉,最终建立一棵树,树的叶子结节标识最终决策,新来的数据便可以根据这棵树进行判断。随机森林是一种通过多棵决策树进行优化决策的算法,随机有放回的选择训练数据然后构造分类器,最后用组合学习到的模型来增加整体的分类效果。

如图3所示,用户还款能力预测,通过客户是否拥有房产,是否结婚,平均月收入预测贷款用户是否具有偿还贷款的能力。每一个内部结节都表示一个属性条件判断,叶子结节表示贷款用户是否具有偿还能力。在决策树选择特征时,应选择信息增益值最大的特征,作为该结节分裂条件,以此计算其他各个特征的信息增益值,形成多棵树,最后有投票机制判断该客户是否具有偿还贷款的能力。

如图4所示,相亲预测,通过相亲男孩的基本特征,如:人品、财富、工作、外貌,预测女孩是否去相亲。每个内部结节表示一个属性的条件判断,叶子节点表示女孩选择是否去相亲;在决策树选择特征时,首先计算每个特征的信息增益值,并将每个特征的信息增益值进行降序排序,选择信息增益值最大的特征作为根节点,计算其他节点的信息增益,并选择信息增益最大的特征进行第二次分裂,以此类推进行多次分裂,形成多棵树,最后由随机森林的投票机制给出该女孩是否去相亲。

如图5所示,运动预测,通过已给定的气象数据如:湿度、风力和天气预报等情况,预测心得一天会不会出去打球,分别将湿度风力、天气预报作为根节点,计算其信息增益,选择信息增益最大的天气预报为根节点,子节点重复计算信息增益,并选取信息增益最大的节点为下一个根节点,依此论推,直到节点不能分裂为止,生成多颗树,最后由随机森林的投票机制预测出某一种天气下,是否去打球。

在骚扰电话识别模型训练的过程中会产生多棵决策树,对个每个新的测试样例,综合多棵决策树的分类结果,取单棵树分类结果最多的类别作为整个随机森林的分类结果。

在本发明的一个具体实施例中,该方法还包括,所述识别效果评估值对所述骚扰电话识别模型进行评估,其中,所述识别效果评估值包括精准率、召回率和f1-score,其计算公式分别如下:

precision(精准率)=tp/(tp+fp)(5)

recall(召回率)=tp/(tp+fn)(6)

f1-score=2*precision*recall/(precision+recall)(7)

其中,tp代表样本为正,预测结果为正的个数,fp代表样本为负,预测结果为正的个数,fn代表样本为正,预测结果为负的个数。

如图2所示,本发明的另一方面,提供一种基于随机森林算法的骚扰电话识别系统,包括:

确定模块,用于处理原始数据集,确定正负骚扰电话样本的分布比例;

生成模块,用于利用smote算法对所述原始数据集进行过采样后生成新样本集;

第一构建模块,用于根据所述新样本集构建骚扰电话识别模型,并初始化所述骚扰电话识别模型中随机森林参数;

验证模块,用于利用十折交叉验证训练骚扰电话识别模型后进行验证,并计算其识别效果评估值;

获取模块,用于获取最优骚扰电话识别模型,利用pickle依次将最优骚扰电话识别模型序列化和反序列化后构建api,将最优骚扰电话识别模型以接口方式部署上线;

识别模块,用于待测通话记录到达时,调用api接口,将数据输入到最优骚扰电话识别模型进行预测。

在本发明的一个具体实施例中,所述生成模块包括:

分析模块,用于对少数类的骚扰电话样本进行分析,并根据所述骚扰电话样本人工合成新样本添加到原始数据集中;

第一选取模块,用于每个少数类的骚扰电话样本,从其最近邻中随机选取若干第一样本;

第二选取模块,用于在骚扰电话样本和第一样本的连线上随机选取第二样本。

在本发明的一个具体实施例中,所述第一构建模块包括:

参数设置模块,用于设置随机森林参数,其中,所述随机森林参数包括决策树的个数、有放回的采样、信息增益、最适属性时划分的特征和树的最大深度;

第一计算模块,用于计算属性的信息增益,选取最合适的节点,子节点重复计算信息增益,并选取信息增益最大节点,依次论推,生成多棵树,所述信息增益的计算公式如下:

g(d,a)=h(d)-h(d|a)(2)

其中,h(d)为经验熵,h(d|a)为选定特征a的经验条件熵;

第二构建模块,用于根据随机森林参数和信息增益值构建随机森林,利用随机森林算法训练多颗决策树生成骚扰电话识别模型。

在本发明的一个具体实施例中,该系统还包括:评估模块,用于所述识别效果评估值对所述骚扰电话识别模型进行评估,其中,所述识别效果评估值包括精准率、召回率和f1-score,其计算公式分别如下:

precision(精准率)=tp/(tp+fp)(5)

recall(召回率)=tp/(tp+fn)(6)

f1-score=2*precision*recall/(precision+recall)(7)

其中,tp代表样本为正,预测结果为正的个数,fp代表样本为负,预测结果为正的个数,fn代表样本为正,预测结果为负的个数。

为了方便理解本发明的上述技术方案,以下通过具体使用方式上对本发明的上述技术方案进行详细说明。

实施例一

数据为江苏省某市通信管理局用户话单数据,数据维度为x1、x2、x3、x4、x5、x6、x7、x8、x9、x10、x11、x12、x13、x14共14位维数据,以单条加密后数据为例,各维度数值为-0.049、-0.059、-0.270、-0.264、-0.339、-0.079、0.052、0.039、0.055、-0.052、0.092、-0.247、-0.042、-0.057,web端调用api接口,将数据输送到骚扰电话识别模型中,数据进入骚扰电话识别模型中,会以各个节点为根节点计算信息增益,应选择信息增益值最大的特征,作为根节点,以此计算其他各个特征的信息增益值,形成多棵树,最后有随机森林投票机制判断该主叫号码是否是骚扰电话,并以json的方式返回结果,如果是骚扰电话返回1,如果不是骚扰电话返回0。

如图6所示,根节点为各个数据维度,连线为判断条件,叶子节点为单棵树的输出目标,预测过程中,每个相应的节点依次根据条件判断,直到到达最后的叶子节点,单棵树判断结束,此单棵树以x1(-0.049)为根节点,x1<-0.019,左分支判断x2(-0.059),x2>-0.220,叶子节点为”否”,单棵树判断该条记录为”否”,在整体的随机森林中叶子节点为”否”的比例小于叶子节点为”是”的比例,所以最终本条数据判断为是骚扰电话,模型输出1,接口返回1给web调用端。

实施例二

数据为河北省某市通信管理局用户话单数据,数据维度为x1、x2、x3、x4、x5、x6、x7、x8、x9、x10、x11、x12、x13、x14共14位维数据,以单条加密后数据为例,各维度数值为-0.149、-0.259、-0.170、-0.364、-0.239、-0.479、0.152、0.239、0.155、-0.152、0.194、-0.127、-0.542、-0.257;web端调用api接口,将数据输送到骚扰电话识别模型中,数据进入骚扰电话识别模型中,会以各个节点为根节点计算信息增益,应选择信息增益值最大的特征,作为根节点,以此计算其他各个特征的信息增益值,形成多棵树,最后有随机森林投票机制判断该主叫号码是否是骚扰电话,并以json的方式返回结果,如果是骚扰电话返回1,如果不是骚扰电话返回0。

如图7所示,骚扰电话识别模型预测过程中,每个相应的节点依次根据条件判断,直到到达最后的叶子节点,单棵树判断结束,该单棵树以x3(-0.170)为根节点,x3<-0.02,左分支判断x4(-0.364),x4<-0.218,左分支判断x9(0.155),x9>-0.335,叶子节点为”否”,单棵树判断该条记录为”否”,在整体的随机森林中叶子节点为”否”的比例大于叶子节点为”是”的比例,所以最终本条数据判断为不是骚扰电话,模型输出0,接口返回0给web调用端。

综上所述,借助于本发明的上述技术方案,不仅有效避免人工误判和漏判行为,而且降低模型的误差,同时,提高模型的可用性和实用性。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1