xgboostアルゴリズムの概要

 

 

 

xgboostは、ブログは非常に明確に書かれていたが、今のサイトには、前に転載、失敗した、あなたはブーストツリーでXGBoostを検索することができます。

これに参照すると、彼は自分自身の要約を行いました。

xgboostは後継アルゴリズムGBDTですが、また、ツリーアルゴリズムカートコレクションの使用を後押し。

まず、基本学習:分類と回帰ツリー(CART) 

ツリー・カートは、回帰を実行することができる、分類が、両方の場合において、異なる方法の分割変数選択を使用することができます。

、変数の回帰を実行し、最適なカットポイントを選択セグメンテーションを標準として使用されるCART

ここで、C 及びC 2は、すなわち、次式の可変セグメントの平均値を満たします

 

次のように最適なカットと可変カットポイントを決定するために暴力を用いてCARTトラバーサルは、特定のアルゴリズムです。

分類と同様のアルゴリズムCART分類木は、平均値を計算することができない、CART分類ツリーはジニ指数を計算するために使用され、すべての機能およびそれらの可能なカット点を横断することによって、最適なカットポイントとして最小の特徴および特性のジニ係数を選択して最適なカットポイント、およびCART分類木まで、繰り返し呼び出さ。

二、ツリーセット

単一のツリーが単純すぎる場合は効果的に予測し、したがって、より強力なモデルは、分類ツリーアルゴリズムを統合された木のアンサンブル、呼び出されません。ブースト統合場合、加算器のすなわち積分は、のように書くことができます。

前記関数fのそれぞれは、内部空間の関数であり、すべての回帰ツリーのセットに対応します。

次のように目的関数は以下のとおりです。

最初の部分は、誤差関数、正則化項の後半です。

 第三に、モデル学習  添加トレーニング 

因为现在我们的参数可以认为是在一个函数空间里面,我们不能采用传统的如SGD之类的算法来学习我们的模型,因此我们会采用一种叫做additive training的方式。。每一次保留原来的模型不变,加入一个新的函数ff到我们的模型中。

现在还剩下一个问题,我们如何选择每一轮加入什么f呢?答案是非常直接的,选取一个f来使得我们的目标函数尽量最大地降低

这个公式可能有些过于抽象,我们可以考虑当ll是平方误差的情况。这个时候我们的目标可以被写成下面这样的二次函数

 

 更加一般的,对于不是平方误差的情况,我们会采用如下的泰勒展开近似来定义一个近似的目标函数,方便我们进行这一步的计算

当我们把常数项移除之后,我们会发现如下一个比较统一的目标函数。这一个目标函数有一个非常明显的特点,它只依赖于每个数据点的在误差函数上的一阶导数和二阶导数

四、树的复杂度 

到目前为止我们讨论了目标函数中训练误差的部分。接下来我们讨论如何定义树的复杂度。我们先对于f的定义做一下细化,把树拆分成结构部分q和叶子权重部分w。下图是一个具体的例子。结构函数q把输入映射到叶子的索引号上面去,而w给定了每个索引号对应的叶子分数是什么

当我们给定了如上定义之后,我们可以定义一棵树的复杂度如下。这个复杂度包含了一棵树里面节点的个数,以及每个树叶子节点上面输出分数的L2模平方。当然这不是唯一的一种定义方式,不过这一定义方式学习出的树效果一般都比较不错。

五、关键步骤 

这是xgboost最巧妙处理的部分,在这种新的定义下,我们可以把目标函数进行如下改写,其中被定义为每个叶子上面样本集合

 这样目标函数可以如下变化,使用步骤四中的方式来表示误差函数和复杂度,如下

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

这是一个关于的二次函数,可以知道最值如下:

六、打分函数计算举例

 

おすすめ

転載: www.cnblogs.com/bnuvincent/p/11223200.html