catboost原理以及Python代码
原论文:
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代码的更多相关文章
- lightgbm原理以及Python代码
原论文: http://papers.nips.cc/paper/6907-lightgbm-a-highly-efficient-gradient-boosting-decision-tree.pd ...
- MD5( 信息摘要算法)的概念原理及python代码的实现
简述: message-digest algorithm 5(信息-摘要算法).经常说的“MD5加密”,就是它→信息-摘要算法. md5,其实就是一种算法.可以将一个字符串,或文件,或压缩包,执行md ...
- KNN算法原理(python代码实现)
kNN(k-nearest neighbor algorithm)算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性 ...
- 【集成学习】:Stacking原理以及Python代码实现
Stacking集成学习在各类机器学习竞赛当中得到了广泛的应用,尤其是在结构化的机器学习竞赛当中表现非常好.今天我们就来介绍下stacking这个在机器学习模型融合当中的大杀器的原理.并在博文的后面附 ...
- 逻辑回归原理(python代码实现)
Logistic Regression Classifier逻辑回归主要思想就是用最大似然概率方法构建出方程,为最大化方程,利用牛顿梯度上升求解方程参数. 优点:计算代价不高,易于理解和实现. 缺点: ...
- 【机器学习】:Kmeans均值聚类算法原理(附带Python代码实现)
这个算法中文名为k均值聚类算法,首先我们在二维的特殊条件下讨论其实现的过程,方便大家理解. 第一步.随机生成质心 由于这是一个无监督学习的算法,因此我们首先在一个二维的坐标轴下随机给定一堆点,并随即给 ...
- paip.输入法编程--英文ati化By音标原理与中文atiEn处理流程 python 代码为例
paip.输入法编程--英文ati化By音标原理与中文atiEn处理流程 python 代码为例 #---目标 1. en vs enPHati 2.en vs enPhAtiSmp 3.cn vs ...
- 决策树ID3原理及R语言python代码实现(西瓜书)
决策树ID3原理及R语言python代码实现(西瓜书) 摘要: 决策树是机器学习中一种非常常见的分类与回归方法,可以认为是if-else结构的规则.分类决策树是由节点和有向边组成的树形结构,节点表示特 ...
- 模拟退火算法SA原理及python、java、php、c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径
模拟退火算法SA原理及python.java.php.c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径 模拟退火算法(Simulated Annealing,SA)最早的思 ...
随机推荐
- MySQL(六)创建用户与授权
转载自:MySQL创建用户与授权 目录 一.创建用户 二.授权 三.设置和更改用户密码 四.撤销用户权限 五.删除用户 一.创建用户 命令: CREATE USER 'username'@'host' ...
- ansible 远程以普通用户执行命令
1. ansible 10.0.0.1 -m raw -a "date" -u www 2.在ansible的主机配置文件中指定ssh_uservi/etc/ansible/hos ...
- Unable to start a VM due to insufficient capacity
今天cloudstack中的一个普通用户创建虚拟机时,总是报错:Unable to start a VM due to insufficient capacity ,看management and a ...
- 有关java(初学笔记)
JAVA的主要优势:跨平台性,可以在Linux,windows,mac三个系统上运行. 跨平台的核心:JAVA虚拟机--JVM 原理就是将Java语言在这个系统上翻译.JAVA在jvm上运行,jvm进 ...
- 【php增删改查实例】第七节 - 部门管理模块(画一个datagrid表格)
在easyui中,datagrid组件需要用一个table标签去渲染. <table id="grid0" title="部门管理" class=&quo ...
- Redis学习之路(四)之Redis集群
[toc] #Redis集群 1.Redis Cluster简介 Redis Cluster为Redis官方提供的一种分布式集群解决方案.它支持在线节点增加和减少. 集群中的节点角色可能是主,也可能是 ...
- spring 配置 线程池并使用 springtest 进行测试
在 applicationContext.xml 中配置spring线程池: <!-- 包路径扫描 --> <context:component-scan base-package= ...
- 类调用自己的静态方法必须把该方法设置为public
否则调用不了 ParaChecker.isOK(bindingResult); public class ParaChecker { static BaseResult paraCheck(Bindi ...
- 部署AlwaysOn第三步:集群资源组的健康检测和故障转移
资源组是由一个或多个资源组成的组,WSFC的故障转移是以资源组为单位的,资源组中的资源是相互依赖的.一个资源所依赖的其他资源必须和该资源处于同一个资源组,跨资源组的依赖关系是不存在的.在任何时刻,每个 ...
- React半科普文
React半科普文 什么是React getting started 文件分离 Server端编译 定义一个组件 使用property 组件嵌套 组件更新 Virtual DOM react nati ...