Взгляд статистиков на типы переменных, их значение и значение для машинного обучения.

Недавно я прочитал популярную книгу по машинному обучению. Когда я дошел до главы, посвященной проектированию функций, автор заметил, что, поскольку для большинства алгоритмов машинного обучения требуются числовые данные в качестве входных данных, категориальные переменные необходимо кодировать как числовые. Например, перефразируя пример, мы могли бы закодировать категориальную переменную education_level, которая принимает значения: elementary, high_school, University как числа 1, 2 и 3 соответственно. . В тот момент, даже несмотря на то, что я инженер машинного обучения по профессии, я услышал, как внутренний статистик по образованию во мне громко вскрикнул! Неужели в наши дни люди просто бегают .fit_predict(), игнорируя то, что на самом деле означают данные?

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

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

Четыре уровня измерения данных, от самого низкого до самого высокого, - это номинальный, порядковый, интервал и соотношение.

Номинальные данные 🟨 🟩 🟦

Термин «номинальный» происходит от латинского языка и может быть переведен как «быть таковым только по названию». Единственная информация, содержащаяся в номинальных данных, - это группа, к которой принадлежит наблюдение. Примером этого может быть цвет. Вы можете закодировать желтый как 1 и синий как 2, но эти числа не будут иметь никакого конкретного значения или значения. И такая кодировка не сделает зеленый автоматически равным 1,5.

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

Порядковые данные 🔢

Как следует из названия, порядковые данные имеют некоторый порядок. Он позволяет ранжировать значения, например, для уровня образования: elementary меньше, чем high_school, что, в свою очередь, меньше, чем University. упорядочение позволяет нам вычислить медиану: если в нашем наборе данных есть 100 примеров каждого уровня образования, будет правильным сказать, что среднее образование - high_school. Из определения медианы это означает, что 50 % примеров имеют высшее_школьное или начальное образование, в то время как остальные 50% имеют высшее_школьное или университетское образование, которое правильный и, возможно, важный вывод. Однако вычисление среднего значения для порядковых данных не имеет смысла. В любом случае, каков средний показатель для университета и начальной школы?

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

Интервальные данные 🌡️

Интервальные данные строятся на основе данных верхнего порядкового номера. Помимо упорядочивания значений, он также указывает, что интервалы между последующими значениями одинаковы. Хорошим примером этого является температура, измеряемая в градусах Цельсия: разница между 1 градусом и 5 градусами такая же, как между 20 и 24: это 4 градуса. Обратите внимание, что это не относится к порядковым данным: мы не можем сказать, что разница между окончанием средней школы и только начальной школой такая же, как между университетом и средней школой.

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

Соотношение данных ➗

Данные отношения строятся на основе данных интервала. Разница в том, что переменные типа отношения имеют значимое нулевое значение. Примеры: цена, длина, вес, количество чего-либо или температура, измеренная в Кельвинах. Значимый ноль позволяет нам вычислить отношения между двумя точками данных: мы можем сказать, что 4 яблока вдвое больше, чем 2, или что 5 долларов вдвое дешевле 10 долларов. Это не относится к интервальным данным: в случае температуры, измеренной в градусах Цельсия, мы не можем сказать, что 10 градусов вдвое теплее, чем 5 градусов. Коэффициенты не имеют смысла для весов без значимого нуля.

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

Типы измерения данных: сводка

Четыре типа измерения данных аккуратно обобщены для вашего удобства в таблице ниже.

Назад к машинному обучению

Я слышал, вы спрашиваете, как все это связано с моделями машинного обучения. Есть две причины, по которым вам следует тщательно подумать о том, к какому типу измерения относятся ваши переменные, прежде чем вводить .fit_predict():

  1. Интерпретируемость модели.
  2. Легкость обучения.

Давайте рассмотрим каждый по очереди.

Есть две причины, по которым вам следует тщательно подумать о том, к какому типу измерения относятся ваши переменные: интерпретируемость модели и простота обучения.

Интерпретируемость модели

Представьте, что мы пытаемся спрогнозировать доход, используя уровень образования в качестве одной из характеристик. Мы хотим, чтобы наша модель была интерпретируемой, то есть мы хотим количественно оценить влияние каждой функции на доход в понятной форме. Следовательно, мы выбираем (возможно, регуляризованную) модель линейной регрессии. А что, если бы мы последовали совету из книги, которую я читал, и закодировали elementary, high_school, University как числа 1, 2 и 3 соответственно?

Скажем, оценочный коэффициент регрессии уровня образования равен 3000. Это означает, что, согласно модели, человек с начальным образованием теперь зарабатывал бы на 3000 долларов больше (при прочих равных), если бы он закончил среднюю школу. А если бы они закончили университет, они бы зарабатывали еще на 3000 долларов больше, то есть на 6000 долларов больше, чем они на самом деле. Имеет ли это смысл? Может быть, это так. Но более вероятно, что окончание университета принесет более высокий доход (по сравнению с неполным), чем в случае средней школы. Не в последнюю очередь потому, что университетское образование требует больше времени и дает более конкретные знания и навыки, чем среднее образование.

Итак, что здесь произошло? Конечно, мы перепутали типы измерения данных! Уровень образования в этом примере явно является порядковой переменной, но мы рассматривали ее, как если бы это был тип отношения! Кодирование категориальной переменной в виде числовых значений 1, 2 и 3 предполагает (линейную) модель машинного обучения, что данные относятся к типу отношения: 3 в 3 раза больше, чем 1 для компьютера. Что мы должны были сделать, так это закодировать уровень образования как два горячих вектора: двоичные признаки, указывающие, является ли тип образования начальным и является ли он high_school (поскольку существует 3 возможных значений, нам нужны только два горячих вектора: если для данного примера оба равны нулю, это означает, что образование должно быть университетским) .

Кодирование категориальной переменной в виде числовых значений 1, 2 и 3 предполагает (линейную) модель машинного обучения, что данные относятся к типу отношения: 3 в 3 раза больше, чем 1 для компьютера. Если на самом деле это не соотношение, интерпретация модели усложняется.

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

Легкость обучения

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

Давайте продолжим наш пример прогнозирования доходов, используя уровень образования в качестве одной из характеристик. И давайте предположим, что на самом деле переход из средней школы в университет дает больший прирост дохода, чем переход из начальной школы в среднюю. Теперь, если мы перепутаем типы измерения данных и неправильно закодируем уровень образования как 1, 2 и 3, как обсуждалось выше, алгоритм машинного обучения может быть умнее нас и обнаружить, что данные сами по себе порядковые. Алгоритмы на основе дерева, такие как случайный лес или повышение градиента, теоретически могут обнаружить, что разделение переменной уровня образования между 2 и 3 приводит к меньшим потерям, чем разделение между 1 и 2. Нейронные сети могут изучать даже более сложные нелинейные отношения. , так что они тоже смогут это обнаружить.

Возникает вопрос: зачем нам требовать от моделей изучения этого различия, если у нас уже есть эти знания? Кодируя уровень образования как горячие векторы, мы предоставляем модели больше информации и уменьшаем объем обучения, необходимый для хорошей производительности. Не говоря уже о страховке от риска того, что модель не сможет изучить ее по какой-либо причине.

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

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

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



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

Если вам понравился этот пост, почему бы вам не подписаться на обновления по электронной почте на мои новые статьи? И, став участником Medium, вы можете поддержать мое письмо и получить неограниченный доступ ко всем рассказам других авторов и меня.

Нужна консультация? Вы можете спросить меня о чем угодно или заказать меня со счетом 1: 1 здесь.

Вы также можете попробовать одну из других моих статей. Не можете выбрать? Выберите один из них: