Рекомендации по нормализации данных - PullRequest
6 голосов
/ 13 апреля 2011

Каковы лучшие практики нормализации данных (не уверен, что это правильный термин) для NN и других алгоритмов машинного обучения? Я имею в виду, как вы представляете данные для NN / algo.

Например, как вы представляете код магазина? Магазин 555 не больше или меньше 554, это просто классификация. Модели NN / algo просто отфильтровывают это самостоятельно или вам нужно подтолкнуть их к классификации, а не к математическому различию?

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

РЕДАКТИРОВАТЬ : Спасибо всем за ответы. Я перебрал немало книг, посвященных интеллектуальному анализу данных, и, хотя нашел несколько книг, посвященных теме предварительной обработки данных, в одной или двух главах, я немного удивлен тем, как большинство из них полностью скрывают их. Еще раз спасибо.

Ответы [ 3 ]

12 голосов
/ 14 апреля 2011

Я никогда не находил ничего подходящего к исчерпывающему ресурсу на тему «предварительной обработки данных».

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

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

Nutshell для статистики . Авторы: Sarah Boslaugh & Paul Andrew Watters, O'Reilly Eds.(Глава 10 Категориальные переменные)

Дискретные / категориальные переменные

Категориальными переменными («Факторы» в R) являются такие переменные, как Пол (значения: мужской / женский), Состояние места жительства (например, Вермонт, Айдахо и т. д.), цвет глаз, и, исходя из вашего вопроса, номер магазина.Номер хранилища может быть 555, но вам, вероятно, следует записать его как строку, а не как целое число или число с плавающей запятой (т. Е. Алгоритм обрабатывает значение 555 так же, как если бы они были «пять пятьдесят пять». Если вы делаетеЕсли вы работаете на платформе статистики (например, SAS, SPSS, R), то платформа предоставит конкретные рекомендации, например, в R. При импорте данных обычно задается номер магазина как фактор .

Различие между непрерывными переменными и факторами абсолютно необходимо практически для любой аналитической работы, поскольку оно определяет (i) аналитические операции, которые вы можете выполнять с вашими данными, и (ii) тип алгоритма прогнозирования, который вы можете использовать.

W / r / t первый элемент, кросс-табуляция (функция xtabs в R) - это обычная аналитическая операция, которую можно выполнять только для факторов. (примечание: это называется таблицей непредвиденных обстоятельств , если вместо необработанного подсчета записываются проценты.) Представьте, что у вас есть данныенабор, состоящий из строк из журнала доступа к серверу, агрегированных таким образом, чтобы одна строка была одним пользователем в одном сеансе.Предположим, что вы настроили журнал для записи, среди прочего, реферального URL и типа браузера.Перекрестная таблица этих двух переменных просто показывает частоты пользователей для всех комбинаций каждого значения каждой переменной.Таким образом, если в данных три ссылочных URL-адреса и четыре типа браузеров, результирующая таблица будет иметь 12 ячеек.Опять же, кросс-табулирование возможно только для дискретных переменных.

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

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

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

Когда ваша переменная ответа - вещь, которую вы пытаетесь предсказать - является фактор / дискретной переменной, у вас возникает проблема классификация .Алгоритм машинного обучения возвращает метка класса (например, r зарегистрированный пользователь или ' не r / u ).

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

Многие алгоритмы машинного обучения, включая нейронные сети, которые вы упомянули в своем вопросе (например, «Машины опорных векторов» и KNN), могут бытьлегко настраивается для работы в любом режиме - классификации или регрессии.

Непрерывные переменные

Непрерывными переменными являются такие вещи, как время (в секундах) , количество сеансов входа в систему на пользователя , вес , возраст , общее количество потребленных калорий и т. Д. - вещи, выраженные числами с плавающей запятой или реже с целыми числами и соответственно увеличенные (т. Е. 1 секунда более 56 секунд составляет 57 секунд).

Работа с ними (после того, как вы определили, какие переменные в вашем наборе данных на самом деле являются непрерывными) обычно включает в себя только шаг, который до смешного называют нормализацией, масштабированием или стандартизацией.Хотя на практике они взаимозаменяемы, на самом деле они относятся к отдельным преобразованиям, оправданным отдельными обстоятельствами.

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

  • Масштабирование : например, для изменения единицы измерения;чтобы изменить масштаб, вы добавляете / вычитаете константу, затем умножаете / делите на другую константу.Это проще показать, чем описать, например, чтобы перевести из градуса Цельсия в градусы Фаренгейта, вы добавляете 32 к температуре Цельсия, а затем умножаете это значение на 9/5;

  • Нормализация : деление на норму.Так, например, если одна из строк в вашем наборе данных [1,23, 2,21, 0,84, 3,54, 1,90], то погружаем ее поэлементно по своей норме (которая в данном случае составляет около 4,8).Когда вы сделаете это, нормализованная строка, которую вы получите, будет [0,255, 0,458, 0,174, 0,734, 0,39].Если вы используете Python + NumPy, то выражение будет normalized_row1 = row1 / LA.norm (row1) с оператором импорта предиката import numpy.linalg в качестве LA ');

  • Стандартизация : относится к двухэтапному процессу вычитания и деления, например, чтобы получить переменную в «стандартной нормальной» форме, вы вычитаете среднее значение и делите на стандартное отклонение, после чегоВаша случайная величина имеет среднее значение 0 и SD 1. 1. 1117 *

1 голос
/ 13 апреля 2011

Обычно вам необходимо указать уровень измерения, а также роль переменной (независимой, зависимой, входной, выходной и т. Д.). Иногда пакет делает «предположение», и у вас есть возможность изменить его. В вашем примере Store является классификационной переменной. Даже если это число, вы не можете сделать арифметику с ним.

http://en.wikipedia.org/wiki/Level_of_measurement

0 голосов
/ 09 ноября 2012

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

http://rspa.royalsocietypublishing.org/content/early/2012/04/17/rspa.2011.0704.full.pdf

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