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

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

Теперь атрибут веса может принимать числа с действительными значениями, то есть его значения могут быть 160,8 см, 180,2 см, 140,5 см. Он может принимать любое действительное числовое значение и, следовательно, известен как числовая функция. Страна может принимать такие значения, как Индия, США, Россия, Австралия и т. Д., Поэтому она попадает в категорию категориальных. Точно так же для цвета волос возможными значениями могут быть черный, серый, золотой и т. Д., Что снова попадает в категорию категориальных. Они называются категориальными функциями, потому что их можно отнести к одной из возможных функций, тогда как в случае числовых функций это простые числа. Учитывайте пин-код. Что вы думаете, что это? Числовая переменная или категориальная переменная? Несмотря на то, что он состоит из чисел, это категориальная переменная, потому что пин-код классифицирует области, из которых принадлежит человек. Теперь, когда у нас есть базовое понимание категориальных и числовых функций, давайте перейдем к пониманию того, как с ними обращаться.

CASE-1: - Присвоение чисел

Один из способов справиться с ними - присвоить им номер. Это означает, что если я рассматриваю приведенный выше пример цвета волос, то назначаю черные волосы = 1, седые волосы = 2, каштановые волосы = 3 и так далее. Хотя этот подход прост в обращении с категориальными переменными, с ним есть проблема. Проблема в том, что, присваивая номер каждому типу волос, мы создаем искусственный порядок. В терминах чисел мы можем сказать, что 2 ›1 или 3› 2, но когда мы рассматриваем фактическое значение числа, которое является цветом волос, мы фактически пытаемся сказать, что седые волосы ›черные волосы и каштановые волосы› седые волосы. Это абсурдное заявление. Таким образом, преобразовывая его в простые числа, мы создаем искусственный порядок, который не является подлинным, и для решения этой проблемы мы используем другой метод, называемый горячим кодированием.

CASE-2: - Одно горячее кодирование

Это очень интересная концепция для работы с категориальными переменными. Что мы здесь делаем, так это, скажем, для цвета волос, у нас есть 3 различных значения в моем общем наборе данных: черный, серый и коричневый. Что мы делаем, так это создаем еще 3 функции / столбца с черным, серым и коричневым заголовками соответственно и присваиваем значение 0 или 1 (что указывает на ложь или истину). Предположим, что у человека черные волосы, тогда мы помещаем 1 под столбец черных волос, а остальным будет присвоен 0. Точно так же, если у человека есть седые волосы, мы присваиваем 1 столбцу седых волос, а остальные мы назначаем его столбцу седых волос. 0. Одно горячее кодирование, по сути, создает двоичный вектор размером с количество различных элементов (в нашем случае 3). Самым большим преимуществом этого метода является то, что мы избавляемся от искусственного упорядочивания, с которым столкнулись в случае-1. НО…

В этом подходе есть проблема. Давайте рассмотрим еще один атрибут из приведенного выше примера «Страна». В мире около 195 стран. Теперь в наборе данных, который у нас есть, человек может принадлежать к любой из стран, поэтому в этом случае (в худшем случае) мы можем создать 195 дополнительных функций / столбцов, а затем отметить 0 или 1 в зависимости от человека. s происхождение из страны. Это также создает еще одну проблему «разреженных векторов». Это означает, что одновременно человек может принадлежать только одной стране, поэтому на основе логики, которую мы использовали выше для присвоения 0 и 1, скажем, человек из Индии, тогда мы присваиваем «1» в столбце «Индия», а остальные 194 столбца будет присвоен «0». Таким образом, только один столбец будет содержать значение «1», а остальным будет присвоено значение «0». Если количество различных значений для категориального признака велико, то одно горячее кодирование может создать разреженные и большие векторы, что нехорошо.

CASE-3: - Метод среднего замещения

Вернемся к цели / проблеме, которую мы пытаемся решить. Учитывая набор характеристик, нам необходимо определить рост человека. Что мы делаем, так это заменяем название страны на среднее значение роста человека, принадлежащего к этой стране. Это означает, что предположим, что мы хотим заменить «Индия» числовым значением, поэтому мы вычисляем среднее значение роста людей из Индии (допустим, мы получаем это как 160 см), а затем заменяем «Индия» на 160 см.

CASE-4: - Знание предметной области

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

