2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Заполнение пропусков в матрице данных
Сообщение19.09.2008, 15:41 


30/10/06
33
Задача такова. Имеется матрица (m x n) каких-то экспериментальных данных (действительные числа), в которой имеются незаполненные (пустые) клетки. Число пустых мест не превышает 5% от общего числа элементов, а то и того меньше. Можно считать, что число пропусков не превышает разности n-m. Требуется заполнить эти пропуски, руководствуясь соображениями "максимального правдоподобия" :-). Хотелось бы, чтобы после заполнения пустых мест собственные значения матрицы оставались теми же самыми, что и у матрицы, полученной из данной путем вычеркивания всех "плохих" столбцов (по длинному n), в которых содержатся пустоты.
Нужно описание алгоритма и исходники его реализации на каком-нибудь языке програмирования. Готовые пакеты типа SPSS Missing Value Analysis, которые делают это "так, не знаю как" не предлагать. Путь лучше это будет простой и понятный алгоритм, чем черезчур сложный, но претендующий на высокое качество.
Было бы просто идеально, если бы процедуру заполнения пустых клеток можно было реализовать постредством стандарных матричных операций типа библиотеки MatLab сразу для всей матрицы, а не куча пошаговых манипуляций для каждой пропущенной клеточки. И уж совершенно не годятся алгоритмы нахождения "среднего арифметического" ближайших соседей. Подразумевается, что ранг исходной матрицы не слишком велик, а потому она в числовом отношении обладает достаточной избыточностью, чтобы ее отдельные элементы были предсказуемыми.
В практическом отношении интересует приложение алгоритма к заполнению пропусков, возникающих из-за зашкала оцифровывающего инструмента (аналого-цифрового преобразователя), когда тот показывает максимально возможное для него число, поскольку измеряемая величина упирается в потолок его возможностей.

 Профиль  
                  
 
 
Сообщение19.09.2008, 16:45 
Заслуженный участник
Аватара пользователя


01/08/06
3128
Уфа
Oam писал(а):
Хотелось бы, чтобы после заполнения пустых мест собственные значения матрицы оставались теми же самыми, что и у матрицы, полученной из данной путем вычеркивания всех "плохих" столбцов (по длинному n), в которых содержатся пустоты.

Мне не совсем понятно, как определяются собственные значения неквадратной матрицы.

 Профиль  
                  
 
 
Сообщение19.09.2008, 16:46 


30/10/06
33
worm2 писал(а):
Мне не совсем понятно, как определяются собственные значения неквадратной матрицы.

Так называемым SVD или сингулярным разложением.

 Профиль  
                  
 
 
Сообщение20.09.2008, 03:08 


25/01/06
102
Цитата:
...чем черезчур сложный, но претендующий на высокое качество


А как будет измеряться качество заполнения "пустот"?

 Профиль  
                  
 
 
Сообщение20.09.2008, 10:31 


30/10/06
33
Igor Borovikov писал(а):
А как будет измеряться качество заполнения "пустот"?


Это вопрос обсуждаемый. Если уже имеются алгоритмы заполнения, то скорее всего какое-то сносное качество они обеспечивают. Скорее всего и мне бы оно подошло, т.к. черезчур высоких претензий я к этой задаче не предъявляю. Ваш вопрос больше похож на ответ нищему, который просит у вас кусок хлеба, а вы его допрашиваете, какие по каким критериям тот станет оценивать качество хлеба, который просит. Может статься, что нищий с голода помрет, пока вы дотошно будете выяснять его вкусовые предпочтения.
Но раз уж зашел разговор о качестве, то продемонстрирую на ... одномерном варианте задачи. Положим, что это была бы не матрица, а одномерный вектор. Т.е. некоторая последовательность чисел, в середине которой имеется пропуск, который требуется заполнить. Вы тесты на IQ когда-нибудь проходили? :-) Там, между прочим, встречаются точно такие же задачки.
Мой критерий качества - ЛИНЕЙНЫЙ, т.е. я предполагаю, что раз вектор имеет ранг 1 (из-за того, что его можно рассматривать как частный случай матрицы 1 x n), то оценкой качества заполняемой клетки в данном случае примитивная одномерная линейная регресия. Т.е. для этого случая самым "качественным" с моей точки зрения результатом было бы то значение, которое давала линейная апроксимация этого ряда точек. Легко видеть, что всякое иное значение для пропущенного элемента увеличивало бы невязку линейной регрессионной задачи. Т.е. критерий качества хотелось бы иметь именно линейный, несмотря на то, что реальные последовательности бывают прогрессиями и даже более сложными нелинейными случаями.
Хотелось бы сохранить ЛИНЕЙНУЮ оценку и для случая матрицы. Только, естественно, тут уже должна быть не одномерная регрессия, а многомерная, под стать ее рангу.

 Профиль  
                  
 
 
Сообщение21.09.2008, 21:19 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Посмотрите в книге

Little R.J.A., Rubin D.B. — Statistical analysis with missing data

Вообще много чего можно нарыть в статьях по ключевым словам "missing data".

 Профиль  
                  
 
 
Сообщение03.10.2008, 19:52 


01/03/06
26
Ищите по ключевы словам геостатистика, гриддинг.

Чаще всего пропуски заполняются с использованием того или иного скользящего фильтра, т.е. следующим образом:
задается фильтр - некое скользящее окно - матрица размером скажем 3x3 или 5x5 или 101x101 в ячейках которой задаются веса.
Далее центр окна помещается в ячейку с пропуском, остальные ячейки окна попадают на известные значениях исходной матрицы. Далее взвешиваем и усредняем, т.е. домножаем значения исходной матрицы на веса, складываем все и делим на количество слагаемых.

Основной вопрос: как выбрать веса. Это дело вкуса, привычки, жизненного опыта. Можно пробовать разные варианты. Например, задать все веса = 1, или сделать вес пропорциональным какой-либо степени обратного расстояния от центральной точки фильтра.

Есть и более сложные алгоритмы, оптимизирующие тот или иной параметр, ищите в интернете ключевые слова: kriging, natural neighbor, minimum curvature, radial basis и т.п.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group