Saya memiliki dua implementasi berbeda ridge
di MATLAB. Hanya satu
(seperti yang terlihat di halaman regresi ridge Wikipedia ), dengan menjadi matriks identitas kolom ukuran () kolom (), dan
Saya hanya memanggil "punggungan" Matlab dengan
x = ridge(A, b, lambda)
Masalah saya adalah keduanya menghasilkan hasil yang berbeda. (1) mengembalikan hasil yang saya inginkan (saya tahu ini dengan membandingkan hasil dengan orang lain) tetapi mengapa (2) tidak mengembalikan hasil yang sama?
Matriks saya jarang, diisi dengan 1% 1 dan 99% 0. Beberapa kolom mengandung hampir no 1. Perbedaan terbesar tampaknya adalah bahwa koefisien untuk kolom tersebut dengan sangat sedikit 1 sangat dekat dengan 0 in (1), tetapi bisa sangat jauh dari 0 in (2)
Adakah yang tahu mengapa ini berbeda dan bagaimana saya bisa memodifikasi panggilan di (2) untuk memberikan hasil yang sama seperti (1)?
ridge
. Anda tidak perlu melakukan apa pun untuk melakukannya.
ridge
(sesuai dokumentasi MATLAB) menunjukkan bahwa (sebagai standar): Secara default, b dihitung setelah berpusat dan skala prediktor untuk memiliki mean 0 dan standar deviasi 1. Model tidak menyertakan suku konstanta, dan X tidak boleh berisi kolom 1s. .