一种APP软件运行数据异常判断方法与流程

文档序号:15198522发布日期:2018-08-19 02:30阅读:1868来源:国知局

本发明涉及一种app软件运行数据异常判断方法,属于app软件运行检测领域。



背景技术:

android平台下app软件异常判断方法主要采用机器学习方法构建训练数据模型,最后通过构建的模型判断软件是否异常。例如,孙敏等人利用特征加权k最近邻方法进行svm训练集的精简和分类器的构建。刘晓明等人提出仅将良性样本作为训练集,后采用最近邻(knn)机器学习算法建立良性应用行为模型来实现对app软件进行异常判断的方法。

目前,针对app软件异常判断方法主要是针对大量样本实现轻量级判断方法,基本采用机器学习方法建立数据训练模型,然后对app软件运行数据进行判断,并没有结合系统日志信息、系统资源消耗状态及app软件资源消耗状态,且训练样本的更新不够及时,将影响判断方法识别的准确率。



技术实现要素:

针对上述问题,本发明提供了一种app软件运行数据异常判断方法,以用于帮助用户发现app软件在使用过程中是否出现异常。

本发明的技术方案是:一种app软件运行数据异常判断方法,所述方法的具体步骤如下:

s1、将app软件运行数据集作为输入;其中,app软件运行数据集u={u1,u2,...,un},ux=(utimex,upidx,rcpux,rmemx,pronumx,sernumx,smemx,scpux,u_flagx)表示第x条app软件数据信息,utimex表示第x条app软件数据信息中系统当前时间;upidx表示第x条app软件数据信息中运行的app软件进程号;rcpux表示第x条app软件数据信息中app软件占用cpu大小;rmemx表示第x条app软件数据信息中app软件占用内存大小;pronumx表示第x条app软件数据信息中系统进程数量;sernumx表示第x条app软件数据信息中系统服务数量;smemx表示第x条app软件数据信息中系统已使用内存大小,scpux表示第x条app软件数据信息中系统已使用cpu大小,u_flagx表示第x条app软件数据信息的标记;x=1,2,...n;

s2、基于系统日志对app软件运行数据集进行标记:

s2.1、初始化i=1,j=1,执行步骤s2.2;

s2.2、如果i≤n,则遍历日志文件d,并执步骤s2.3判断j≤m;否则保存标记后的数据集u,结束;

s2.3、如果j≤m,则执行步骤s2.4判断i=1是否为真;否则标记u_flagi=1,i=i+1,并执行步骤s2.2;

s2.4、如果i=1为真,则执行步骤s2.6判断dtimej<utimei是否为真;否则执行步骤s2.5判断dtimej>utimei-1是否为真;

s2.5、如果dtimej>utimei-1为真,则执行步骤s2.6判断dtimej<utimei是否为真;否则j=j+1,并执行步骤s2.3;

s2.6、如果dtimej<utimei为真,则执行步骤s2.7判断dpidj=upidi是否为真;否则标记u_flagi=1,i=i+1,并执行步骤s2.2;

s2.7、如果dpidj=upidi为真,则执行步骤s2.8判断typej=“e”是否为真,否则j=j+1,并执行步骤s2.3;

s2.8、如果typej=“e”为真,则标记u_flagi=-1,i=i+1,并执行步骤s2.2;否则执行步骤s2.9判断messagej是否包含应用程序接口字符串;其中应用程序接口字符串表示app软件在执行某些操作所必须调用的函数名称;

s2.9、如果messagej包含应用程序接口字符串,则标记u_flagi=-1,i=i+1,并执行步骤s2.2;否则执行步骤s2.10判断messagej是否包含“start”或“delete”;

s2.10、如果messagej包含“start”或“delete”,则执行步骤s2.11判断messagej是否包含应用程序包名;否则j=j+1,并执行步骤s2.3;其中应用程序包名表示每个app软件安装在系统后会生成一个唯一的字符串;

s2.11、如果messagej包含应用程序包名,则标记u_flagi=-1,i=i+1,并执行步骤s2.2;否则j=j+1,并执行步骤s2.3;

其中,系统日志文件d={d1,d2,...,dm},dy=(dtimey,typey,dpidy,tagy,messagey)表示第y行系统日志信息,dtimey表示第y行系统日志信息产生的时间;typey表示第y行系统日志信息的类型,dpidy表示第y行系统日志信息中运行的app软件的进程号,tagy表示第y行系统日志信息中运行的app软件的activity的名称或类名;messagey表示第y行系统日志信息中app软件运行的相关详细信息;y=1,2,...m;

s3、基于svm的app软件运行数据集中数据异常判断:

