美文网首页
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