1. 比赛信息
比赛地址:阿里云恶意程序检测新人赛
比赛介绍:使用自然语言处理的方法对恶意程序的行为(API调用序列)进行分析,实现对恶意程序鉴别及分类。
2. 我的主要工作
1)数据预处理:格式转换csv->txt->pkl,根据fileid分组数据,排序后生成api序列,用于训练;
2)数据分析及可视化:主要是数据分布分析,包括恶意程序类别分布分析、调用api的类别及频率分析,训练集与测试集分布差异分析(计算交叉熵)等,
得出结论:此任务训练集与测试集分布差异不大,恶意程序类型更多是与api调用序列有关,与api类别及api调用次数关系不大;
3)模型训练及测试:使用了ngram,tf-idf等方法,使用word2vec训练了词向量,xgboost进行了集成学习,并使用了n折交叉验证。
心得:ngram比tf-idf更适合于此任务,
原因在于IDF是一种试图抑制噪音的加权,单纯地认为文本频率小的单词就越重要,文本频率大的单词就越无用,而对于此任务来说,出现频率小的api也是很有用的。
4)线上成绩:0.472587,129名(2019-11-04)
3. 实践记录(博客形式)
【新人赛】阿里云恶意程序检测 -- 实践记录10.20 - 数据预处理 / 训练数据分析 / TF-IDF模型调参
【新人赛】阿里云恶意程序检测 -- 实践记录10.27 - TF-IDF模型调参 / 数据可视化
【新人赛】阿里云恶意程序检测 -- 实践记录11.3 - n-gram模型调参
【新人赛】阿里云恶意程序检测 -- 实践记录 11.24 - word2vec模型 + xgboost
4. 个人主页
天池主页: Yenchiang-阿里天池
博客主页:Yanqiang-博客园
Github主页:YanqiangWang-Github