Методы обработки неполных / отсутствующих данных

12

Мой вопрос направлен на методы работы с неполными данными во время обучения / подгонки классификатора / модели.

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

[0,74, 0,39, 0,14, 0,33, 0,34, 0]

Некоторые могут выглядеть примерно так:

[0,21, 0,68,?, 0,82, 0,58, 1]

Так что именно эти типы точек данных находятся в центре внимания этого Вопроса.

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

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

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

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

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

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

  2. Реконструкция : оцените недостающие точки данных, используя автоассоциативную сеть (просто нейронную сеть, в которой размеры входного и выходного слоев равны - другими словами, выход имеет то же измерение, что и вход); Идея состоит в том, чтобы обучить эту сеть полным данным, затем передать их по неполным образцам и прочитать пропущенные значения из выходных узлов.

  3. Самозагрузка : (резюме не нужно, я не должен думать, учитывая, что это используется в других местах статистического анализа).

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

Дуг
источник
2
Существует также подход «уменьшенной модели», при котором вы обучаете классификатор для каждого шаблона пропущенных значений, встречающихся во время тестирования. То есть, чтобы сделать прогноз для x, где i-й атрибут отсутствует, удалите i-й атрибут из всех экземпляров обучающих данных и обучайтесь этому. jmlr.csail.mit.edu/papers/v8/saar-tsechansky07a.html
Ярослав Булатов
Я считаю, что ваше определение вменения неверно в современном контексте. Импутация теперь включает моделирование отсутствующих данных на основе других переменных из набора данных. В настоящее время предпочтительным методом вменения является множественное вменение, которое генерирует несколько альтернатив для каждого пропущенного значения (на основе модели), обрабатывает каждый альтернативный завершенный набор данных и затем объединяет ответы, отражающие изменчивость между результатами. (В «старые времена» люди делали такие вещи, как подстановка значения из аналогичной записи или среднего значения и т. Д., Но не сейчас.)
Уэйн
@ Уэйн, будь добр, укажи мне статью с описанием этих modernтехник? Спасибо
Энцо
В пакете R miceесть хорошая вводная статья по JSS: jstatsoft.org/article/view/v045i03 . (Введение должно оказаться полезным, даже если вы не используете R.) И в пакете R Ameliaесть хорошая виньетка, которая входит в комплект. Эти два пакета отличаются по своим деталям, но оба используют многократное вменение.
Уэйн

Ответы:

3

Я дал этот ответ на другой вопрос , но он может быть применим и здесь.

«Существует достаточно новая область исследований под названием« Завершение матрицы » , которая, вероятно, делает то, что вы хотите. В этой лекции Эммануэль Кандес дает действительно хорошее вступление »

По сути, если ваш набор данных имеет низкий ранг (или приблизительно низкий ранг), т.е. у вас есть 100 строк, но у фактической матрицы есть какой-то небольшой ранг, скажем, 10 (или только 10 больших единичных значений), тогда вы можете использовать Matrix Completion, чтобы заполнить недостающие данные.

Робби МакКиллиам
источник
2

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

Различные подходы к классификации различаются по своей способности обрабатывать пропущенные данные и, в зависимости от некоторых других факторов ^, я мог бы просто попробовать № 5: использовать классификатор, который не задушит эти NA. Часть решения о том, чтобы пойти по этому пути, может также включать в себя размышления о том, какова вероятность того, что аналогичная доля NA будет иметь место в будущих данных, к которым вы будете применять модель. Если NA для определенных переменных будут соответствовать курсу, то, возможно, имеет смысл просто использовать их (т. Е. Не строить прогнозную модель, которая предполагает больше информативных данных, чем то, что у вас есть на самом деле, или у вас »). Я буду шутить над тем, насколько это будет предсказуемо. На самом деле, если я не уверен, что NA случайно отсутствуют, я был бы склонен перекодировать новую переменную (или новый уровень, если она ').

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

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

Шелби
источник
1

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

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


источник