«Данные не чисты, но большинство из них полезны», — Дин Эбботт

👩‍🔬Исследователи данных, соберитесь! 💻

Наконец-то мы добрались до финальной части нашей серии по разработке функций.

В этой последней записи блога📋 мы обсудим выбор функций✔️. В двух предыдущих блогах мы рассмотрели конструкцию признаков🏗️, преобразование признаков🔄, технику уменьшения размерности — извлечение признаков🔍.

Выбор функций — одно из решений проклятия размерности.

Выбор функций✔️

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

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

В основном для выбора признаков используются три метода:

  • Методы фильтрации🎯
  • Методы обертки🔄
  • Встроенные методы🛠️

Методы фильтрации🎯

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

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

«Методы фильтрации выбирают функции на основе статистической меры, и они делают это, сосредотачиваясь на одной функции за раз и сравнивая ее с другими функциями. Выбор функций не основан на алгоритме обучения».

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

Методы фильтрации можно использовать следующими способами:

  • Корреляция: этот метод подобен паре на свидании вслепую. Если у них высокая корреляция, то это союз, заключенный на небесах🥰. Но если у них низкая корреляция, им лучше разойтись💔.

В этом методе мы вычисляем корреляцию (используя corr() ) между каждой функцией и целевой переменной. Если корреляция ниже определенного значения, мы удаляем эту функцию из рассмотрения, поскольку она не оказывает существенного влияния на целевую переменную.

  • Порог отклонения: этот метод похож на вышибалу в ночном клубе🎉. Если фича имеет низкую дисперсию, она не очень интересна, поэтому ее выкидывают🚫.


  • Тест хи-квадрат. Этот метод похож на детектив🕵️‍♂️. Он ищет ассоциации между двумя категориальными переменными и пытается выяснить, виноваты ли они в том, что они являются важными функциями🔍.


sklearn.feature_selection.chi2
Примеры использования sklearn.feature_selection.chi2: преобразование столбцов со смешанными типамиscikit-learn.org



  • ANOVA:Этот метод подобен судье в зале суда⚖️. Он рассматривает средства нескольких групп и решает, достаточно ли доказательств, чтобы признать их важными функциями🏛️.




Методы обертки🔄

Почему мы используем методы-обертки?🤔

Методы фильтрации — это простой способ выбора функций, но они не учитывают связь между функциями🔍. Это может привести к выбору функций, которые на самом деле не имеют отношения к целевой переменной❌.

Метод Wrapperпохож на приложение для знакомств для функций💞. Он берет кучу функций по датам с помощью алгоритма машинного обучения, а затем видит, какие из них алгоритму нравятся больше всего💁‍♂️. Выбирается та функция, которая получает больше всего дат🤭.

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

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

Существует несколько распространенных методов методов-оболочек, в том числе:

  • Исчерпывающий выбор функций / Выбор лучших функций🕵️‍♂️
  • Последовательный выбор функции вперед ➡
  • Последовательный выбор обратных функций ⬅️

Исчерпывающий выбор функций/Выбор лучших функций🕵️‍♂️

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

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

Когда у нас есть n функций, существует 2 ^ n возможных подмножеств функций. Представьте, что у вас есть 3 функции, это как 8 разных комбинаций леденцов на вкус!😲

В результате этих вычислительных затрат были разработаны другие методы выбора признаков. Поскольку бюджет на конфеты ограничен, мы придумали более быстрые способы выбрать самые вкусные леденцы 🍬 другими способами.



Выбор функций вперед➡

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

Шеф-повар продолжает добавлять ингредиенты до тех пор, пока блюдо не перестанет улучшаться🫢, или пока шеф-повар не наберет нужное количество ингредиентов😴.

«Выбор Функций вперед начинается с пустого набора функций. Затем он добавляет функцию, которая больше всего повышает точность алгоритма машинного обучения».

Алгоритм продолжает добавлять функции до тех пор, пока точность алгоритма не перестанет улучшаться или пока не будет достигнуто максимальное количество функций🚀.

Обратный выбор функций⬅

Обратный выбор функций похож на того же шеф-повара🍳, который начинает с полной кладовой, а затем выбрасывает ингредиенты, которые делают блюдо наихудшим на вкус🗑️.

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

Алгоритм продолжает удалять признаки до тех пор, пока точность алгоритма не перестанет снижаться🥱 или пока не будет достигнуто минимальное количество признаков🤓.



Просто измените параметр → направление{‘вперед’, ‘назад’}

вперед → Выбор функции вперед➡

назад → Выбор функции назад⬅

Встроенные методы🛠️

Встроенные методы похожи на ниндзя выбора функций🥷. Они проникают в алгоритм машинного обучения и незаметно выбирают лучшие функции🫣.

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

Наиболее распространенные типы встроенных методов:

  • Регуляризация🦸‍♂️
  • Алгоритмы на основе дерева🌲

Регуляризация🦸‍♂️

«Регуляризация встроенных методов может быть выполнена путем добавления члена регуляризации к функции потерь алгоритма машинного обучения».

Признаки с наибольшими коэффициентами будут оштрафованы сильнее всего и могут быть исключены из модели.

Используются следующие техники регуляризации💁‍♂️

  • Регуляризация лассо (L1):


  • Регуляризация хребта (L2):


  • Регуляризация эластичной сети (L1+L2):


Алгоритмы на основе дерева🌲

"Алгоритмы на основе дерева создают древовидную структуру решений, где каждое решение основывается на важности функции".

Функции, которые наиболее важны для разделения данных, — это те, которые, скорее всего, будут включены в модель.

Алгоритмы на основе дерева, которые можно использовать во встроенных методах:

  • Деревья решений:


  • Случайные леса:


"Вы можете спросить: "Когда что использовать?🤨

СЕКРЕТ🤫

🥳🥳

Заключение

В этом финале мы погружаемся в мир выбора функций ✔️. Выбор функций похож на свидание вслепую💗: вы должны найти функции (вашего партнера), которые наиболее совместимы с вашей моделью, а затем вы должны надеяться, что они поладят.😎 Но, в отличие от свидания вслепую, выбор функций может быть много работы. Вы должны попробовать разные методы и различные комбинации функций, чтобы найти лучшие. А иногда даже самые лучшие функции не работают😞.

Но не волнуйтесь, вы не одиноки💯. Даже самым опытным специалистам по данным приходится экспериментировать и пробовать разные вещи, чтобы найти лучшие функции для своих моделей👩‍🔬.

Когда что использовать? 🤨 Секрет раскрыт: 🥳🥳.

В этом грандиозном приключении по разработке функций мы изучили возможности выбора, извлечения, преобразования и конструирования функций. Это может быть сложным, но полезным процессом. Так что не бойтесь проявлять творческий подход и дайте волю своему воображению.🦸‍♂️🌟

ЧАСТЬ 1



ЧАСТЬ 2



Не стесняйтесь подключаться🎯

➡️https://www.linkedin.com/in/elakiya-sekar-28465b220/

➡️https://www.instagram.com/elakiya__sekar/

➡️[email protected]