375
исходных данных, такие методы называются робастными (robust
regression) [5].
В отличие от классических матричных алгоритмов, применяемых
для процедуры МНК, технологии робастной регрессии не допускают
столь очевидного способа распараллеливания. В общем случае они
основаны на решении задачи поиска минимума нелинейной
многомерной функции, ресурсоемкость вычисления которой как
минимум линейно зависит от объема выборочных данных.
В
работе предлагаются параллельные алгоритмы для нескольких
видов робастной регрессии. Рассматриваются метод наименьших
абсолютных значений (MHAЗ, или
L-регрессия), метод наименьшей
медианы квадратов (МНМК), метод наименьших усеченных квадратов
(МНУК). В общем случае все эти методы сводятся к задаче глобальной
оптимизации функционала, который вычисляется (на основе операции
сортировки), используя вариационный ряд значений невязки.
Для решения задачи оптимизации был выбран алгоритм
рекурсивного случайного поиска (РСП, recursive random search) [6]. Он
состоит из двух вложенных
процедур: изучение (exploration) области, в
которой функционал может принимать минимальное значение, и
эксплуатация (exploitation), или собственно поиск локального
минимума в заданной области. Процедура эксплуатации может быть
проведена независимо на различных областях данных. Как следствие,
вычислительный алгоритм робастной регрессии допускает, как
минимум, два способа параллельной декомпозиции:
распараллеливание процедуры случайного поиска, когда нужно
вычислить
значения целевой функции в нескольких точках, или
непосредственное распараллеливание вычисления значения целевой
функции (процедуры сортировки).
Эксперименты, выполненные на системах с общей памятью,
показали, что распараллеливание процедуры случайного поиска
привносит значительный выигрыш в производительность
(параллельная эффективность 80-90%). В то же время
распараллеливание процедуры расчета целевой функции (быстрая
сортировка [7]) дает существенно меньший эффект (25-30%).
Это
обусловливается тем, что в ходе выполнения программы в процессе
вычисления целевой функции многократно осуществляется переход из
последовательного режима выполнения в параллельный. При
использовании инструментария
OpenMP это требует дополнительных
затрат по времени на порождение и синхронизацию потоков.