2009-07-23 2 views
7

У меня есть база данных, состоящая из целой группы записей (около 600 000), где некоторые записи имеют определенные поля. Моя цель - найти способ предсказать, каковы недостающие значения данных (чтобы я мог их заполнить) на основе существующих данных.Прогнозирование отсутствующих значений данных в базе данных

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

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

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

+2

Огромная проблема. Очень зависит от множества вещей, которые мы не можем предсказать. Самый простой экземпляр: есть ли какие-либо смещения выбора, в которых у записей отсутствуют поля? Откуда вы знаете? Что вы можете с этим поделать? Доступны ли прокси-индикаторы? И так далее ... – dmckee

+1

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

ответ

7

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

несколько методов, которые можно использовать (подробнее post on my blog):

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

  2. Используйте глобальную константу для заполнения отсутствующих значений. Как «неизвестно», «нет» или минус бесконечность. Это используется, потому что иногда просто не имеет смысла пытаться предсказать недостающее значение. Например, если у вас есть БД, если, скажем, кандидаты в колледж и состояние проживания отсутствуют для некоторых, их заполнение не имеет смысла ...

  3. Использовать атрибут mean. Например, если средний доход семьи США равен X, вы можете использовать это значение для замены отсутствующих значений дохода.

  4. Использовать атрибут mean для всех образцов, принадлежащих к одному классу. Допустим, у вас есть калькулятор цен на автомобили, который, среди прочего, классифицирует автомобили на «Luxury» и «Low budget», и вы имеете дело с отсутствующими значениями в поле затрат. Замена отсутствует стоимость роскошного автомобиля со средней стоимостью всех автомобилей класса люкс, вероятно, более точным, то значение, которое вы хотите получить, если вы фактор в малобюджетных автомобилей

  5. Использование алгоритма интеллектуального анализа данных для прогнозирования значения. Значение может быть определено с использованием методов регрессии, основанных на выводах, с использованием формализма Baysian, деревьев решений, алгоритмов кластеризации, используемых для генерации ввода для шагового метода # 4 (K-Mean \ Median и т. Д.) Я бы предложил сначала изучить деревья регрессии и решения (Генерация дерева ID3), поскольку они относительно легки, и в сети есть множество примеров.

Что касается пакетов, если вы можете себе это позволить, и вы в мире взгляд Microsoft на SQL Server Analysis Services (SSAS для краткости), которые реализуют большинство из указанных выше.

Вот некоторые ссылки на свободный Minning данных программных пакетов:

Хотя не C# он очень хороший интро на деревья решений и обучение в байесовском режиме (с использованием Ruby): http://www.igvita.com/2007/04/16/decision-tree-learning-in-ruby/ http://www.igvita.com/2007/05/23/bayes-classification-in-ruby/

Там же эта библиотека Руби, что я считаю очень полезным (и для целей обучения): http://ai4r.rubyforge.org/machineLearning.html

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

Отредактировано:

Забыли это в моей должности. Это обязательно ДОЛЖНО ИМЕТЬ, если вы играете с интеллектуальным анализом данных ... Загрузить Microsoft SQL Server 2008 Data Mining Add-ins for Microsoft Office 2007 (для этого нужны службы анализа SQL Server - SSAS - это не бесплатно, но вы можете скачать пробную версию).

Это позволит вам легко играть и тестировать различные техники в Excel, прежде чем идти и реализовать это.Опять же, поскольку вы находитесь в экосистеме Microsoft, вы даже можете решить использовать решение на основе SSAS и рассчитывать на ребята из SQL Server, чтобы сделать это для ya :)

2

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

Пожалуйста, посмотри на этом алгоритме http://arxiv.org/abs/math/0701152

В настоящее время Microsoft SQL Server Analysis Services 2008 также поставляется с алгоритмами, как эти http://technet.microsoft.com/en-us/library/ms175312.aspx, которые помогают в прогнозном моделировании атрибутов.

веселит

+0

Ницца. Но, как представляется, бумага делает неявное предположение о том, что смещения выбора нет. Или я что-то пропустил? – dmckee

6

Это меньше алгоритмические и более философского и методологического вопрос. Есть несколько различных методов, доступных для решения такого рода вопросов. Acock (2005) дает хорошее введение в некоторые из методов. Хотя может показаться, что есть много математики/статистики (и может показаться, что это много усилий), стоит подумать, что произойдет, если вы испортите. блог

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

Надеется, что это помогает.


набекрень (2005)

блог

http://oregonstate.edu/~acock/growth-curves/working%20with%20missing%20values.pdf

Эндрю Гельмана

http://www.stat.columbia.edu/~cook/movabletype/mlm/

Смежные вопросы