Почему работает особенность инженерии?


20

Недавно я узнал, что одним из способов найти лучшее решение проблем ОД является создание функций. Это можно сделать, например, суммируя две особенности.

Например, мы обладаем двумя функциями «атака» и «защита» какого-то героя. Затем мы создаем дополнительную функцию под названием «общее», которая представляет собой сумму «атаки» и «защиты». Теперь, что мне кажется странным, это то, что даже жесткие «атаки» и «защита» почти идеально соотносятся с «итогом», мы все равно получаем полезную информацию.

Что за математика стоит за этим? Или я не так рассуждаю?

Кроме того, не является ли это проблемой для классификаторов, таких как kNN, что «общее» всегда будет больше, чем «атака» или «защита»? Таким образом, даже после стандартизации у нас будут объекты, содержащие значения из разных диапазонов?


Практика суммирования двух признаков, безусловно, не представляет собой «проектирование функций» в целом.
xji

Ответы:


21

Вы задаете вопрос названию, и содержание кажется мне не соответствующим. Если вы используете линейную модель, добавьте общую функцию в дополнение к атаке, и защита ухудшит ситуацию.

Сначала я бы ответил, почему вообще работают инженерные работы.

Одна картинка стоит тысячи слов. Эта фигура может рассказать вам некоторые идеи о разработке функций и почему она работает ( источник изображения ):

введите описание изображения здесь

  • Данные в декартовых координатах более сложны, и относительно сложно написать правило / построить модель для классификации двух типов.

  • Данные в полярных координатах очень просты: мы можем написать простое правило для чтобы классифицировать два типа.р

Это говорит нам о том, что представление данных имеет большое значение. В определенном пространстве гораздо проще выполнять определенные задачи, чем в других.

Здесь я отвечаю на вопрос, упомянутый в вашем примере (всего по атаке и защите)

Фактически, разработка функций, упомянутая в этом примере суммы атак и защиты, не будет работать хорошо для многих моделей, таких как линейная модель, и вызовет некоторые проблемы. См. Мультиколлинеарность . С другой стороны, такая разработка функций может работать на других моделях, таких как дерево решений / случайный лес. Смотрите @ Имран ответ для деталей.

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


Сумма не должна быть коллинеарной с добавками. Смотрите, например, мой ответ.
Кодиолог

15

Тип используемой нами модели может быть не очень эффективным при изучении определенных комбинаций существующих функций.

ad0a+d<01 если a+d0,

Поскольку деревья решений могут разбиваться только по осям отдельных объектов, наша модель в итоге попытается построить лестницу, чтобы соответствовать линии, которая будет выглядеть примерно так:

введите описание изображения здесь

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

Однако, если мы добавим a+dв качестве функции, проблема становится тривиальной для дерева решений. Он может игнорировать индивидуальность aи dособенности и решить проблему одним a+d<0пнем решения.

введите описание изображения здесь

Однако, если бы вы использовали линейную регрессию, то ваша модель была бы вполне способна к обучению a+d без добавления дополнительной функции.

Таким образом, некоторые дополнительные функции могут помочь в зависимости от типа используемой модели, и вы должны быть осторожны, чтобы учитывать как данные, так и модель при разработке функций.


1
Это именно то, что нужно. Выбор характеристик и выбор модели должны рассматриваться вместе. Распространенным подводным камнем является попытка рассуждать о выборе функций без учета типа используемой модели.
Имран

1
Например, если вы попробовали то же самое с линейной регрессией, то aи этого dбудет достаточно, и добавление a+dв качестве функции не будет иметь значения.
Имран

Я обновил свой ответ, чтобы сделать это более явным.
Имран

1
Кроме того, разделение поперек диагональной линии требует одного разделения. Лестница, которую вы нарисовали, «использует» семь шпагатов.
накопление

3

Построенная особенность как total can still be predictively useful if it isn't strongly correlated with other features in the same model. total in particular need not be strongly correlated with attack or defense. For example, if attack is (8, 0, 4) and defense is (1, 9, 6), then the correlation of total with attack is 0 and the correlation of total with defense is 17,

Кроме того, не является ли это проблемой для классификаторов, таких как kNN, что «общее» всегда будет больше, чем «атака» или «защита»? Таким образом, даже после стандартизации у нас будут объекты, содержащие значения из разных диапазонов?

Если вы хотите стандартизировать свои предикторы, вы должны сделать это после того, как они все были построены.


1
это правда? Конечно, в простой линейной модели это не так: матрица, [attack, defense, total]конечно, имеет ранг 2. Я мог бы представить себе что-то вроде штрафной линейной модели, которая может иметь значение, но она основана на интуиции, а не на полной ее проработке. Можете ли вы объяснить, почему, если attackи defenseне сильно связаны с total(что происходит, когда attackи defenseсильно отрицательно коррелируют), почему totalможет быть полезным?
Клифф А.Б.

1
@CliffAB Оглядываясь назад, я был немного бойким здесь. Я был прав, говоря, что построенная функция может быть полезна, когда она не сильно коррелирует с другими предикторами, и что totalнет необходимости в сильной корреляции с attackили defense, но вы никогда не будете использовать два предиктора и их сумму в одной модели из-за линейной зависимость, с подразумевает сильную корреляцию между некоторыми двумя из трех.
Кодиолог

1

Чтобы дать общий ответ, разработка функций в большинстве случаев заключается в извлечении значимых функций из ваших данных, поэтому, если вы дадите больше информации своей модели, она, очевидно, должна вести себя лучше. Скажите, что ваши данные состоят из адресов электронной почты в форме «name.surname@domain.country-code». Если бы вы использовали их как есть в своей модели, каждый человек будет характеризоваться уникальным электронным письмом, так что это мало что нам скажет. Это говорит нам только о том, что одно электронное письмо может принадлежать другому человеку, а не другому. С помощью функциональной инженерии, с таких адресов вы можете извлечь информацию о возможном поле (имя), происхождении семьи и этнической принадлежности (фамилия), национальности (домен) и многом другом - это дает вам довольно много информации, не так ли?


1

Что вы пытаетесь достичь с помощью общего количества функций ? Если вы просто сравниваете героев, атака и защита могут быть более полезными. Если бы вы сочли полезным тип сборки (насколько атакующий или оборонительный), возможно, атака / защита была бы более полезной. Или, может быть, MyAttack - YourDefense более полезен.

Это действительно зависит от вашей цели и сводится к тому, что вы вкладываете дополнительные знания в проблему, чтобы получить лучшие ответы. Вы , возможно, слышали люди бросали вокруг входа и квадрат , и отношение и все виды способов , которыми Вы могли бы сделать особенности, но суть в том , что «полезно» , зависит от поставленной задачи и включает в себя преобразование данных вы имеете в область , где решение проще.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.