1. 比赛介绍

比赛地址:阿里云恶意程序检测新人赛

这个比赛和已结束的第三届阿里云安全算法挑战赛赛题类似,是一个开放的长期赛。

2. 前期准备

因为训练数据量比较大,本地CPU跑不起来,所以决定用Google的Colaboratory来跑,期间也遇到了几个坑。

首先是文件上传比较慢,几个G的文件直接上传比较耗时,上传压缩包后解压又出现了问题,最后还是得等着上传完,期间换了好几个VPN节点。

解压缩的问题:用unzip命令解压,速度很慢,经常解压到一半就不动了或者与colab的连接断掉了(可能是网络问题),在Driver里用Zip Extractor软件解压也不成功。

此外,colab分配的环境是临时环境,文件不会一直保存,刚开始没注意到这点,文件丢失了一次后,才知道要连接到Google Driver,文件存在Driver里。代码如下。

Google Colab 连接 Google Driver

新建新的jupyternotebook,在空白的单元格中输入:

!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse
from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}

根据提示,点击网址并输入验证码确定。新建新的空白单元格,输入:

!mkdir -p drive
!google-drive-ocamlfuse drive

查看drive目录是否被挂载成功:

!ls

更改工作目录:

import os
os.chdir("drive")

3. 查看数据

以training data为例,其他数据同样可以用pandas查看。

import pandas as pd

train_path = './security_train.csv'
data_train = pd.read_csv(train_path)

查看前5行数据:

data_train.head()
~ file_id label api tid index
0 1 5 LdrLoadDll 2488 0
1 1 5 LdrGetProcedureAddress 2488 1
2 1 5 LdrGetProcedureAddress 2488 2
3 1 5 LdrGetProcedureAddress 2488 3
4 1 5 LdrGetProcedureAddress 2488 4

查看行索引:

data_train.index

RangeIndex(start=0, stop=12955, step=1)

查看列属性:

data_train.columns

Index(['file_id', 'label', 'api', 'tid', 'index'], dtype='object')

查看数据描述信息:

data_train.describe()
~ file_id label tid index
count 8.980669e+07 8.980669e+07 8.980669e+07 8.980669e+07
mean 7.078770e+03 3.862835e+00 2.533028e+03 1.547521e+03
std 3.998794e+03 2.393783e+00 6.995798e+02 1.412249e+03
min 1.000000e+00 0.000000e+00 1.000000e+02 0.000000e+00
25% 3.637000e+03 2.000000e+00 2.356000e+03 3.490000e+02
50% 7.161000e+03 5.000000e+00 2.564000e+03 1.085000e+03
75% 1.055100e+04 5.000000e+00 2.776000e+03 2.503000e+03
max 1.388700e+04 7.000000e+00 2.089600e+04 5.000000e+03

4. 模型训练

数据预处理和模型训练用的代码是 RManofCH 分享的代码,数据量大,在colab上跑了一整天。

其间遇到了一个 'keras.backend' has no attribute 'tf' 的问题,应该是Keras版本的问题

添加包,并将相应的K.tf.xxx修改为tf.xxx即可。

import tensorflow as tf
import tensorflow.keras.backend as B
import tensorflow_hub as hub
from tensorflow.python.keras.engine import Layer

最终成绩为:logloss: 0.472666

5. 初次实践心得

因为是第一次接触数据竞赛,主要是学习了下别人的思路,跑了下训练代码,没有做什么有意义的修改。

感受了下训练大量数据时的龟速,学习了一下几个常用模型的思路以及模型融合的方法。

6. 组会总结

1)自己调模型做优化,渐进式学习比较好,逐步提高,跑现成的代码学到的东西不多,

2)先关注学习过程,结果分数暂时不重要,正式比赛优秀选手都有团队、套路,还有很大差距,

3)先要分析下数据,理解下问题,根据具体的业务场景做模型选择,参数调优,不同的业务需要采用不同的解决方法,没有万能的策略,

7. 参考资料

第三届阿里云安全算法挑战赛答辩视频

RManofCH的思路分享