Скажем, мы хотим оценить впечатления от поездки, которые мы только что получили, в качестве обратной связи. Возможные варианты: очень хороший, хороший, средний, плохой и очень плохой. В таких случаях мы знаем, что очень хорошее лучше, чем хорошее, которое, в свою очередь, лучше среднего, и так далее. Похоже, что эти 5 возможных исходов имеют логический порядок. В подобных случаях мы можем присвоить им номера, как в CASE-1. Итак, мы присваиваем рейтинг звезд: 5 = V. хорошо, 4 = хорошо, 3 = средний, 2 = плохо и 1 = v. плохой. Можно сказать, что рейтинг 5 звезд ›Рейтинг 4 звезд› Рейтинг 3 звезды и так далее. Но есть одна проблема: вместо 1-5 мы можем присвоить числа вроде 10 = V. хорошо, 9 = хорошо, 8 = среднее, 7 = плохо и 6 = V. плохой. Даже эти числа удовлетворяют нашим критериям. К сожалению, конкретного способа справиться с этим нет. Это полностью зависит от знания предметной области и типа проблемы, которую мы пытаемся решить.

Отсутствующие данные

Если вы работаете с реальным набором данных, пытаясь решить реальную проблему, вы обязательно столкнетесь с проблемой отсутствия данных. Эти данные могут отсутствовать по разным причинам, таким как человеческая ошибка, повреждение данных или пользователь, возможно, решил не делиться с вами некоторыми конкретными данными. В любом случае мы получаем недостающие данные, которые обычно представлены как Nan, null или -1.

Вменение

В статистике вменение - это процесс замены отсутствующих данных на подставленные значения.

-Википедия

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

В приведенном выше примере отсутствует значение роста и цвета волос.

Как мы обрабатываем это пропущенное значение с помощью вменения?

Давайте посмотрим на высоту. Итак, что мы делаем, это вычисляем среднее значение (мы можем использовать медианное значение, если есть выбросы)

Среднее значение роста (в см) = 154,45 см

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

Значение режима цвета волос = черный

Следовательно, мы заменяем отсутствующее значение цвета волос на «Черный».

Вменение на основе метки класса

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

У нас есть проблема классификации, когда вывод может быть 0 или 1. У нас есть 5 функций f1, f2, f3, f4 и f5, где f5 также является меткой класса. Предположим, что отсутствует значение для функции f3, метка класса которой равна 1. Теперь, чтобы присвоить это отсутствующее значение, мы вычисляем среднее значение. При вычислении среднего значения вместо того, чтобы рассматривать все записи (как мы делали выше), мы рассматриваем только те записи, метка класса которых равна 1, поскольку метка класса нашей отсутствующей функции также равна 1. Этот метод также известен как основанный на вменении среднего. на этикетке класса.

Позвольте мне показать вам графически, чем этот метод лучше, чем обычное вменение, которое мы делаем.

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

Создание новой функции отсутствующих значений

Рассмотрим пример, в котором у нас есть 4 функции: f1, f2, f3 и f4, а f4 - это метка класса. Что мы здесь делаем, так это создаем еще 3 столбца (равное количеству функций). Назовем их f’1, f’2, f’3. В исходных столбцах мы заменяем отсутствующее значение на среднее значение, медианное значение или значение режима, но в то же время мы отмечаем соответствующий вновь созданный элемент, независимо от того, присутствует ли исходный элемент или отсутствует, используя 0 и 1.

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

Вменение на основе модели

Давайте разберемся в этом на примере. Предположим, у нас есть 4 функции: f1, f2, f3 и f4, а f4 - это метка класса. У нас есть в общей сложности 100 записей, из которых около 20 значений отсутствуют в функции f3. Что мы делаем, так это рассматриваем f3 как метку класса и f4 как функцию, а затем строим модель поверх этого и пытаемся предсказать значение для f3. Поскольку есть 20 записей под f3, значение которых отсутствует, мы рассматриваем их как тестовый набор, а остальные как данные обучения. Если f3 категориальная переменная, мы используем метод классификации, а если это числовая переменная, мы используем метод регрессии. На самом деле мы делаем так, чтобы модель предсказывала недостающие значения. Как правило, K-NN часто используется для вменения на основе модели, поскольку он основан на концепции соседства.

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

Дипак Джайн