Гостевая
Форум
Разделы
Главная страница
Js скрипты
Php скрипты
Html шаблоны
Книги по Web дизайну
Статьи


Главная страница статей --> Хитрости при программировании php, заметки по базам данных

Как предотвратить превращение хранилища данных в свалку мусора

Источник: realcoding.net

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

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

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

Типы ошибок


Мы не будем рассматривать ошибки такого рода как несоответствие типов, различия в форматах ввода и кодировках. Т.е. случаи, когда информация поступает из различных источников, где для обозначения одного и того же факта приняты различные соглашения. Характерный пример такой ошибки – обозначение пола человека. Где-то он обозначается как М/Ж, где-то как 1/0, где-то как True/False. С такого рода ошибками борются при помощи задания правил перекодировки и приведения типов. Такого рода проблемы худо-бедно сегодня решаются. Нас интересуют проблемы более высокого порядка, те, которые не решаются такими элементарными способами.

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

1. противоречивость информации;
2. пропуски в данных;
3. аномальные значения;
4. шум;
5. ошибки ввода данных.

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

Противоречивость информации


Для начала нужно решить, что именно считать противоречием. Как ни странно, это задача нетривиальная. Например, пенсионную карточку в России нужно менять в случае изменения фамилии, имени, отчества и пола. Вот так! Оказывается, в том, что человек родился женщиной, а вышел на пенсию мужчиной, противоречия нет!

После того, как мы определимся с тем, что считать противоречием и найдем их, есть несколько вариантов действий.

1. При обнаружении нескольких противоречивых записей, удалять их. Метод простой, а потому легко реализуемый. Иногда этого бывает вполне достаточно. Тут важно не переусердствовать, иначе мы можем вместе с водой выплеснуть младенца.
2. Исправить противоречивые данные. Можно вычислить вероятность появления каждого из противоречивых событий и выбрать наиболее вероятный. Это самый грамотный и корректный метод работы с противоречиями.

Пропуски в данных


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

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

Аномальные значения


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

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

1. значение удаляется;
2. заменяется на ближайшее граничное значение.

Шум


Почти всегда при анализе мы сталкиваемся с шумами. Шум не несет никакой полезной информации, а лишь мешает четко разглядеть картину. Методов борьбы с этим явлением несколько.

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

Ошибки ввода данных


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

Резюме


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

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

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



Похожие статьи:
- Защита баз mdb
- Один из вариантов соглашения об именах объектов MS SQL Server
- Создание и удаление БД в MS SQL Server
- Обмен данными между Excel и MySQL
- Хранилища MySQL
- Примеры реализации Хранилищ данных предприятия
- Начинающему php программисту или как начать зарабатывать


Оглавление | Обсудить на форуме | Главная страница сайта | Карта сайта |
[0.001]