Введение в методы дискретизации для специалистов по данным

Разработка функций: 4 метода дискретизации, которые необходимо изучить.

Дискретизация - это процесс, с помощью которого мы можем преобразовывать непрерывные переменные, модели или функции в дискретную форму. Мы делаем это, создавая набор смежных интервалов (или бинов), которые проходят через диапазон нашей желаемой переменной / модели / функции.

Непрерывные данные измеряются, а дискретные данные - Подсчитано.

|| Я || Почему важна дискретность

Математические задачи с непрерывными данными имеют бесконечное количество степеней свободы. Такая проблема повлечет за собой наличие ограниченных степеней свободы (DoF), поскольку наши вычисления не могут продолжаться вечно. Специалисты по обработке данных требуют использования дискретизации по ряду причин. Многие из ведущих разработчиков Kaggle используют дискретизацию по следующим причинам:

Соответствует постановке задачи

Часто непрерывные данные (например, вес) легче понять, если они разделены и сохранены на значимые категории или группы. Например, мы можем разделить непрерывную переменную, вес, и сохранить ее в следующих группах:
Менее 100 фунтов (легкий), между 140–160 фунтов (средний) и более 200 фунтов (тяжелый)

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

Интерпретирует особенности

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

Несовместимо с моделями / методами

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

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

Отношение сигнал шум

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

|| II || Подходы к дискретизации

  • Без контроля:
    - Равная ширина
    - Равная частота
    - К-средние
  • Под руководством:
    - Деревья решений

|| III || Дискретность равной ширины

Разделение всех возможных значений на количество интервалов «N», каждая из которых имеет одинаковую ширину. Формула для ширины интервала:

Ширина = (максимальное значение - минимальное значение) / N
*, где N - количество интервалов или интервалов.

В python для дискретизации вам нужно импортировать следующее:

from sklearn.preprocessing import KBinsDiscretizer
from feature_engine.discretisers import EqualWidthDiscretiser

Настройте дискретизатор равной ширины следующим образом:

discretizer = EqualWidthDiscretiser(bins=10, variables = ['var1', 'var2'])
#OR 
discretizer = KBinsDiscretizer(n_bins=10, encode='ordinal', strategy='uniform')
  • Равная ширина не улучшает разброс значений
  • Он может обрабатывать выбросы
  • Можно комбинировать с категориальными кодировками

|| IV || Равночастотная дискретизация

Разделение всех возможных значений на количество интервалов «N», в каждом из которых содержится одинаковое количество наблюдений. Интервалы могут соответствовать значениям квантилей.

В python для дискретизации вам нужно импортировать следующее:

from sklearn.preprocessing import KBinsDiscretizer
from feature_engine.discretisers import EqualFrequencyDiscretiser

Настройте дискретизатор равной частоты следующим образом:

discretizer = KBinsDiscretizer(n_bins=10, encode='ordinal', strategy='quantile')
#OR 
discretizer = EqualFrequencyDiscretiser(q=10, variables = ['var1', 'var2'])
  • Равная частота действительно улучшает разброс значений
  • Он может обрабатывать выбросы
  • Можно комбинировать с категориальным кодированием

|| V || Дискретность K-средних

Мы применяем кластеризацию K-средних к непрерывной переменной, тем самым разделяя ее на дискретные группы или кластеры.

На python вы можете импортировать следующее для дискретизации с помощью K-средних:

from sklearn.preprocessing import KBinsDiscretizer

Настройте K-means Discretizer следующим образом:

discretizer = KBinsDiscretizer(n_bins=5, encode='ordinal', strategy='kmeans')
  • K-Means не улучшает разброс значений
  • Он может обрабатывать выбросы, однако может существовать центроидное смещение.
  • Можно комбинировать с категориальным кодированием

|| VI || Дискретность с деревьями решений

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

В python для дискретизации с деревьями решений вам нужно импортировать следующее:

from sklearn.model_selection import train_test_split
from feature_engine.discretisers import DecisionTreeDiscretiser

Ваш Discretizer должен быть настроен следующим образом:

# cross-validation number (cv)
# how to evaluate model performance (scoring)
# the variables we want to discretise (variables)
# whether it is a target for regression or classification
# and the grid with the parameters we want to test
treeDisc = DecisionTreeDiscretiser(cv=10, scoring='accuracy',
                                   variables=['var1', 'var2'],
                                   regression=False,
                                   param_grid={'max_depth': [1,2,3],
'min_samples_leaf':[10,4]})
  • Дерево решений не улучшает разброс значений
  • Он может хорошо обрабатывать выбросы, поскольку деревья устойчивы к выбросам.
  • Создает монотонные отношения

|| VII || Следующие шаги

После дискретизации переменных вы можете выполнить одно из следующих действий:

  • Создавайте алгоритмы дерева решений и напрямую используйте результат дискретизации как количество бинов. Деревья решений могут найти нелинейные отношения между дискретизированной переменной и целевыми переменными.
  • Используйте линейную модель, в то время как интервалы не имеют линейной связи с целевой переменной. Улучшите модель, рассматривая корзины как категории с некоторой кодировкой.

Спасибо за прочтение!

Следуйте за мной, чтобы узнать больше о Data Science.