美文网首页
DGB分类器笔记

DGB分类器笔记

作者: SimonLiu000 | 来源:发表于2018-09-15 19:17 被阅读35次

    Code: https://github.com/SimonLliu/DGB_AlphaTeam

    在这篇笔记中暂且先讨论传统机器学习分类器模型。

    首先分析数据可得,这是一个多分类的问题,而且是大规模稀疏矩阵训练的多分类问题。

    这就说明了树型模型在比赛中的表现较差就情有可原了,线性模型表现较好。

    比赛中尝试的传统机器学习分类器模型有:

    1、线性模型:

    线性回归LogisticRegression

    支持向量机(线性核)LinearSVC

    2、树形模型

    LightGBM

    XGBoost

    3、贝叶斯

    Multinomial Naive Bayes

    一、LogisticRegression

    1、原理分析

    https://blog.csdn.net/joshly/article/details/50494548

    做个记录:建议手动推导包括概率定义,损失函数定义,优化算法的过程

    2、比赛过程

    在比赛中,首先采用的就是逻辑回归,对逻辑回归的参数微调即可达到0.77以上,但在网上就遇到瓶颈了。

    二、LinearSVC

    1、LinearSVC和SVC的区别

    https://www.cnblogs.com/zealousness/p/7757603.html

    1)LinearSVC使用的是平方hinge loss,SVC使用的是绝对值hinge loss

    (我们知道,绝对值hinge loss是非凸的,因而你不能用GD去优化,而平方hinge loss可以)

    2)LinearSVC使用的是One-vs-All(也成One-vs-Rest)的优化方法,而SVC使用的是One-vs-One

    3)对于多分类问题,如果分类的数量是N,则LinearSVC适合N模型,而SVC适合N(N-1)/2模型

    4)对于二分类问题一般只有其中一个合适,具体问题具体对待

    5)LinearSVC基于liblinear,惩罚函数是对截矩进行惩罚;SVC基于libsvm,惩罚函数不是对截矩进行惩罚。

    6)我们知道SVM解决问题时,问题是分为线性可分和线性不可分问题的,liblinear对线性可分问题做了优化,故在大量数据上收敛速度比libsvm快(大规模线性可分问题上LinearSVC更快)

    2、原理分析

    https://blog.csdn.net/liugan528/article/details/79448379

    3、比赛过程

    在尝试了大量的逻辑回归实验后,考虑使用svm,对比了SVC和LinearSVC,SVC在大数据的情况训练慢的无法接受,且准确率较低,LinearSVC表现较为惊艳,在使用拼接特征后,达到了0.779。

    三、LightGBM

    1、原理分析

    https://blog.csdn.net/niaolianjiulin/article/details/76584785

    lightGBM主要有以下特点:

    1)基于Histogram的决策树算法

    2)带深度限制的Leaf-wise的叶子生长策略

    3)直方图做差加速

    3)直接支持类别特征(Categorical Feature)

    4)Cache命中率优化

    5)基于直方图的稀疏特征优化

    6)多线程优化

    2、比赛过程

    1)比赛参数和代码

    params = {

            'boosting': 'gbdt',

            'application': 'multiclassova',

            'num_class': 20,

            'learning_rate': 0.1,

            'num_leaves':31,

            'max_depth':-1,

            'lambda_l1': 0,

            'lambda_l2': 0.5,

            'bagging_fraction' :1.0,

            'feature_fraction': 1.0

            }

    bst = lgb.train(params, d_train, num_boost_round=800, valid_sets=d_vali,feval=f1_score_vali, early_stopping_rounds=None,

                    verbose_eval=True)

    2)比赛理解

    在比赛的后期,svm和lr的模型已经较多,为了能有更多区别较大的模型,我们尝试了许多种分类器,在树形模型普遍较差的情况下,lgb仍然不失为”大杀器“,在几个拼接特征的训练下都达到了0.77以上。

    但lgb的训练相对来说还是较慢,在训练800个num_boost_round时,训练时长大概为6-8小时,且特征越大对cpu的运算要求越高,曾出现过占满服务器cpu的情况,对内存要求较小。

    四、XGBoost

    1、原理分析

    https://blog.csdn.net/github_38414650/article/details/76061893

    2、比赛过程

    有一个队友训练出了准确率在0.6以上的XGBoost,当时挺兴奋的,以为调调参可以得到一个0.7+的模型,结果现实给了一个暴击,直到比赛结束,我们的新XGBoost并没有训练出来。

    五、Multinomial Naive Bayes

    1、原理分析:

    https://blog.csdn.net/xlinsist/article/details/51236454

    2、比赛过程

    由于是文本分类,选用多项式贝叶斯算法,结果在0.6-0.7

    六、深度学习模型

    1、TextCNN

    在队友的指导下,尝试了下TextCNN,不过可能结构过于简单,结果极差。

    2、RCNN

    训练时间超久。

    https://zhuanlan.zhihu.com/p/29201491

    相关文章

      网友评论

          本文标题:DGB分类器笔记

          本文链接:https://www.haomeiwen.com/subject/hcktnftx.html