Skip to content

Commit 6e5ec4d

Browse files
feat: Finalize the note on gradient boosting
1 parent f69bec6 commit 6e5ec4d

File tree

1 file changed

+30
-10
lines changed

1 file changed

+30
-10
lines changed

notes/machine_learning/miscellaneous.ipynb

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,8 @@
449449
"source": [
450450
"## Прунинг решающих деревьев\n",
451451
"\n",
452+
"#### Введение\n",
453+
"\n",
452454
"Обучению решающего дерева присущи следующие недостатки:\n",
453455
"* Чем дальше какой-либо узел от корня, тем меньше количество данных, на которых подбирается критерий разбиения в этом узле.\n",
454456
"* Структура обучаемого дерева нестабильна. Малое изменение обучающей выборки может привести к построению сильно отличающегося дерева (например, потому что могут измениться признак и его пороговое значение, по которым происходит одно из ранних разбиений).\n",
@@ -458,17 +460,21 @@
458460
"* добавить в критерий оценки разбиения штраф за рост сложности дерева;\n",
459461
"* после обучения выкинуть часть узлов большой глубины.\n",
460462
"\n",
461-
"Последний вариант можно сравнить с подрезкой дерева, поэтому соответствующие техники называют прунингом (от англ. pruning). Существует два основных вида прунинга:\n",
462-
"* reduced error pruning;\n",
463-
"* cost-complexity pruning.\n",
463+
"Последний вариант можно сравнить с подрезкой дерева, поэтому соответствующие техники называют прунингом (от англ. pruning). Чтобы отличить их от второго варианта, иногда их также называют пост-прунингом (а учёт штрафа за рост сложности называют пре-прунингом).\n",
464+
"\n",
465+
"По сравнению с пре-прунингом вариант с прунингом требует большего количества вычислений, ведь сначала нужно построить более сложное дерево, а потом как-то его обрезать. Однако прунинг даёт более высокое качество, потому что пре-прунинг недальновиден и не учитывает, что слабое разбиение может быть пререквизитом к сильному разбиению. Наглядный пример такой ситуации — проблема XOR.\n",
464466
"\n",
465-
"Остановимся на них подробнее.\n",
467+
"Далее разбираются основные вида прунинга.\n",
466468
"\n",
467-
"Reduced error pruning так же, как и, скажем, [ранняя остановка](__home_url__/notes/Ранняя остановка), требует наличия дополнительной валидационной выборки. Для каждой пары листьев, имеющих общего прямого родителя, на валидационной выборке оценивается качество дерева, где этих листьев нет (и, стало быть, зато листом является их родитель). Если качество на валидационной выборке не ниже, эти листья убираются. Процесс продолжается до тех пор, пока больше не останется соседних листьев, которые было бы можно объединить.\n",
469+
"#### Прунинг по уменьшению ошибки (reduced error pruning) \n",
468470
"\n",
469-
"Reduced error pruning считается методом, слишком сильно обрезающим дерево. Так, в частности, если в какой-либо узел не придёт ни одного объекта из валидационной выборки, этот узёл и всё, что идёт после него, будут удалены.\n",
471+
"Прунинг по уменьшению ошибки так же, как и, скажем, [ранняя остановка](__home_url__/notes/Ранняя остановка), требует наличия дополнительной валидационной выборки. Для каждой пары листьев, имеющих общего прямого родителя, на валидационной выборке оценивается качество дерева, где этих листьев нет (и, стало быть, зато листом является их родитель). Если качество на валидационной выборке не ниже, эти листья убираются. Процесс продолжается до тех пор, пока больше не останется соседних листьев, которые было бы можно объединить.\n",
470472
"\n",
471-
"А вот в cost-complexity pruning есть специальный гиперпараметр $\\alpha$, регулирующий агрессивность обрезки дерева.\n",
473+
"Прунинг по уменьшению ошибки считается методом, слишком сильно обрезающим дерево. Так, в частности, если в какой-либо узел не придёт ни одного объекта из валидационной выборки, этот узёл и всё, что идёт после него, будут удалены.\n",
474+
"\n",
475+
"#### Прунинг по размену качества на сложность (cost-complexity pruning)\n",
476+
"\n",
477+
"У прунинга по размену качества на сложность есть специальный гиперпараметр $\\alpha$, регулирующий агрессивность обрезки дерева.\n",
472478
"\n",
473479
"Задача для этого прунинга ставится в виде минимизации регуляризованной ошибки на обучающем множестве, а именно:\n",
474480
"$$E_{\\mathrm{train}}(T) + \\alpha \\, s(T)\\to \\min_T,$$\n",
@@ -566,11 +572,25 @@
566572
"\n",
567573
"По такому критерию качества можно построить дерево $b_t$, не задумываясь о том, какую целевую переменную оно предсказывает и как интерпретируются его предсказания. Единственное, что про такое дерево известно, — что оно пытается воспроизвести шаг в методе Ньютона.\n",
568574
"\n",
569-
"#### Регуляризация\n",
570-
"\n",
571575
"#### Контроль разброса\n",
572576
"\n",
573-
"(Заметка находится в работе и будет дописана)"
577+
"По построению смещение должно уменьшаться с ростом $t$. Но не вырастет ли при этом разброс?\n",
578+
"\n",
579+
"На нестрогом уровне можно сказать, что если у одной базовой модели разброс равен $v$, то у композиции из $t$ таких моделей он должен быть меньше $vt$. Вспомним формулу для дисперсии суммы:\n",
580+
"$$\\mathrm{Var}[X+Y] = \\mathrm{Var}[X] + \\mathrm{Var}[Y] + 2\\mathrm{Cov}(X, Y).$$\n",
581+
"Ожидается, что у каждого следующего дерева ковариация с композицией предыдущих деревьев будет отрицательная. Особенно убедительно это звучит для регрессии с MSE в качестве функции потерь, где новые деревья обучаются предсказывать ошибку композиции предыдущих.\n",
582+
"\n",
583+
"Однако есть и дополнительные приёмы, уменьшающие разброс. Например, можно привнести в градиентный бустинг идеи из случайного леса. Вместо одной базовой модели с коэффициентом $c_k$ при ней можно последовательно обучить $\\nu$ базовых моделей с коэффициентом $c_k / \\nu$ при каждой из них, а ещё таких, что для каждой из них доступно лишь случайное подмножество признаков.\n",
584+
"\n",
585+
"Наконец, есть и аналог $L_2$-регуляризации. Ранее эмпирический риск был выражен через обучаемые параметры $w_j$, которые можно назвать «весами» модели $b_t$. Однако в отличие от линейных моделей или нейронных сетей уменьшать их $L_2$-норму нужно не ради сокращения способности к переподгонке, а ради того, чтобы вклад каждой отдельной базовой модели был бы по возможности меньше.\n",
586+
"\n",
587+
"Рассмотрим регуляризованный эмпирический риск:\n",
588+
"$$\\sum_{i=1}^l L(y_i, \\hat{y}_i^{(t)})+ \\sum_{k=1}^t \\left( \\lambda \\sum_{j=1}^{m_k} w_j^2 + \\gamma m_k \\right),$$\n",
589+
"где $m_k$ — количество листьев в дереве $b_k$, $\\lambda$ — гиперпараметр, отвечающий за уменьшение $L_2$-норм «весов», а $\\gamma$ — гиперпараметр, отвечающий за уменьшение количества листьев в деревьях.\n",
590+
"\n",
591+
"Если подставить регуляризованный эмпирический риск в выкладки, которые делались ранее, то критерий оценки качества разбиения примет вид:\n",
592+
"$$\\frac{1}{2}\\left( \\frac{\\left(\\sum_{i \\in I} g_i^{(t)}\\right)^2}{\\sum_{i \\in I} h_i^{(t)} + \\lambda} - \\frac{\\left(\\sum_{i \\in I_\\mathrm{left}} g_i^{(t)}\\right)^2}{\\sum_{i \\in I_\\mathrm{left}} h_i^{(t)} + \\lambda} - \\frac{\\left(\\sum_{i \\in I_\\mathrm{right}} g_i^{(t)}\\right)^2}{\\sum_{i \\in I_\\mathrm{right}} h_i^{(t)} + \\lambda} \\right) - \\gamma.$$\n",
593+
"То, что $\\lambda$ увеличивает знаменатель, согласуется с первоначальной целью уменьшить значения $w_j$."
574594
]
575595
},
576596
{

0 commit comments

Comments
 (0)