Paket perangkat lunak untuk menyelesaikan regresi linier norma L-infinity


10

Apakah ada paket perangkat lunak untuk menyelesaikan regresi linier dengan tujuan meminimalkan norma L-infinity.


Ya, setiap paket pemrograman linier akan berfungsi. Itu membuat Anda memiliki banyak pilihan. :)
kardinal

1
@ Cardinal Bagaimana Anda menyusun kembali ini sebagai program linier? Tidak jelas bagaimana melakukannya bahkan dalam kasus-kasus sepele (seperti dua titik data dan satu parameter): tidak ada kendala dan fungsi tujuan nonlinier.
whuber

Frasa kunci : pendekatan Chebyshev. (Lebih banyak untuk diikuti. Idenya adalah untuk memperkenalkan variabel tambahan kemudian mengubah tujuan menjadi kendala.)
kardinal

@ cardinal Maksud Anda yang ini: mathworld.wolfram.com/ChebyshevApproximationFormula.html Tampaknya cukup rumit.
Fan Zhang

Yah, ini sedikit terkait, tetapi tidak berhubungan dengan masalah ini. Masalah Anda dapat diselesaikan dengan LP sederhana. Begitu saya bisa sampai ke komputer, saya akan mengirim jawaban.
kardinal

Jawaban:


17

Jawaban singkat : Masalah Anda dapat dirumuskan sebagai program linier (LP), membuat Anda memilih solver LP favorit Anda untuk tugas itu. Untuk melihat cara menulis masalah sebagai LP, baca terus.

Masalah minimisasi ini sering disebut sebagai pendekatan Chebyshev .

Biarkan , dengan baris dilambangkan dengan dan . Kemudian kami berusaha untuk meminimalkan fungsi sehubungan dengan . Nyatakan nilai optimal dengan y=(yi)RnXRn×pixiβRpf(β)=yXββ

f=f(β)=inf{f(β):βRp}.

Kunci untuk menyusun kembali ini sebagai LP adalah menulis ulang masalah dalam bentuk epigraf . Tidaklah sulit meyakinkan diri sendiri bahwa, pada kenyataannya,

f=inf{t:f(β)t,tR,βRp}.

Sekarang, dengan menggunakan definisi fungsi , kita dapat menulis ulang sisi kanan di atas sebagai jadi kita melihat bahwa meminimalkan norm dalam pengaturan regresi sama dengan LP mana optimasi dilakukan lebih , dan menunjukkan vektor yang panjangnya . Saya meninggalkannya sebagai latihan (mudah) bagi pembaca untuk menyusun kembali LP di atas dalam bentuk standar.f = inf { t : - t y i - x i βt ,fkecilkan t subjek pada y - X βt 1 n

f=inf{t:tyixiβt,tR,βRp,1in},
(β,t)
minimizetsubject toyXβt1nyXβt1n,
(β,t)1nn

Hubungan dengan versi (variasi total) dari regresi linier1

Sangat menarik untuk dicatat bahwa sesuatu yang sangat mirip dapat dilakukan dengan norma . Biarkan . Kemudian, argumen serupa membuat orang menyimpulkan bahwa sehingga LP yang sesuai adalah g ( β ) = y - X β 1 g = inf { t T 1 n : - t iy i1g(β)=yXβ1minimalkan t T 1 n dengan subjek y - X βt

g=inf{tT1n:tiyixiβti,t=(ti)Rn,βRp,1in},
minimizetT1nsubject toyXβtyXβt.

Perhatikan di sini bahwa sekarang merupakan vektor dengan panjang alih-alih skalar, seperti pada kasus . n tn

Kesamaan dalam dua masalah ini dan fakta bahwa keduanya dapat dicor sebagai piringan hitam, tentu saja, bukan kecelakaan. Kedua norma tersebut saling berkaitan karena keduanya merupakan norma ganda .


Bagaimana Anda menemukan ukuran presisi untuk parameter dan / atau prediksi? Saya bertanya karena pertanyaan terakhir berikut: Mathematica.stackexchange.com/questions/214226/… .
JimB

3

Malab dapat melakukannya, menggunakan cvx. untuk mendapatkan cvx (gratis):

http://cvxr.com/cvx/download/

Dalam cvx, Anda akan menulis seperti ini:

cvx_begin
   variable x(n);
   minimize( norm(A*x-b,Inf) );
cvx_end

(lihat contoh halaman 12 manual )

Ada implementasi Python dari CVX (di sini ) tetapi perintahnya sedikit berbeda ...


1

Jawaban @ kardinal dinyatakan dengan baik dan telah diterima, tetapi, demi menutup utas ini sepenuhnya, saya akan menawarkan yang berikut: Perpustakaan Angka IMSL berisi rutin untuk melakukan regresi norma L-infinity. Rutin tersedia dalam Fortran, C, Java, C # dan Python. Saya telah menggunakan versi C dan Python yang metodenya adalah panggilan lnorm_regress, yang juga mendukung regresi L_p umum , . p > = 1Lpp>=1

Perhatikan bahwa ini adalah perpustakaan komersial tetapi versi Python gratis (seperti bir) untuk penggunaan non-komersial.


Sayangnya, tautannya tidak berfungsi lagi. Bisakah Anda memperbaruinya?
COOLSerdash
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.