s3.1、初始化数据:c=2-8、g=2-8、g_cur=0、c_max=23、g_max=23、v=0、acc_max=0、great_c=0、great_g=0、k=10、b=0、lagrange为空,执行步骤s3.2;其中,c表示惩罚因子,g表示径向基核函数参数,g_cur表示临时变量,c_max表示c的最大值,g_max表示g的最大值,v表示迭代的次数,最大迭代次数用v_max表示,acc_max表示svm算法app软件运行训练数据集t的准确率的最大值,svm算法app软件运行训练数据集t的准确率用acc表示,k表示c和g每次迭代的增量,b表示svm分类面函数的一个常数值,lagrange表示app软件运行训练数据集t中每条数据的拉格朗日乘子的集合;

s3.2、如果v<v_max,则执行步骤s3.6判断c<c_max+k是否为真;否则c=great_c,g=great_g,并基于svm算法计算app软件运行训练数据集t的拉格朗日乘子和参数b,将拉格朗日乘子存入lagrange并初始化数据,获取标记后的数据集u={u1,u2,...,un},i=1,执行步骤s3.3判断i≤n是否为真;

s3.3、如果i≤n为真,则执行步骤s3.4判断u_flagi=1是否为真;否则结束;

s3.4、如果u_flagi=1为真,则执行步骤s3.5判断svm分类面函数计算结果>0是否为真;否则输出ui数据为异常,i=i+1,并执行步骤s3.3;

s3.5、如果svm分类面函数计算结果>0为真,则输出ui数据为正常,将ui数据加入app软件运行训练数据集t中,i=i+1,并执行步骤s3.3;否则更新标记u_flagi=-1,输出ui数据为异常,将ui数据加入app软件运行训练数据集t中,i=i+1,并执行步骤s3.3;

s3.6、如果c<c_max+k为真,则执行步骤s3.7判断g<g_max+k是否为真;否则g_cur=great_g-k,c_max=great_c+k,g_max=great_g+k,g=g_cur,c=great_c-k,k=k/10,v=v+1,acc_max=0,执行步骤s3.2;

s3.7、如果g<g_max+k为真,则基于svm算法计算app软件运行训练数据集t分类的准确率acc并执行步骤3.8判断acc>acc_max是否为真;否则执行步骤s3.10判断v=0是否为真;

s3.8、如果acc>acc_max为真,则执行步骤3.9判断acc=1是否为真;否则g=g+k,并执行步骤3.7;

s3.9、如果acc=1为真,则great_c=c,great_g=g,g_cur=great_g-k,c_max=great_c+k,g_max=great_g+k,g=g_cur,c=great_c-k,k=k/10,v=v+1,acc_max=0,执行步骤s3.2;否则,acc_max=acc,great_c=c,great_g=g,g=g+k,并执行步骤3.7;

s3.10、如果v=0为真,则c=c+k,g=2-8,并执行步骤s3.6;否则c=c+k,g=g_cur,并执行步骤s3.6;

其中,app软件运行训练数据集用t表示,t={t1,t2,…,tp},tp=(rcpup,rmemp,pronump,sernump,smemp,scpup,t_flagp),rcpup表示第p条训练数据中app软件占用cpu大小,rmemp表示第p条训练数据中app软件占用内存大小,pronump表示第p条训练数据中系统进程数量,sernump表示第p条训练数据中系统服务数量,smemp表示第p条训练数据中系统已使用内存大小,scpup表示第p条训练数据中系统已使用cpu大小,t_flagp表示第p条训练数据是正常数据或异常数据;

s4、输出判断结果:根据步骤s3的结果,输出u_flagx=-1的app软件数据信息ux作为异常数据,输出u_flagx=1的app软件数据信息ux作为正常数据;其中x=1,2,...n。

将app软件运行训练数据集t及加入app软件运行训练数据集t中的app软件运行数据作为新的app软件运行数据集用于下一次基于svm的app软件运行数据集中数据异常判断。

本发明的有益效果是:

(1)本发明将手机日志信息与svm算法相结合,有助于更准确的判断app应用程序数据信息是否存在异常;

(2)本发明对svm的相关参数进行优选,有助于提高判断的准确率。

(3)本发明对svm的训练数据集进行扩充,有助于提高判断的准确率。

附图说明

图1为本发明的方法流程图;

图2为本发明手机系统日志的数据异常判断方法的流程图;

图3为本发明基于svm的app软件运行数据集中数据异常判断方法的流程图。

具体实施方式

实施例1:如图1-3所示,一种app软件运行数据异常判断方法,所述方法具体步骤如下:

本实施例中app软件运行数据集u由7条数据组成,如表1所示,u={u1,u2,...,un},其中ui=(utimei,upidi,rcpui,rmemi,pronumi,sernumi,smemi,scpui,u_flagi)(i=1,2,...,n)表示第i条app软件数据信息,utimei表示第i条app软件数据信息中系统当前时间;upidi表示第i条app软件数据信息中运行的app软件进程号;rcpui表示第i条app软件数据信息中app软件占用cpu大小;rmemi表示第i条app软件数据信息中app软件占用内存大小;pronumi表示第i条app软件数据信息中系统进程数量;sernumi表示第i条app软件数据信息中系统服务数量;smemi表示第i条app软件数据信息中系统已使用内存大小,scpui表示第i条app软件数据信息中系统已使用cpu大小,u_flagi表示第i条app软件数据信息的标记。

