XGBoostについての備忘録
XGBoost の公式ドキュメントを見るたびに、毎回「どのような式変形でこの形になるのだっけ」となり、思い出すのに時間がかかる箇所があったので、備忘録としてまとめようと思います。
式変形の箇所
「Tree Boosting」という見出しの中の「Additive Training」の部分です。
Additive Training
... We write the prediction value at step as . Then we have
It remains to ask: which tree do we want at each step? A natural thing is to add the one that optimizes our objective.
... So in the general case, we take the Taylor expansion of the loss function up to the second order:
where the and are defined as
この最後のテーラー展開の仕方を思い出すときに時間が掛かってしまいます。
式変形の詳細
では、上記の変形がどのように行われているか詳細を見ていきましょう。
まず、テーラー展開そのものについて復習です。テーラー展開は関数 を以下のような無限和で表現したものを言うのでした。
なお、このとき点 での情報を用いているため、「 まわりでテーラー展開する」と言います。
また、この の を とし、 まわりで展開することで、以下のように別の表現をすることができます。
XGBoost のドキュメントに載っている式変形では、こちらの表現が使われています。具体的には、前述の引用文にある (1) 式
に対して、テーラー展開の ・ ・ を以下に置き換えて展開しています。
- を
- を
- を
すなわち、以下のように関数 を表しています。
なお、
です。
そして、テーラー展開後の2次の項までで表される式を の近似式とし、 を 、 を と置くと、関数 は次のように表されます。
この近似式を (1) 式に入れると、
となり、(2) 式と同じになります。このようにして展開されています。
補足
上記では (1) 式
に対して、テーラー展開 の ・ ・ を以下に置き換えて展開しました。
- を
- を
- を
しかし、XGBoost のドキュメントを読むとステップ t においては既に の値が定まっており、定数として扱われています。
そのため、変数ではないのに の置き換え先として を使って良いのかと思うかもしれませんが、論理としては、一旦 を変数として扱いテーラー展開しても、入出力の関係を表す関数としては変わりがないため、このようにしても問題ないのだと思われます。
また、これと同じように、ステップ t において は値が定まっていない変数ですが、一旦定数として見て の置き換え先にしたとしても、入出力の関係を表す関数として変わりがないため問題ないのだと思われます。
参考記事
- テーラー展開の説明:
- テーラー展開を用いた式変形の大まかな流れ: