【新人赛】阿里云恶意程序检测 -- 实践记录10.13 - Google Colab连接 / 数据简单查看 / 模型训练
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. 参考资料
【新人赛】阿里云恶意程序检测 -- 实践记录10.13 - Google Colab连接 / 数据简单查看 / 模型训练的更多相关文章
- 【新人赛】阿里云恶意程序检测 -- 实践记录10.20 - 数据预处理 / 训练数据分析 / TF-IDF模型调参
Colab连接与数据预处理 Colab连接方法见上一篇博客 数据预处理: import pandas as pd import pickle import numpy as np # 训练数据和测试数 ...
- 【新人赛】阿里云恶意程序检测 -- 实践记录10.27 - TF-IDF模型调参 / 数据可视化
TF-IDF模型调参 1. 调TfidfVectorizer的参数 ngram_range, min_df, max_df: 上一篇博客调了ngram_range这个参数,得出了ngram_range ...
- 【新人赛】阿里云恶意程序检测 -- 实践记录11.10 - XGBoost学习 / 代码阅读、调参经验总结
XGBoost学习: 集成学习将多个弱学习器结合起来,优势互补,可以达到强学习器的效果.要想得到最好的集成效果,这些弱学习器应当"好而不同". 根据个体学习器的生成方法,集成学习方 ...
- 【新人赛】阿里云恶意程序检测 -- 实践记录 11.24 - word2vec模型 + xgboost
使用word2vec训练词向量 使用word2vec无监督学习训练词向量,输入的是训练数据和测试数据,输出的是每个词的词向量,总共三百个词左右. 求和:然后再将每行数据中的每个词的词向量加和,得到每行 ...
- 【新人赛】阿里云恶意程序检测 -- 实践记录11.3 - n-gram模型调参
主要工作 本周主要是跑了下n-gram模型,并调了下参数.大概看了几篇论文,有几个处理方法不错,准备下周代码实现一下. xgboost参数设置为: param = {'max_depth': 6, ' ...
- 阿里云小程序云应用环境DIY,延长3倍免费期
阿里云清明节前刚刚推出了小程序云应用扶持计划一期活动 (活动链接见文章底部).假期研究了下以后,发觉不太给力.基本上就是给了2个月的免费测试环境,和平均2个月的基础版生产环境.而如果选用标准版生产环境 ...
- Android手机安全软件的恶意程序检测靠谱吗--LBE安全大师、腾讯手机管家、360手机卫士恶意软件检测方法研究
转载请注明出处,谢谢. Android系统开放,各大论坛活跃,应用程序分发渠道广泛,这也就为恶意软件的传播提供了良好的环境.好在手机上安装了安全软件,是否能有效的检测出恶意软件呢?下边针对LBE安全大 ...
- 阿里云centos安装docker-engine实践
近日在阿里云ECS服务器(centos系统)中安装docker,参考官方指南 https://docs.docker.com/engine/installation/linux/centos/ 大概 ...
- 阿里云服务器的购买、基本配置、(xshell)远程连接、搭建环境
一.服务器的购买 1.购买时间点:搞活动的时候.利用学生身份购买 (1)活动:想白嫖一台服务器 双十一,可以在双十一左右,时间提前一点,百度或B站,搜阿里云服务器.腾讯服务器(618可能也有) 一般, ...
随机推荐
- OpenCV3入门(四)图像的基础操作
1.访问图像像素 1)灰度图像 2)彩色图像 OpenCV中的颜色顺序是BGR而不是RGB. 访问图像的像素在OpenCV中就是访问Mat矩阵,常用的有三种方法. at定位符访问 Mat数据结构,操作 ...
- python pip使用报错: Fatal error in launcher: Unable to create process using '"c:\python27\python.exe" "C:\Python27\Scripts\pip.exe" '
在一个系统中,如果同时存在python2和python3,在cmd.exe程序下执行pip.pip2或者pip3均会报错. 如何解决: 如果是在python3环境下,使用pip安装扩展库,可以使用以下 ...
- React+Echarts简单的封装套路
今天我们来介绍一下React中,对Echarts的一个简单的封装. 首先在我们的React项目中,想使用Echart包,首先需要先安装它,安装代码如下,任选一个就可以 cnpm install ech ...
- elasticsearch kibana 安装 配置
二.Elasticsearch 配置信息 2.1 因为 Elasticsearch 可以执行脚本文件,为了安全性,默认不允许通过 root 用户启动服务.我们需要新创建用户名和用户组启动服务 2. ...
- 记一次MySQL中Waiting for table metadata lock的解决方法
最近项目中的数据库查询经常挂起,应用程序启动后也报操作超时.测试人员就说数据库又挂了(貌似他们眼中的连接失败,查询无果都是挂了),通过 show processlist 一看,满屏都是 Waiting ...
- js—数字那些事儿
进制之间互相转化 a=133 十进制转成其他进制 a.toString(num) a.toString(2); //转化成二进制,返回"10000101" a.toString(8 ...
- 使用Python批量更新服务器文件【新手必学】
买了个Linux服务器,Centos系统,装了个宝塔搭建了10个网站,比如有时候要在某个文件上加点代码,就要依次去10个文件改动,虽然宝塔是可视化页面操作,不需要用命令,但是也麻烦,虽然还有git的h ...
- 06.JS对象-1
前言: 学习一门编程语言的基本步骤(01)了解背景知识(02)搭建开发环境(03)语法规范(04)常量和变量(05)数据类型(06)数据类型转换(07)运算符(08)逻辑结构(09)函数(10)对象1 ...
- Android9.0 Settings 修改踩坑记录
问题现象 上图展示的很清楚,当系统语言为中文时,PreferenceScreen 中的折叠项 summary 描述重复显示的 bug,系统语言为英文时正常. 修改历程 先搜索 当前显示了 字符串,还真 ...
- C#的委托案例
C#实现(Delegate)的委托就不多说了,直接上代码,看代码中的注释: namespace Delegate { delegate void DGSayiHi(string name);//声明委 ...