почему градиентный спуск, когда мы можем решить линейную регрессию аналитически


в чем преимущество использования градиентного спуска в пространстве линейной регрессии? похоже, что мы можем решить проблему (найти theta0-n, что минимизирует стоимость func) с помощью аналитического метода, поэтому почему мы все еще хотим использовать градиентный спуск, чтобы сделать то же самое? спасибо

4 63

4 ответа:

при использовании нормальных уравнений для решения функции стоимости аналитически вы должны вычислить:

enter image description here

где X-матрица входных наблюдений, а y-выходной вектор. Проблема с этой операцией заключается во временной сложности вычисления обратной матрицы nxn, которая равна O (n^3), и по мере увеличения n может занять очень много времени.

когда n низкий (n Градиентного Спуска намного быстрее, так что единственная причина-это время :)

вы должны предоставить более подробную информацию о проблеме yout - о чем именно вы спрашиваете - мы говорим о линейной регрессии в одном или многих измерениях? Простые или обобщенные?

В общем, почему люди используют GD?

  • это легко реализовать
  • это очень общий метод оптимизации - даже если вы измените свою модель на более общую, вы все равно можете ее использовать

Так что насчет аналитических решений? Ну, мы do используйте их, ваше утверждение здесь просто ложно (если мы говорим вообще), например OLS метод представляет собой замкнутую форму, аналитическое решение, которое широко используется. Если вы можете использовать аналитическое решение, оно доступно вычислительно (так как иногда GD просто дешевле или быстрее), то вы можете и даже должны его использовать.

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

подводя итог, вы скорее используете GD над аналитическим решением, если:

  • вы рассматриваете изменения в модели, обобщения, добавление некоторых более сложных терминов / регуляризация / модификации
  • вам нужен универсальный метод, потому что вы мало знаете о будущем кода и модели (вы только один из разработчиков)
  • аналитическое решение дороже вычислительно, и вам нужна эффективность
  • аналитическое решение требует больше памяти, которой у вас нет
  • аналитическое решение трудно реализовать, и вам нужен простой, простой код

Я видел очень хороший ответ от https://stats.stackexchange.com/questions/23128/solving-for-regression-parameters-in-closed-form-vs-gradient-descent

в основном, причинами являются:

1.Для большинства задач нелинейной регрессии не существует решения в замкнутой форме.

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

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