学习内容:

1.CART树

2.算法原理

3.损失函数

4.分裂结点算法

5.正则化

6.对缺失值处理

7.优缺点

8.应用场景

9.sklearn参数


1.CART树

  CART算法是一种二分递归分割技术,把当前样本划分为两个子样本,使得生成的每个非叶子结点都有两个分支,因此CART算法生成的决策树是结构简洁的二叉树。由于CART算法构成的是一个二叉树,它在每一步的决策时只能是“是”或者“否”,即使一个feature有多个取值,也是把数据分为两部分。在CART算法中主要分为两个步骤

  • 将样本递归划分进行建树过程
  • 用验证数据进行剪枝

2.算法原理

  输入:训练数据集$D$,停止计算的条件;

  输出:CART决策树。

  根据训练数据集,从根结点开始,递归地对每个结点进行一下操作,构建二叉决策树:

  1)设结点的训练数据集为$D$,计算现有特征对该点数据集的基尼指数。此时,对每个特征A,对其可能取的每个值$a$,根据样本点计算对$A = a$的测试为“是”或“否”讲$D$分割成$D_1$和$D_2$两部分,计算$A = a$时的基尼指数。

  2)在所有 可能的特征$A$以及他们所有可能的切分点$a$中,选择基尼指数最小的特征及其对应的切分点作为最优切分点,依最有特征与最优切分点,从现结点生成两个子结点,将训练数据集依特征分配到两个子结点中去。

  3)对两个子结点递归地调用1),2),直至满足停止条件。

  4)生成CART决策树。

3.损失函数

  $L = \sum\limits_{x_i \leq R_m} (y_i - f(x_i))^2 + \sum\limits_{i=1}^K \Omega (f_k) $

4.分裂结点算法

  使用基尼指数用于分裂结点的依据

  概率分布的基尼指数定义为:$$Gini(p) = \sum\limits_{k=1}^K p_k (1-p_k) = 1 - \sum\limits_{k=1}^K p_k^2 $$

  如果样本那集合D根据特征A是否取某一可能值$a$被分割成$D_1$和$D_2$两部分,即$$D_1 = \{(x,y) \leq D | A(x) = a \} , D_2 = D - D_1 $$

  根据基尼指数值越大,样本集合不确定性就越大。

5.正则化

  标准GBM的实现没有像XGBoost这样的正则化步骤。正则化对减少过拟合也是有帮助的。 实际上,XGBoost以“正则化提升(regularized boosting)”技术而闻名。

  $ \Omega (f) = \gamma T +  \frac{1}{2} \lambda ||\omega||^2 $

6.对缺失值处理

  XGBoost内置处理缺失值的规则。用户需要提供一个和其它样本不同的值,然后把它作为一个参数传进去,以此来作为缺失值的取值。XGBoost在不同节点遇到缺失值时采用不同的处理方法,并且会学习未来遇到缺失值时的处理方法。

7.优缺点

优点:

  XGBoost可以实现并行处理,相比GBM有了速度的飞跃,LightGBM也是微软最新推出的一个速度提升的算法。 XGBoost也支持Hadoop实现。

  XGBoost支持用户自定义目标函数和评估函数,只要目标函数二阶可导就行。

8.应用场景

  评分系统,智能垃圾邮件识别,广告推荐系统