表1app软件运行数据集u

本实例中app软件运行训练数据集t由10条数据组成,如表2所示,t={t1,t2,…,tp},其中tp=(rcpup,rmemp,pronump,sernump,smemp,scpup,t_flagp)(i=1,2,…,p),rcpup表示第p条训练数据中app软件占用cpu大小;rmemp表示第p条训练数据中app软件占用内存大小;pronump表示第p条训练数据中系统进程数量;sernump表示第p条训练数据中系统服务数量;smemp表示第p条训练数据中系统已使用内存大小,scpup表示第p条训练数据中系统已使用cpu大小,t_flagp表示第p条训练数据是正常数据或异常数据(-1表示异常,1表示正常)。

表2app软件运行训练数据集t

本实例中系统日志文件d由6条数据组成,如表3所示,d={d1,d2,...,dm},其中dj=(dtimej,typej,dpidj,tagj,messagej)(j=1,2,...,m)表示第j行系统日志信息,dtimej表示第j行系统日志信息产生的时间;typej表示第j行系统日志信息的类型;dpidj表示第j行系统日志信息中运行的app软件的进程号;tagj表示第j行系统日志信息中运行的app软件的activity的名称或类名;messagej表示第j行系统日志信息中app软件运行的相关详细信息。

表3系统日志文件d

app软件运行数据异常判断方法的具体步骤如下:

step1:输入app软件运行数据集u;本实例中app软件运行数据共有7条,u={u1,u2,u3,u4,u5,u6,u7},

u1=[utime1,upid1,rcpu1,rmem1,pronum1,sernum1,smem1,scpu1,u_flag1]=[20170921113814,7691,12.84,0.26,29,41,409,21.76,null],

u2=[utime2,upid2,rcpu2,rmem2,pronum2,sernum2,smem2,scpu2,u_flag2]=[20170921114115,7691,13.77,0.49,28,38,413,22.69,null],

u3=[utime3,upid3,rcpu3,rmem3,pronum3,sernum3,smem3,scpu3,u_flag3]=[20170921114549,7691,12.99,0.32,3041,412,21.15,null],

u4=[utime4,upid4,rcpu4,rmem4,pronum4,sernum4,smem4,scpu4,u_flag4]=[20170921115052,7691,13.21,0.27,29,41,425,14.91,null],

u5=[utime5,upid5,rcpu5,rmem5,pronum5,sernum5,smem5,scpu5,u_flag5]=[20170921115224,7691,12.93,0.00,28,40,409,12.20,null],

u6=[utime6,upid6,rcpu6,rmem6,pronum6,sernum6,smem6,scpu6,u_flag6]=[20170921115346,7691,12.77,0.31,2941,422,35.13,null],

u7=[utime7,upid7,rcpu7,rmem7,pronum7,sernum7,smem7,scpu7,u_flag7]=[20170921115457,7691,12.93,0.00,28,40,409,13.19,null];

step2:基于系统日志对app软件运行数据集进行标记:本实例中系统日志文件d共有6条数据,d={d1,d2,d3,d4,d5,d6},d1=[dtime1,type1,dpid1,tag1,message1]=

[20170921113714,e,7691,qjqx,java.lang.nullpointerexception],

d2=[dtime2,type2,dpid2,tag2,message2]=

[20170921113818,d,24379,trace,java.net.inetaddress.lookuphostbyname],

d3=[dtime3,type3,dpid3,tag3,message3]=

[20170921113954,d,7691,qjqx,unexpectedvaluefromnativegetenabledtags:0],

d4=[dtime4,type4,dpid4,tag4,message4]=

[20170921114024,d,7691,qjqx,startproccom.hzl.flashlight6foractivity],

d5=[dtim5,type5,dpid5,tag5,message5]=

[20170921114345,d,7691,qjqx,action:action_main_circleservice],

d6=[dtime6,type6,dpid6,tag6,message6]=

[20170921114555,d,7691,qjqx,query()beginuri=content://sms];

具体方法:

1)初始化:i=1,j=1;

2)判断i是否小于等于n:1<7,遍历日志文件,执行3);

3)判断j是否小于等于m:1<6,判断i是否等于1:1==1,执行4);

4)判断dtime1是否小于utime1:20170921113714<20170921113814,执行5);

5)判断dpid1是否等于upid1:7691==7691,执行6);

6)判断type1是否等于“e”:“e”==“e”,标记u_flag1=-1,i++,执行2)

2)判断i是否小于等于n:2<7,遍历日志文件,执行3);

3)判断j是否小于等于m:1<6,判断i是否等于1:2!=1,执行7);

