Точность знания

Каждый ученик знает, что законы природы могут быть описаны математическими зависимостями, связывающими численные значения тех или иных величин. Заметим, что при вычислениях мы всегда используем конечные десятичные или обыкновенные дроби, являющиеся представлением рациональных чисел. Следовательно, в силу принципиальных ограничений нашего способа вычислений мы не можем работать с иррациональными числами. 05_01.jpg Это — первый источник ошибок, если не принимать во внимание ограниченную точность, с которой известен сам закон. Второй источник — экспериментальные погрешности. Таким образом, мы должны отдавать себе отчет в том, что наши описания и наше знание как таковое являются не точными, а лишь приближенными, и вопрос о работе с неточными данными является ключевым. Анализ "качества" приближения дает математическая статистика. Получение самих приближений — задачи аппроксимации и интерполяции. Эти задачи естественным образом связаны c представлением данных в графическом виде.

Представление данных

В самых различных областях науки и техники принято представлять данные в виде графиков, поверхностей, годографов. Это неудивительно: именно так человек воспринимает функциональные зависимости. Получаемые в эксперименте или взятые из справочников значения величин зачастую характеризуются заметным разбросом, и ряды таких значений требуется преобразовать в гладкие зависимости. 05_02.jpg Использование таблиц связано с необходимостью интерполяции. Задачи, при решении которых мы имеем дело с несколькими значениями, интерполированными на калькуляторе или вручную, по большей части уже решены. Более сложные задачи, в которых интенсивно используются таблицы значений величин, чаще всего встречаются сегодня в практике исследователя. Если расчет делается однократно, за один проход программы, то можно работать с таблицей, которая хранится на диске. В случае интенсивных многократных (итерационных) вычислений таблицу приходится хранить в оперативной памяти, что может оказаться неэффективным, если таблица большая. Очень большая таблица может вообще не уместиться в памяти. И тогда интерполяция либо аппроксимация становятся общим решением проблемы.

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

Подводные камни

Интерполяция более чем десяти значений практически непригодна, так как усложнение быстро приводит к потере устойчивости, и вместо часто ожидаемой гладкой, медленно меняющейся зависимости, получается сильно извивающаяся кривая. Примерно те же сложности есть и в аппроксимации. Очевидно, что при прочих равных условиях сложность аппроксимирующей зависимости будет ниже, чем у интерполирующей, так как первая не обязана точно попадать в узловые точки. Линейная или квадратичная полиномиальная аппроксимация может в ряде случаев хорошо описывать массив из более чем двух или трех точек, причем число точек может быть велико. 05_03.jpg Если при аппроксимации закон "угадан" (или был известен заранее) точно, то погрешность в приближении узлов может быть крайне мала. К несчастью, очень часто закон заранее неизвестен или слишком сложен для вычисления. Все экспериментальные данные можно условно разделить на "хорошие" и "плохие". Хорошие данные отличаются друг от друга в пределах порядка и не имеют особенностей. Плохие могут содержать слишком большие значения производных, изменяться на несколько порядков. Примером плохих данных является S-образная зависимость, у которой производная терпит разрыв в точке перегиба.

АППРОКСИМАЦИЯ (от лат. approximo – приближаюсь), замена одних математических объектов (например, чисел или функций) другими, более простыми и в том или ином смысле близкими к исходным (например, кривых линий близкими к ним ломаными).
ИНТЕРПОЛЯЦИЯ (от лат. interpolatio – изменение, переделка), в математике и статистике отыскание промежуточных значений величины по некоторым известным ее значениям. Например, отыскание значений функции f(x) в точках x, лежащих между точками xo

"Универсальная энциклопедия Кирилла и Мефодия"
(адрес сервера в сети Интернет www.km.ru).


Аппроксимация плохих данных может быть выполнена, если выбрана удачная система функций. Для нашего примера S-образной зависимости такой функцией может быть арктангенс. Изменение функции более чем на порядок приводит к низкой точности аппроксимации в области малых значений, если только не были предприняты попытки добиться низкой относительной, а не абсолютной погрешности. Уменьшить динамический диапазон (область значений) можно логарифмированием. Нужно только избавиться от особенности в нуле сдвигом и/или масштабированием, аппроксимировать логарифмированные данные, а затем вернуться в исходные координаты взятием показательной функции. Если по каким-либо причинам логарифмирование нежелательно или невозможно, то остается кусочная аппроксимация, основная проблема которой — гладкая сшивка участков.

Одним из методов преодоления "плохости" данных является применение адаптивной аппроксимации, заключающейся в подборе предопределенных базисных функций по треугольнику Паскаля с последующей оптимизацией по дисперсии. Этот метод был развит Владимиром Устиновичем Сидыгановым, создавшим широко известную карту-модель Москвы, и реализован в виде программы Approx (Simple Formula). В некотором спекулятивном смысле она позволяет "угадать" закон, описывающий данные. Автор не поддерживает эту программу и предоставляет ее бесплатно.

Субъективизм и объективность

