Самый простой пример, используемый для иллюстрации этого, - это проблема XOR (см. Изображение ниже). Представьте, что вам даны данные, содержащие координаты и и двоичный класс для прогнозирования. Вы можете ожидать, что ваш алгоритм машинного обучения сам определит правильную границу решения, но если вы сгенерировали дополнительную функцию , то проблема станет тривиальной, так как дает вам почти идеальный критерий решения для классификации, и вы использовали просто простую арифметику !xyz=xyz>0
Таким образом, хотя во многих случаях вы можете ожидать от алгоритма поиска решения, в качестве альтернативы, путем разработки функций, вы можете упростить проблему. Простые проблемы легче и быстрее решать, и для них нужны менее сложные алгоритмы. Простые алгоритмы часто более надежны, результаты часто более интерпретируемы, они более масштабируемы (меньше вычислительных ресурсов, время на обучение и т. Д.) И переносимы. Вы можете найти больше примеров и объяснений в прекрасном выступлении Винсента Д. Вармердама, которое было дано на конференции PyData в Лондоне .
Более того, не верьте всему, что говорят вам маркетологи машинного обучения. В большинстве случаев алгоритмы не будут «учиться самостоятельно». У вас обычно есть ограниченное время, ресурсы, вычислительная мощность, а данные обычно имеют ограниченный размер и шумят, и это не помогает.
Принимая это до крайности, вы можете предоставить свои данные в виде фотографий рукописных заметок о результатах эксперимента и передать их в сложную нейронную сеть. Сначала он научится распознавать данные на картинках, затем научится понимать их и делать прогнозы. Для этого вам понадобится мощный компьютер и много времени для обучения и настройки модели, а также огромные объемы данных из-за использования сложной нейронной сети. Предоставление данных в машиночитаемом формате (в виде таблиц чисел) значительно упрощает проблему, поскольку вам не нужно все распознавание символов. Вы можете думать о разработке функций как о следующем шаге, где вы преобразуете данные таким образом, чтобы создать значимыефункций, так что ваш алгоритм имеет еще меньше, чтобы выяснить сам по себе. Чтобы провести аналогию, вы хотите прочитать книгу на иностранном языке, чтобы вам сначала пришлось выучить язык, а не читать его на том языке, который вы понимаете.
В примере данных Titanic ваш алгоритм должен был бы выяснить, что суммирование членов семьи имеет смысл, чтобы получить функцию «размера семьи» (да, я здесь ее персонализирую). Это очевидная особенность для человека, но она не очевидна, если вы рассматриваете данные только как некоторые столбцы чисел. Если вы не знаете, какие столбцы имеют смысл, если рассматривать их вместе с другими столбцами, алгоритм может выяснить это, попробовав каждую возможную комбинацию таких столбцов. Конечно, у нас есть умные способы сделать это, но все же, намного проще, если информация передается алгоритму сразу.