Масштабирование функций в машинном обучении
В аспекте понимания
Привет, ребята! Сегодня в этом блоге мы поговорим о масштабировании функций. Прежде всего, имея дело с алгоритмами ML, вы, должно быть, пришли к такой ситуации, когда какой-либо из алгоритмов не работает с данными должным образом. Причиной могут быть сами данные. Прежде чем запускать какой-либо алгоритм над данными, необходимо предварительно обработать данные. Во время предварительной обработки очистка данных является наиболее важным шагом. Еще один шаг — масштабирование функций. Данные, используемые для масштабирования объектов, должны быть числовыми. Дайте нам знать с практическим аспектом.
Проблема: алгоритмы машинного обучения не работают должным образом, когда входные числовые атрибуты имеют разные масштабы.
Дано: данные с числовыми атрибутами, имеющими разные масштабы.
Решение: масштабирование функций
Что такое масштабирование функций?
Если входные числовые атрибуты данных имеют разные масштабы, метод, позволяющий придать всем атрибутам одинаковый масштаб, называется масштабированием объектов.
Пример
Предположим, у нас есть данные о количестве учеников в каждом классе. Общее количество студентов колеблется от 6 до 41 860, тогда как среднее количество учителей колеблется всего от 0 до 15.
В таком случае требуется масштабирование функций.
Способы масштабирования функций
Мин-макс масштабирование
Масштабирование Min-Max — это не что иное, как нормализация значений, при которой значения сдвигаются и масштабируются так, чтобы они в конечном итоге находились в диапазоне от 0 до 1. Это можно выполнить путем вычитания минимального значения и деления на максимальное минус минимальное. Scikit-learn предоставляет для этого преобразователь под названием MinMaxScaler. У него есть гиперпараметр Feature_range, который позволяет нам изменить диапазон, если нам не нужен диапазон от 0 до 1.
Преобразуйте объекты, масштабируя каждый объект до заданного диапазона.
Этот оценщик масштабирует и преобразует каждую функцию индивидуально так, чтобы она находилась в заданном диапазоне обучающего набора, например между нулем и единицей.
Преобразование определяется:
X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0)) X_scaled = X_std * (max - min) + min
где мин, макс = Feature_range.
Это преобразование часто используется как альтернатива масштабированию с нулевым средним и единичной дисперсией. Sklearn предоставляет метод использования мин-макс-скейлера.
from sklearn.preprocessing import MinMaxScaler data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]] scaler = MinMaxScaler() print(scaler.fit(data)) MinMaxScaler() print(scaler.data_max_)
Методы
fit
(X[, y])
Вычислите минимум и максимум, которые будут использоваться для последующего масштабирования.
fit_transform
(X[, y])
Подогнать данные, а затем преобразовать их.
get_feature_names_out
([входные_функции])
Получите имена выходных объектов для преобразования.
get_params
([глубоко])
Получите параметры для этой оценки.
Отмените масштабирование X в соответствии с Feature_range.
partial_fit
(X[, y])
Онлайн-вычисление минимума и максимума по X для последующего масштабирования.
set_output
([, трансформировать])
Установите выходной контейнер.
set_params
(*параметры)
Установите параметры этой оценки.
transform
(X)
Масштабируйте функции X в соответствии с Feature_range.
Стандартизация
Это совсем другой метод. Сначала он вычитает среднее значение (поэтому стандартизированные значения всегда имеют нулевое среднее), а затем делит на стандартное отклонение, чтобы полученное распределение имело единичную дисперсию. Но метод стандартизации не ограничивает.
Стандартизируйте функции, удалив среднее значение и масштабируя его до единичной дисперсии.
Стандартный балл образца x
рассчитывается как:
z = (x - u) / s
где u
— среднее значение обучающих выборок или ноль, если with_mean=False
, а s
— стандартное отклонение обучающих выборок или единица, если with_std=False
.
Sklearn предоставляет метод для стандартного скалера.
from sklearn.preprocessing import StandardScaler data = [[0, 0], [0, 0], [1, 1], [1, 1]] scaler = StandardScaler() print(scaler.fit(data)) print(scaler.mean_)
Методы
fit
(X[, y, вес_выборки])
Вычислите среднее значение и стандартное значение, которые будут использоваться для последующего масштабирования.
fit_transform
(X[, y])
Подогнать данные, а затем преобразовать их.
get_feature_names_out
([входные_функции])
Получите имена выходных объектов для преобразования.
get_params
([глубокий])
Получите параметры для этой оценки.
inverse_transform
(X[, копировать])
Уменьшите данные до исходного представления.
partial_fit
(X[, y, вес_выборки])
Онлайн-вычисление среднего и стандартного значения по X для последующего масштабирования.
set_output
([, трансформировать])
Установите выходной контейнер.
set_params
(*параметры)
Установите параметры этой оценки.
transform
(X[, копировать])
Выполните стандартизацию путем центрирования и масштабирования.
Сравнение стандартизации с масштабированием функций
Проблема: системе необходимо, чтобы данные масштабировались в определенном диапазоне значений.
Решение: масштабирование функций
В этой задаче стандартизация не работает, поскольку она не привязывает значения к определенному диапазону, что может быть проблемой для некоторых алгоритмов (например, нейронные сети часто ожидают входного значения в диапазоне от 0 до 1).
Стандартизация гораздо меньше подвержена влиянию выбросов по сравнению с масштабированием Min-max.
Например:
Предположим, что в классе среднее количество учителей равно 100 (по ошибке). Тогда мин-максное масштабирование сократит все остальные значения от 0–15 до 0–0,15, тогда как на стандартизацию это не сильно повлияет.
Scikit-learn предоставил преобразователь для стандартизации под названием StandardScaler.
Я надеюсь тебе понравится!!
Спасибо
- Ахил Сони
Вы можете найти этот блог на