码迷,mamicode.com
首页 > 编程语言 > 详细

catboost原理以及Python代码

时间:2018-09-23 22:25:29      阅读:853      评论:0      收藏:0      [点我收藏+]

标签:sse   eva   时间   shape   权重   cat   数值   一个   fit   

原论文:

   http://learningsys.org/nips17/assets/papers/paper_11.pdf

catboost原理:

One-hot编码可以在预处理阶段或在训练期间完成。后者对于训练时间而言能更有效地执行,并在Catboost中执行。

类别特征:

为了减少过拟合以及使用整个数据集进行训练,Catboost使用更有效的策略。

1、对输入的观察值的集合进行随机排列,生成多个随机排列;

2、给定一个序列,对于每个例子,对于相同类别的例子我们计算平均样本值;

3、使用如下公式将所有的分类特征值转换为数值:

技术分享图片,那么技术分享图片可以代替为  

技术分享图片

在这里,我们还增加了先验值P和参数a>0,即为先验的权重。添加先验是一种常见的做法,它有助于减少从低频类别获得的噪声。

特征组合:

在数据集中,组合的数量随类别特征个数成指数型增长,在算法中不太可能考虑所有。在当前树考虑新的拆分时,Catboost以贪婪的方式考虑组合。

1、 第一次分裂不考虑任何组合在树上;

2、 对于下一次分类,在有所有类别特征的数据集的当前树,Catboost包含了所有的组合和分类特征。组合值即被转换为数字;

3、 Catboost还以以下方式生成数值和类别特征的组合:在树中选择的所有分裂视为具有两个值的类别,并在组合中也类似使用。

python代码:

import catboost

model = CatBoostClassifier(iterations=17000,

#                              depth = 6,

                               learning_rate = 0.03,

                               custom_loss=‘AUC‘,

                               eval_metric=‘AUC‘,

                               bagging_temperature=0.83,

                               od_type=‘Iter‘,

                               rsm = 0.78,

                               od_wait=150,

                               metric_period = 400,

                               l2_leaf_reg = 5,

                               thread_count = 20,

                               random_seed = 967

                              )

            model.fit(tr_x, tr_y, eval_set=(te_x, te_y),use_best_model=True)

            pre= model.predict_proba(te_x)[:,1].reshape((te_x.shape[0],1))

            train[test_index]=pre

            test_pre[i, :]= model.predict_proba(test_x)[:,1].reshape((test_x.shape[0],1))

            print (roc_auc_score(te_y, pre))

            cv_scores.append(roc_auc_score(te_y, pre))

 

catboost原理以及Python代码

标签:sse   eva   时间   shape   权重   cat   数值   一个   fit   

原文地址:https://www.cnblogs.com/dudumiaomiao/p/9693711.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!