Прогнозирование недостающих данных с помощью случайного леса и импутации на основе k-NN

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

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

В этой статье мы обсудим реализацию библиотеки Python с открытым исходным кодом - missingpy, которая прогнозирует недостающие значения в числовой функции с использованием моделей на основе случайного леса и k-NN.

Missingpy:

Missingpy - это библиотека Python с открытым исходным кодом, которая вменяет недостающие данные с помощью стратегий вменения на основе прогнозирования. Он имеет API, похожий на API scikit-learn, поэтому разработчики могут найти интерфейс знакомым. На данный момент missingpy поддерживает только стратегии вменения на основе случайного леса и k-NN.

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

Установка:

Missingpy можно установить из PyPI, используя:

pip install missingpy

KNNImputer() и MissForest() - два API из пакета missingpy.

Использование:

Мы будем использовать только 8 функций и 25 000 экземпляров из набора данных для обнаружения кредитных карт для дальнейшей демонстрации. Поскольку в наборе данных нет отсутствующих записей, мы создадим копию функции ‘Amount’ и заменим фактические значения значениями NaN.

После подготовки данных копия ‘Amount’ функции ‘Amount_with_NaN’ имеет 4 512 пустых записей из общего количества данных выборки в 25 000 записей.

MissForest - случайное исчисление на основе леса:

Missingpy поставляется с моделью вменения на основе случайного леса, которая может быть реализована в одной строке кода Python с использованием функции MissForest().

from missingpy import MissForest
imputer = MissForest()
df_new = imputer.fit_transform(df)

После создания экземпляра модели MissForest подгоните набор данных с отсутствующими записями. fit_transform() метод возвращает набор данных вместе с вмененными значениями.

Теперь давайте сравним вмененные значения с реальными значениями функции «Сумма» и посмотрим, как отклоняется расчет.

Исходя из вышеперечисленных графиков,

  • Левое изображение: мы можем видеть, что прогнозируемые недостающие данные и фактическая сумма имеют аналогичные графики PDF.
  • Правое изображение: график PDF отклонения между фактическими значениями и прогнозируемыми пропущенными записями искажен и достигает пика на значении 0. У нас есть длинные хвосты, которые представляют очень мало прогнозов, которые отклоняются более чем на 100 значений.

Теперь давайте посмотрим на некоторые статистические данные, чтобы увидеть, как работает MissForest Imputation.

KNNImputer - Расчет на основе kNN:

Реализация KNNImputer такая же, как и у MissForest Imputation. Теперь сразу перейдем к реализации и созданию графиков PDF.

from missingpy import KNNImputer
imputer = KNNImputer()
df_new = imputer.fit_transform(df)

Заключение:

MissForest (Импутация на основе случайного леса) и KNNImputer (Импутация на основе k-NN) работают почти одинаково, давая аналогичные статистические данные для вмененных значений и отклонений от их фактических значений. Что касается показателей RMSE, KNNImputer, похоже, работает немного лучше.

Библиотека missingpy - очень удобный инструмент для прогнозирования недостающих данных в нескольких строках кода Python. Реализация пакета API аналогична реализации scikit-learn, что позволяет разработчикам знакомиться с интерфейсом.

Прочтите мою предыдущую статью, чтобы узнать 7 методов обработки недостающих значений в вашем наборе данных.



Использованная литература:

[1] документация по missingpy: https://pypi.org/project/missingpy/

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