[ЗАСТАВКА] В этом видео мы
поговорим о том, как использовать обученные
модели для отбора признаков, для оценивания их информативности.
Начнем с линейных моделей.
Линейная модель вычисляет взвешенную сумму значений признаков на объекте.
При этом мы возвращаем саму взвешенную сумму,
если это задача регрессии, и знак этой суммы, если это задача классификации.
Если признаки масштабированы, если у них одинаковый масштаб, то веса при признаках
можно интерпретировать как информативности: чем больше по модулю вес
при j-том признаке, тем больший вклад j-тый признак вносит в ответ модели.
При этом если признаки не масштабированы, то так использовать веса уже нельзя.
Например, если есть два признака — первый и второй, и при этом второй в тысячу раз
больше по масштабу, чем первый, то у первого признака может быть
очень большой вес только потому, что нужно выровнять масштабы,
что нужно сделать первый признак таким же по масштабу, как и второй.
Если есть желание занулить как можно больше весов,
чтобы линейная модель учитывала только те признаки, которые наиболее важны для нее,
то можно использовать L1-регуляризацию.
Чем больше будет коэффициент при L1-регуляризаторе, тем больше весов будет
занулено, тем меньше признаков будет использовать линейная модель.
Еще один вид моделей, которые мы обсуждали в предыдущем курсе — это решающие деревья.
Напомню, что решающие деревья мы строим «жадно» — растим их от корня к листьям,
и при этом на каждом этапе мы пытаемся разбить вершину на две.
Чтобы разбить вершину, нужно выбрать признак, по которому мы будем разбивать,
и порог, с которым мы будем сравнивать значение данного признака.
Если значение признака меньше этого порога, то отправляем объект в
левое поддерево, если больше этого порога, то — в правое поддерево.
Выбор признака и порога осуществляется по вот
такому критерию Q, который вычисляет взвешенную сумму критериев информативности
в обеих дочерних вершинах — левой и правой.
Чем меньше данная взвешенная сумма,
тем больше j-тый признак и порог t подходят для разбиения.
Мы рассматривали самые разные варианты критериев информативности.
Например, в регрессии это может быть среднеквадратичная ошибка,
в классификации это может быть критерий Джини или энтропийный критерий.
Обратим внимание, что если мы в данной вершине сделали разбиение по признаку j,
то чем сильнее уменьшили значение критерия информативности,
тем лучше данный признак, тем важнее он оказался при построении дерева.
Таким образом, можем оценивать важность признака на основе того,
насколько сильно он смог уменьшить значение критерия информативности.
Допустим, в вершине m мы произвели разбиение по j-тому признаку.
Тогда вычислим в ней уменьшение критерия информативности по вот такой формуле:
разность его значения в вершине Xm и в дочерних вершинах Xl и Xr.
Далее просуммируем данное уменьшение по всем вершинам дерева,
в которых разбиение делалось по j-тому признаку.
Обозначим эту сумму как Rj, и чем больше Rj,
тем важнее данный признак был при построении дерева.
Сами по себе решающие деревья не очень полезны,
но они очень активно используются при построении композиций,
в частности, в случайных лесах и в градиентном бустинге над деревьями.
В данных композициях измерить важность признака можно аналогично.
Просто просуммируем уменьшение критерия информативности Rj по всем деревьям
композиции, и чем больше данная сумма, тем важнее j-тый признак для композиции.
То есть, по сути, мы оцениваем признаки с помощью того,
насколько сильно они смогли уменьшить значение критерия информативности в
совокупности по всем деревьям композиции.
Для случайного леса можно предложить еще один интересный способ
оценивания информативности признаков.
Вспомним, что в случайном лесе каждое базовое дерево bn
обучается по подмножеству объектов обучающей выборки — по подвыборке.
Таким образом, есть объекты, на которых дерево не обучалось, и, по сути,
набор этих объектов является валидационной выборкой для n-го дерева.
Такая выборка называется out-of-bag.
Итак, метод заключается в следующем: возьмем n-ое базовое дерево bn.
Оценим ошибку данного дерева Qn по out-of-bag-выборке, то есть
по тем объектам, которые не использовались для обучения, и запомним ее.
После этого перемешаем значения j-того признака, то есть возьмем матрицу
«объекты-признаки», возьмем j-тый столбец в этой матрице, то есть все значения
j-того признака, и случайным образом переставим значения в этом столбце,
то есть превратим j-тый признак в абсолютно бесполезный шумовой признак.
После этого применим то же самое дерево bn к данной выборке с перемешанным j-тым
признаком и оценим качество дерева на этой выборке — на out-of-bag-подвыборке.
Обозначим ошибку на out-of-bag-подвыборке через Qn'.
По сути, данная ошибка Qn' обозначает то...
она будет тем больше, чем сильнее дерево использует j-тый признак.
Если j-тый признак активно используется в дереве, то понятно,
что ошибка сильно уменьшится, поскольку мы испортили значение данного признака.
Если же данный признак совершенно не важен для дерева и не используется в нем,
то ошибка практически не изменится.
Таким образом информативность j-того признака будем оценивать как разность Qn',
то есть ошибки на испорченной выборке, и Qn, то есть ошибки на исходной выборке,
где j-тый признак имеет те значения, которые должен иметь.
Чем больше данная разность, тем важнее признак для n-го дерева.
Дальше мы усредним эти информативности по всем деревьям случайного леса,
и, естественно, чем больше будет данное среднее значение,
тем информативнее признак.
На практике оказывается, что информативности,
вычисленные вот таким образом, и информативности, вычисленные как
сумма уменьшения критерия информативности, которые мы обсуждали раньше,
оказываются очень связаны между собой, они очень похожи.
Итак, мы обсудили, как отбирать признаки с помощью разных
моделей: с помощью линейных — в этом случае нужно использовать веса при
масштабированных признаках, с помощью деревьев — в этом случае можно
использовать уменьшение критерия информативности, и этот же подход работает
в случайных лесах и в градиентном бустинге над деревьями.
И также обсудили один подход для случайных лесов,
который использует перемешивание значений признака.
В следующем видео мы перейдем от отбора признаков к более общей
задаче — к понижению размерности — и подробно обсудим эту постановку.