Иногда оптимальная в смысле наименьших квадратов или модулей аппроксимация выглядит неудовлетворительной. Например, если зависимость должна точно "выходить из нуля", то это достигается применением методов аппроксимации, допускающих взвешивание точек. Если среднеквадратическое отклонение составляет порядка 0,001, то нулю в таком примере можно приписать большой вес – скажем, 1000. К сожалению, взвешивание может сильно "испортить" поведение аппроксимации вдали от нуля – как в смысле дисперсии, так и по внешнему виду (например, могут возникнуть нежелательные перегибы). Полиномиальная аппроксимация, часто применяемая из-за ее простоты, нередко удовлетворяет статистическим критериям, но не выдерживает критики исследователя. Дело в том, что интуиция человека накладывает дополнительные ограничения, не учитываемые программами аппроксимации. Пытаясь заставить кривую проходить "так, как надо", исследователь подбирает веса для точек, внося невероятный и не поддающийся количественной характеризации субъективизм. Часто появляется желание уточнить аппроксимацию, добавляя к ней дополнительные функции. Это удается сделать только в случае аппроксимации отрезками рядов Фурье или еще более сложными методами.

Некоторые из таких методов практически полностью исключают субъективизм в выборе функций из заданного набора. Тем не менее остается проблема произвольного взвешивания точек и выбора исходного функционального базиса. Часто оказывается, что точек мало, а разбросы велики, и значимого отличия от линейной зависимости в смысле критерия Фишера нет. Чтобы заставить программу адекватно реагировать на интуицию пользователя, приходится назначать большой вес хотя бы одной точке, или изменить порядок добавления функций в базисе. Все это, конечно, не слишком хорошо. По-видимому, до сих пор не существует ни одного способа получить объективную аппроксимацию, если не известен закон, описывающий экспериментальные (табличные) данные. Под законом здесь может также пониматься априорное знание о базисе аппроксимации.

Сплайны и их укрощение

Проведение линии через заданные точки или вблизи этих точек, выполняемое с помощью набора кривых, гладко переходящих друг в друга (сплайнов), является одним из широко используемых способов аппроксимации и интерполяции. 05_04.jpg Сплайны действительно способны обеспечить хорошее приближение данных, представляемых в виде графика. Однако объем коэффициентов сплайн-интерполяции может превышать объем исходных данных, и затраты времени процессора на работу со сплайнами могут оказаться весьма велики при необходимости их циклического использования в программах. Многие программные пакеты, горделиво предлагающие наборы сплайнов для приближения данных, используют их весьма неаккуратно: между точками часто появляются гладкие ступеньки или даже сильно извивающиеся петли, производная в крайних точках не та, которую диктует физический смысл... Оказывается, что правильное поведение на краях требует модификации метода интерполяции (аппроксимации) сплайнами, а для исключения петлеобразования требуется строить приближения сплайнами для xn и yn отдельно (n — номер точки), рассчитывать интерполированные значения Xm и Ym (m = kn, где 0 < k < 1 — коэффициент превышения числа интерполированных точек над исходными) и строить Y(X) исключением m: Y(X) = Ym(Xm). Этот нехитрый, хотя и ресурсоемкий прием позволяет добиться фантастических по качеству результатов.

Поверхности

Мы видим, что даже одномерное приближение — непростая задача. Что делать в случае двумерных зависимостей? Если известен закон — проблемы нет, а если он не известен? Самый простой способ — применение линейных и квадратичных форм: z = ax + by и z = ax2 + by2 + cxy + dx + ey. На этот случай легко обобщаются методы одномерной аппроксимации, требующие только значений аппроксимирующих функций, а не значений переменных. Как видно, к проблемам объективности одномерной аппроксимации добавляется волюнтаризм выбора формы зависимости z(x,y).

Проблема большого шума

05_05.jpg Если в эксперименте уровень шума достигал 50% и более, то такие данные требуется предварительно отфильтровать (в том случае, когда применяемый метод аппроксимации сам этого не делает). Один из самых простых способов фильтрации — усреднение. Это может быть и усреднение результатов параллельных опытов, и скользящее среднее, и имитация фильтра верхних частот (данные рассматриваются как некий сигнал). Последнее портит и сами данные. Это нужно для того, чтобы не аппроксимировать шум. Кстати, в современных исследованиях шум зачастую несет больше информации, чем основная тенденция развития процесса (тренд), поэтому фильтрация и усреднение в этом случае противопоказаны. Если уровень шума составляет 100% и более, а его спектр достаточно широк, то справиться с ним будет непосильной задачей для любого фильтра. Можно попытаться применить спектральный анализ в надежде исключить резонансные частоты в шумовой области и восстановить сигнал в фильтрованном виде. Чаще всего это не выйдет, так как характеристики и сигнала, и шума нестационарны.

Анализ нестационарных сигналов можно провести с использованием оконного преобразования Фурье. Речь идет о "рассматривании" данных через окно заданной ширины, примерно равной (по теореме Котельникова-Найквиста) двойке, деленной на максимальную частоту. Такое окно двигают вдоль абсциссы по всей области определения данных. Оконное преобразование имеет один существенный недостаток, связанный с соотношением неопределенности Гейзенберга: невозможно одновременно получить хорошее разрешение по частоте и координате. Этот недостаток преодолевается вейвлет-преобразованием.