7)判断dtime1是否大于utime2-1:20170921113714<20170921113814,j++,执行3);

3)判断j是否小于等于m:2<6,判断i是否等于1:2!=1,执行7);

7)判断dtime2是否大于utime2-1:20170921113818>20170921113814,执行4);

4)判断dtime2是否小于utime2:20170921113818<20170921114115,执行5);

5)判断dpid2是否等于upid2:24379!=7691,j++,执行3);

3)判断j是否小于等于m:3<6,判断i是否等于1:3!=1,执行7);

7)判断dtime3是否大于utime2-1:20170921113954>20170921113814,执行4);

4)判断dtime3是否小于utime2:20170921113954<20170921114115,执行5);

5)判断dpid3是否等于upid2:7691==7691,执行6);

6)判断type3是否等于“e”:“d”!=“e”,执行8);

8)判断message3是否包含应用程序接口字符串:“unexpectedvaluefromnativegetenabledtags:0”不包含应用程序接口字符串,执行9);

9)判断message3是否包含“start”或“delete”:“unexpectedvaluefromnativegetenabledtags:0”不包含“start”或“delete”;j++,执行3);

3)判断j是否小于等于m:4<6,判断i是否等于1:2!=1,执行7);

7)判断dtime4是否大于utime2-1:20170921114024>20170921113814,执行4);

4)判断dtime4是否小于utime2:20170921114024<20170921114115,执行5);

5)判断dpid4是否等于upid2:7691==7691,执行6);

6)判断type4是否等于“e”:“d”!=“e”,执行8);

8)判断message4是否包含应用程序接口字符串:“startproccom.hzl.flashlight6foractivity”不包含应用程序接口字符串,执行9);

9)判断message4是否包含“start”或“delete”:“startproccom.hzl.flashlight6foractivity”包含“start”,执行10);

10)判断message4是否包含应用程序包名:“startproccom.hzl.flashlight6foractivity”包含“com.hzl.flashlight6”,标记u_flag2=-1,i++,执行2);

2)判断i是否小于等于n:3<7,遍历日志文件,执行3);

3)判断j是否小于等于m:4<6,判断i是否等于1:3!=1,执行7);

7)判断dtime4是否大于utime3-1:20170921114024<20170921114115,j++,执行3);

3)判断j是否小于等于m:5<6,判断i是否等于1:3!=1,执行7);

7)判断dtime5是否大于utime3-1:20170921114345>20170921114115,执行4);

4)判断dtime5是否小于utime3:20170921114345<20170921114549,执行5);

5)判断dpid5是否等于upid3:7691==7691,执行6);

6)判断type5是否等于“e”:“d”!=“e”,执行8);

8)判断message4是否包含应用程序接口字符串:“action:action_main_circleservice”不包含应用程序接口字符串,执行9);

9)判断message4是否包含“start”或“delete”:“action:action_main_circleservice”不包含“start”或“delete”,j++,执行3);

3)判断j是否小于等于m:6==6,判断i是否等于1:3!=1,执行7);

7)判断dtime6是否大于utime3-1:20170921114555>20170921114115,执行4);

4)判断dtime6是否小于utime3:20170921114555>20170921114549,执行11);

11)标记u_flag3=1,i++,执行2);

2)判断i是否小于等于n:4<7,遍历日志文件,执行3);

3)判断j是否小于等于m:6==6,判断i是否等于1:4!=1,执行7);

7)判断dtime6是否大于utime4-1:20170921114555>20170921114549,执行4);

4)判断dtime6是否小于utime4:20170921114555<20170921115052,执行5);

5)判断dpid6是否等于upid4:7691==7691,执行6);

6)判断type6是否等于“e”:“d”!=“e”,执行8);

8)判断message6是否包含应用程序接口字符串:“query()beginuri=content://sms”包含应用程序接口字符串,标记u_flag4=-1,i++,执行2);

2)判断i是否小于等于n:5<7,遍历日志文件,执行3);

3)判断j是否小于等于m:6==6,判断i是否等于1:5!=1,执行7);

7)判断dtime6是否大于utime5-1:20170921114555<20170921115052,j++,执行3);

3)判断j是否小于等于m:7>6,标记u_flag5=1,i++,执行2);

2)判断i是否小于等于n:6<7,遍历日志文件,执行3);

3)判断j是否小于等于m:7>6,标记u_flag6=1,i++,执行2);

2)判断i是否小于等于n:7==7,遍历日志文件,执行3);

3)判断j是否小于等于m:7>6,标记u_flag7=1,i++,执行2);

2)判断i是否小于等于n:8>7,保存标记后的数据集u,结束;

其中标记后的数据集u={u1,u2,u3,u4,u5,u6,u7},

u1=[utime1,upid1,rcpu1,rmem1,pronum1,sernum1,smem1,scpu1,u_flag1]=[20170921113814,7691,12.84,0.26,29,41,409,21.76,-1],

