Градиентный спуск против функции lm () в R?


14

Я просматриваю видео в бесплатном онлайн-курсе Эндрю Нг по машинному обучению в Стэнфорде. Он рассматривает Gradient Descent как алгоритм для решения функций линейной регрессии и записи в Octave для его выполнения. Предположительно я мог бы переписать эти функции в R, но мой вопрос в том, разве функция lm () уже не дает мне вывод линейной регрессии? Зачем мне писать свою собственную функцию градиентного спуска? Есть ли какое-то преимущество или это чисто учебное упражнение? Lm () делает градиентный спуск?


Я думаю, что вам может понадобиться реализовать градиентный спуск самостоятельно на другом языке в тех случаях, когда нет хорошего решения в R (например, некоторая вариация регрессии, например, регуляризованная регрессия с большими данными)
Маноэль Галдино

Ответы:


20

Градиентный спуск - довольно плохой способ решения задачи линейной регрессии. lm()Функция в R внутренне использует форму QR - разложения , которая является значительно более эффективным. Тем не менее, градиентный спуск - это, как правило, полезный метод, который стоит ввести в этом простом контексте, чтобы было понятнее, как применять его в более сложных задачах. Если вы хотите реализовать свою собственную версию в качестве учебного упражнения, это стоит сделать, но lm()это лучший выбор, если все, что вам нужно, это инструмент для линейной регрессии.


@ Martin Может ли lm () быть еще лучше, если у нас много функций?
user2626445 25.02.16

0

Причина, по которой онлайн градиент полезен для больших масштабов приложений. В любом случае, теперь есть библиотеки, которые реализуют это, так что вам не нужно его программировать. Это хороший способ узнать, как все работает.

В словах Леона Ботту:

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

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

Анализ показывает четкие компромиссы в случае небольших и крупных проблем обучения. Мелкомасштабные проблемы обучения являются предметом обычного компромиссного подхода к оценке. Крупномасштабные проблемы обучения являются предметом качественно другого компромисса, включающего вычислительную сложность лежащих в основе алгоритмов оптимизации нетривиальными способами. Например, алгоритмы стохастического градиентного спуска (SGD), по-видимому, являются посредственными алгоритмами оптимизации и, тем не менее, показывают, что они очень хорошо справляются с крупномасштабными задачами обучения.

Масштабное обучение

проект sgd

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.