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

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

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

Предварительная обработка

Рассмотрим следующий набор данных:

У нас есть 4 независимые переменные, обозначенные xi, и 1 целевая переменная y1. В типичной задаче машинного обучения нам нужно найти способ объяснить целевую переменную с помощью независимых переменных. Простейшей моделью, которую мы могли бы использовать для этого, была бы линейная регрессия. Предположим, мы запускаем простую линейную регрессию и отображаем коэффициенты для каждой независимой переменной в таблице ниже.

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

Переменная x3 - это переменная, которая лучше всего объясняет целевое значение. После этого порядок влияния переменных будет x1, затем x4, затем x2.

Однако такой вывод был бы неверным. Причину этого можно понять, если посмотреть на диапазоны. Хотя x3 имеет коэффициент в 3 раза больше, чем x1, диапазон x3 в 10 раз больше, чем x1. Чисто из-за этого любое значение x3 будет преобладать в нашей регрессии над x1 просто потому, что значения больше. Разница в диапазонах означает, что коэффициенты несопоставимы, и поэтому мы не можем сделать то утверждение, которое делали раньше, пока все наши переменные не будут на равных условиях.

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

Так как же это исправить? Один из методов - нормализация по минимуму . Этот метод преобразует все атрибуты в диапазон [0,1], используя следующую формулу:

Нормализация min-max имеет проблему с выбросами, потому что она включает их на каждом этапе преобразования. Если в нашем наборе данных есть значительные выбросы, метод нормализации min-max сузит важный средний раздел наших данных до очень небольшого диапазона, что приведет к потере большого количества информации. Если мы сталкиваемся с выбросами, нам нужен метод, который не использует минимум или максимум набора данных, и для этого мы обращаемся к нормализации z-показателя . Нормализация Z-показателя преобразует все значения в среднее значение 0 и стандартное отклонение 1, типичное нормальное распределение, используя следующую формулу:

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

Сжатие данных

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

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

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

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

  • Характеристики с низкой дисперсией
    * Функции с низкой дисперсией обеспечивают очень небольшую предсказательную силу для нашей модели
    * Если значение не изменяется в большой степени, его можно рассматривать как фиксированное значение, с которым мы, очевидно, не можем установить какое-либо взаимосвязь с целевой переменной
    * Мы хотим, чтобы переменные колебались в разумных пределах, поскольку именно дисперсия дает нам возможность прогнозирования
    * В некоторой степени это верно, поскольку высокая дисперсия в пределах определенного class вызовет проблемы, поскольку мы не сможем установить строгие выводы между независимыми и зависимыми переменными
  • Коррелированные функции
    * Несколько сильно коррелированных функций не должны присутствовать в одном наборе данных
    * Проблема, которая возникает здесь, заключается в том, что, поскольку наши функции связаны, наша модель может неправильно назначать коэффициенты переменным, ослабляя то, как Успешно наша модель будет работать с невидимыми данными
    * Мы также можем придавать большее значение определенному разделу нашего набора данных, чем это на самом деле

Важность понимания ваших данных не имеет себе равных. Алгоритмы машинного обучения не могут найти взаимосвязи, если они не существуют, и от них нельзя ожидать, что они будут просеивать огромное количество ненужной информации, чтобы найти ключевые биты, которые им нужны для составления хороших прогнозов. Это классический сценарий «иголка в стоге сена». GIGO - Garbage In, Garbage Out, всегда полезно запомнить аббревиатуру. Если вы не предоставите своей модели четкие данные, она не даст четких результатов.

До следующего, ✌️