u2=[utime2,upid2,rcpu2,rmem2,pronum2,sernum2,smem2,scpu2,u_flag2]=[20170921114115,7691,13.77,0.49,28,38,413,22.69,-1],

u3=[utime3,upid3,rcpu3,rmem3,pronum3,sernum3,smem3,scpu3,u_flag3]=[20170921114549,7691,12.99,0.32,3041,412,21.15,1],

u4=[utime4,upid4,rcpu4,rmem4,pronum4,sernum4,smem4,scpu4,u_flag4]=[20170921115052,7691,13.21,0.27,29,41,425,14.91,-1],

u5=[utime5,upid5,rcpu5,rmem5,pronum5,sernum5,smem5,scpu5,u_flag5]=[20170921115224,7691,12.93,0.00,28,40,409,12.20,1],

u6=[utime6,upid6,rcpu6,rmem6,pronum6,sernum6,smem6,scpu6,u_flag6]=[20170921115346,7691,12.77,0.31,2941,422,35.13,1],

u7=[utime7,upid7,rcpu7,rmem7,pronum7,sernum7,smem7,scpu7,u_flag7]=[20170921115457,7691,12.93,0.00,28,40,409,13.19,1];

step3:基于svm的app软件运行数据集中数据异常判断:

初始化数据:c=2-8、g=2-8、g_cur=0、c_max=23、g_max=23、v=0、acc_max=0、great_c=0、great_g=0、k=10、b=0、lagrange为空,执行步骤s3.2;其中,c表示惩罚因子,g表示径向基核函数参数,g_cur表示临时变量,c_max表示c的最大值,g_max表示g的最大值,v表示迭代的次数,最大迭代次数用v_max表示,acc_max表示svm算法app软件运行训练数据集t的准确率的最大值,svm算法app软件运行训练数据集t的准确率用acc表示,k表示c和g每次迭代的增量,lagrange表示app软件运行训练数据集t中每条数据的拉格朗日乘子的集合;b表示svm分类面函数的一个常数值,即其中lz表示lagrange中第z个数据的拉格朗日乘子,yz表示训练数据集t中第z个训练数据的t_flagz,tz表示训练数据集t中第z个训练数据,ui表示软件运行数据集u中第i个数据,k表示径向基核函数,即g表示核函数的参数,x1,x2表示核函数的变量。

获取app软件训练数据集t={t1,t2,t3,t4,t5,t6,t7,t8,t9,t10},

t1=[rcpu1,rmem1,pronum1,sernum1,smem1,scpu1,t_flag1]=[13.25,0.01,28,38,407,14.14,1],

t2=[rcpu2,rmem2,pronum2,sernum2,smem2,scpu2,t_flag2]=[12.68,0.03,28,37,408,11.55,1],

t3=[rcpu3,rmem3,pronum3,sernum3,smem3,scpu3,t_flag3]=[12.7,0.03,28,40,412,12.74,1],

t4=[rcpu4,rmem4,pronum4,sernum4,smem4,scpu4,t_flag4]=[12.66,0.06,29,39,409,13.26,1],

t5=[rcpu5,rmem5,pronum5,sernum5,smem5,scpu5,t_flag5]=[13.77,0.00,28,38,405,11.92,1],

t6=[rcpu6,rmem6,pronum6,sernum6,smem6,scpu6,t_flag6]=[16.93,1.70,28,40,424,33.44,-1],

t7=[rcpu7,rmem7,pronum7,sernum7,smem7,scpu7,t_flag7]=[12.93,1.06,29,40,418,15.75,-1],

t8=[rcpu8,rmem8,pronum8,sernum8,smem8,scpu8,t_flag8]=[15.39,1.46,30,41,416,21.91,-1],

t9=[rcpu9,rmem9,pronum9,sernum9,smem9,scpu9,t_flag9]=[17.46,1.09,31,42,419,26.01,-1],

t10=[rcpu10,rmem10,pronum10,sernum10,smem10,scpu10,t_flag10]=[12.9,0.71,30,41,417,24.96,-1];

具体方法:

1)判断v是否小于3:0<3,执行2);

2)判断c是否小于c_max+k:2-8<23+10,执行3);

3)判断g是否小于g_max+k:2-8<23+10,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0,执行5);

5)判断acc是否大于acc_max:0=0,g=g+k:g=10.00390625;执行3);

3)判断g是否小于g_max+k:10.00390625<23+10,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0,执行5);

5)判断acc是否大于acc_max:0>0,g=g+k:g=20.00390625;执行3);

3)判断g是否小于g_max+k:20.00390625<23+10,执行6);

6)判断v是否等于0:0==0,c=c+k:c=10.00390625,g=2-8,执行2);

2)判断c是否小于c_max+k:10.00390625<18,执行3);

3)判断g是否小于g_max+k:2-8<23+10,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0.800000011920929,执行5);