Термин "вейвлет" означает "маленькая волна". Вейвлет представляет собой масштабное преобразование и сдвиг вдоль абсциссы некой исходной функции, называемой "материнским вейвлетом":

y(x,a,b) = f(t – b)

Вейвлет-преобразование аналогично преобразованию Фурье, но в результате получается двумерная зависимость C(a,b). Параметры этой зависимости (a — масштаб, b — смещение), имеют смысл обратной частоты (ширина окна) и координаты (x). С некоторой натяжкой C(a,b) можно назвать спектрограммой. Благодаря изменению параметра a удается преодолеть неопределенность Гейзенберга. Дискретным вейвлет-преобразованием называется такое вейвлет-преобразование, в котором a принимает значения, равные степеням двойки. В этом случае само преобразование сводится к древовидному фильтру верхних и нижних частот и чрезвычайно эффективно рассчитывается. Оказывается, применение дискретного вейвлет-преобразования, несмотря на грубую сетку значений a, позволяет очень точно воспроизвести исходный сигнал, даже если диапазон a не слишком велик. Подавляя малозначащие C(a,b) на каждом масштабе a, можно отфильтровать сигнал с поразительной селективностью. Иногда это можно сделать автоматически, но иной раз требуется интерактивный подбор уровней значимости (порогов). В отличие от традиционных алгоритмов фильтрации прямое и обратное дискретное вейвлет-преобразование с пороговыми ограничениями (thresholding) не портит основной сигнал, даже если уровень шума больше 100%. Изменяя величину порога на разных масштабах, можно визуализировать или подавить практически с любой степенью приближения особенности сигнала: импульсы, скачки, колебания с различными частотами. При этом тренд сохраняется. Выбор вейвлета — дело искусства и навыка. Специалисты даже разрабатывают свои вейвлеты для конкретных целей. Так, вейвлет Хаара (Haar) — ступенька — чувствует, то есть хорошо выделяет, переключения, а вейвлет Добечи (Daubechies) с большим числом нулевых моментов — разные особенности в широком интервале частот. Главная черта любого вейвлета — ограниченность его области определения. Отметим, что кроме выбора вейвлета есть еще проблема "конуса влияния", заключающаяся в том, что резко начинающийся или обрывающийся сигнал (наличие постоянной составляющей, отличной от нуля на краях его области определения) воспринимается как особенность (скачок), вносящая заметный вклад в прилегающих областях (a,b). Характер реакции на разрыв производной — клинообразное возрастание C(a,b) по абсолютной величине. Если отличие от нуля постоянной составляющей у каждой границы области определения численно равно примерно половине ее протяженности, то вместо сигнала вейвлет-анализ будет интерпретировать эти скачки при всех b, то есть вклад скачков в C(a,b) будет значителен по сравнению с вкладом сигнала или даже больше последнего.

Существуют статистические методы оценки конуса влияния. Чтобы избавиться от этого неприятного эффекта, нужно вычесть значение на одном из его концов (например, на левой границе), а значение на другом продолжить вдоль абсциссы на ширину области определения. В этом случае конус влияния никогда не дойдет до области определения сигнала. Разумеется, значения C(a,b) при b от xмакс до xмакс + xмин ([xмин,xмакс] — область определения данных) следует исключить. После восстановления данных с помощью обратного преобразования нужно не забыть прибавить значение на левой границе.

Возможность выделить тренд на фоне мощного шума позволяет центрировать исходные данные путем его вычитания. Анализ центрированных данных дает более отчетливую информацию как о шуме, так и о прочих особенностях изучаемого процесса. Так оказывается, что фильтрация, уничтожающая информацию о шуме и особенностях, бывает весьма полезна именно для более подробного извлечения знаний о них. Вейвлет-анализ может быть выполнен с помощью свободно распространяемого пакета WaveLab для MatLab 4.x, wavelet-пакета для MatLab 5.x (MatLab – коммерческая программа), есть программы на Фортране-77, Фортране-90 и Cи в Интернете, распространяемые свободно.

Итог

Приближение данных — непростая и плохо формализуемая задача, поэтому вряд ли в ближайшее время можно будет говорить об автоматических процедурах интерполяции или аппроксимации. Большие массивы данных требуют при использовании вейвлет-анализа достаточно большого объема вычислительной работы, поэтому применяемый компьютер должен иметь достаточно оперативной памяти и высокое быстродействие. Использование тех или иных методов интерполяции или аппроксимации требует тщательного обоснования, так как оно обусловлено как типом данных, так и целью приближения. Аппроксимацию выполняют программные пакеты MatLab, Mathematica, MathCAD, Grapher, Approx, Origin и многие другие. Выбор тех или иных средств остается за пользователем.

КОРОТКО ОБ АВТОРЕ:
Голуб Михаил — кандидат технических наук, научный сотрудник лаборатории стабильных изотопов кафедры физической химии Химического факультета МГУ,
Email: golub@aha.rugolub@physch.chem.msu.su,
http://www.aha.ru/~golub.