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

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

Итак, без дальнейших промедлений, приступим.

Что такое вменение данных?

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

Почему подстановка данных?

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

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

Я лично являюсь поклонником DataCamp, я начал с него и до сих пор учусь на DataCamp и продолжаю изучать новые курсы. У них серьезно есть несколько увлекательных курсов. Не пропустите их.

1. обработка-отсутствующих-данных-с-вменением-в-r

2. работа с отсутствующими-данными-в-питоне

3. работа с отсутствующими-данными-в-r

4. строительство-разработка-данных-конвейеров в Python

5. введение в инженерию данных

6. управление данными с помощью Python

7. манипуляции с данными с пандами

8. данные-манипуляции-с-r

P.S: Я все еще использую DataCamp и продолжаю заниматься курсами в свободное время. Я на самом деле настаиваю, чтобы читатели попробовали любой из вышеперечисленных курсов в соответствии с их интересами, чтобы начать работу и заложить хорошую основу в машинном обучении и науке о данных. Лучшее в этих курсах от DataCamp - это то, что они объясняют это очень элегантно и по-разному, со сбалансированным акцентом на практических и концептуальных знаниях, и в конце всегда есть тематическое исследование. Это то, что я люблю в них больше всего. Эти курсы действительно стоят вашего времени и денег. Эти курсы, безусловно, помогут вам лучше понять и реализовать глубокое обучение, машинное обучение, а также реализовать его на Python или R. Я чертовски уверен, что вам это понравится, и я утверждаю это исходя из моего личного мнения и опыта.

Возвращаясь к теме -

Пакет Sklearn.impute предоставляет 2 типа алгоритмов вменения для заполнения пропущенных значений:

1. SimpleImputer

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

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

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

2. IterativeImputer

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

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

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

Библиотека Missingpy

Missingpy - это библиотека на Python, используемая для вменения пропущенных значений. В настоящее время он поддерживает метод вменения на основе K-ближайших соседей и метод вменения на основе случайного леса MissForest, то есть случайный лес.

Чтобы установить библиотеку missingpy, вы можете ввести в командной строке следующее:

pip install missingpy

3. KNNImputer

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

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

Ближайшие соседи выбираются на основе показателей расстояния; по умолчанию установлено значение евклидово расстояние и указано n_neighbour учитывать на каждом этапе.

4. MissForest

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

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

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

Дополнительная литература

FancyImpute:

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

Автоимпут:

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

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

  1. https://scikit-learn.org/stable/modules/impute.html
  2. https://pypi.org/project/missingpy/#description
  3. https://github.com/scikit-learn/scikit-learn/tree/master/sklearn/impute
  4. https://github.com/epsilon-machine/missingpy
  5. https://pypi.org/project/fancyimpute/
  6. https://kearnz.github.io/autoimpute-tutorials/

Если вам понравилось читать эту статью, я уверен, что у нас схожие интересы и мы работаем в схожих отраслях. Итак, подключимся через LinkedIn и Github. Пожалуйста, не стесняйтесь отправить запрос на контакт!