文本分类的一些实践(二)

xgboost

因为上篇博客介绍到了xgboost的结果,在这里就简单的介绍一下。其原理在这里就不过多介绍了,在应用时主要在其特征构建上面。

特征构造:

在构造特征的时候用到了句子的外在特征,如句子的长度、开头结尾、数字、空白符等特征,也用到了句子的初始的类别信息来刻画句子的语义信息,(我们有一批标注的数据,找五条句与待预测句子的相近的标注数据的标签作为待预测标签),他们共同的构成的训练特征。

xgboost的训练过程:

        train = np.array(self.data_train)
        params={
        'booster':'gbtree',
        'objective': 'multi:softprob', #多分类的问题multi:softmax, multi:softprob
        'num_class':23,
        'gamma':0.1,  # 用于控制是否后剪枝的参数,越大越保守,一般0.1、0.2这样子。
        'max_depth':10, # 构建树的深度,越大越容易过拟合
        'lambda':3,  # 控制模型复杂度的权重值的L2正则化项参数,参数越大,模型越不容易过拟合。
        'subsample':0.7, # 随机采样训练样本
        'colsample_bytree':0.7, # 生成树时进行的列采样
        'min_child_weight':3,
        # 这个参数默认是 1,是每个叶子里面 h 的和至少是多少,对正负样本不均衡时的 0-1 分类而言
        #,假设 h 在 0.01 附近,min_child_weight 为 1 意味着叶子节点中最少需要包含 100 个样本。
        #这个参数非常影响结果,控制叶子节点中二阶导的和的最小值,该参数值越小,越容易 overfitting。
        'silent':0 ,#设置成1则没有运行信息输出,最好是设置为0.
        'eta': 0.01, # 如同学习率
        'seed':1000,
        # 'nthread':7,# cpu 线程数
        # 'eval_metric': 'logloss'  #校验数据所需要的评价指标
        }

        plst = list(params.items())
        num_rounds =1000 # 迭代次数

        train_xy,val = train_test_split(train, test_size = 0.2,random_state=1)
        #random_state is of big influence for val-auc
        y = train_xy[:,-1]
        X = train_xy[:,0:-2]
        val_y = val[:,-1]
        val_X = val[:,0:-2]

        xgb_val = xgb.DMatrix(val_X,label=val_y)
        xgb_train = xgb.DMatrix(X, label=y)

        print(type(X))
        # print(type(xgb_test))

        watchlist = [(xgb_train, 'train'),(xgb_val, 'val')]

        # training model
        # early_stopping_rounds 当设置的迭代次数较大时,early_stopping_rounds 可在一定的迭代次数内准确率没有提升就停止训练
        model = xgb.train(plst, xgb_train, num_rounds, watchlist,early_stopping_rounds=100,feval=self.evalerror)

一些总结:

  1. 本人做了一个对比试验,就是用xgboost的句子外在特征和LSTM提取的句子语义特征进行结合,和xgboost的训练结果非常接近,如果没有这部分特征就会略微差一点,也给了我LSTM能够表示什么样的特征一些启示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花咪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值