5)判断acc是否大于acc_max:0.800000011920929>0,执行7);

7)判断acc是否等于1:0.800000011920929==1,acc_max=acc=0.800000011920929,great_c=c=10.00390625,great_g=g=0.00390625,g=g+k=10.00390625,执行3);

3)判断g是否小于g_max+k:10.00390625<23+10:10.00390625<18,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=1,执行5);

5)判断acc是否大于acc_max:1>0.800000011920929,执行7);

7)判断acc是否等于1:1==1,great_c=c=10.00390625,great_g=g=10.00390625,g_cur=great_g-k=0.00390625,c_max=great_c+k=20.00390625,g_max=great_g+k=20.00390625,g=g_cur=0.00390625,c=great_c-k=0.00390625,k=k/10=1,v=v+1=1,acc_max=0;执行1);

1)判断v是否小于3:1<3,执行2);

2)判断c是否小于c_max+k:0.00390625<21.00390625,执行3);

3)判断g是否小于g_max+k:0.00390625<21.00390625,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0,执行5);

5)判断acc是否大于acc_max:0=0,g=g+k=1.00390625,执行3);

3)判断g是否小于g_max+k:1.00390625<21.00390625,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0,执行5);

5)判断acc是否大于acc_max:0=0,g=g+k=2.00390625,执行3);

3)判断g是否小于g_max+k:2.00390625<21.00390625,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0,执行5);

5)判断acc是否大于acc_max:0=0,g=g+k=3.00390625,执行3);

3)判断g是否小于g_max+k:3.00390625<21.00390625,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0,执行5);

5)判断acc是否大于acc_max:0=0,g=g+k=4.00390625,执行3);

3)判断g是否小于g_max+k:4.00390625<21.00390625,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0,执行5);

5)判断acc是否大于acc_max:0=0,g=g+k=5.00390625,执行3);

3)判断g是否小于g_max+k:5.00390625<21.00390625,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0,执行5);

5)判断acc是否大于acc_max:0=0,g=g+k=6.00390625,执行3);

3)判断g是否小于g_max+k:6.00390625<21.00390625,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0,执行5);

5)判断acc是否大于acc_max:0=0,g=g+k=7.00390625,执行3);

3)判断g是否小于g_max+k:7.00390625<21.00390625,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0,执行5);

5)判断acc是否大于acc_max:0=0,g=g+k=8.00390625,执行3);

3)判断g是否小于g_max+k:8.00390625<21.00390625,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0,执行5);

5)判断acc是否大于acc_max:0=0,g=g+k=9.00390625,执行3);

3)判断g是否小于g_max+k:9.00390625<21.00390625,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0,执行5);

5)判断acc是否大于acc_max:0=0,g=g+k=10.00390625,执行3);

3)判断g是否小于g_max+k:10.00390625<21.00390625,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0,执行5);

5)判断acc是否大于acc_max:0=0,g=g+k=11.00390625,执行3);

3)判断g是否小于g_max+k:11.00390625<21.00390625,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0,执行5);

5)判断acc是否大于acc_max:0=0,g=g+k=12.00390625,执行3);

3)判断g是否小于g_max+k:12.00390625<21.00390625,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0,执行5);

5)判断acc是否大于acc_max:0=0,g=g+k=13.00390625,执行3);

3)判断g是否小于g_max+k:13.00390625<21.00390625,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0,执行5);

5)判断acc是否大于acc_max:0=0,g=g+k=14.00390625,执行3);

3)判断g是否小于g_max+k:14.00390625<21.00390625,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0,执行5);

5)判断acc是否大于acc_max:0=0,g=g+k=15.00390625,执行3);

3)判断g是否小于g_max+k:15.00390625<21.00390625,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0,执行5);

5)判断acc是否大于acc_max:0=0,g=g+k=16.00390625,执行3);

3)判断g是否小于g_max+k:16.00390625<21.00390625,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0,执行5);

5)判断acc是否大于acc_max:0=0,g=g+k=17.00390625,执行3);

3)判断g是否小于g_max+k:17.00390625<21.00390625,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0,执行5);

5)判断acc是否大于acc_max:0=0,g=g+k=18.00390625,执行3);

3)判断g是否小于g_max+k:19.00390625<21.00390625,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0,执行5);

5)判断acc是否大于acc_max:0=0,g=g+k=20.00390625,执行3);

3)判断g是否小于g_max+k:20.00390625<21.00390625,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0,执行5);

5)判断acc是否大于acc_max:0=0,g=g+k=21.00390625,执行3);

3)判断g是否小于g_max+k:21.00390625<21.00390625,执行6);

6)判断v是否等于0:1!=0,c=c+k:c=1.00390625,g=g_cur=0.00390625,执行2);

2)判断c是否小于c_max+k:1.00390625<21.00390625,执行3);

