Машинное обучение вики
Advertisement

Как только вы называете признаки фичами, знайте что все многолетние труды российских ученых в области машинного обучения прошли зря. © К. В. Воронцов

Пусть есть куча признаков: , их очень много, хотим уменьшить их число. Можем применять два метода — отбор признаков (selection): , где — набор индексов наиболее оптимальных признаков. Второй метод — выделение признаков (extraction): , где — новые признаки полученные на основе старых. В обоих случаях считаем . Далее про первый метод.

Релевантность[]

Пусть далее — набор признаков, - целевая переменная. , ( — фиксировали). Тогда признак является:

  • Сильно релевантным: если , т.е. отсутствие признака изменяет распределение целевой переменной.
  • Слабо релевантным: если , но , т.е. он не является сильно релевантным, но если из повыкидывать еще каких нибудь признаков, то наличие нашего признака изменяет распределение целевой переменной (например сам по себе признак важный но в наборе находится еще один или несколько, сильно с ним коррелирующих).
  • Нерелевантным: если . т.е. он не является ни сильно ни слабо релевантным, или что то же самое, для любого несодержащего его подмножества признаков, его добавление к такому подмножеству не влияет на распределение целевой переменной.

Отбор признаков заключается в том чтобы отбросить все нерелевантные и некоторые слабо релевантные признаки, так чтобы в новом множестве все признаки были сильно релевантными (в идеале, на практике это очень сложно).

Алгоритм отбора по важности признаков[]

Пусть — важность (importance) -го признака, — метрика точности (score) получаемая при обучении и валидации на наборе признаков . Отсортируем признаки по величине важности: . Теперь можно отбирать признаки следующим образом:

  • , где

Первый способ выбирает ровно m признаков, второй оптимизирует число признаков.

Для реализации такого алгоритма осталось определить что будет являться важностью признака. Обычно выбирают следующие метрики важности:

Все метрики вынесены в отдельную статью и доступны по ссылкам.

Продвинутые алгоритмы[]

У вышеописанного метода есть проблема того что два слабо релевантных признака которые сильно коррелируют друг с другом оба имеют высокую важность и могут попасть в подмножество отобранных признаков, мы же хотим немного признаков которые по максимуму отличаются разнообразием. Для чтобы обойти эту проблему используются следующие методы:

Они также вынесены в отдельную статью и также доступны по ссылкам.

Необходимость[]

Собственно, зачем все это нужно:

  • Увеличить точность классификации (некоторые признаки только ухудшают ситуацию).
  • Убрать похожие признаки (иначе они работают как один признак с большим весом).
  • Увеличить скорость обучения/прогнозирования.
  • Отобрать только реально необходимые признаки для сбора данных в дальнейшем (уменьшает стоимость сбора данных, увеличивает скорость набора объектов для дальнейшего обучения).
  • Сделать классификатор и признаки более интерпретируемыми (чтобы мамин датасаентист посмотрел на графички и сразу понял в чем интуиция).

Когда это не нужно:

  • Если метод обучения основан на деревьях, так как они отбирают признаки непосредственно при обучении (деревья, рандомный лес, бустинг и т.д.).
  • Если метод обучения использует L1 регуляризацию, так как она также заточена на отбор признаков и минимизацию их количества.
  • Если признаки непоказательные и их очень много (например пиксели полноразмерного изображения) а обучаемся например на нейросети, то отбор признаков не имеет особого смысла, и следует перейти к выделению признаков (собственно им и занимается нейросеть),
Advertisement