【新人赛】阿里云恶意程序检测 -- 实践记录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/ 大概 ...
随机推荐
- LUA学习笔记(第18-20章)
数学库 print(math.pi)-->π print(math.huge)-->Lua中表示的最大数字 --[[ 3.1415926535898 1.#INF ]] print(mat ...
- 使用卷影拷贝提取ntds.dit
一.简介 通常情况下,即使拥有管理员权限,也无法读取域控制器中的C:\Windows\NTDS\ntds.dit文件.使用windows本地卷影拷贝服务,就可以获得该文件的副本. 在活动目录中,所有的 ...
- https原理总结
博客搬家: https原理总结 最近在公司项目的服务器上做一些内部接口,要求使用https,于是花时间研究了一波.我们熟知的http在传输时未对数据进行加密,在传输一些敏感信息时存在着不小的安全隐患. ...
- HTML5与HTML4的区别-----通用的排版结构
一个网页通常分为:头部,主体内容和脚部三个部分,当然也有其他更细的划分方法. 以移动端为例, 当给一个设计图,我通常使用一下结构: <div class="container&quo ...
- 使用IDEA详解Spring中依赖注入的类型(上)
使用IDEA详解Spring中依赖注入的类型(上) 在Spring中实现IoC容器的方法是依赖注入,依赖注入的作用是在使用Spring框架创建对象时动态地将其所依赖的对象(例如属性值)注入Bean组件 ...
- 重读es6, 正确了解promise中catch的用法
前言 在最近的项目中,用到了es6的promise语法,发现promise.prototype.catch 并不只是单单reject抛出的回调函数,所以今天做一些笔录,防止以后在项目中又碰到这样的问题 ...
- 鸭子类型 - Duck Typing
还是先看定义 duck typing, 鸭子类型是多态(polymorphism)的一种形式.在这种形式中,不管对象属于哪个, 也不管声明的具体接口是什么,只要对象实现了相应的方法,函数就可以在对象上 ...
- 一个基于图的数据管理系统-gStore
gStore是遵循 BSD协议的一个开源项目.一个基于图的 RDF 三元组存储的数据管理系统.该项目是北京大学.滑铁卢大学.香港科技大学的联合研究项目.中国北京大学计算机科学与技术研究所的数据库组对该 ...
- H5监听浏览器滚动条scrollbar
监听滚动条scrollbar(适配手机) 1. document.documentElement.scrollHeight:整个html的高度,含被隐藏界面高度 2. window.pageYOffs ...
- 如何使用Xcode调试Shader代码Bug导致的渲染问题
我最近发现了一个与Unity中的表面着色器有关的小Bug. 你可以看到如下所示的渲染瑕疵. 有时人们会将相似的渲染瑕疵归因于同时使用HDR和Bloom效果,但实际上,表面着色器是错误的,至少在本文中所 ...