3)判断g是否小于g_max+k:0.00390625<21.00390625,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=0.800000011920929,执行5);

5)判断acc是否大于acc_max:0.800000011920929>0,执行7);

7)判断acc是否等于1:0.800000011920929==1,acc_max=acc=0.800000011920929,great_c=c=1.00390625,great_g=g=0.00390625,g=g+k=1.00390625,执行3);

3)判断g是否小于g_max+k:1.00390625<21.00390625,执行4);

4)基于svm算法计算数据集t的分类准确率acc:acc=1,执行5);

5)判断acc是否大于acc_max:1>0.800000011920929,great_c=c=1.00390625,great_g=g=1.00390625,g_cur=great_g-k=0.00390625,c_max=great_c+k=2.00390625,g_max=great_g+k=2.00390625,g=g_cur=0.00390625,c=great_c-k=0.00390625,k=k/10=0.1,v=v+1=2,acc_max=0;执行1);

1)判断v是否小于3:2<3,执行2);

2)判断c是否小于c_max+k:0.00390625<2.10390625,执行3);

3)判断g是否小于g_max+k:0.00390625<2.10390625,执行4);

4)基于svm算法计算数据集t分类准确率acc:acc=0,执行5);

5)判断acc是否大于acc_max:0=0,g=g+k=0.10390625,执行3);

不断迭代3),4),5),6)直到great_c=0.50390625,great_g=0.40390625,acc=1,v=v+1=3,执行1);

1)判断v是否小于3:3=3,执行8);

8)c=great_c=0.50390625,g=great_g=0.40390625,基于svm算法计算数据集t的拉格朗日乘子和常数值b,将拉格朗日乘子存入lagrange中,执行9);其中lagrange={l1,l2,l3,l4,l5,l6,l7,l8,l9,l10},l1=0.50390625,l2=0.50390625,l3=0.50390625,l4=0.50390625,l5=0.50390625,l6=-0.50390625,l7=-0.50390625,l8=-0.50390625,l9=-0.50390625,l10=-0.50390625,b=0.019498957054381982;

9)获取标记后的数据集u,其中标记后的数据集u={u1,u2,u3,u4,u5,u6,u7},

u1=[utime1,upid1,rcpu1,rmem1,pronum1,sernum1,smem1,scpu1,u_flag1]=[20170921113814,7691,12.84,0.26,29,41,409,21.76,-1],

u2=[utime2,upid2,rcpu2,rmem2,pronum2,sernum2,smem2,scpu2,u_flag2]=[20170921114115,7691,13.77,0.49,28,38,413,22.69,-1],

u3=[utime3,upid3,rcpu3,rmem3,pronum3,sernum3,smem3,scpu3,u_flag3]=[20170921114549,7691,12.99,0.32,3041,412,21.15,1],

u4=[utime4,upid4,rcpu4,rmem4,pronum4,sernum4,smem4,scpu4,u_flag4]=[20170921115052,7691,13.21,0.27,29,41,425,14.91,-1],

u5=[utime5,upid5,rcpu5,rmem5,pronum5,sernum5,smem5,scpu5,u_flag5]=[20170921115224,7691,12.93,0.00,28,40,409,12.20,1],

u6=[utime6,upid6,rcpu6,rmem6,pronum6,sernum6,smem6,scpu6,u_flag6]=[20170921115346,7691,12.77,0.31,2941,422,35.13,1],

u7=[utime7,upid7,rcpu7,rmem7,pronum7,sernum7,smem7,scpu7,u_flag7]=[20170921115457,7691,12.93,0.00,28,40,409,13.19,1],初始化i=1,执行10);

10)判断i是否小于等于n:1<7,执行11);

11)判断u_flag1是否等于1:-1!=1,输出u1数据为异常,i++,执行10);

10)判断i是否小于等于n:2<7,执行11);

11)判断u_flag2是否等于1:-1!=1,输出u2数据为异常,i++,执行10);

10)判断i是否小于等于n:3<7,执行11);

11)判断u_flag3是否等于1:1==1,执行12);

12)判断svm分类面函数计算结果是否大于0:-0.019534993059670814<0,更新标记u_flag3=-1,输出u3数据为异常,u3加入到训练集t中,i++,执行10);其中其中lz表示lagrange中第z个数据的拉格朗日乘子,yz表示训练数据集t中第z个训练数据的t_flagz,tz表示训练数据集t中第z个训练数据,ui表示软件运行数据集u中第i个数据,k表示径向基核函数,即g表示核函数的参数,x1,x2表示核函数的变量;

10)判断i是否小于等于n:4<7,执行11);

11)判断u_flag4是否等于1:-1!=1,输出u4数据为异常,i++,执行10);

10)判断i是否小于等于n:5<7,执行11);

11)判断u_flag5是否等于1:1==1,执行12);

12)判断svm分类面函数计算结果是否大于0:0.21098085145849513>0,输出u5数据为正常,u5加入到训练集t中,i++,执行10);

