首页 > 其他 > 详细

【新人赛】阿里云恶意程序检测 -- 实践记录11.3 - n-gram模型调参

时间:2019-11-03 21:07:12      阅读:78      评论:0      收藏:0      [点我收藏+]

主要工作

本周主要是跑了下n-gram模型,并调了下参数。大概看了几篇论文,有几个处理方法不错,准备下周代码实现一下。

n-gram模型,CountVectorizer

为了训练速度考虑,采用两折校验,对ngram_range参数,start=end,即只用某元:

ngram train-mean val-mean
1 0.113553 0.376238
2 0.086720 0.331593
3 0.085156 0.338862
4 0.102556 0.347408
5 0.090270 0.366249
import matplotlib.pyplot as plt
import numpy as np

train_mean = [0.113553, 0.086720, 0.085156, 0.102556, 0.090270]
val_mean = [0.376238, 0.331593, 0.338862, 0.347408, 0.366249]

# 绘制对比柱状图
plt.bar(x=range(1, 6), height=train_mean, label="train mean", alpha=0.8, width=bar_width)
plt.legend()
plt.xlabel("ngram_range(start=end)")
plt.ylabel("mean")
plt.title('result')
plt.show()

plt.bar(x=np.arange(1, 6), height=val_mean, label="val mean", alpha=0.8, width=bar_width)
plt.legend()
plt.xlabel("ngram_range(start=end)")
plt.ylabel("mean")
plt.title('result')
plt.show()

绘图可得:

技术分享图片

可以看到,二元、三元关系的拟合效果比较好。
所以在api序列中,依赖关系主要以短链为主,长链为辅,同时单个api也有一些价值。

而后,同样是2折校验,对start != end的情形做了一下训练。

技术分享图片

可以看到,start=1得到的结果比start=2得到的效果要好一些,
同时当start=1, end从2至6,拟合效果都有提升,当end=7之后又会变差。

所以n-gram模型,二元、三元的拟合效果比较好,加上一元,四元,五元,六元之后,效果都有提升,这几元都很有用。

此外,将2折改为5折,计算开销增大,但结果会更好一些。

技术分享图片

将5折得到的这几个结果,提交到线上,测试结果如下:

技术分享图片

【新人赛】阿里云恶意程序检测 -- 实践记录11.3 - n-gram模型调参

原文:https://www.cnblogs.com/yanqiang/p/11788592.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!