Существует ли известная общая таблица статистических методов, объясняющих, как они масштабируются в зависимости от размера и размера выборки? Например, мой друг сказал мне на днях, что время вычисления простой быстрой сортировки одномерных данных размера n равно n * log (n).
Так, например, если мы регрессируем y против X, где X - это d-мерная переменная, то идет ли она как O (n ^ 2 * d)? Как оно масштабируется, если я хочу найти решение с помощью точного решения Гаусса-Маркова по сравнению с численным методом наименьших квадратов методом Ньютона? Или просто получить решение против использования значимых тестов?
Я думаю, что мне больше нужен хороший источник ответов (например, статья, в которой обобщается масштабирование различных статистических методов), чем хороший ответ здесь. Как, скажем, список, который включает масштабирование множественной регрессии, логистической регрессии, PCA, регрессии пропорционального риска Кокса, кластеризации K-средних и т. Д.
источник
Ответы:
Большинство эффективных (и не тривиальных) статистических алгоритмов по своей природе итеративны, поэтому анализ наихудшего случая не
O()
имеет значения, так как наихудший случай - «он не сходится».Тем не менее, когда у вас много данных, даже линейные алгоритмы (
O(n)
) могут быть медленными, и вам нужно сосредоточиться на постоянной «скрытой» за нотацией. Например, вычисление дисперсии одного варианта наивно выполняется путем сканирования данных дважды (один раз для вычисления оценки среднего, а затем один раз для оценки дисперсии). Но это также можно сделать за один проход .Для итерационных алгоритмов, что более важно, это скорость сходимости и количество параметров как функция размерности данных, элемент, который сильно влияет на сходимость. Многие модели / алгоритмы увеличивают количество параметров, которое экспоненциально зависит от количества переменных (например, сплайнов), в то время как некоторые другие растут линейно (например, машины опорных векторов, случайные леса, ...)
источник
O(log(n) )
.Вы упомянули регрессию и PCA в названии, и для каждого из них есть определенный ответ.
Асимптотическая сложность линейной регрессии сводится к O (P ^ 2 * N), если N> P, где P - число признаков, а N - количество наблюдений. Подробнее о сложности вычисления операции наименьших квадратов .
Vanilla PCA - это O (P ^ 2 * N + P ^ 3), как в алгоритме Fastest PCA для многомерных данных . Однако существуют быстрые алгоритмы для очень больших матриц, объясненные в этом ответе и « Лучший алгоритм PCA для огромного числа функций?» ,
Однако я не думаю, что кто-то составил один освещенный обзор или справочник или книгу по этому вопросу. Не может быть плохим проектом для моего свободного времени ...
источник
Я дал очень ограниченный частичный ответ для пакета подтверждающего факторного анализа, который я разработал для Stata в этой статье в Stata Journal, основываясь на времени фактического моделирования. Подтверждающий факторный анализ был реализован как метод оценки максимального правдоподобия, и я очень легко видел, как время вычисления росло с каждым измерением (размер выборки
n
, количество переменныхp
, количество факторовk
). Поскольку это сильно зависит от того, как Stata думает о данных (оптимизированных для вычисления по столбцам / наблюдениям, а не по строкам), я обнаружил, что производительностьO(n^{0.68} (k+p)^{2.4})
где 2.4 - самая быстрая асимптотика обращения матриц (и это чертовски много в итеративном максимизации подтверждающего факторного анализа). Я не дал ссылку на последнее, но я думаю, что я получил это из Википедии .X'X
источник