【新人赛】阿里云恶意程序检测 -- 实践记录11.10 - XGBoost学习 / 代码阅读、调参经验总结
XGBoost学习:
集成学习将多个弱学习器结合起来,优势互补,可以达到强学习器的效果。要想得到最好的集成效果,这些弱学习器应当“好而不同”。

根据个体学习器的生成方法,集成学习方法可以分为两大类,序列化方法,并行化方法。序列化方法的代表就是Boosting方法,其中XGBoost和lightGBN都属于此类。
Boosting的方法是先从初始训练集训练出一个基学习器。然后再对训练样本的分布做一些调整,使得前一个学习器分类错误的样本得到更多的关注,再以此训练下一个基学习器。
依次类推,最后对多个基学习器做加权结合。
XGBoost 是 Extreme Gradient Boosting 的缩写,在此先介绍下Gradient Boosting。它的逻辑是:
先利用弱学习器训练 F(x) 。
再利用 F(x) 的残差作为目标,训练 h(x)。
利用 F(x)+h(x) 的残差作为目标,训练出 m(x),以此类推。
最后 F(x)+h(x)+m(x)+… 就是最终的强学习器模型。
比如算均方误差MSE, \(\mathrm{L(y, F(x))}=\frac{1}{n} \sum \left(y-F(x)\right)^{2}\),求导得:\(\frac{\partial L}{\partial F}=- \frac{2}{n} \sum (y-F)\),残差为\((y-F)\)
\(h(x) ≈ y−F(x) = - \frac{n}{2} \frac{\partial L}{\partial F} = - \lambda \frac{\partial L}{\partial F}\)
\(H(x) = F(x) - \lambda \frac{\partial L}{\partial F}\)
和梯度下降的公式是一样的。
对于分类/回归问题的一个简单实践案例(基于sklearn toy datasets)。
之前几周的博客:
第一周:初次使用Google Colab,跑了下RManofCH分享的代码,看了下效果。
第二周:数据预处理,数据可视化(初步了解训练数据分布情况),tf-idf模型调参,ngram_range=(1,4)时效果不错。
第三周:tf-idf模型调参(min_df=1, max_df=1.0时效果最好,即取全集),数据可视化(计算了训练集与测试集的差异;得出单个api的类别及数量对文件类别影响不大的结论)
第四周:ngram模型调参(二、三元的拟合效果比较好,加上一、四、五、六元之后,效果都有提升;10折验证时效果最好)
代码阅读,调参经验总结:
阅读别人的代码,可以为自己提供一些其他思路,此外可以学习到一些实际编程的技能。
不过代码一般都是为解决具体问题编写的,自己用的时候还要根据环境,根据业务场景做一些适用性修改,而且参数要自己调一下。
调参的过程中,基本就是其他参数不变,专门调某一个参数,看看结果的变化趋势,是来回震荡还是有一个收敛点,找到一个比较好的局部最优的参数。
1 - 代码修改:
比如之前针对这个比赛做模型训练的时候,第一周跑了下的是先知论坛RMaoofCH的代码,但是遇到了一个Keras版本的问题'keras.backend' has no attribute 'tf' ,后来代码做了一些修改。
2 - 参数修改:
RMaoofCH的tf-idf模型的参数为ngram_range=(1, 5), min_df=3, max_df=0.9,做5折校验。
我调参的结果是,tf-idf模型ngram_range=(1, 4), min_df=1, max_df=1.0时效果最好。
此外比tf-idf更简单的ngram模型效果要优于tf-idf,Vectorizer由TfidfVectorizer改为了CountVectorizer。
而且,经过验证,10折校验比5折校验效果要好。
参数调过一轮之后,除了tf-idf模型的结果超过了RMaoofCH的tf-idf模型的结果,ngram单模型得到的结果甚至比RMaoofCH做的模型融合的结果还要好。
【新人赛】阿里云恶意程序检测 -- 实践记录11.10 - XGBoost学习 / 代码阅读、调参经验总结的更多相关文章
- 【新人赛】阿里云恶意程序检测 -- 实践记录 11.24 - word2vec模型 + xgboost
使用word2vec训练词向量 使用word2vec无监督学习训练词向量,输入的是训练数据和测试数据,输出的是每个词的词向量,总共三百个词左右. 求和:然后再将每行数据中的每个词的词向量加和,得到每行 ...
- 【新人赛】阿里云恶意程序检测 -- 实践记录11.3 - n-gram模型调参
主要工作 本周主要是跑了下n-gram模型,并调了下参数.大概看了几篇论文,有几个处理方法不错,准备下周代码实现一下. xgboost参数设置为: param = {'max_depth': 6, ' ...
- 【新人赛】阿里云恶意程序检测 -- 实践记录10.13 - Google Colab连接 / 数据简单查看 / 模型训练
1. 比赛介绍 比赛地址:阿里云恶意程序检测新人赛 这个比赛和已结束的第三届阿里云安全算法挑战赛赛题类似,是一个开放的长期赛. 2. 前期准备 因为训练数据量比较大,本地CPU跑不起来,所以决定用Go ...
- 【新人赛】阿里云恶意程序检测 -- 实践记录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 ...
- 阿里云小程序云应用环境DIY,延长3倍免费期
阿里云清明节前刚刚推出了小程序云应用扶持计划一期活动 (活动链接见文章底部).假期研究了下以后,发觉不太给力.基本上就是给了2个月的免费测试环境,和平均2个月的基础版生产环境.而如果选用标准版生产环境 ...
- 【¥200代金券、iPad等您来拿】 阿里云9大产品免费公测#10月9日-11月6日#
#10.09-11.06#200元代金券.iPad大奖, 9大产品评测活动! 亲爱的阿里云小伙伴们: 云产品的多样性(更多的云产品)也是让用户深度使用云计算的关键.今年阿里云产品线越来越丰富,小云搜罗 ...
- Android手机安全软件的恶意程序检测靠谱吗--LBE安全大师、腾讯手机管家、360手机卫士恶意软件检测方法研究
转载请注明出处,谢谢. Android系统开放,各大论坛活跃,应用程序分发渠道广泛,这也就为恶意软件的传播提供了良好的环境.好在手机上安装了安全软件,是否能有效的检测出恶意软件呢?下边针对LBE安全大 ...
- 阿里云centos安装docker-engine实践
近日在阿里云ECS服务器(centos系统)中安装docker,参考官方指南 https://docs.docker.com/engine/installation/linux/centos/ 大概 ...
随机推荐
- NLP(二十)利用BERT实现文本二分类
在我们进行事件抽取的时候,我们需要触发词来确定是否属于某个特定的事件类型,比如我们以政治上的出访类事件为例,这类事件往往会出现"访问"这个词语,但是仅仅通过"访问&q ...
- 在jsp页面下, 让eclipse完全支持HTML/JS/CSS智能提示
我们平时用eclipse开发jsp页面时智能提示效果不太理想,今天用了两个小时发现了eclipse也可以像Visual Studio 2008那样完全智能提示HTML/JS/CSS代码,使用eclip ...
- thinkphp3关闭Runtime中的日志方法
将LOG_LEVEL允许记录的日志级别设置为空,则不会记录日志
- Codeforces_714_B
http://codeforces.com/problemset/problem/714/B 当不同大小整数有1.2个时,肯定成立,3个时,需要判断,大于等于4个,则肯定不成立. #include & ...
- CERC2017 H Hidden Hierarchy(树+模拟)
题意: 在一些给定的目录里按要求展开到制定大小并按字典序输出 思路: 因为有目录这个东西,所以想到模拟一个类似字典树的东西,不过这里每个儿子可能有n个节点,而且不能O(1)查询了 代码超长.. #in ...
- learn about sqlserver files and filegroup
The filegroup is similar as tablespace in Oracle. At first, I will show that hot to check file amd f ...
- 《Head first设计模式》之适配器模式
适配器模式将一个类的接口,转换成客户期望的另一个接口.适配器让原本接口不兼容的类可以合作无间. 我们周围的适配器 如果你需要在欧洲国家使用美国制造的笔记本电脑,你可能需要使用一个交流电的适配器. 你知 ...
- VFP9利用_GdiPlus类处理图片分辨率及缩放
VFP利用GDI来处理图片,已经不是一件太难的事了.GdiPlus类就是专门来干这事的,有关其属性等请参考其它资料.下面将处理图片缩放及分辨率的代码示例贴出来.这些代码都是很久以前的了,由于新冠宅家无 ...
- Linux 服务器注意事项
1.创建时 数据文件一定分盘挂载 2.LVM 虚拟磁盘卷是否创建 有争议??? 3.hosts 文件 最好添加本机映射 主机名 127.0.0.1 4.iptab ...
- Cobalt Strike Bypassing Windows Defender 使用混淆处理
Cobalt Strike – Bypassing Windows Defender 混淆处理 对于所有红色团队成员来说,在交付有效的替代品同时又不拖延延展组织的所有风吹草动始终是一个挑战.就像所有其 ...