9.sklearn参数

      class xgboost.XGBRegressor(max_depth=3learning_rate=0.1n_estimators=100silent=Trueobjective='reg:linear'booster='gbtree'n_jobs=1nthread=Nonegamma=0min_child_weight=1max_delta_step=0subsample=1colsample_bytree=1colsample_bylevel=1reg_alpha=0reg_lambda=1scale_pos_weight=1base_score=0.5random_state=0seed=Nonemissing=Noneimportance_type='gain'**kwargs)

  max_depth: 参数类型(int) – Maximum tree depth for base learners. 树的最大深度

  learning_rate: 参数类型(float) – Boosting learning rate (xgb’s “eta”).学习率

  n_estimators: 参数类型(int) – Number of boosted trees to fit.优化树的个数

  silent: 参数类型(boolean) – Whether to print messages while running boosting.在运行过程中是否打印流程

  objective: 参数类型(string or callable) – Specify the learning task and the corresponding learning objective or a custom objective function to be used (see note below).明确学习任务

  booster: 参数类型(string) – Specify which booster to use: gbtree, gblinear or dart.指定使用的booster

  nthread: 参数类型(int) – Number of parallel threads used to run xgboost. (Deprecated, please use n_jobs).多线程

  n_jobs: 参数类型(int) – Number of parallel threads used to run xgboost. (replaces nthread).多线程

  gamma: 参数类型(float) – Minimum loss reduction required to make a further partition on a leaf node of the tree.增加分支时减少的最少损失

  min_child_weight: 参数类型(int) – Minimum sum of instance weight(hessian) needed in a child.叶节点最小权重

  max_delta_step: 参数类型(int) – Maximum delta step we allow each tree’s weight estimation to be.最大迭代次数

  subsample: 参数类型(float) – Subsample ratio of the training instance.训练样本的采样率

  colsample_bytree: 参数类型(float) – Subsample ratio of columns when constructing each tree.构建树时下采样率

  colsample_bylevel: 参数类型(float) – Subsample ratio of columns for each split, in each level.构建每一分支时下采样率

  reg_alpha: 参数类型(float (xgb's alpha)) – L1 regularization term on weights.L1正则化权重

  reg_lambda: 参数类型(float (xgb's lambda)) – L2 regularization term on weights.L2正则化权重

  scale_pos_weight: 参数类型(float) – Balancing of positive and negative weights.正负样本比率

  base_score: – The initial prediction score of all instances, global bias.初始实例分数

  seed: 参数类型(int) – Random number seed. (Deprecated, please use random_state).随机种子

  random_state: 参数类型(int) – Random number seed. (replaces seed).随机种子

  missing: 参数类型(floatoptional) – Value in the data which needs to be present as a missing value. If None, defaults to np.nan.当出现缺失值时,使用该值代替。

  importanc_type: 参数类型(stringdefault "gain") – The feature importance type for the feature_importances_ property: either “gain”, “weight”, “cover”, “total_gain” or “total_cover”.特征重要类型

  **kwargs: 参数类型(dictoptional) –Keyword arguments for XGBoost Booster object. Full documentation of parameters can be found here:

												

XGB算法梳理的更多相关文章

  1. 进阶:2.GBDT算法梳理

    GBDT算法梳理 学习内容: 1.前向分布算法 2.负梯度拟合 3.损失函数 4.回归 5.二分类,多分类 6.正则化 7.优缺点 8.sklearn参数 9.应用场景 1.前向分布算法 在学习模型时 ...

  2. 转载:XGBOOST算法梳理

    学习内容: CART树 算法原理 损失函数 分裂结点算法 正则化 对缺失值处理 优缺点 应用场景 sklearn参数 转自:https://zhuanlan.zhihu.com/p/58221959 ...

  3. 转载:GBDT算法梳理

    学习内容: 前向分布算法 负梯度拟合 损失函数 回归 二分类,多分类 正则化 优缺点 sklearn参数 应用场景 转自:https://zhuanlan.zhihu.com/p/58105824 G ...

  4. GBDT算法梳理

    1.GBDT(Gradient Boosting Decision Tree)思想 Boosting : 给定初始训练数据,由此训练出第一个基学习器: 根据基学习器的表现对样本进行调整,在之前学习器做 ...

  5. 增强学习Reinforcement Learning经典算法梳理3:TD方法

    转自:http://blog.csdn.net/songrotek/article/details/51382759 博客地址:http://blog.csdn.net/songrotek/artic ...

  6. 决策树和基于决策树的集成方法(DT,RF,GBDT,XGB)复习总结

    摘要: 1.算法概述 2.算法推导 3.算法特性及优缺点 4.注意事项 5.实现和具体例子 内容: 1.算法概述 1.1 决策树(DT)是一种基本的分类和回归方法.在分类问题中它可以认为是if-the ...

  7. 机器学习笔记(十)EM算法及实践(以混合高斯模型(GMM)为例来次完整的EM)

    今天要来讨论的是EM算法.第一眼看到EM我就想到了我大枫哥,EM Master,千里马.RUA!!!不知道看这个博客的人有没有懂这个梗的. 好的,言归正传.今天要讲的EM算法,全称是Expectati ...

  8. 10大排序算法——Java实现

    算法与实现 选择排序 算法思想 从数组中选择最小元素,将它与数组的第一个元素交换位置.再从数组剩下的元素中选择出最小的元素,将它与数组的第二个元素交换位置.不断进行这样的操作,直到将整个数组排序. 动 ...

  9. 实践1使用XGB实现酒店信息消歧

    XGB算法是决策树衍生出来的一种算法 场景:酒店的业务人员希望我们能够提供一个算法服务去为酒店信息做一个自动化的匹配,以通过算法的手段,找到那些确定相同的酒店和确定不同的酒店 以下代码为部分 理解业务 ...

随机推荐

  1. 【bzoj4543】[POI2014]Hotel加强版

    题目 抄题解.jpg 发现原来的\(O(n^2)\)的换根\(dp\)好像行不通了呀 我们考虑非常牛逼的长链剖分 我们设\(f[x][j]\)表示在\(x\)的子树中距离\(x\)为\(j\)的点有多 ...

  2. iPhone 电脑备份路径

    C:\Users\iChen\AppData\Roaming\Apple Computer\MobileSync\Backup

  3. 8、Android---探究服务

    8.1.服务是什么 服务(Service)是Android中实现程序后台运行的解决方案 非常适合执行那些不需要和用户交互而且要求长期的任务 服务的运行不依赖于任何用户界面 即使程序被切换到后台 或者用 ...

  4. Service 服务发现的两种方式-通过案例来理解+服务外部访问类型+selector-label

    1.环境变量 在创建一个Pod时,kubelet在该Pod的所有容器中为当前所有Service添加一系列环境变量. 例如,已存在名称为“redis-master”的Service,它对外暴露6379的 ...

  5. 手把手教你写基于C++ Winsock的图片下载的网络爬虫

    手把手教你写基于C++ Winsock的图片下载的网络爬虫 先来说一下主要的技术点: 1. 输入起始网址,使用ssacnf函数解析出主机号和路径(仅处理http协议网址) 2. 使用socket套接字 ...

  6. ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [1498], [18713], [18720]

    数据库server出现ORA-00600[kcratr_nab_less_than_odr].不能open数据库 1.open数据库报ORA-00600[kcratr_nab_less_than_od ...

  7. #leetcode刷题之路34-在排序数组中查找元素的第一个和最后一个位置

    给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置.你的算法时间复杂度必须是 O(log n) 级别.如果数组中不存在目标值,返回 [-1 ...

  8. mysql关于视图的用法以及作用

    关于视图的用法以及作用. 作用一: 提高了重用性,就像一个函数.如果要频繁获取user的name和goods的name.就应该使用以下sql语言.示例: select a.name as userna ...

  9. Linux --- vim 安装、支持python3的配置、插件自动补全YCM的安装配置及全过程错误总结

    1.git(用来下载vim和相关插件) sudo apt-get install git 2,cmake(用来编译clang-llvm) sudo apt-get install build-esse ...

  10. 记一次Apache Carbondata PR的经历

     前言 前段时间有幸接触到Apache Carbondata,试用过程中发现了一个小小的问题,并且又很快的定位到了问题.然后在社区群里反映了下,负责人问愿不愿意提个JIRA,PR,然后我在没有任何开源 ...