Skip to content

Commit 22626eb

Browse files
feat: Start writing about gradient boosting
1 parent f86ad9a commit 22626eb

File tree

1 file changed

+59
-4
lines changed

1 file changed

+59
-4
lines changed

notes/machine_learning/miscellaneous.ipynb

Lines changed: 59 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -442,19 +442,23 @@
442442
"cell_type": "markdown",
443443
"metadata": {
444444
"tags": [
445-
"решающие_деревья"
445+
"решающие_деревья",
446+
"регуляризация"
446447
]
447448
},
448449
"source": [
449450
"## Прунинг решающих деревьев\n",
450451
"\n",
451452
"Обучению решающего дерева присущи следующие недостатки:\n",
452453
"* Чем дальше какой-либо узел от корня, тем меньше количество данных, на которых подбирается критерий разбиения в этом узле.\n",
453-
"* Структура обучаемого дерева нестабильна. Малое изменение обучающей выборки может привести к построению сильно отличающегося дерева (например, потому что могут измениться признак и его пороговое значение, по которым происходит какое-то более раннее разбиение).\n",
454+
"* Структура обучаемого дерева нестабильна. Малое изменение обучающей выборки может привести к построению сильно отличающегося дерева (например, потому что могут измениться признак и его пороговое значение, по которым происходит одно из ранних разбиений).\n",
454455
"\n",
455-
"Две этих особенности приводят к тому, что решающее дерево, обученное каким-либо жадным алгоритмом наподобие CART, скорее всего, окажется переобученным. Чтобы сделать дерево менее переобученным, его подрезают, выкидывая часть узлов большой глубины. Соответствующие техники называют прунингом.\n",
456+
"Две этих особенности приводят к тому, что решающее дерево, обученное каким-либо жадным алгоритмом наподобие CART, скорее всего, окажется переобученным. Чтобы сделать дерево менее переобученным, можно:\n",
457+
"* заранее ограничить его глубину, количество листьев или минимальное количество объектов обучающей выборки, которые должны приходить в лист;\n",
458+
"* добавить в критерий оценки разбиения штраф за рост сложности дерева;\n",
459+
"* после обучения выкинуть часть узлов большой глубины.\n",
456460
"\n",
457-
"Существует два основных вида прунинга:\n",
461+
"Последний вариант можно сравнить с подрезкой дерева, поэтому соответствующие техники называют прунингом (от англ. pruning). Существует два основных вида прунинга:\n",
458462
"* reduced error pruning;\n",
459463
"* cost-complexity pruning.\n",
460464
"\n",
@@ -495,6 +499,57 @@
495499
"Как правило, вышеописанная особенность не заметна на практике, что и объясняет, почему разбираемое заблуждение смогло укорениться. Но на соревнованиях по машинному обучению эту особенность иногда используют, чтобы внести больше разнообразия в ансамбли моделей."
496500
]
497501
},
502+
{
503+
"cell_type": "markdown",
504+
"metadata": {
505+
"tags": [
506+
"решающие_деревья"
507+
]
508+
},
509+
"source": [
510+
"## Градиентный бустинг\n",
511+
"\n",
512+
"#### Ключевая идея\n",
513+
"\n",
514+
"Из [дилеммы смещения и разброса](__home_url__/notes/Дилемма смещения и разброса) известно, что ошибка модели машинного обучения раскладывается на смещение, разброс и шум в данных. Если есть базовая модель, у которой низкое смещение или низкий разброс, то композиция таких базовых моделей может, сохранив низкой одну из составляющих, получить низкие значения и у другой составляющей:\n",
515+
"* при низком смещении можно сделать элементы композиции как можно более независимыми друг от друга, чтобы сократился разброс их среднего — так работает случайный лес;\n",
516+
"* при низком разбросе можно последовательно уменьшать смещение, за счёт отрицательной корреляции и/или усреднения по относительно независимым моделям сохраняя низкий разброс — так работает бустинг.\n",
517+
"\n",
518+
"Градиентный бустинг является частным случаем бустинга, где каждый новый элемент композиции обучается делать предсказания, приближающие антиградиент функции потерь по предсказанию совокупности предыдущих моделей (впрочем, ниже будет показано, что вместо антиградиента можно брать его аналог второго порядка).\n",
519+
"\n",
520+
"В качестве модели с низким разбросом для градиентного бустинга обычно берут неглубокие решающие деревья. Также в различных программных реализациях на эти деревья могут быть наложены дополнительные регуляризационные ограничения, сокращающие разброс: например, разбиение по одному и тому же признаку во всех узлах одного уровня. Впрочем, можно встретить и градиентный бустинг над линейными моделями, однако из-за своей аддитивной природы он и сам является линейной моделью.\n",
521+
"\n",
522+
"#### Функциональная форма композиции\n",
523+
"\n",
524+
"Пусть $b_t: \\mathbb{R}^n \\to \\mathbb{R}$ — $t$-я по счёту базовая модель, по вектору из $n$ признаков объекта возвращающая некое число. Для задачи регрессии оно будет предсказанием целевой переменной, а для задачи бинарной классификации оно будет некой степенью уверенности в принадлежности к положительному классу. Тогда определим предсказание градиентного бустинга на $i$-м объекте $x_i$ после $t$-й итерации так:\n",
525+
"$$\\hat{y}_i^{(t)} = f\\left(\\sum_{k=1}^t c_k b_k(x_i)\\right),$$\n",
526+
"где $c_k \\in \\mathbb{R}$ определяются такими гиперпараметрами, как темп обучения и его расписание, а $f: \\mathbb{R} \\to \\mathbb{R}$ — функция активации. Для регрессии $f$ обычно берут тождественной функцией, а для бинарной классификации это может быть сигмоида, отображающая степень уверенности в «вероятность» принадлежности объекта к положительному классу.\n",
527+
"\n",
528+
"Кстати, тут стоит обратить внимание на то, что в задаче классификации градиентный бустинг над деревьями использует регрессионные деревья, а не классификационные. Вся связь с исходной классификационной задачей осуществляется только через функцию активации $f$.\n",
529+
"\n",
530+
"#### Обучение\n",
531+
"\n",
532+
"Пусть $L: \\mathbb{R}^2 \\to \\mathbb{R}$ — дифференцируемая (а лучше дважды дифференцируемая) функция потерь, а $l$ — количество объектов в обучающей выборке. Тогда первая базовая модель $b_1$ обучается решать следующую задачу:\n",
533+
"$$\\min_{b_1} \\sum_{i=1}^l L(y_i, \\hat{y}_i^{(1)}).$$\n",
534+
"В случае, когда $b_1$ — решающее дерево (а далее только такой случай и будет рассматриваться), это означает, что в каждом узле признак для разбиения и его пороговое значение подбираются исходя из сокращения минимизируемой величины для пары потенциальных узлов-потомков относительно текущего узла.\n",
535+
"\n",
536+
"Для любого $t \\ge 2$ базовая модель $b_t$ обучается только после того, как были обучены все модели $b_k$, $1 \\le k \\le t-1$. Чтобы понять, как для $b_t$ оцениваются разбиения в узлах, введём новое обозначение:\n",
537+
"$$g_i^{(t)} = \\left. \\frac{\\partial L(y_i, \\hat{y}_i^{(t)})}{\\partial b_t(x_i)} \\right|_{\\hat{y}_i^{(t)} = \\hat{y}_i^{(t-1)}} = \\left. \\frac{\\partial L\\left(y_i, f\\left(\\sum_{k=1}^{t-1} (c_k b_k(x_i)) + c_t b_t(x_i)\\right)\\right)}{\\partial b_t(x_i)} \\right|_{b_t(x_i) = 0}.$$\n",
538+
"Скаляр $g_i^{(t)}$ можно интерпретировать как частную производную эмпирического риска $\\sum_{j=1}^l L(y_j, \\hat{y}_j^{(t)})$ по предсказанию модели $b_t$ на $i$-м объекте. Тем самым вектор длины $l$, у которого $i$-я компонента равна $g_i^{(t)}$ для всех $1 \\le i \\le l$, является градиентом эмпирического риска по предсказаниям на объектах.\n",
539+
"\n",
540+
"Эвристика градиентного бустинга, благодаря которой он и был назван градиентным, заключается в том, что предсказания $b_t(x_i)$ должны быть оценками $-g_i^{(t)}$. В случае, когда $L$ — это MSE, данная эвристика имеет понятную трактовку, ведь с точностью до константы $g_i^{(t)}$ является ошибкой композиции из $t-1$ предыдущей модели на $i$-м объекте. Но в общем случае это не более чем эвристика, ведь модель $b_t$ лишь пытается предсказать антиградиент (и, скорее всего, делает это грубо, раз это неглубокое дерево).\n",
541+
"\n",
542+
"При обучении $b_t$ для оценки разбиения в узле можно использовать как MSE, так и косинусную меру близости между вектором предсказаний, составленным из $b_t(x_i)$, и вектором целевых переменных, составленным из $-g_i^{(t)}$. Второй вариант побуждает обучаться только на направление, но не на масштаб.\n",
543+
"\n",
544+
"#### Методы второго порядка\n",
545+
"\n",
546+
"#### Регуляризация\n",
547+
"\n",
548+
"#### Контроль разброса\n",
549+
"\n",
550+
"(Заметка находится в работе и будет дописана)"
551+
]
552+
},
498553
{
499554
"cell_type": "markdown",
500555
"metadata": {

0 commit comments

Comments
 (0)