แพคเกจซอฟต์แวร์เพื่อแก้ปัญหาการถดถอยเชิงเส้นของ L-infinity norm


10

มีแพคเกจซอฟต์แวร์ใด ๆ ที่จะแก้ปัญหาการถดถอยเชิงเส้นโดยมีวัตถุประสงค์เพื่อลดบรรทัดฐาน L-infinity


แพ็คเกจการเขียนโปรแกรมเชิงเส้นใด ๆ ก็ใช้ได้ นั่นทำให้คุณมีตัวเลือกมากมาย :)
สำคัญ

1
@ Cardinal คุณจะลองใช้วิธีนี้เป็นโปรแกรมเชิงเส้นได้อย่างไร ไม่ชัดเจนว่าจะทำอย่างไรในกรณีที่ไม่สำคัญ (เช่นจุดข้อมูลสองจุดและพารามิเตอร์หนึ่งตัว): ไม่มีข้อ จำกัด และฟังก์ชันวัตถุประสงค์ไม่เชิงเส้น
whuber

วลีสำคัญ : การประมาณ Chebyshev (ให้ทำตามมากยิ่งขึ้นความคิดคือการแนะนำตัวแปรเพิ่มเติมจากนั้นเปลี่ยนวัตถุประสงค์เป็นข้อ จำกัด )
cardinal

@cardinal คุณหมายถึงสิ่งนี้: mathworld.wolfram.com/ChebyshevApproximationFormula.htmlดูเหมือนว่าจะค่อนข้างซับซ้อน
Fan Zhang

มันเกี่ยวข้องกันเล็กน้อย แต่ก็ไม่ได้เกี่ยวพันกับปัญหานี้ ปัญหาของคุณสามารถแก้ไขได้ด้วย LP อย่างง่าย ทันทีที่ฉันไปถึงคอมพิวเตอร์ฉันจะโพสต์คำตอบ
พระคาร์ดินัล

คำตอบ:


17

คำตอบสั้น ๆ : ปัญหาของคุณสามารถกำหนดเป็นโปรแกรมเชิงเส้น (LP) ทำให้คุณเลือกตัวแก้ LP ที่คุณชื่นชอบสำหรับงาน หากต้องการดูวิธีเขียนปัญหาเป็น LP ให้อ่านต่อ

ปัญหาการลดนี้มักจะถูกเรียกว่าประมาณ Chebyshev

ปล่อย ,แถวแสดงโดยและพี จากนั้นเราพยายามที่จะลดฟังก์ชันด้วยความเคารพข แสดงค่าที่เหมาะสมโดย y=(yi)RnXRn×pixiβRpf(β)=yXββ

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

กุญแจสำคัญในการรีไซเคิลสิ่งนี้ในฐานะ LP คือการเขียนปัญหาซ้ำในแบบฟอร์มการเขียน ไม่ยากที่จะโน้มน้าวใจตัวเองว่าที่จริงแล้ว

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

ตอนนี้การใช้คำจำกัดความของฟังก์ชั่นเราสามารถเขียนทางด้านขวามือข้างบนเป็น และดังนั้นเราจึงเห็นว่าการลดบรรทัดฐานในการตั้งค่าการถดถอยนั้นเทียบเท่ากับ LP ซึ่งการเพิ่มประสิทธิภาพเสร็จสิ้น มากกว่าและหมายถึงเวกเตอร์ของคนของความยาวnฉันปล่อยให้มันเป็นแบบฝึกหัด (ง่าย) สำหรับผู้อ่านที่จะแต่งใหม่ LP ข้างต้นในรูปแบบมาตรฐานf

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

ความสัมพันธ์กับเวอร์ชั่น (รูปแบบโดยรวม) ของการถดถอยเชิงเส้น1

เป็นที่น่าสนใจที่จะทราบว่าบางสิ่งที่คล้ายกันมากสามารถทำได้ด้วย norm Let\ จากนั้นการโต้แย้งที่คล้ายกันนำไปสู่การสรุปว่า ดังนั้น LP ที่สอดคล้องกันคือ 1g(β)=yXβ1

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

ทราบที่นี่ที่คือตอนนี้เวกเตอร์ของความยาวแทนเกลาเป็นมันอยู่ในกรณีtn

ความคล้ายคลึงกันของปัญหาทั้งสองนี้และความจริงที่ว่าพวกเขาสามารถนำแสดงโดย LP ได้แน่นอนไม่มีอุบัติเหตุ ทั้งสองบรรทัดฐานมีความเกี่ยวข้องกับสิ่งที่พวกเขาเป็นบรรทัดฐานสองของกันและกัน


คุณจะพบการวัดความแม่นยำสำหรับพารามิเตอร์และ / หรือการทำนายได้อย่างไร ฉันถามเพราะคำถามล่าสุดต่อไปนี้: mathematica.stackexchange.com/questions/214226/… .
JimB

3

Malab สามารถทำได้โดยใช้ cvx เพื่อรับ cvx (ฟรี):

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

ใน cvx คุณจะเขียนด้วยวิธีนี้:

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

(ตรวจสอบตัวอย่างหน้า 12 ของคู่มือ )

มีการใช้ Python ของ CVX ( ที่นี่ ) แต่คำสั่งนั้นแตกต่างกันเล็กน้อย ...


1

คำตอบของ @ cardinal นั้นได้รับการตอบรับเป็นอย่างดีและได้รับการยอมรับ แต่เพื่อปิดกระทู้นี้อย่างสมบูรณ์ฉันจะเสนอสิ่งต่อไปนี้: IMSL Numerical Librariesมีกิจวัตรประจำวันสำหรับการถดถอยเชิงบรรทัด L-infinity รูทีนพร้อมใช้งานใน Fortran, C, Java, C # และ Python ฉันได้ใช้รุ่น C และ Python ซึ่งวิธีการที่ lnorm_regression โทรซึ่งยังสนับสนุนทั่วไป -norm ถดถอย1Lpp>=1

โปรดทราบว่าสิ่งเหล่านี้เป็นห้องสมุดเชิงพาณิชย์ แต่รุ่น Python นั้นฟรี (เหมือนในเบียร์) สำหรับการใช้ที่ไม่ใช่เชิงพาณิชย์


น่าเสียดายที่ลิงค์ไม่ทำงานอีกต่อไป คุณสามารถปรับปรุงได้หรือไม่
COOLSerdash
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.