zoukankan      html  css  js  c++  java
  • 【新人赛】阿里云恶意程序检测 -- 实践记录11.10

    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) ight)^{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做的模型融合的结果还要好。

  • 相关阅读:
    华东交通大学2017年ACM双基程序设计大赛题解
    hdu2010(dfs+剪枝)
    欧拉函数phic以及超大数的快速幂
    想了一天的题目QAQ 毛线数列的最值
    记一下STL的一个题
    hdu1877进制转换
    hdu1002大数相加
    hdu1576逆元的一道水题
    Courses
    CodeForce-813B The Golden Age(数学+枚举)
  • 原文地址:https://www.cnblogs.com/yanqiang/p/11830761.html
Copyright © 2011-2022 走看看