Как предварительно обрабатывать данные для машинного обучения?

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

У меня есть набор данных в файле .tsv, доступном здесь . Набор для тренировки составляет 7000 строк, тестовый набор – 3000. Какие разные стратегии следует использовать для обработки неверно сформированных данных, если в каждом из них не читается 100 строк? 500? 1000? Любые рекомендации, чтобы помочь мне рассуждать об этом, будут очень оценены.

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

благодаря

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

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

Я постараюсь дать вам несколько советов:

  1. Нормализовать значения – не всегда необходимо нормализовать все функции. Но в целом нормализация не может повредить, и это может многое помочь. Таким образом, если вы не ограничены, попробуйте попробовать и попробуйте использовать нормализацию для всех функций, кроме тех, которые явно не имеют смысла для нормализации. Наиболее обычными методами нормализации являются: линейная нормализация (отображение значений признаков в диапазон <0,1>) и z-нормализация, что означает, что вы вычтите среднее значение значений функции и разделите результат на стандартное отклонение. Невозможно вообще сказать, какой из них лучше. (мы возвращаемся к пониманию данных)
  2. Отсутствующие значения. Необходимо решить, что делать с отсутствующими значениями. Есть несколько способов справиться с этим. Удалите образцы с отсутствующими значениями. Если у вас достаточно образцов данных, возможно, нет необходимости заботиться о образцах с отсутствующими значениями. Это может привести только к вашим результатам. В этом случае в образце отсутствует только одно значение функции, вы можете просто заполнить значение по значению функции . (но будьте осторожны, потому что снова вы можете просто принести шум к результатам)
  3. Выбросы. Во многих случаях вы сталкиваетесь с образцами, которые находятся далеко от других образцов, то есть выбросов. Выбросы обычно являются просто шумом, ошибкой в ​​данных или могут быть сигналом особого поведения (например, когда есть что-то, что нарушает обычный шаблон поведения, он может быть сигналом действий, вызванных злоумышленником или чем-то вроде банка сети). В большинстве случаев неплохо просто удалить выбросы, так как количество выбросов обычно очень низкое, и это может сильно повлиять на ваши результаты. Учитывая гистограмму в качестве примера, я бы просто отрезал пусть скажем 0-2,5 процентиля и 97,5-100 процентилей .
  4. Ошибки. Вероятно, в данных будут ошибки. Это та часть, в которой я не могу дать вам никаких намеков, поскольку необходимо действительно понять весь фон и знать, как могло случиться, что есть ошибки.
  5. Номинальные значения. Если есть любые номинальные значения, которые можно заказать, просто замените номинальные значения на цифры (0, 1, 2, 3, 4 и 5). Если невозможно заказать значения (например, цвет = синий, черный, зеленый …), то наилучшим способом является разделение функции на множество функций, таких как мощность набора возможных значений. И просто преобразуйте функцию в двоичные значения – «Является зеленым?» «Да / Нет» (0/1).

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

Если у вас возникнут какие-либо дополнительные вопросы относительно «проблем с предварительной обработкой», я с удовольствием отредактирую этот ответ и добавлю больше идей, как с ним справиться.