Alasan utama mengapa gradient descent digunakan untuk regresi linier adalah kompleksitas komputasi: ini lebih murah secara komputasi (lebih cepat) untuk menemukan solusi menggunakan gradient descent dalam beberapa kasus.
Rumus yang Anda tulis terlihat sangat sederhana, bahkan secara komputasi, karena hanya berfungsi untuk kasus univariat, yaitu ketika Anda hanya memiliki satu variabel. Dalam kasus multivarian, ketika Anda memiliki banyak variabel, rumusnya sedikit lebih rumit di atas kertas dan memerlukan lebih banyak perhitungan saat Anda menerapkannya dalam perangkat lunak:
Di sini, Anda perlu menghitung matriks kemudian membalikkannya (lihat catatan di bawah). Ini perhitungan yang mahal. Untuk referensi Anda, matriks (desain) X memiliki kolom K + 1 di mana K adalah jumlah prediktor dan N baris pengamatan. Dalam algoritma pembelajaran mesin, Anda bisa mendapatkan K> 1000 dan N> 1.000.000. The matriks itu sendiri memerlukan sedikit waktu untuk menghitung, maka Anda harus membalikkanX ′ X X ′ X K × K
β=(X′X)−1X′Y
X′XX′XK×K matrix - ini mahal.
Jadi, gradient descent memungkinkan untuk menghemat banyak waktu dalam perhitungan. Selain itu, cara itu dilakukan memungkinkan untuk paralelisasi sepele, yaitu mendistribusikan perhitungan di beberapa prosesor atau mesin. Solusi aljabar linier juga dapat diparalelkan tetapi lebih rumit dan masih mahal.
Selain itu, ada versi gradient descent ketika Anda hanya menyimpan sepotong data di memori, menurunkan persyaratan untuk memori komputer. Secara keseluruhan, untuk masalah ekstra besar, ini lebih efisien daripada solusi aljabar linier.
Ini menjadi lebih penting ketika dimensi meningkat, ketika Anda memiliki ribuan variabel seperti dalam pembelajaran mesin.
Komentar . Saya terkejut dengan betapa banyak perhatian diberikan pada gradient descent dalam kuliah Ng. Dia menghabiskan banyak waktu untuk membicarakannya, mungkin 20% dari keseluruhan saja. Bagi saya ini hanya detail implementasi, ini tepatnya bagaimana Anda menemukan yang optimal. Kuncinya adalah dalam merumuskan masalah optimisasi, dan bagaimana tepatnya Anda menemukannya tidak penting. Saya tidak akan terlalu khawatir tentang itu. Serahkan pada orang-orang ilmu komputer, dan fokus pada apa yang penting bagi Anda sebagai ahli statistik.
Setelah mengatakan ini saya harus memenuhi syarat dengan mengatakan bahwa memang penting untuk memahami dengan kompleksitas komputasi dan stabilitas numerik dari algoritma solusi. Saya masih tidak berpikir Anda harus tahu detail implementasi dan kode algoritma. Ini bukan penggunaan waktu terbaik Anda sebagai ahli statistik.
Catatan 1 . Saya menulis bahwa Anda harus membalikkan matriks untuk tujuan didaktik dan bukan bagaimana biasanya Anda menyelesaikan persamaan. Dalam praktiknya, masalah aljabar linier diselesaikan dengan menggunakan beberapa jenis faktorisasi seperti QR, di mana Anda tidak secara langsung membalikkan matriks tetapi melakukan beberapa manipulasi yang setara secara matematis lainnya untuk mendapatkan jawaban. Anda melakukan ini karena inversi matriks adalah operasi yang mahal dan tidak stabil dalam banyak kasus.
Ini memunculkan sedikit keuntungan lain dari algoritma gradient descent sebagai efek samping: ia bekerja bahkan ketika matriks desain memiliki masalah collinearity. Jalur aljabar linier biasa akan meledak dan gradient descent akan terus berjalan bahkan untuk prediktor collinear.