【新人赛】阿里云恶意程序检测 -- 实践记录10.13 - Google Colab连接 / 数据简单查看 / 模型训练的更多相关文章

  1. 【新人赛】阿里云恶意程序检测 -- 实践记录10.20 - 数据预处理 / 训练数据分析 / TF-IDF模型调参

    Colab连接与数据预处理 Colab连接方法见上一篇博客 数据预处理: import pandas as pd import pickle import numpy as np # 训练数据和测试数 ...

  2. 【新人赛】阿里云恶意程序检测 -- 实践记录10.27 - TF-IDF模型调参 / 数据可视化

    TF-IDF模型调参 1. 调TfidfVectorizer的参数 ngram_range, min_df, max_df: 上一篇博客调了ngram_range这个参数,得出了ngram_range ...

  3. 【新人赛】阿里云恶意程序检测 -- 实践记录11.10 - XGBoost学习 / 代码阅读、调参经验总结

    XGBoost学习: 集成学习将多个弱学习器结合起来,优势互补,可以达到强学习器的效果.要想得到最好的集成效果,这些弱学习器应当"好而不同". 根据个体学习器的生成方法,集成学习方 ...

  4. 【新人赛】阿里云恶意程序检测 -- 实践记录 11.24 - word2vec模型 + xgboost

    使用word2vec训练词向量 使用word2vec无监督学习训练词向量,输入的是训练数据和测试数据,输出的是每个词的词向量,总共三百个词左右. 求和:然后再将每行数据中的每个词的词向量加和,得到每行 ...

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

    主要工作 本周主要是跑了下n-gram模型,并调了下参数.大概看了几篇论文,有几个处理方法不错,准备下周代码实现一下. xgboost参数设置为: param = {'max_depth': 6, ' ...

  6. 阿里云小程序云应用环境DIY,延长3倍免费期

    阿里云清明节前刚刚推出了小程序云应用扶持计划一期活动 (活动链接见文章底部).假期研究了下以后,发觉不太给力.基本上就是给了2个月的免费测试环境,和平均2个月的基础版生产环境.而如果选用标准版生产环境 ...

  7. Android手机安全软件的恶意程序检测靠谱吗--LBE安全大师、腾讯手机管家、360手机卫士恶意软件检测方法研究

    转载请注明出处,谢谢. Android系统开放,各大论坛活跃,应用程序分发渠道广泛,这也就为恶意软件的传播提供了良好的环境.好在手机上安装了安全软件,是否能有效的检测出恶意软件呢?下边针对LBE安全大 ...

  8. 阿里云centos安装docker-engine实践

    近日在阿里云ECS服务器(centos系统)中安装docker,参考官方指南 https://docs.docker.com/engine/installation/linux/centos/  大概 ...

  9. 阿里云服务器的购买、基本配置、(xshell)远程连接、搭建环境

    一.服务器的购买 1.购买时间点:搞活动的时候.利用学生身份购买 (1)活动:想白嫖一台服务器 双十一,可以在双十一左右,时间提前一点,百度或B站,搜阿里云服务器.腾讯服务器(618可能也有) 一般, ...

随机推荐

  1. 3、IP地址划分

    划分子网方法:1.你所选择的子网掩码将会产生多少个子网?:2 的x 次方(x 代表被借走的主机位数)2.每个子网能有多少主机?: 2 的y 次方-2(y 代表被借走之后剩余的主机位数)3.块大小:bl ...

  2. Django项目在Linux服务器上部署和躺过的坑

    引言 在各方的推荐下,领导让我在测试环境部署之前开发的测试数据预报平台.那么问题来了,既然要在服务器上部署, 就需要准备: 1.linux服务器配置 2.linux安装python环境搭建与配置 3. ...

  3. 为什么Netflix没有运维岗位?

    Netflix 是业界微服务架构的最佳实践者,其基于公有云上的微服务架构设计.持续交付.监控.稳定性保障,都为业界提供了大量可遵从的原则和实践经验. 在运维这个细分领域,Netflix 仍然是最佳实践 ...

  4. Codeforces_803

    A. 填k个1,使矩阵主对角线对称,相同情况选择上面1数量多的. #include<bits/stdc++.h> using namespace std; ][] = {}; int ma ...

  5. WeChall_Enlightment (Encoding)

    解题: 刚开始一看这题就蒙逼了,完全没思路,过了几天后再仔细去想想,应该是二进制的ascii码,但是原来的三张图虽然都是8的倍数,但完全转换不成有用的东西,题目的意思能否找到光,百度了一下关于三原色的 ...

  6. 关于将笔记本电脑作为wifi热点的详细步骤

    常规做法直接度娘.如果出现无法打开wifi功能,可找对应解决方法. 1.先检查网卡是否支持承载网络,检查方法为在cmd中使用管理员权限运行,输入netsh wlan show drivers.查看支持 ...

  7. LeetCode#26 | Remove Duplicates from Sorted Array 删除有序数组中的重复元素

    一.题目 Description Given a sorted array, remove the duplicates in-place such that each element appear ...

  8. lua学习之函数篇

    函数 函数是对语句和表达式进行抽象的主要机制 两种用法 一是可以完成特定的任务,一句函数调用被视为一条语句 二是以只用来计算并返回特定的结果,视为一句表达式 print("Hello, Wo ...

  9. FTP - File Transfer Protocol

    FTP - File Transfer Protocol FTP 实际上使用了两个 TCP 链接. 一个作为控制信道用, 主要传输一些指令和响应, 比如 ACK 或 错误码. 另一个链接是数据信道, ...

  10. 一. 数据分片和路由 <<大数据日知录>> 读书笔记

    本章主要讲解大数据下如何做数据分片,所谓分片,即将大量数据分散在不同的节点,同时每个存储节点还要做副本备份. 而一般的抽象分片方法是, 先将数据映射到一个分片空间,这是多对一的关系,即一个数据分片区间 ...