Введение в разработку функций

Введение:

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

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

Рисунок 1

Разработка функций состоит из четырех частей:

  • Преобразование функции
  • Особенности строительства
  • Выбор функции
  • Извлечение признаков

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

  • Масштабирование функций
  • Вменение отсутствующего значения
  • Кодирование категорийных и числовых данных
  • Обработка выбросов

Масштабирование функций:

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

  1. Стандартизация
  2. Нормализация

Зачем нам нужно масштабирование функций?

Давайте посмотрим на пример проблемы KNN, есть набор данных студента CGPA и зарплаты.

Рисунок 2: Набор данных

Как мы знаем, KNN работает, вычисляя расстояние, допустим, CGPA - это x, а зарплата - y.

Примечание. Зарплата указана в тысячах, а CGPA — в виде дроби.

Перед масштабированием результаты

Рисунок 3: Перед масштабированием

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

Теперь, когда мы применим масштабирование к набору данных, набор данных будет выглядеть так:

Рисунок 4: Набор данных при выполнении масштабирования

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

После масштабирования результаты таковы,

Рисунок 5: После масштабирования

Стандартизация:

Стандартизация, также известная как нормализация z-показателя, представляет собой метод масштабирования, который центрирует значения объекта вокруг его среднего значения, обеспечивая при этом единичное стандартное отклонение. При применении стандартизации среднее значение признака становится равным нулю, а результирующие значения корректируются так, чтобы стандартное отклонение равнялось единице.

Формула стандартизации такова:

Рисунок 6: Формула стандартизации

Когда использовать стандартизацию?

Стандартизация используется, когда мы работаем с,

  • Алгоритм K-средних
  • K-ближайший сосед (KNN)
  • Анализ главных компонентов (PCA)
  • Искусственная нейронная сеть
  • Градиентный спуск
  • Линейные модели

Код:

from sklearn.preprocessing import StandardScaler # библиотека импорта

scaler= StandardScaler() # создание объекта

# применить преобразование к поезду и тестовому набору

X_train_scaled=scaler.fit_transfrom(X_train)

X_test_scaled=масштабатор.transfrom(X_test)

Нормализация:

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

Тип нормализации:

  • Масштабирование MinMax (в основном используется)
  • Средняя нормализация
  • MaxAbScaling
  • Надежное масштабирование

Масштабирование MinMax:

Масштабирование MinMax — это тип нормализации, при котором значения сдвигаются и масштабируются таким образом, что в конечном итоге они находятся в диапазоне от 0 до 1. Это также известно как масштабирование Min-Max.

Формула для масштабирования MinMax:

Рисунок 7: Формула для масштабирования MinMax

Прежде чем применять MinMax Scaling, мы должны знать о минимальном и максимальном значении нашего соответствующего столбца.

Код:

from sklearn.preprocessing import MinMaxScaler # импортируем библиотеку

datanorm = MinMaxScaler() # создание объекта

# применение на поезде и тестовом наборе

X_train_norm = norm.fit_transform(X_train)

X_test_norm = норма.преобразование(X_test)

Нормализация среднего:

Если мы хотим нормализовать данные с помощью нормализации среднего, используемая нами формула

Рисунок 8: Формула для нормализации среднего

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

Масштабирование MaxAb:

Масштабирование MaxAb используется для набора данных, где превышено значение 0.

формула,

Рисунок 9: Формула для нормализации MaxAb

Код:

from sklearn.preprocessing import MaxAbsScaler # импортируем библиотеку

datanorm = MaxAbsScaler() # создание объекта

# применение на поезде и тестовом наборе

X_train_norm = norm.fit_transform(X_train)

X_test_norm = норма.преобразование(X_test)

Надежное масштабирование:

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

формула,

Рисунок 10: Формула надежного масштабирования

Код:

from sklearn.preprocessing import RobustScaler # импорт библиотеки

datanorm = RobustScaler() # создание объекта

# применение на поезде и тестовом наборе

X_train_norm = norm.fit_transform(X_train)

X_test_norm = норма.преобразование(X_test)

Нормализация и стандартизация:

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

Стандартизация (также известная как нормализация z-показателя) преобразует данные так, чтобы они имели среднее значение 0 и стандартное отклонение 1. Это полезно, когда распределение признаков в вашем наборе данных является приблизительно гауссовым (колоколообразная кривая) или когда вы хотите придать одинаковое значение всем функциям. Стандартизация сохраняет форму распределения, но сдвигает его так, чтобы среднее значение равнялось 0.

Нормализация (также известная как масштабирование минимум-максимум) масштабирует данные до фиксированного диапазона, обычно от 0 до 1. Это полезно, когда распределение объектов не соответствует распределению Гаусса, и вы хотите ограничить значения в пределах определенного диапазона. диапазон. Нормализация поддерживает относительные отношения между точками данных и сжимает диапазон значений.

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

Когда масштабирование функций не требуется?

Масштабирование признаков не требуется, когда мы работаем с древовидными моделями.