版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录ⅠⅠ基于集成学习的恶意软件检测系统探析摘要21世纪互联网的蓬勃发展,给我们的生活带来了无数的便利,各行各业进入了信息时代,但是有光的地方就有暗,恶意软件的威胁一直是计算机最大的天敌。目前,已经有很多检测和处理手段,包括基于数据挖掘静态检测,动态检测,以及基于机器学习的一些检测手法,都取得了不错的成果,可见,应用机器学习的方法是正确的,但是,随着,大数据时代的来临,面对海量的恶意软件数据,传统的机器学习在识别的精确度上有点力不从心,所以,基于集成学习的检测手段得到了研究人员们的青睐。本课题是基于集成学习的恶意软件检测方法的研究,通过对恶意软件数据进行数据预处理,特征值提取,然后选择合适的集成学习算法进行模型的训练,对训练的结果利用EasyGui可视化方法进行展示。随后利用训练好的模型对恶意软件样本进行预测,预测其成为恶意软件的可能性,我们能够对此作出预防措施。预测采用了支持向量机,逻辑回归,随机森林方法,结果表明,支持向量机的效果果最好。关键词:集成学习;恶意软件;EasyGui目录TOC\o"1-4"\h\u摘要 绪论1.1选题的依据及意义随着科技的发展,互联网已经深深的与我们的生活密不可分,给我们提供了各种各样的便捷,但是祸福相依,各种各样的恶意软件也接踵而至,给我们带来无数的损失和伤害,据不完全统计,仅仅在2020年一年就监测到发生了8.56亿恶意软件攻击的事件。随着恶意软件攻击频率的增加,它的攻击方式,攻击手段也变的越来越复杂,著名的勒索软件WannaCry的发生似乎还历历在目,它利用Windows服务器的阻止协议的漏洞来造成破坏,在短短的24小时之内就造成了150个国家的感染,它传播的速度之快,感染力度之强在当时都是前所未见,以至于在金融,交通,医疗甚至军事等众多领域出现中断。传统的设备借助物联网与其他相连,但是这也使其在网络上暴露无遗,使他们更加简单的就受到恶意软件的攻击。这一现象的出现,对传统的行业来说都是巨大的危机挑战,同时,一种更新更全面的检测手段的出现已经迫在眉睫。总体来说,我们需要用更新的技术来面对巨大的恶意软件挑战。世界著名的恶意软件研究机构B2B国际研究中心曾经对用户做过一次调查,其中研究的结果显示,有超过65%的受访者表示他们曾经直接或者间接的受到过恶意软件的危害,这些攻击造成了他们的个人信息,个人财产等方面的严重损失,甚至有些恶意软件攻击还造成了他们的人身安全威胁。其中超过80%的用户表示在过去的一年中曾遭受了不止一次的恶意软件攻击,这些攻击的攻击范围涉及Window,MacOS,安卓等设备领域。他们的感染途径有多种多样,其中15%的用户表示他们可能是因为在访问了不安全的网站,或者可疑网络后受到了恶意软件的感染,6%的用户表示他们可能是使用了朋友或者他们的U盘等移动设或者伪装成恶意软件的安装包后遭受了恶意软件的感染,还有20%的大多数受访者表示,他们甚至不知道自己的设备什么时候遭受了感染,就是说恶意软件的攻击是在他们不知情的情况下发生的。在过去的五六年中,恶意软件的增长趋势呈指数增加,不同类型的新型攻击层出不穷,给研究人员带来了巨大的挑战,在研究人员方面,反恶意软件组织和一些安全公司的开始做法是通过建立恶意软件公共数据库,将一些恶意软件的特征信息录入这个大的数据库中,从而可以很达到快识别的恶意软件的目的。这个做法对常见的恶意软件防备还是足够的,但是相对被动,对一种新型的恶意软件的出现进行监测相对较弱,往往要造成一定程度的破坏才能将其识别。所以研究人员从被动监测转为主动监测,他们开始将机器学习中的一些技术应用到恶意软件的识别上面来,并研究出来基于深度学习,基于集成学习的一些检测方法,这些方法可以将恶意软件的恶意信息作为特征值进行识别,从而能够大大的提高恶意软件的识别率。1.2国内外研究现状1.2.1国外研究现状在国外研究方面,早在21世纪初期,就有部分的研究人员开始对机器学习进行了研究,后来随着机器学习热的兴起,越来越多的研究人员开始投入到机器学习领域,一些基于机器学习的恶意软件检测技术也被提出来。2002年,英国科学家Makei和Kolte就利用字节级别的N-Gram来进行恶意软件检测,而到了2004年,美国科学家Sakei和舒尔就建议用DLL,API标识来进行恶意软件的识别。但是在这个阶段,虽然人们已经开始对机器学习已经有了一定的应用,但是主要是集中在改善其检测的性能(例如精确度,损失函数,假阳性率)等方面,但是对算法的鲁棒性检测存在着一些不足。随着检测方法的升级,恶意软件也随之进化,研究人员发现,一些新型的恶意软件能过利用各种各样的绕过技术从而躲避基于机器学习的检测,所以这意味机器学习检测已经不能够满足检测需要,需要进行升级和优化。这个时候,基于集成学习的技术慢慢的进入研究人员的视野,集成学习,顾名思义,就是利用各种算法的集成,来形成一个新的集成学习综合模型,这个学习模型相对于单个算法的模型,更加的全面,更加的强大。2013年,Seakey等为了对更加准确的识别音频,通过增加算法的训练层级,可以使得识别的精确度更高,这时,基于集成学习的方法被提出来。2014年,Lonei等通过4层集成学习网络学习模型成功的识别了新型恶意软件攻击,从而这个技术得到了广泛的认识。到了2017年,Rolisee等借助基于梯度学习的集成学习方法,生成了对抗性的安卓识别网络,成功的阻拦了大规模的安卓恶意软件攻击,一时名声大噪,基于集成学习的恶意软件检测技术占据了主舞台,研究人员,反恶意软件公司都将精力集中到了集成学习的研究上面来。1.2.2国内研究现状在国内方面,虽然没有国外研究的这么早,但是也是紧跟步伐,后起直追。2014年,维达科技的重钦团队就提出了一种基于4维度集成学习的恶意软件识别方法,用于区分善意和恶意软件的loT应用。团队的成员们从支持ARMIoT支持平台的870个善意应用和321个恶意应用中提取恶意软件的API序列用于检测,而对于每一个API序列都会作为特征值加入到基于集成学习的训练网络中进行训练,结果也显示,精确度到了84%之多,足以证明这种方法的有效性。2015年底,阿里巴巴的达摩院也提出了一种基于LeNet卷积神经网络和VGGNet神经网络的集成学习算法,这是通过两种不同的卷积神经网络模型进行集成,LeNet神经网络模型是一种5层的网络模型,而VGGNet神经网络模型则是7层网络模型,在每种模型的卷积层选择合适的算法,然后通过层层迭代进行训练,测试人员输入了5万个测试样例进行测试,实验结果表明,这种方法的精确率高达93.5%,远远高于传统的单个算法进行机器学习进行恶意软件识别的精确度。1.3课题研究内容本课题主要研究用户要如何要对恶意软件进行检测和防范,课题将根据阿里天池大赛提供的数据,设计与实现相应的软件。通过分析疑似恶意文件调用API指令的名称、线程编号和调用顺序等特征,判断文件是为恶意程序。具体的功能如下:本课题是基于阿里巴巴天池大赛的比赛项目,研究如何使用集成学习的方法来进行恶意软件识别以及分类。通过利用随机森林算法,决策树算法,支持向量机等算法来对数据进行训练,通过分析并识别恶意软件对API指令名称,恶意软件描述信息,判断数据中恶意软件对比例,该数据是否为恶意软件。具体的实现功能步骤如下:1.本地数据导入,对数据进行预处理,划分为测试集和训练集。2.对预处理后的数据提取特征值,依据特征值的不同对它们进行分类。3.分别对测试集和训练集进行提取特征值,并通过其特征值不同划分为不同的恶意软件类别。4.将训练集代入算法模型进行训练,并将结果可视化。5.利用EasyGui框架进行程序封装,利用集成学习算法,训练得到相应的机器学习模型,将测试集数据代入,预测其所属的恶意软件类别,并分析不同算法的精确度差别。本课题使用数据清洗,特征值提取,模型构建和封装等方法进行融合和改进,结合时下热门的大数据和集成学习技术,对恶意软件的检测方法不断进行测试改进,争取得到更好的效果。1.4论文章节安排第一章:绪论。介绍了恶意软件研究的国内外发展现状,恶意软件给我们造成的巨大损失。面对这个巨大的威胁,研究人员们利用机器学习,集成学习的方法去对抗它们。第二章:恶意软件的课题分析,对我们训练的数据集进行了分析,以及对这些数据集需要做什么处理,介绍我们所使用的算法,介绍我们程序的总体功能以及需要应用到的相关技术。第三章:程序设计,设计出一个基于集成学习的恶意软件检测小程序,能过完成模型的训练和样本预测的功能,并进行界面的展示;以及详细介绍我们程序中所采用的算法的原理。第四章:程序实现,阐述程序实现的步骤,包括数据集预处理,特征值提取,模型训练,样本预测等步骤,结合主要代码,分析程序设计的逻辑,功能,原理。第五章:实验与分析:对实验结果进行展示和分析,包括恶意软件分类的结果,模型训练的精确度,以及样本预测的结果。第六章:课题总结,总结在课题中的收获,对课题中应用的一些技术方法作出总结,并对未来的工作的一些期望。第二章课题分析第二章课题分析第二章课题分析2.1数据集分析数据集对于机器学习或者是集成学习的研究来说都是不可或缺的,一个科学成果的背后一定少不了大量的数据的支持,在这个大数据时代,对于研究人员来说,无论是数据的数量还是质量,都可能影响他们是否能够得到一个正确的结果,对于许多反恶意软件公司或者安全厂商而言,他们会时刻关注最新的恶意软件数据信息,然后更新他们的数据库,本文的数据集来自于阿里巴巴天池于2020年发布的恶意软件相关数据集。本题目的所有数据均为经过脱敏处理的恶意软件数据,不会对测试机造成伤害,在这些数据中,有不同的恶意软件类型的数据,报考病毒,木马,勒索病毒,DDOS等,总计能够达到5000多条。使用基于Python的Anaconda环境来进行实验,使用Pandas库能够对数据进行导入,读取等操作。我们可以看到数据等一些基本信息如下所示:图2-1各数据集的内容格式图2-2训练文本集训练集由ID和文本两部分组成,ID为恶意软件的编号,文本为恶意软件的描述文本。图2-3训练集训练集由ID,Malware,恶意软件类型和恶意软件描述四部分组成。图2-4测试文本集从图中,我们发现测试文本集和训练文本集的组成几乎一致,都是由Index,ID,Malware,Variation,Class组成。图2-5测试集2.2功能需求该程序的目的是通过对导入的恶意软件数据进行数据分析,然后通过构建好的模型分析它的精确度,最好对测试集进行预测,预测恶意软件的类型。我们定义的程序功能如下所示:1.数据加载:利用pandas读取等方法,将本地的恶意软件数据读取到anaconda环境中,是后续进行数据分析的必要步骤。2.数据预处理:包括正确按照一定的比例将原始数据划分为测试集和训练集,然后对数据中的空值,异常值等进行处理。3.数据分析:对导入的训练集和测试集数据进行数据分析,得到恶意软件的分类信息,比例信息等结果,为后续建模提供帮助。4.模型训练:利用集成学习的方法,对恶意软件训练集进行训练,分别采用不同的算法进行测试,通过对比不同的结果选用精确度更高的模型。5.结果展示:对模型训练的结果进行可视化展示,以图表的样式进行输出。6.程序封装,使用EasyGui模块对程序进行一个封装,使用交互式的方式为了能够让程序能够更好的展现。2.3课题目标及评价方法对恶意软件数据进行数据分析,建模分类,预测结果并可视化展示。数据集来自网络,我们将其分为测试集和训练集。对训练集进行模型训练,对测试集的模型进行精确度测试,具体的公式如下:QUOTE(2-1)不同算法集成的模型得到的结果是不一样的,我们需要对结果进行对比,去除精确度较低的算法,利用精确度较高的算法进行集成,提高我们的识别准确率。2.4模型和算法该课题的是通过集成学习算法来搭建我们的恶意软件识别模型,设计一个可用于恶意软件导入,分类,识别,预测于一体的自动化分类程序。通过对比不同集成学习的精确度,挑选精确度更高的算法来完善我们的模型。通过选取逻辑回顾,支持向量机,随机森林,决策树等算法,来完成我们的模型训练,对训练后的结果,利用EasyGui框架进行程序的封装,能过更好的展示。课题的技术路线如下图2-6所示。图2-6技术路线第三章程序设计第三章程序设计第三章程序设计3.1程序流程程序设计的流程图如下:图3-1程序设计流程图通过流程图可知,程序的核心功能在于模型训练和样本预测两部分,其中模型训练还包括数据集的预处理和算法参数的调整等,这些措施的目的都是为了尽可能提高模型的预测精度。样本预测则只需使用已经训练完成的模型,对目标样本进行预测即可。3.2基于TF-IDF的恶意软件分类TF-IDF(termfrequency–inversedocumentfrequency,词频-逆向文件频率)是一种用于信息检索(informationretrieval)与文本挖掘(textmining)的常用加权技术。TF-IDF是一种统计方法,用以评估一个字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。TF-IDF的主要思想是:如果某个单词在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。1.TF是词频(TermFrequency)词频(TF)表示词条(关键字)在文本中出现的频率。这个数字通常会被归一化(一般是词频除以文章总词数),以防止它偏向长的文件。公式如下:QUOTE(3-1)2.IDF是逆向文件频率(InverseDocumentFrequency)逆向文件频率(IDF):某一特定词语的IDF,可以由总文件数目除以包含该词语的文件的数目,再将得到的商取对数得到。如果包含词条QUOTEtt的文档越少,IDF越大,则说明词条具有很好的类别区分能力。公式如下:QUOTE(3-2)分母之所以要+1,是为了避免分母为0。3.TF-IDF实际上是:QUOTETF*IDFTF*IDF某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。公式如下:QUOTETF-IDF=TF*IDFTF-IDF=TF*IDF(3-3)TF-IDF算法非常容易理解,并且很容易实现,但是其简单结构并没有考虑词语的语义信息,无法处理一词多义与一义多词的情况。TF-IDF采用文本逆频率IDF对TF值加权取权值大的作为关键词,但IDF的简单结构并不能有效地反映单词的重要程度和特征词的分布情况,使其无法很好地完成对权值调整的功能,所以TF-IDF算法的精度并不是很高,尤其是当文本集已经分类的情况下。在本质上IDF是一种试图抑制噪音的加权,并且单纯地认为文本频率小的单词就越重要,文本频率大的单词就越无用。这对于大部分文本信息,并不是完全正确的。IDF的简单结构并不能使提取的关键词,十分有效地反映单词的重要程度和特征词的分布情况,使其无法很好地完成对权值调整的功能。尤其是在同类语料库中,这一方法有很大弊端,往往一些同类文本的关键词被盖。通过TF-IDF算法,我们可以将经过处理后的文本,转换为向量,之后再对这些向量进行分析和建模,将变得轻而易举。这里以第一篇文献为例:图3-2利用TFIDF算法处理文本的代码(部分)首先要把文本转换为词表,并去除一些无意义的词汇。图3-3文本转换为词表(部分)然后再将词表转换为向量。图3-4词表转换为向量(部分)3.3基于集成学习的恶意软件算法在对数据进行了预处理和特征值提取后,接下来我们就要进行算法的训练,在算法的训练中,我们构建了多种集成学习算法模型来进行我们的训练,逻辑回归,支持向量机,SVM,决策树,通过调节相对应的参数,使得我们的算法能够达到更好的精确度,下面介绍我们使用的算法:3.3.1支持向量机算法支持向量机(SupportVectorMachine,SVM)是90年代中期出现的新的机器学习理论,是一种依据统计学习理论的有效的机器学习方法,与传统的机器学习分类模型,具有较强的泛化能力,训练容易,没有局部最小值等诸多优点。它的本质是求解一个凸优化问题,由于其优秀的分类性能,因此在小样本学习问题、高纬度模式识别和非线性样本学习类问题中能表现出较优性能,因为其优秀的分类性能,成为了机器学习领域的研究热点,相关方法在函数拟合问题、人脸识别、文本分类等领域中被广泛的应用。图3-5支持向量机原理图SVM是一种受监督的ML算法,基本思想是将输入向量通过非线性映射映射到一个高纬特征空间,可以简单理解为对逻辑回归模型的改进,逻辑回归是在线性可分的数据集中找到一个在特征空间中把两类数据划分开的超平面,而SVM则是在该空间中存在的无数个划分数据的超平面中,寻找到一个最优的决策超平面。其中在n维空间中绘制每个数据点,其中n表示功能的数量。每个功能值表示特定的坐标值。然后,通过识别区分一个类数据与另一类数据的超平面来执行分类,使两类样本点的间隔都相对较大,使模型的泛化能力更强,避免了显式的非线性映射,克服了高维特征空间的计算困难问题。图3-6SVM超平面3.3.2逻辑回归算法逻辑回归是一种分类算法,用于将观察值分配给一组离散的类。分类问题的示例包括电子邮件垃圾邮件或非垃圾邮件,在线交易是否欺诈,肿瘤恶性或良性,以及我们的对恶意软件的分类,Logistic回归使用LogisticSigmoid函数转换其输出以返回概率值。Logistic回归是一种用于分类问题的机器学习算法,它是一种基于概率概念的预测分析算法。我们可以将Logistic回归称为线性回归模型,但Logistic回归使用更复杂的成本函数,该成本函数可以定义为“Sigmoid函数”,也可以称为“逻辑函数”,而不是线性函数。Logistic回归的假设倾向于将成本函数限制在0到1之间。因此,线性函数无法表示它,因为它的值可以大于1或小于0,这在Logistic回归的假设中是不可能的。QUOTE(3-4)逻辑回归还定义了Sigmoid函数。为了将预测值映射到概率,我们使用Sigmoid函数。该函数将任何实际值映射到0到1之间的另一个值。在机器学习中,我们使用Sigmoid将预测映射到概率。QUOTEY=11+e-xY同时还定义了“边界”。当我们通过预测函数传递输入并返回介于0和1之间的概率得分时,我们期望分类器根据概率为我们提供一组输出或类。例如,我们有2条恶意软件数据,我们把它们输出为病毒和特洛伊木马一样(1—病毒,0—特洛伊木马)。我们基本上用一个阈值来决定,在该阈值之上,我们将值分类为1类,并且该值低于阈值,然后将其分类为2类。3.3.3决策树算法决策树(DecisionTree)是在数据挖掘领域中常见的分类算法。决策树通过从无序的离散数据中构建推理规则,把数据进行可解释的划分。决策树与自然界中树的结构相似,其基本模型结构如图3-3所示,在分类过程中,不同子节点分别对应不同属性,而叶子节点则对应不同的数据分类集合。数据集从根节点开始输入,对数据根据不同的属性进行裂变分类,从根节点经过多个子节点从而发散归类到不同的叶子节点。决策树算法由子节点分类规则的不同分为了不同的种类,如今常见的决策树算法有ID3、C4.5、CART等。图3-7决策树模型结构决策树是一种有监督的机器学习算法,可将数据集分解为越来越小的子集,与此同时,关联的决策树也将逐步发展。最终结果是一棵具有决策节点和叶节点的树。决策树可以处理分类数据和数字数据。决策树是更高级的机器学习算法(例如增强型决策树)的构建单元,因此可作为比较基于树的算法的基准模型。决策树的学习模型的性能可以通过调整其超参数来提高。超参数是用户必须预先设置的那些参数。在训练过程中,数据不会学习它们。决策树最常见的一些超参数是:判据:此参数确定如何测量拆分中的杂质。可能是“基尼”或“熵”拆分器:决策树如何搜索要素以进行拆分。对于每个节点,默认设置均设置为“最佳”,算法会考虑所有功能并选择最佳分割。如果将其设置为随机,则将考虑特征的随机子集。将通过随机子集中的最佳功能进行拆分。随机子集的大小由“max_features”参数确定。Max_Depth:这确定树的深度。默认值是none,这通常会导致过度拟合。max_depth参数是我们可以规范化树或限制树的增长方式以防止过度拟合的方法之一。Min_samples_split:节点必须包含的最小样本数才能考虑拆分。默认设置为2。这也是用于规范化决策树的另一个参数。Max_features:寻找最佳分割时要考虑的特征数量。默认情况下,决策树将考虑所有可用功能以实现最佳分割。3.3.4随机森林算法随机森林是一种灵活,易于使用的机器学习算法,即使在没有超参数调整的情况下,它在大多数情况下仍可产生出色的结果。由于它的简单性和多样性(也是可用于分类和回归任务的),它也是最常用的算法之一。同时随机森林是一种监督学习算法。它构建的“森林”是决策树的集合,通常使用“装袋”方法进行训练。套袋方法的总体思想是学习模型的组合可以增加总体结果。简而言之:随机森林构建多个决策树并将其合并在一起,以获得更准确和稳定的预测。随机森林的一大优点是它可以用于分类和回归问题,这构成了当前大多数机器学习系统。让我们看一下分类中的随机森林,因为分类是机器学习的基础。在下面,可以看到带有两棵树的随机森林的外观:图3-8随机森林结构随机森林具有与决策树或装袋分类器几乎相同的超参数。不同的是,无需将决策树与装袋分类器结合在一起,因为可以轻松地使用随机森林的分类器类。对于随机森林,还可以通过使用算法的回归器来处理回归任务。3.4基于EasyGui的可视化EasyGui是python的一个模块,调用起来比较简单。EasyGui与其他Gui生成器的不同之处在于,EasyGui不是事件驱动的。相反,所有Gui交互都通过简单的函数调用来调用。EasyGui为用户提供了一个简单的Gui交互界面,该界面不需要了解有关tkinter,框架,小部件,回调或lambda的任何信息。同时EasyGui与Python2和3很好地兼容,并且没有任何依赖关系。我们利用它所提供的各种程序框架,包括对话框,文本展示框,图片显示框架等,利用这些框架等结合,我们制作程序的展示界面。Msgbox()显示一条消息,并提供一个“确定”按钮。您可以指定任何消息和标题,甚至可以覆盖“确定”按钮的内容。以下是msgbox()的示例函数:importeasyguiasgmsg=g.msgbox("HelloEasyGUI")Ccbox()提供一个选择:继续或取消,并相应地返回1(选择继续)或0(选择取消)。请注意,ccbox()返回整数1或0,而不是布尔值True或False。但是您仍然可以写:importsysimporteasyguiasgifg.ccbox("Doyoustillplay?",choices=("Iwanttoplay!","Forgetit/")):g.msgbox("Stopplaying")else:sys.exit(0)使用buttonbox()可以定义自己的按钮集,而buttonbox()将显示您定义的按钮集。当用户单击任何按钮时,buttonbox()返回按钮的文本内容。如果用户取消取消或关闭窗口,则将返回默认选项(第一个选项)。代码实例如下:importeasyguiasg g.buttonbox(msg="Hi",title="",choices=("watermelon","apple","strawberry"))图3-9EasyGui模块展示(首页)图3-10EasyGui模块展示(算法选择框)第四章程序实现第四章程序实现第四章程序实现4.1数据集预处理恶意软件数据分为训练集和测试集数据,也包括我们的恶意软件描述信息的测试集和训练集数据,为了方便我们对他们进行一个综合的比较。合并DataFrames是从数据分析和机器学习任务开始的核心过程。它是每个数据分析师或数据科学家都应掌握的工具箱之一,因为在几乎所有情况下,数据都来自多个源和文件。需要通过某种联接逻辑将所有数据放在一个位置,然后开始分析。使用诸如查询语言之类的SQL的人可能知道此任务的重要性。Pandas具有与SQL之类的关系数据库非常相似的功能全面的,高性能的内存中联接操作。我们利用Pandas库自带的merge()方法来将它们分别合并到一个数据集中,我们就得到一个完整的测试集数据和训练集数据,为了后续的数据分析和调用。text_clf={}Accuracy={}train,test=train_test_split(training_merge_df,test_size=0.2)np.random.seed(0)X_train=train['Text'].valuesX_test=test['Text'].valuestrain=train['Class'].valuesy_test=test['Class'].valuesMerge()功能将两个数据集的所有列都进行合并,即合并数据框的行由所有行组成,在这里,我们将测试集和训练集文本信息和原来的测试集和训练集集合并,得到一个新的数据集。4.2数据分析集成学习构成了用于数据分析的模型构建自动化。当我们分配集成任务(例如分类,聚类和模型预测)时(这些任务是数据分析的核心),我们正在使用集成学习进行数据分析。在进行的数据分析工作时,利用各种数据分析的方法来对数据进行剖析,让我们对数据有更深层次的认识。4.2.1恶意软件的类别分析首先我们对恶意软件类型进行分析,通过定义和数据集相关的参数,ID,Malware,Variation,Class等参数,利用len()方法来直接统计我们数据集中的恶意软件类别信息。training_variants_df=pd.read_csv(open(variants,encoding='utf-8'))training_text_df=pd.read_csv(open(text,encoding='utf-8'),sep="\|\|",engine="python",skiprows=1,names=["ID","Text"])training_merge_df=training_variants_df.merge(training_text_df,left_on="ID",right_on="ID")ID=len(training_variants_df.ID.unique())Malware=len(training_variants_df.Malware.unique())Variation=len(training_variants_df.Variation.unique())4.2.2文本分析在完成了恶意软件软件类型一些分类分析以后,接下来,我们对恶意软件的文本描述信息进行一些分析,在这里我们使用文本分词的方法来帮助我们分析。文本分词是使用一种特殊的存储结构(称为事件窗口)来保存相邻单词的块。事件窗口同时评估可以从存储在序列存储器中的有效序列构造的连续单词块的所有假设分段。传统的分词方法缺少中文文本中的空格等单词定界符,使分词成为中文文本处理中的一个特殊问题。虽然我们的文本文献中没有中文信息,但是随着互联网上中文文本数量的迅速增长,未知单词的数量也相应增加,所以利用了一种新的无监督方法,该方法使用上下文信息来分割大型中文语料库。特别是,字符串前后的字符数(称为字符串的访问器)用于衡量字符串的独立性。独立性越大,则字符串是单词的可能性越大。然后,将分割问题视为优化问题,以使所有这些候选单词在说话中最大化此数字的目标函数。我们的目的是在分割性能方面探索最佳功能。除单词类型精度和单词类型调用之外,还使用单词令牌调用度量来评估性能。在我们探索的三种类型的目标函数中,多项式函数的性能胜过其他函数。这种简单的方法可以有效地对中文文本进行无监督的分割,其性能与其他无监督的分割方法具有很高的可比性。我们需要处理的数据如下,我们加上新的Text_count便签来统计我们的文本单词数量。train_text_df.loc[:,'Text_count']=train_text_df["Text"].apply(lambdax:len(str(x).split()))train_text_df.head()train_full=train_variants_df.merge(train_text_df,how="inner",left_on="ID",right_on="ID")train_full[train_full["Class"]==1].head()4.3模型训练训练模型是用于训练我们前面介绍的算法的数据集。它由样本输出数据和对输出有影响的相应输入数据集组成。训练模型用于通过算法运行输入数据,以将处理后的输出与样本输出相关。该相关性的结果用于修改模型。该迭代过程称为“模型拟合”。训练数据集或验证数据集的准确性对于模型的准确性至关重要。使用机器语言进行模型训练是向我们选择的算法提供数据以帮助识别和学习所涉及的所有属性的良好值的过程。机器学习模型有几种类型,其中最常见的是监督学习和无监督学习。当训练数据同时包含输入值和输出值时,可以进行监督学习。具有输入和预期输出的每组数据称为监控信号。当输入输入模型时,将根据处理结果与记录结果的偏差来进行训练。无监督学习涉及确定数据中的模式。然后,使用其他数据来拟合模式或聚类。这也是一个迭代过程,可基于与预期模式或聚类的相关性来提高准确性。此方法没有参考输出数据集。在前面我们已经介绍了各个模型的算法,接下来就是将算法与提取好的数据结合,来进行模型的训练。对于我们的每一个训练模型我们都设置好了相应的参数,预测参数,精确度等。通过对比模型等精确度来确认这个模型的优劣,通过调用精确度来。defModelTraining(model,X_train,y_train):text_clf=Pipeline([('vect',CountVectorizer()),('tfidf',TfidfTransformer()),('clf',model)])4.4模型预测完成模型训练后,我们接下来利用训练完成的模型来对我们的样本进行预测,这一步是非常重要的,训练完成的模型被封装在本地文件夹中,在预测的时候,我们只需要直接调用模型就能过进行样本的预测,为了方便预测,我们利用测试集随机生成了10条测试样本,每一条测试样本都来自测试集的某一条恶意软件数据,随后调用算法进行测试。defPredicted(sample,text_clf):sample_df=pd.read_csv(open(sample))X_test_final=sample_df['Text'].valuespredicted_class=text_clf.predict(X_test_final)returnpredicted_class第五章实验与分析第五章实验与分析第五章实验与分析5.1分类结果分析在进了数据预处理,特征值提取,模型训练后我们得到了我们的结果图5-1数据统计从图中可以看出,在训练集中,一共有3550条恶意软件信息可以进行分析,其中成果识别了3289个ID,还有261个无法识别的恶意软件数据信息,这些数据就是存在一定的数据丢失导致我们无法正常识别,后续需要将它们从数据中剔除,另外通过对数据中的Class进行统计,我们的恶意软件总共有9种不同的类型,接下来对每种类型的进行具体分析。为了更加清晰的展示,恶意软件的分类信息,利用matplotlib库对结果进行可视化展示,首先我们可以看到恶意软件的9种类型的分类信息。图5-2各类恶意软件的分布情况7类,4类和1类突变在数量上占绝对优势,而8类和9类突变数量非常稀少。这样的数量差异,或许会对建模产生一定的影响。接下来让我们再结合基因数据,详细看看各类突变中不同基因的分布情况。从图中我们可以清晰的看出各种类型的恶意软件的差异,Class1,Class4和Class7是三种占比比较多的恶意软件类型,而Class8和Class9的数量相对较少,为了更加具体的分析它们每一类之中具体的恶意软件分类信息的占比,我们对每一类进行分析,结合前面合并的训练集,可以看出每一类的具体信息如下所示:图5-3恶意软件分类结果5.2文本分类结果分析每一行的文本都有多达几千甚至上万字的篇幅,预计建模的工作量会相对比较大。来看看各类突变的文本长度差异。每一条恶意软件信息所自带的文本信息都是巨大的,复杂的甚至能够达到上万的字数,这对于我们的建模是一定的挑战,需要花费一定的时间来处理这些文本信息,才能更好的达到分词的效果。可视化结果可视化看到文本长度如下图所示:图5-4各类恶意软件的文本长度分布情况我们可以看到不同类型的恶意软件信息它们的文本信息也存在巨大的区别,同时结合前面的分析可以看到,恶意软件数量的多少和它的恶意软件描述信息存在一定的联系,Class5和Class6虽然它们的信息较短,但是它们的数量上相对其他类型的也相对较少。图5-5Class1类中文本长度分布情况查看每一类中的文本具体长度情况可看出,恶意软件的描述信息长度其实和它其中所包含的各种恶意软件类型的长度有关。图5-6Class1的主要关键字我们发现,关键字主要由一些代表恶意软件信息的专业词汇组成,不同类别的恶意软件它的关键词自然也是不同的,虽然我们对于他们的真实含义很难去理解,但是通过TF-IDF方法,我们将文本转换为数字的特征向量,然后将这些特征值进行模型训练,就能得到我们的训练结果。5.3预测结果分析样本的预测是利用已经训练好的模型对测试集进行恶意软件类别的预测,我们知道测试集的数据和训练集的数据只差了一个恶意软件的类型,所以调用训练好的模型,直接对样本进行预测,首先需要选择一个前面训练好的模型进行预测,然后选择样本进行预测,可以选择多个样本同时预测,最好显示统计结果,预测结果如下所示:图5-7模型选择图图5-8LinearSVC训练结果图5-9RbSVC训练结果图5-10逻辑回归训练结果图5-11决策树训练结果图5-12随机森林训练结果图5-13训练结果对比从图中我们可以看到不同算法的预测结果是不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026福建南平市汇禾物业管理有限公司社会招聘1人笔试备考试题及答案详解
- 2026江苏泰州学院招聘9人(第二批)考试备考试题及答案详解
- 2026河北定州市妇幼保健院招募暑假大学生志愿者考试备考题库及答案详解
- 2026年大连市级专业森林消防队员招聘笔试备考试题及答案详解
- 2026年安全员考试专业管理实务全真模拟试题及答案
- 2026年安庆市消防救援局公开招聘消防文员1名笔试参考题库附答案
- 外贸货运笔试题及答案
- 荆楚网笔试题目及答案
- 2026北京化工大学国际教育学院财务管理岗位招聘1人笔试备考试题及答案详解
- 2026年永州市冷水滩区中小学编制教师招聘笔试参考试题及答案详解
- 家政保洁服务包年合同
- 16.3.2 完全平方公式(第1课时 完全平方公式)(教学课件)
- DB31T 310020-2024自动驾驶道路测试安全风险评估技术规范
- 精神科护理常规操作培训
- 2025年电力交易员题库及答案
- 中国通信建设北京工程局笔试
- 供暖维修技能培训
- 国开电大专科《人文英语1》一平台综合测试在线形考试题及答案2025秋期珍藏版
- 师范生选岗考试题及答案
- 2025贵州观山湖区第四十三幼儿园招聘笔试备考试题及答案解析
- 军事目标识别课件
评论
0/150
提交评论