เมทริกซ์สุ่มที่มีข้อ จำกัด ด้านความยาวของแถวและคอลัมน์


25

ฉันต้องการสร้างเมทริกซ์ที่ไม่เป็นสแควร์แบบสุ่มด้วยแถวและคอลัมน์องค์ประกอบที่กระจายแบบสุ่มด้วยค่าเฉลี่ย = 0 และถูก จำกัด เช่นนั้นความยาว (บรรทัดฐาน L2) ของแต่ละแถวคือและความยาวของแต่ละคอลัมน์คือ{C}} ผลรวมของค่าสแควร์คือ 1 สำหรับแต่ละแถวและสำหรับแต่ละคอลัมน์RC1RCRC

จนถึงขณะนี้ผมได้พบวิธีการอย่างใดอย่างหนึ่งเพื่อให้บรรลุนี้: เพียงแค่เริ่มต้นเมทริกซ์แบบสุ่ม (เช่นจากเครื่องแบบปกติหรือการกระจาย Laplace กับศูนย์ความแปรปรวนค่าเฉลี่ยและพล) แล้วแถวปกติสลับกันและคอลัมน์ที่จะสิ้นสุดด้วยการนอร์มัลไลซ์แถว สิ่งนี้ดูเหมือนว่าจะมาบรรจบกับผลลัพธ์ที่ต้องการอย่างรวดเร็ว (เช่นสำหรับและความแปรปรวนของความยาวคอลัมน์มักเป็น ~หลังจากการทำซ้ำครั้ง) แต่ฉันไม่แน่ใจว่าฉันจะขึ้นอยู่กับอัตราการบรรจบกันอย่างรวดเร็วนี้หรือไม่ โดยทั่วไป (สำหรับขนาดเมทริกซ์ต่างๆและการแจกแจงองค์ประกอบเริ่มต้น)length=1R=40C=80 0.000012

คำถามของฉันคือ: มีวิธีที่จะบรรลุผลลัพธ์ที่ต้องการ ( , ) โดยตรงโดยไม่ต้องวนซ้ำ การนอร์มัลไลซ์แถว / คอลัมน์? เช่นบางอย่างเช่นอัลกอริทึมสำหรับการทำให้เวกเตอร์สุ่มเป็นปกติ (เริ่มต้นองค์ประกอบแบบสุ่ม, วัดผลรวมของค่าสแควร์, จากนั้นขยายสเกลแต่ละองค์ประกอบด้วยสเกลาร์ทั่วไป) ถ้าไม่มีมีการจำแนกลักษณะอย่างง่ายสำหรับอัตราการรวมกัน (เช่นการวนซ้ำจนเกิดข้อผิดพลาด ) ของวิธีการวนซ้ำที่อธิบายไว้ข้างต้นหรือไม่row lengths=1column lengths=RC<ϵ


1
สิ่งนี้ค่อนข้างคล้ายกับอัลกอริธึมของ Sinkhorn-Knopp หรือที่รู้จักกันในชื่อการวนซ้ำแบบวนซ้ำ
พระคาร์ดินัล

6
นอกจากนี้คุณควรกำหนดความหมายของเมทริกซ์ "สุ่ม" ตัวอย่างเช่นขั้นตอนที่คุณอธิบายจะ (ไม่ต้องสงสัยเลยว่า) จะไม่สร้างเมทริกซ์แบบสุ่มอย่างสม่ำเสมอในพื้นที่ที่ต้องการ
พระคาร์ดินัล

1
@ cardinal จุดดี แต่โปรดทราบว่าอย่างน้อยคุณสามารถบรรลุการแจกแจง (ส่วนเพิ่ม) ที่เหมือนกันสำหรับส่วนประกอบทั้งหมดโดยการโพสต์คูณด้วยคู่ของเมทริกซ์การเปลี่ยนรูปแบบสุ่ม (เพื่อจัดเรียงทั้งแถวและคอลัมน์แบบสุ่ม)
whuber

1
@whuber: ใช่แม้ว่าการกระจายข้อต่ออาจจะค่อนข้างแปลก โดย "โพสต์ทวีคูณ" ฉันถือว่าคุณหมายถึงการคูณด้านซ้ายและขวา "โพสต์คอนเวอร์เจนซ์" (แทนที่จะยกตัวอย่างเช่นคูณด้านขวา)
พระคาร์ดินัล

9
จริงๆแล้วหลังจากคิดไปเล็กน้อยผมคิดว่าอัลกอริทึมของคุณนั้นเป็นอัลกอริธึมSinkhorn-Knopp อย่างแท้จริงโดยมีการดัดแปลงเล็กน้อย ให้เป็นเมทริกซ์เดิมของคุณและให้เป็นเมทริกซ์ที่มีขนาดเดียวกันเช่นที่ 2 จากนั้นอัลกอริทึมของคุณจะเทียบเท่ากับการใช้ Sinkhorn-Knopp กับซึ่งในขั้นตอนสุดท้ายคุณกู้คืนฟอร์มที่คุณต้องการโดยใช้{IJ}} Sinkhorn-Knopp รับประกันว่าจะมาบรรจบกันยกเว้นในสถานการณ์ทางพยาธิสภาพที่ค่อนข้าง การอ่านมันควรจะมีประโยชน์มาก XYYij=Xij2YX^ij=sgn(Xij)Yij
พระคาร์ดินัล

คำตอบ:


6

ในฐานะที่เป็น @ cardinal กล่าวในความคิดเห็น:

จริงๆแล้วหลังจากคิดไปเล็กน้อยผมคิดว่าอัลกอริทึมของคุณนั้นเป็นอัลกอริธึมSinkhorn-Knopp อย่างแท้จริงโดยมีการดัดแปลงเล็กน้อย ให้เป็นเมทริกซ์เดิมของคุณและให้เป็นเมทริกซ์ที่มีขนาดเดียวกันเช่นที่{IJ} จากนั้นอัลกอริทึมของคุณจะเทียบเท่ากับการใช้ Sinkhorn-Knopp กับซึ่งในขั้นตอนสุดท้ายคุณกู้คืนฟอร์มที่คุณต้องการโดยใช้ . Sinkhorn-Knopp รับประกันว่าจะมาบรรจบกันยกเว้นในสถานการณ์ทางพยาธิสภาพที่ค่อนข้าง การอ่านมันควรจะมีประโยชน์มากXYYij=Xij2YX^ij=sgn(Xij)Yij

... ดูเหมือนว่าอัลกอริทึมซ้ำที่ฉันแนะนำในคำถามเดิมจะคล้ายกับอัลกอริทึม Sinkhorn-Knopp ที่น่าสนใจก็ดูเหมือนว่าจะคล้ายกับการวนซ้ำสัดส่วน (IPF) ซึ่งตามที่อธิบายไว้ในหน้า IPF วิกิพีเดียมีความสัมพันธ์กับวิธีการของนิวตันและการเพิ่มความคาดหวังสูงสุด (ทั้งหมดมีขีด จำกัด เดียวกัน)

วิธีการวนซ้ำเหล่านี้มักจะนำไปใช้กับปัญหาที่ไม่มีวิธีแก้ปัญหาแบบปิดดังนั้นฉันจึงคาดว่าคำตอบของคำถามจะเป็นเชิงลบ: ไม่มีวิธีใดที่จะบรรลุการแก้ปัญหาที่ต้องการโดยไม่ต้องทำซ้ำแถว / คอลัมน์


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