精华内容
下载资源
问答
  • 机器学习算法总结

    2021-02-25 01:18:25
    本文来自于网络,本文主要介绍了机器学习领域涉及到很多的算法和模型中一些常见的算法机器学习(MachineLearning,ML)是一门多领域...由上所示:机器学习分为四大块:classification(分类),clustering(聚类),regre
  • 机器学习-算法总结图

    2020-06-20 11:28:15
    机器学习-算法总结图加载数据&数据清洗特征工程数据分割模型训练线性模型线性回归逻辑回归非线性模型决策树集成学习无监督模型kmeans聚类拟合问题模型评估模型调优模型保存 加载数据&数据清洗 特征工程 ...

    加载数据&数据清洗

    在这里插入图片描述

    特征工程

    在这里插入图片描述

    数据分割

    在这里插入图片描述

    模型训练

    在这里插入图片描述

    线性模型

    线性回归

    在这里插入图片描述

    逻辑回归

    在这里插入图片描述

    非线性模型

    决策树

    在这里插入图片描述

    集成学习

    在这里插入图片描述

    无监督模型

    kmeans聚类

    在这里插入图片描述

    拟合问题

    在这里插入图片描述

    模型评估

    在这里插入图片描述

    模型调优

    在这里插入图片描述

    模型保存

    在这里插入图片描述

    展开全文
  • 量子机器学习HHL算法总结图文

    千次阅读 2019-03-27 18:15:09
    这篇文章全部都是我在学习HHL算法时制作的ppt的内容。直接这样看大概什么都看不清,建议把...网络上关于量子机器学习的资料太少了,希望能和大家多多交流啊! 如果我有什么理解不到位的地方,还请大家批评指正。 ...

    这篇文章全部都是我在学习HHL算法时制作的ppt的内容。直接这样看大概什么都看不清,建议把图片放大,比例就正常了。参考了几篇论文都列在图片中了,也有参考别人微信推送的内容,链接在这儿,推送是中文的,解释的非常清楚。网络上关于量子机器学习的资料太少了,希望能和大家多多交流啊! 如果我有什么理解不到位的地方,还请大家批评指正。

    展开全文
  • 机器学习算法地图

    2018-09-09 18:21:49
    在这里,SIGAI 对常用的机器学习和深度学习算法进行了总结,整理出它们之间的关系,以及每种算法的核心点,各种算法之间的比较。由此形成了一张算法地图,以帮助大家更好的理解和记忆这些算法。
  • 机器学习算法总结】XGBoost

    千次阅读 2018-12-24 19:33:54
    目录 1. XGBoost 2.CART树 2.1 优缺点 2.2 分裂依据 2.2.1 分类 2.2.2 回归 ...2.3总结 ...3. 算法原理 ...3.3.2 近似算法 ...3.3.3 分布式加权直方图算法(Weighted Quantile Sketch) 4. 损失函数...

    目录

    1. XGBoost

    2. CART树

    2.1 优缺点

    2.2 分裂依据

    2.2.1 分类

    2.2.2 回归

    2.3总结

    2.4 参考

    3. 算法原理

    3.1 定义树的复杂度

    3.2 打分函数计算示例

    3.3 分裂结点

    3.3.1 贪心法

    3.3.2 近似算法

    3.3.3 分布式加权直方图算法(Weighted Quantile Sketch)

    4. 损失函数(指定grad、hess)

    4.1 参考

    5. 缺失值

    6. 其他优化

    6.1 正则化

    6.2 计算速度提升

    6.2.1 预排序pre-sorted

    6.2.2 cache-aware 预取

    6.2.3 Out-of-Core 大数据集

    7. 优缺点

    7.1 优点

    7.2 缺点

    8. 应用场景

    9. XGBoost参数

    参考


    1. XGBoost

           XGBoost是提升方法中的一个可扩展的机器学习系统。XGBoost在许多机器学习和数据挖掘问题中产生了广泛的影响,在竞赛中也被广泛使用。

           XGBoost成功的最重要因素就是它在任何场景下的可扩展性。XGBoost系统在单台机器上的运行速度比现有流行的解决方案快10倍以上,并可在分布式或内存限制设置中扩展到数十亿个示例。XGBoost的可扩展性是由于在它的系统实现中的一些创新,包括: 

    1. 为处理稀疏数据使用了一个新颖的树学习算法;
    2. 理论上合理的加权分位数草图过程,使得能够在近似树学习中处理实例权重; 
    3. 并行和分布式计算使得学习更快,从而能够更快的进行模型探索; 
    4. 最重要的是XGBoost使用核外计算并且能够让数据科学家在台式机上处理数以亿计的示例;
    5. 结合这些技术使端到端系统以最少的集群资源扩展到更大的数据;

    2. CART树

           分类与回归树(classification and regression tree,CART)由特征选择、树的生成及剪枝组成,既可用于分类也可用于回归。CART是一棵二叉树,每一次分裂只会产生两个节点。CART树由两步组成:

    1. 决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大;
    2. 决策树剪枝:用验证集数据集对已生成的树进行剪枝并选择最优子树,这时用损失函数最小作为剪枝的标准。

    2.1 优缺点

    • 优点:既能是分类树,又能是回归树,且二叉树的结构更为简洁。
    • 缺点:是一种大样本统计方法,样本量较小时模型不稳定。

    2.2 分裂依据

           当CART是分类树时,采用GINI值作为节点分裂的依据;当CART是回归树时,采用样本的最小方差作为节点分裂的依据。

    2.2.1 分类

            GINI值的计算公式:

                                                

            其中,pi表示节点中属于类i的概率。 节点越不纯,GINI值越大;反之,则GINI值越小。 

    2.2.2 回归

     

            回归方差计算公式:

                                         

            方差越大,表示该节点的数据越分散,预测的效果就越差。如果一个节点的所有数据都相同,那么方差就为0,此时可以很肯定地认为该节点的输出值;如果节点的数据相差很大,那么输出的值有很大的可能与实际值相差较大。

    2.3总结

            无论是分类树还是回归树,CART都要选择使子节点的GINI值或者回归方差最小的属性作为分裂的方案。 

    2.4 参考

    https://blog.csdn.net/xiaohukun/article/details/78112917

    3. 算法原理

            如果不考虑工程实现、解决问题上的一些差异,xgboost与gbdt比较大的不同就是目标函数的定义。xgboost的目标函数如下:

                    

            红色箭头指向的l为损失函数;红色方框为正则项,包括L1、L2;红色圆圈为常数项xgboost对目标函数执行二阶泰勒展开提升树模型只采用一阶泰勒展开。这也是xgboost 和GBT的另一个重要区别。

            对于上面的目标函数,我们接下来进行化简。

    3.1 定义树的复杂度

            对于f的定义做一下细化,把树拆分成结构部分q叶子权重部分w。下图是一个具体的例子。结构函数q把输入映射到叶子的索引号上面去,而w给定了每个索引号对应的叶子分数是什么。

            定义这个复杂度包含了一棵树里面节点的个数,以及每个树叶子节点上面输出分数的L2模平方。当然这不是唯一的一种定义方式,不过这一定义方式学习出的树效果一般都比较不错。下图还给出了复杂度计算的一个例子。其中方框部分,对应模型参数中的lambda ,gamma。

    • 叶结点越多,则决策树越复杂。
    • 每个叶结点输出值的绝对值越大,则决策树越复杂。

            注:该复杂度是一个经验公式。事实上还有很多其他的定义复杂度的方式,只是这个公式效果还不错。

            在这种新的定义下,我们可以把目标函数进行如下改写,其中I定义为每个叶子上面的样本集合I_j=\left \{i|q(x_i)=j) \right \} ,g是一阶导数,h是二阶导数

                               

            这一个目标包含了T个相互独立的单变量二次函数。我们可以定义:

                                                                       

            最终公式可以化简为:

                               

            通过对w_j求导等于0,可以得到:

                                                       

            然后把w_j最优解代入得到:

                                           

    3.2 打分函数计算示例

            Obj代表了当我们指定一个树的结构的时候,我们在目标上面最多减少多少。我们可以把它叫做结构分数(structure score):

    3.3 分裂结点

    3.3.1 贪心法

            每一次尝试去对已有的叶子加入一个分割:

                                

            对于每次扩展,我们还是要枚举所有可能的分割方案,如何高效地枚举所有的分割呢?我假设我们要枚举所有x < a 这样的条件,对于某个特定的分割a我们要计算a左边和右边的导数和。

                                      

            我们可以发现对于所有的a,我们只要做一遍从左到右的扫描就可以枚举出所有分割的梯度和GL和GR。然后用上面的公式计算每个分割方案的分数就可以了。

            观察这个目标函数,大家会发现第二个值得注意的事情就是引入分割不一定会使得情况变好,因为我们有一个引入新叶子的惩罚项。优化这个目标对应了树的剪枝, 当引入的分割带来的增益小于一个阀值的时候,我们可以剪掉这个分割。大家可以发现,当我们正式地推导目标的时候,像计算分数和剪枝这样的策略都会自然地出现,而不再是一种因为heuristic(启发式)而进行的操作了。
            下面是论文中的算法:

                              

    3.3.2 近似算法

            主要针对数据太大,不能直接进行计算。

            近似算法寻找最优分裂点时不会枚举所有的特征值,而是对特征值进行聚合统计,然后形成若干个桶。然后仅仅将桶边界上的特征的值作为分裂点的候选,从而获取计算性能的提升。

     

            分桶有两种模式:

            1、全局模式:在算法开始时,对每个维度分桶一次,后续的分裂都依赖于该分桶并不再更新。

    • 优点是:只需要计算一次,不需要重复计算。
    • 缺点是:在经过多次分裂之后,叶结点的样本有可能在很多全局桶中是空的。

            2、局部模式:除了在算法开始时进行分桶,每次拆分之后再重新分桶。

    • 优点是:每次分桶都能保证各桶中的样本数量都是均匀的。
    • 缺点是:计算量较大。

            全局模式会构造更多的候选拆分点,局部模式会更适合构建更深的树。

            分桶时的桶区间间隔大小是个重要的参数。区间间隔越小,则桶越多,则划分的越精细,候选的拆分点就越多。

            下面是论文中的算法:

                              

    3.3.3 分布式加权直方图算法(Weighted Quantile Sketch)

    4. 损失函数(指定grad、hess)

    • 平方损失函数:
    • 逻辑损失函数:

            grad、hess推导:

                                    

    4.1 参考

    https://blog.csdn.net/a819825294/article/details/51206410

    5. 缺失值

            真实场景中,有很多可能导致产生稀疏。如:数据缺失、某个特征上出现很多 0 项、人工进行 one-hot 编码导致的大量的 0。

    • 理论上,数据缺失和数值0的含义是不同的,数值 0 是有效的。
    • 实际上,数值0的处理方式类似缺失值的处理方式,都视为稀疏特征。在xgboost 中,数值0的处理方式和缺失值的处理方式是统一的。这只是一个计算上的优化,用于加速对稀疏特征的处理速度。
    • 对于稀疏特征,只需要对有效值进行处理,无效值则采用默认的分裂方向。注意:每个结点的默认分裂方向可能不同。

            在xgboost 算法的实现中,允许对数值0进行不同的处理。可以将数值0视作缺失值,也可以将其视作有效值。如果数值0是有真实意义的,则建议将其视作有效值。

            缺失值处理算法中,通过两轮遍历可以确保稀疏值位于左子树和右子树的情形。

    6. 其他优化

    6.1 正则化

            xgboost 在学习过程中使用了如下的正则化策略来缓解过拟合:

    • 通过学习率v来更新模型:
    • 类似于随机森林,采取随机属性选择;

    6.2 计算速度提升

            xgboost 在以下方面提出改进来提升计算速度:(1)预排序pre-sorted;(2)cache-aware 预取;(3)Out-of-Core 大数据集。

    6.2.1 预排序pre-sorted

    1、xgboost 提出column block 数据结构来降低排序时间。

    • 每一个block 代表一个属性,样本在该block 中按照它在该属性的值排好序。
    • 这些block 只需要在程序开始的时候计算一次,后续排序只需要线性扫描这些block 即可。
    • 由于属性之间是独立的,因此在每个维度寻找划分点可以并行计算。

    2、block 可以仅存放样本的索引,而不是样本本身,这样节省了大量的存储空间。

    6.2.2 cache-aware 预取

    1、由于在column block中,样本的顺序会被打乱,这会使得从导数数组中获取g_i时的缓存命中率较低。因此xgboost 提出了cache-aware 预取算法,用于提升缓存命中率。

    2、xgboost会以minibatch的方式累加数据,然后在后台开启一个线程来加载需要用到的导数g_i。这里有个折中:minibatch 太大,则会引起cache miss ;太小,则并行程度较低。

    6.2.3 Out-of-Core 大数据集

    1、xgboost 利用硬盘来处理超过内存容量的大数据集。其中使用了下列技术:

    • 使用block 压缩技术来缓解内存和硬盘的数据交换IO: 数据按列压缩,并且在硬盘到内存的传输过程中被自动解压缩。
    • 数据随机分片到多个硬盘,每个硬盘对应一个预取线程,从而加大"内存-硬盘"交换数据的吞吐量。

    7. 优缺点

    7.1 优点

            与GBDT相比,XGBoost有以下进步:

    1)GBDT以传统CART作为基分类器,而XGBoost支持线性分类器,相当于引入L1和L2正则化项的逻辑回归(分类问题)和线性回归(回归问题);

    2)GBDT在优化时只用到一阶导数,XGBoost对代价函数做了二阶Talor展开,引入了一阶导数和二阶导数;

    3)当样本存在缺失值是,XGBoost能自动学习分裂方向;

    4)XGBoost借鉴RF的做法,支持列抽样,这样不仅能防止过拟合,还能降低计算;

    5)XGBoost的代价函数引入正则化项,控制了模型的复杂度,正则化项包含全部叶子节点的个数,每个叶子节点输出的score的L2模的平方和。从贝叶斯方差角度考虑,正则项降低了模型的方差,防止模型过拟合;

    6)XGBoost在每次迭代之后,为叶子结点分配学习速率,降低每棵树的权重,减少每棵树的影响,为后面提供更好的学习空间;

    7)XGBoost工具支持并行,但并不是tree粒度上的,而是特征粒度,决策树最耗时的步骤是对特征的值排序,XGBoost在迭代之前,先进行预排序,存为block结构,每次迭代,重复使用该结构,降低了模型的计算;block结构也为模型提供了并行可能,在进行结点的分裂时,计算每个特征的增益,选增益最大的特征进行下一步分裂,那么各个特征的增益可以开多线程进行;

    8)可并行的近似直方图算法,树结点在进行分裂时,需要计算每个节点的增益,若数据量较大,对所有节点的特征进行排序,遍历的得到最优分割点,这种贪心法异常耗时,这时引进近似直方图算法,用于生成高效的分割点,即用分裂后的某种值减去分裂前的某种值,获得增益,为了限制树的增长,引入阈值,当增益大于阈值时,进行分裂;

    7.2 缺点

            与LightGBM相比,有以下不足:

    1)XGBoost采用预排序,在迭代之前,对结点的特征做预排序,遍历选择最优分割点,数据量大时,贪心法耗时,LightGBM方法采用histogram算法,占用的内存低,数据分割的复杂度更低;

    2)XGBoost采用level-wise生成决策树,同时分裂同一层的叶子,从而进行多线程优化,不容易过拟合,但很多叶子节点的分裂增益较低,没必要进行跟进一步的分裂,这就带来了不必要的开销;LightGBM采用深度优化,leaf-wise生长策略,每次从当前叶子中选择增益最大的结点进行分裂,循环迭代,但会生长出更深的决策树,产生过拟合,因此引入了一个阈值进行限制,防止过拟合;

    8. 应用场景

            XGBoost可以用于解决回归、二分类和多分类问题。由于其可以并行化实现,因此也可以用于工业规模的应用中。

    9. XGBoost参数

    XGBoost参数地址:https://xgboost.readthedocs.io/en/latest/parameter.html

            在运行 XGBoost 之前,我们必须设置三种类型的参数:常规参数提升器参数任务参数

    • 常规参数与我们用于提升的提升器有关,通常是树模型或线性模型;
    • 提升器参数取决于你所选择的提升器;
    • 学习任务参数决定了学习场景,例如回归任务可以使用不同的参数进行排序相关的任务;
    • 命令行参数的行为与 xgboost 的 CLI 版本相关;
    General Parameters booster

    默认:gbtree。使用哪种提升器。可以是gbtree、gblinear或dart。

    gbtree和dart使用基于树的模型;gblinear使用线性函数。

      silent(已弃用) 默认:0。已弃用,请使用verbosity。
      verbosity 

    默认:1。

    0 (silent), 1 (warning), 2 (info), 3 (debug)。

      nthread

    默认:最大线程数。用于运行XGBoost的并行线程数。

      disable_default_eval_metric

    默认:0。标记以禁用默认度量标准。

    设置为>0表示禁用?

      num_pbuffer

    XGBoost自动设置,无需用户设置。

    预测缓冲区的大小,通常设置为训练实例的数量。

    缓冲区用于保存最后一次增强步骤的预测结果。

      num_feature

    XGBoost自动设置,无需用户设置。

    用于增强的特征尺寸,设置为特征的最大尺寸。

    Parameters for Tree Booster eta

    默认:0.3。别名:learning_rate。

    用于防止过拟合。在每个提升步骤之后,我们可以直接获得新特征的权重,并且eta缩小特征权重以使提升过程更加健壮。

    范围:[0,1]

      gamma

    默认:0。别名:min_split_loss。

    在树的叶节点上进行进一步分区所需的最小loss减少。gamma越大,算法越健壮。

    范围:[0,∞]

      max_depth

    默认:6。树的最大深度。

    增加此值将使模型更复杂,更容易过拟合。 0表示没有限制。请注意,当grow_policy设置为depthwise时,需要限制。
    范围:[0,∞]

      min_child_weight

    默认:1。叶节点所需的实例权重(hessian)的最小总和。

    如果树分区步骤导致叶节点的实例权重之和小于min_child_weight,则构建过程将放弃进一步的分区。在线性回归任务中,这仅对应于每个节点中需要的最小实例数。 min_child_weight越大,算法越健壮。
    范围:[0,∞]

      max_delta_step

    默认:0。允许每个叶子输出的最大增量步长。

    如果该值设置为0,则表示没有约束。如果将其设置为正值,则可以帮助使更新步骤更加健壮。通常不需要此参数,但是当类非常不平衡时,它可能有助于逻辑回归。将其设置为值1-10可能有助于控制更新。
    范围:[0,∞]

      subsample

    默认:1。训练集的子样本比例。

    将其设置为0.5意味着XGBoost会在生长树之前随机抽取一半训练数据。这样可以防止过度拟合。下采样将在每次增强迭代中发生一次。

    范围: (0,1]

      colsample_bytree, colsample_bylevel, colsample_bynode

    默认:1。这是一组用于列的下采样的参数。

    范围: (0,1]

    • colsample_bytree:构造每个树时列的下采样比例。对于构造的每个树,下采样发生一次。
    • colsample_bylevel:每个级别的列的下采样比例。对于树中达到的每个新深度级别,下采样都会发生一次。列是从为当前树选择的列集合进行下采样的。
    • colsample_bynode:每个节点(拆分)的列的下采样比例。每次评估新的拆分时,都会进行一次下采样。列是从为当前级别选择的列集合进行下采样的。

    这3个参数的作用会累积。例如,具有64个特征的组合{'colsample_bytree':0.5,'colsample_bylevel':0.5,'colsample_bynode':0.5}将在每次拆分时留下4个特征供您选择?

      lambda

    默认:1。别名:reg_lambda。L2正则化项。

    增加此值将使模型更加健壮。

      alpha

    默认:0。别名:reg_alpha。L1正则化项。

    增加此值将使模型更加健壮。

      tree_method

    默认:auto。XGBoost中使用的树构造算法。

    可选项:auto,exact,approx,hist,gpu_exact,gpu_hist。

    分布式和外部存储器版本仅支持tree_method = approx。

    • auto:使用启发式方法选择最快的方法。(1)对于中小型数据集,将使用精确的贪婪(exact)。(2)对于非常大的数据集,将选择近似算法(approx)。(3)因为旧行为总是在单个机器中使用精确贪婪,所以当选择近似算法来通知该选择时,用户将得到消息。
    • exact:精确贪心算法。
    • approx:使用分位数草图和梯度直方图的近似贪婪算法。
    • hist:快速直方图优化近似贪心算法。 它使用了一些性能改进,例如垃圾箱缓存。
    • gpu_exact:精确算法的GPU实现。
    • gpu_hist:hist算法的GPU实现。
      sketch_eps

    默认:0.03。范围:(0,1)

    • 仅适用于tree_method=approx
    • 这大致转换为0(1 / sketch_eps)个数量的箱子。 与直接选择的箱数相比,这提供了具有草图精度的理论保证。
    • 通常不必调整它。 但考虑设置较低的数字,以便更准确地列举分割候选者。
      scale_pos_weight

    默认:1。控制正负权重的平衡,对不平衡的类有用

    要考虑的典型值:sum(负实例)/ sum(正实例)。

      updater

    默认:grow_colmaker,prune。

    逗号分隔的字符串,用于定义要运行的树更新程序序列,提供构建和修改树的模块化方法。这是一个高级参数,通常会自动设置,具体取决于其他一些参数。但是,它也可以由用户明确设置。存在以下更新程序插件:

    • grow_colmaker:非分布式基于列的树构造。
    • distcol:具有基于列的数据分割模式的分布式树构造。
    • grow_histmaker:基于行的数据分割的分布式树构造,基于全局直方图计数提议。
    • grow_local_histmaker:基于局部直方图计数。
    • grow_skmaker:使用近似草绘算法。
    • sync:同步所有分布式节点中的树。
    • refresh:根据当前数据刷新树的统计信息和/或叶子值。请注意,不会执行数据行的随机下采样。
    • prune:若loss<min_split_loss(或gamma),则修剪此分割。

    在分布式设置中,隐式更新程序序列值将调整为grow_histmaker,prune。

      refresh_leaf

    默认:1。这是刷新更新程序插件的参数。

    • refresh_leaf=1时,将更新树叶和树节点的统计信息;
    • refresh_leaf=0时,仅更新节点统计信息。
      process_type 默认:default。A type of boosting process to run。
    可选项:default,update。
    • default:创建新树的正常提升过程。
    • update:从现有模型开始,仅更新其树。 在每次增强迭代中,从初始模型中获取树,为该树运行指定的更新器插件序列,并将修改后的树添加到新模型中。 新模型将具有相同或更少数量的树,具体取决于执行的增强迭代次数。 目前,以下内置更新程序插件可以有意义地与此进程类型一起使用:refresh,prune。 使用process_type = update,无法使用创建新树的更新程序插件。
      grow_policy

    默认:depthwise。控制将新节点添加到树中的方式。

    仅当tree_method=hist时才支持
    可选项:depthwise,lossguide。

    • depthwise:在距离根最近的节点处分割。
    • lossguide:在损失变化最大的节点处分离。
      max_leaves

    默认:0。要添加的最大节点数。

    仅在grow_policy = lossguide时相关

      max_bin

    默认:256。分桶连续特征的最大离散箱数。

    仅在tree_method = hist时使用
    增加此数量可以以更高的计算时间为代价来提高分割效果。

      predictor

    默认:cpu_predictor。要使用的预测算法类型。

    提供相同的结果,但允许使用GPU或CPU。

    • cpu_predictor:多核CPU预测算法。
    • gpu_predictor:使用GPU进行预测。 tree_method是gpu_exact或gpu_hist时默认。
    Additional parameters for Dart Booster (booster=dart) sample_type

    默认:uniform。采样算法的类型。

    • uniform:统一选择丢弃树。
    • weighted:按权重比例选择丢弃树。
      normalize_type 默认:tree。归一化算法的类型。
    tree:新树的每棵树都有相同的权重。
    • 新树的权重是1 /(k + learning_rate)。
    • 丢弃的树按k /(k + learning_rate)比例缩放。
    forest:新树的丢弃树(森林)总权重相同。
    • 新树的权重是1 /(1 + learning_rate)。
    • 丢弃的树按1 /(1 + learning_rate)比例缩放。
      rate_drop

    默认:0.0。丢弃比例。

    范围:[0.0,1.0]

      one_drop 默认:0。启用此标志后,在丢弃期间始终会丢弃至少一颗树(允许从原始DART paper中进行Binomial-plus-one或epsilon-dropout)。
      skip_drop 默认:0.0。在boosting迭代期间跳过丢弃过程的概率。
    • 如果跳过了丢弃,则以与gbtree相同的方式添加新树。
    • 请注意,非零skip_drop的优先级高于rate_drop或one_drop。
    范围:[0.0,1.0]
    Parameters for Linear Booster (booster=gblinear) lambda

    默认:0。别名:reg_lambda。L2正则化项。

    增加此值将使模型更加健壮。标准化为训练样本的数量。

      alpha

    默认:0。别名:reg_alpha。L1正则化项。

    增加此值将使模型更加健壮。标准化为训练样本的数量。

      updater

    默认:shotgun。线性模型拟合所使用的算法。

    • shotgun:基于shotgun的并行坐标下降算法。使用'hogwild'并行性,因此在每次运行时产生一个不确定的解决方案。
    • coord_descent:普通坐标下降算法。也是多线程的,但仍然会产生确定性的解决方案。
      feature_selector

    默认:cyclic。特征选择和排序方法。

    • cyclic:通过一次循环一个特征确定性选择。
    • shuffle:类似于循环,但在每次更新之前使用随机特征混洗。
    • random:随机(带替换)坐标选择器。
    • greedy:选择具有最大梯度幅度的坐标。它具有O(num_feature ^ 2)复杂度。这是完全确定的。它允许通过设置top_k参数将选择限制为具有最大单变量权重变化幅度的每组top_k特征。这样做会降低O(num_feature * top_k)的复杂性。
    • thrifty:近乎贪婪的特征选择器。在循环更新之前,重新排序其单变量权重变化幅度的特征。此操作是多线程的,是二次贪心选择的线性复杂度近似。它允许通过设置top_k参数将选择限制为具有最大单变量权重变化幅度的每组top_k特征。
      top_k 默认:0。在greedy 和thrifty的特征选择器中选择的top特征的数量。值0表示使用所有特征。
    Parameters for Tweedie Regression (objective=reg:tweedie) tweedie_variance_power

    默认:1.5。

    控制Tweedie分布方差的参数:var(y) ~ E(y) ^  tweedie_variance_power;
    范围:(1,2);
    值越接近2,则越靠近gamma分布;值越接近1,则越靠近泊松分布。

    Learning Task Parameters objective

    默认:reg:linear。

    • reg:linear:线性回归
    • reg:logistic:逻辑回归
    • binary:logistic:二元分类的逻辑回归,输出概率
    • binary:logitraw:二元分类的逻辑回归,逻辑变换前的输出得分
    • binary:hinge:二元分类的hinge损失。预测值为0或1,而不是概率。
    • count:poisson:计数数据的泊松回归,泊松分布的输出均值。默认情况下,在泊松回归中将max_delta_step设置为0.7(用于保护优化)
    • survival:cox:right censored survival time data的Cox回归(负值被认为是正确的删剪)。注意,在风险比尺度上返回预测值(i.e., 
      as HR = exp(marginal_prediction) in the proportional hazard function h(t) = h0(t) * HR)。
    • multi:softmax:设置XGBoost使用softmax目标进行多类分类,还需要设置num_class(类的数量)
    • multi:softprob:与softmax相同,但输出ndata * nclass的向量,可以进一步reshap为ndata * nclass矩阵。结果包含属于每个类的每个数据点的预测概率。
    • rank:pairwise:使用LambdaMART执行成对排序,其中成对损失最小化
    • rank:ndcg:使用LambdaMART执行列表方式排序,其中规范化折扣累积增益(NDCG)最大化
    • rank:map:使用LambdaMART执行列表方式排序,其中平均平均精度(MAP)最大化
    • reg:gamma:使用log-link进行gamma回归。输出是gamma分布的平均值。它可能是有用的,例如,用于建模保险索赔严重性,或任何可能是gamma分布的结果。
    • reg:tweedie:带有log-link的Tweedie回归。它可能是有用的,例如,用于模拟保险中的总损失,或者可能是Tweedie分布的任何结果。
      base_score 默认:0.5。所有实例的初始预测分数,全局偏差。
    对于足够数量的迭代,更改此值不会产生太大影响。
      eval_metric

    默认:通过objective来确定默认值。

    验证数据的评估指标,将根据objective来分配默认指标(回归使用rmse;分类使用误差,ranking使用mAP平均平均精度)。
    用户可以添加多个评估指标。 记得将指标作为参数对列表而不是map传递,以便后面的eval_metric不会覆盖前一个。
    评估指标的选项如下:

    • rmse:均方根误差
    • mae:平均绝对误差
    • logloss:负对数似然
    • error:二分类错误率。计算为#(错误情况)/#(所有情况)。对于预测,评估将认为具有大于0.5的预测值的实例作为正实例,而将其他实例视为负实例。
    • error@t:通过't'提供数值,可以指定不同于0.5的二分类阈值
    • merror:多分类错误率。计算为#(错误情况)/#(所有情况)。
    • mlogloss:多分类logloss。
    • auc:曲线下面积
    • aucpr:PR曲线下面积
    • ndcg:标准化折扣累积增益
    • map:平均平均精度
    • ndcg@n, map@n:'n'可以指定为整数,以切断列表中的顶部位置以进行评估。
    • ndcg-, map-, ndcg@n-, map@n-:在XGBoost中,NDCG和MAP将评估没有任何正样本的列表得分为1。通过在评估指标中添加“ - ”,XGBoost会将这些得分评估为0,以便在某些条件下保持一致。
    • poisson-nloglik:泊松回归的负对数似然
    • gamma-nloglik:gamma回归的负对数似然
    • cox-nloglik:Cox比例风险回归的负部分对数似然
    • gamma-deviance:gamma回归的剩余偏差
    • tweedie-nloglik:Tweedie回归的负对数似然(在tweedie_variance_power参数的指定值处)
      seed 默认:0。随机数种子。
    Command Line Parameters num_round boosting轮数
      data 训练数据集的路径
      test:data 用于预测的测试数据集的路径
      save_period

    默认:0。保存模型的时间段。

    设置save_period = 10意味着每10轮XGBoost将保存模型。将其设置为0表示在训练期间不保存任何模型。

      task

    默认:train。可选项:train, pred, eval, dump。

    • train:使用数据进行训练
    • pred:对测试数据集进行预测
    • eval:用于评估eval [name] = filename指定的统计信息
    • dump:用于将学习的模型转储为文本格式
      model_in

    默认:NULL。输入模型的路径,测试、评估、转储任务所需。

    如果在训练中指定,XGBoost将继续从输入模型进行训练。

      model_out 默认:NULL。训练结束后输出模型的路径。
    如果未指定,XGBoost将输出名称为0003.model的文件,其中0003是boosting轮数。
      model_dir 默认: models/。训练期间保存模型的输出目录。
      fmap 特征映射,用于转储模型。
      dump_format

    默认: text。可选项:text, json。模型转储文件的格式。

      name_dump

    默认:dump.txt。模型转储文件的名称。

      name_pred

    默认:pred.txt。预测文件的名称,用于pred模式。

      pred_margin

    默认:0。预测margin而不是转换概率。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    参考

    https://shimo.im/docs/Mh60mVwFZxEUvt0f

    XGBClassifier函数
    https://www.cnblogs.com/wanglei5205/p/8579244.html

    XGBoost调参
    https://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-xgboost-with-codes-python/

    XGBoost调参
    https://blog.csdn.net/slx_share/article/details/82389343

    XGBoost参数调优
    https://blog.csdn.net/han_xiaoyang/article/details/52665396

    Xgboost参数解释及调参
    https://blog.csdn.net/iyuanshuo/article/details/80142730

    sklearn参数解释
    https://blog.csdn.net/wuxiaosi808/article/details/78036633

    XGBoost的基本原理
    https://blog.csdn.net/qq_24519677/article/details/81809157

    Xgboost原理
    https://blog.csdn.net/github_38414650/article/details/76061893

    XGBoost原理
    https://blog.csdn.net/g11d111/article/details/73409811

    xgboost原理
    https://blog.csdn.net/a819825294/article/details/51206410

    XGBoost理论篇
    https://blog.csdn.net/u013709270/article/details/77388009

    https://zhuanlan.zhihu.com/p/25308051?utm_medium=social&utm_source=wechat_session


    http://www.huaxiaozhuan.com/统计学习/chapters/7_GBT.html
     

     

     

     

     

     

     

    展开全文
  • 机器学习各大算法核心总结图,比如常见的logits回归,word2vect,xgboost
  • classify0函数流程 注意classfy0()函数中一些语句的用法: distance.argsort() : 将distance元素从大到小顺序的下标返回 classcount.get(votelabel, 0) + 1 :classcount字典中如果没有votelabel则字典class...
  • 集成学习(Ensemble Learning)不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成任务,其可以用于分类问题,也可以用于回归问题。 概括:通过学习训练数据集得到若干个体学习器(弱学习器),通过...

    集成学习(Ensemble Learning) 不是一个单独的机器学习算法,而是通过构建并结合多个基学习器来完成任务,其可以用于分类问题,也可以用于回归问题。
    概括:通过学习训练数据集得到若干个体学习器(弱学习器),通过结合策略,最终形成一个强学习器,以达到“博采众长”的目的。
    目前集成学习可分为两类,即个体学习器存在强依赖关系、必须串行生成的序列化方法,以及个体学习器间不存在强依赖关系、可同时生成的并行化方法
    在这里插入图片描述
    (图片来源:https://www.bilibili.com/video/av61553883 侵删)
    所以,集合学习有两个问题需要解决:一是如何得到若干个体学习器?;二是如何选择结合策略?
    解决方法:
    一:个体学习器的选择
    要获得好的集成,个体学习器应“好而不同”,即个体学习器要有一定的准确性且要有多样性,多样性指的是学习器间具有差异性。
    个体学习器的选择有两种:
    1.同质集成:个体学习器都为同一类(eg:决策树、神经网络…)
    2.异质集成:个体学习器不全是一类。
    一般地,集成学习选择同质个体学习器,使用最多的模型是CART决策树和神经网络。
    在这里插入图片描述
    非集成算法直接通过学习训练集得到分类器;
    Bagging的个体学习器的训练集通过随机采样(有放回)得到,具体地,通过对训练集n次随机采样,得到n个子集,分别训练弱学习器,这样得到n个并行弱学习器再通过结合策略就可以得到最终的强学习器;详见我的博客:机器学习算法总结10:Bagging和随机森林
    Boosting的个体学习器都是通过整个训练集得到,但是每轮训练集被赋予权值或概率分布,通过每一轮的训练结果更新下一轮的样本权值,进而生成下一轮的个体学习器,经过n轮训练得到n个串行个体学习器,再通过结合策略就可以得到最终的强学习器。详见我的博客:机器学习算法总结7:提升方法
    Bagging和Boosting的区别
    1.样本选择
    Bagging:每轮个体分类器使用的训练集不同,是从原始训练集中有放回采样得到,各轮训练集之间相互独立;
    Boosting:每轮个体分类器使用的训练集不变,只是每轮训练集的权值不同,权值根据上一轮的分类结果进行调整。
    2.样本权重
    Bagging:使用均匀采样,每个样本权重相等;
    Boosting:根据每一轮分类器的分类结果不断调整样本的权重,增加被误分类的样本权重,减小正确分类的样本权重。
    3.个体学习器权重
    Bagging:所有个体分类器权重相等;
    Boosting:每个个体分类器都有相应的权重,分类误差大的个体分类器会占有更大的权重。
    4.是否并行计算
    Bagging:各个个体分类器并行生成;
    Boosting:各个个体分类器串行生成,后一轮的个体分类器的生成需要前一轮的分类结果。
    二:结合策略的选择
    在这里插入图片描述
    其中,Stacking是学习法的典型代表,在这里,将个体学习器称为初级学习器,用于结合的学习器称为次级学习器或元学习器
    Stacking先从初始数据集训练初级学习器(一般为异质),然后生成一个新数据集用于训练次级学习器,在这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记被当作样例标记。
    Stacking算法如下:
    在这里插入图片描述
    在训练阶段,次级训练集是利用初级学习器产生的,若直接用初级学习器的训练集来产生次级训练集,则过拟合风险会比较大,因此,一般使用交叉验证或留一法得到次级训练集。
    在这里插入图片描述
    研究表明,将初级学习器的输出类概率作为次级学习器的输入属性,使用**多响应线性回归(MLR)**作为次级学习算法效果较好。

    参考文章:
    统计学习(周志华)
    Stacking详解

    展开全文
  • 这个过程涉及到用直方方法求最优分割点(与xgboost的预排序的区别)、leaf-wise(与xgboost的level-wise的区别)的两个改进。 拟合残差树的整体思路: <1>每个节点分裂前做出该节点各个特征的直方 <2>...
  • 思考:可以从下面几个方面来看你要选择哪个算法比较合适: 训练样本的数量 特征空间的维数 我是否期望问题是【线性可分离】的吗?(线性可分离就是指不同类问题在中用直线能完全分开) 特征是否是独立的 希望...
  • 国内机器学习课程经常会引用一篇名为“机器学习算法地图”的文章来说明机器学习领域的知识范畴,其原如下。 图片来源:https://blog.csdn.net/SIGAI_CSDN/article/details/80924985 本清晰明了地将机器学习/...
  • 我发现市面上关于机器学习算法工程师面试题目总结的不是特别全面,没有考虑到工作的实用性,所以将会结合自身工作经验,打算对每个机器学习算法工程师所需要的技能规整出相应的核心面试题,分享出来,如果大家有什么...
  • 整理下比较常用的机器学习算法的汇总比较,包括: 线性回归 逻辑回归 决策树 随机森林 支持向量机 朴素贝叶斯 KNN 算法 K-均值算法 提升方法(Boosting) GBDT 优化算法 卷积神经网络 鄙人 习惯于用思维导图 故 把...
  • 人人工工智智能能机机器器学学习习常常用用算算法法总总结结及及各各个个常常用用算算法法精精确确率率对对比比 这篇文章主要介绍了人工智能机器学习常用算法总结及各个常用算法精确率对比,需要的朋友可以 考下 本文...
  • 之前自己也断断续续看过一些机器学习算法,但是由于没有真正用来解决问题,每一次看都如蜻蜓点水。所以索性将其总结下来,总结过程中借鉴了许多其他博主的文章,在此深表感谢。 有这样一张总结了常见的算法的...
  • 1.线性分SVM面临的问题有时候本来数据的确是可分的,也就是说可以用 线性分类SVM的学习方法来求解,但是却因为混入了异常点,导致不能线性可分,比如下,本来数据是可以按下面的实线来做超平面分离的,可以由于一...
  • 机器学习算法工程师面试总结

    千次阅读 2017-12-07 20:39:54
    转自北邮人论坛 2017年即将过去,今年是忙碌的一年,...简单介绍一下,北邮本硕,要找的岗位主要是算法工程师(机器学习方向)。算法工程师找实习的时候,最终的结果是找到了四家:亚马逊、京东、滴滴、腾讯地图。找工
  • 经典二分类算法 sigmoid函数 从函数上可以看出,函数y=g(z)在z=0的时候取值为1/2,而随着z逐渐变小,函数值趋于0,z逐渐变大的同时函数值逐渐趋于1,而这正是一个概率的范围。所以我们定义线性回归的预测函数为Y=...
  • 1.说明机器学习算法监督学习与无监督学习的区别 2.说明监督学习中的分类,回归特点 分析: 当识别猫和狗时,利用特征值进行判断,当目标值是一个类别的时候,我们把这种目标值是一个类别的问题,称为分类。 目标...
  • 1.回顾感知机模型在感知机原理小结中,我们...对于这个分离的超平面,我们定义为wTx+b=0,如下。在超平面wTx+b=0上方的我们定义为y=1,在超平面wTx+b=0下方的我们定义为y=−1。可以看出满足这个条件的超平面并不止...
  • 机器学习的思维导图总结,快速复习查找知识点使用,基本以概念和重点为主,省略推导过程和大部分公式,或仅仅想简单了解机器学习的一些常用概念和算法的读者使用;
  • 的左半部分列出了常用的机器学习算法与它们之间的演化关系,分为有监督学习,无监督学习,强化学习 3 大类。右半部分列出了典型算法的总结比较,包括算法的核心点如类型,预测函数,求解的目标函数,求解算法。 ...
  • 概率模型是一类用来表达变量相关关系的概率模型。它以为表示工具,最常见的是用一个结点表示一个或一组随机变量,结点之间的变表是变量间的概率相关关系。根据边的性质不同,可以将概率模型分为两类:一类是...
  • 机器学习【KNN】(入门必备) KNN的全称是K Nearest Neighbors。顾名思义,k个最接近的邻居。可以用于分类,也可以用于回归。 如上所示。中心点为测试数据,其他五边形和五角星为训练数据。k=3,测试数据属于...
  • 决策树是基于人们总结经验的树状决策,是一种基本的分类和回归算法。 二、决策树的原理 1、 构造原理,如何构造出一个决策树,即选择哪些属性分别作为根节点、中间节点以及叶节点。 2、剪枝原理,即给决策树瘦身,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 681
精华内容 272
关键字:

机器学习算法总结图