10)判断i是否小于等于n:6<7,执行11);

11)判断u_flag6是否等于1:1==1,执行12);

12)判断svm分类面函数计算结果是否大于0:-0.019498957054381982<0,更新标记u_flag6=-1,输出u6数据为异常,u6加入到训练集t中,i++,执行10);

10)判断i是否小于等于n:7==7,执行11);

11)判断u_flag7是否等于1:1==1,执行12);

12)判断svm分类面函数计算结果是否大于0:0.14069106720247276>0,输出u7数据为正常,u7加入到训练集t中,i++,执行10);

10)判断i是否小于等于n:8<7,结束,完成所有迭代;

step4、输出判断结果:

数据集u的最终结果:

u1=[utime1,upid1,rcpu1,rmem1,pronum1,sernum1,smem1,scpu1,u_flag1]=[20170921113814,7691,12.84,0.26,29,41,409,21.76,-1],

u2=[utime2,upid2,rcpu2,rmem2,pronum2,sernum2,smem2,scpu2,u_flag2]=[20170921114115,7691,13.77,0.49,28,38,413,22.69,-1],

u3=[utime3,upid3,rcpu3,rmem3,pronum3,sernum3,smem3,scpu3,u_flag3]=[20170921114549,7691,12.99,0.32,3041,412,21.15,-1],

u4=[utime4,upid4,rcpu4,rmem4,pronum4,sernum4,smem4,scpu4,u_flag4]=[20170921115052,7691,13.21,0.27,29,41,425,14.91,-1],

u5=[utime5,upid5,rcpu5,rmem5,pronum5,sernum5,smem5,scpu5,u_flag5]=[20170921115224,7691,12.93,0.00,28,40,409,12.20,1],

u6=[utime6,upid6,rcpu6,rmem6,pronum6,sernum6,smem6,scpu6,u_flag6]=[20170921115346,7691,12.77,0.31,2941,422,35.13,-1],

u7=[utime7,upid7,rcpu7,rmem7,pronum7,sernum7,smem7,scpu7,u_flag7]=[20170921115457,7691,12.93,0.00,28,40,409,13.19,1];

输出u1、u2、u3、u4、u6为异常数据,u5、u7为正常数据

训练集t的最终结果,其中数据集u中的u3,u5,u6,u7,4条数据加入到训练集t中,训练数据集t={t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t14,t14,t14,t14},

t1=[rcpu1,rmem1,pronum1,sernum1,smem1,scpu1,t_flag1]=[13.25,0.01,28,38,407,14.14,1],

t2=[rcpu2,rmem2,pronum2,sernum2,smem2,scpu2,t_flag2]=[12.68,0.03,28,37,408,11.55,1],

t3=[rcpu3,rmem3,pronum3,sernum3,smem3,scpu3,t_flag3]=[12.7,0.03,28,40,412,12.74,1],

t4=[rcpu4,rmem4,pronum4,sernum4,smem4,scpu4,t_flag4]=[12.66,0.06,29,39,409,13.26,1],

t5=[rcpu5,rmem5,pronum5,sernum5,smem5,scpu5,t_flag5]=[13.77,0.00,28,38,405,11.92,1],

t6=[rcpu6,rmem6,pronum6,sernum6,smem6,scpu6,t_flag6]=[16.93,1.70,28,40,424,33.44,-1],

t7=[rcpu7,rmem7,pronum7,sernum7,smem7,scpu7,t_flag7]=[12.93,1.06,29,40,418,15.75,-1],

t8=[rcpu8,rmem8,pronum8,sernum8,smem8,scpu8,t_flag8]=[15.39,1.46,30,41,416,21.91,-1],

t9=[rcpu9,rmem9,pronum9,sernum9,smem9,scpu9,t_flag9]=[17.46,1.09,31,42,419,26.01,-1],

t10=[rcpu10,rmem10,pronum10,sernum10,smem10,scpu10,t_flag10]=[12.9,0.71,30,41,417,24.96,-1],

t11=[rcpu11,rmem11,pronum11,sernum11,smem11,scpu11,t_flag11]=[12.99,0.32,30,41,412,21.15,-1],

t12=[rcpu12,rmem12,pronum12,sernum12,smem12,scpu12,t_flag12]=[12.93,0.00,28,40,409,12.20,1],

t13=[rcpu13,rmem13,pronum13,sernum13,smem13,scpu13,t_flag13]=[12.77,0.31,29,41,422,35.13,-1],

t14=[rcpu14,rmem14,pronum14,sernum14,smem14,scpu14,t_flag14]=[12.93,0.00,28,40,409,13.19,1];

将app软件运行训练数据集t及加入app软件运行训练数据集t中的app软件运行数据作为新的app软件运行数据集用于下一次基于svm的app软件运行数据集中数据异常判断。

上面结合附图对本发明的具体实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。

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