วิธี Nystroem สำหรับการประมาณเคอร์เนล


12

ฉันได้อ่านเกี่ยวกับวิธีNyströmสำหรับการประมาณเคอร์เนลระดับต่ำ วิธีนี้ถูกนำมาใช้ในการเรียนรู้ scikit [1] เป็นวิธีการฉายตัวอย่างข้อมูลไปยังการประมาณระดับต่ำของการแมปฟีเจอร์เคอร์เนล

ตามความรู้ของฉันที่สุดให้ชุดฝึกอบรมและฟังก์ชันเคอร์เนลมันสร้างการประมาณอันดับต่ำของเคอร์เนลเมทริกซ์โดยใช้ SVD กับและC{xi}i=1nn×nKWC

K=[WK21TK21K22] C=[WK21] ,WRl×l

อย่างไรก็ตามฉันไม่เข้าใจว่าการประมาณระดับต่ำของเมทริกซ์เคอร์เนลสามารถใช้เพื่อฉายตัวอย่างใหม่ไปยังพื้นที่คุณลักษณะเคอร์เนลโดยประมาณได้อย่างไร เอกสารที่ฉันได้พบ (เช่น [2]) ไม่ได้ช่วยอะไรมากเพราะมันเป็นการสอนน้อย

นอกจากนี้ฉันยังสงสัยเกี่ยวกับความซับซ้อนในการคำนวณของวิธีนี้ทั้งในขั้นตอนการฝึกอบรมและการทดสอบ

[1] http://scikit-learn.org/stable/modules/kernel_approximation.html#nystroem-kernel-approx

[2] http://www.jmlr.org/papers/volume13/kumar12a/kumar12a.pdf

คำตอบ:


15

มาหาการประมาณค่าNyströmในแบบที่ควรทำให้คำตอบของคำถามของคุณชัดเจนขึ้น

สมมติฐานที่สำคัญในการ Nystrom คือฟังก์ชั่นเคอร์เนลเป็นยศเมตร(จริงๆเราคิดว่ามันเป็นประมาณยศแต่สำหรับความเรียบง่ายให้เพียงแสร้งทำเป็นว่ามันเป็นตรงยศสำหรับในตอนนี้.) นั่นหมายความว่าการใด ๆเมทริกซ์เคอร์เนลจะมีอันดับที่มากที่สุดและโดยเฉพาะ เป็นอันดับเมตรดังนั้นจึงมีค่าลักษณะเฉพาะภัณฑ์และเราสามารถเขียน eigendecomposition ของเป็น mmmm

K=[k(x1,x1)k(x1,xn)k(xn,x1)k(xn,xn)],
mmK
K=UΛUT
กับ eigenvectors เก็บไว้ใน , รูปร่าง , และค่าลักษณะเฉพาะที่จัดใน ,เมทริกซ์แนวทแยงUn×mΛm×m

ดังนั้นให้เราเลือกองค์ประกอบโดยทั่วไปจะมีการสุ่มแบบสุ่ม แต่อาจเป็นไปตามแผนการอื่น ๆ - สิ่งที่สำคัญในเวอร์ชั่นที่ง่ายนี้คืออยู่ในอันดับเต็ม เมื่อเราทำเสร็จแล้วให้ติดฉลากใหม่เพื่อที่เราจะได้จบลงด้วยเคอร์เนลเมทริกซ์ในบล็อก: ซึ่งเราประเมินแต่ละรายการใน (ซึ่งคือ ) และ ( ) แต่ไม่ต้องการประเมินรายการใด ๆ ใน .mK11

K=[K11K21TK21K22],
K11m×mK21(nm)×mK22

ตอนนี้เราสามารถแบ่ง eigendecomposition ตามโครงสร้างบล็อกนี้ด้วย: start ที่เป็นและเป็นm แต่ทราบว่าตอนนี้เรามี T ดังนั้นเราจึงสามารถหาและโดย eigendecomposing เมทริกซ์ที่รู้จักกัน{11}

K=UΛUT=[U1U2]Λ[U1U2]T=[U1ΛU1TU1ΛU2TU2ΛU1TU2ΛU2T],
U1m×mU2(nm)×mK11=U1ΛU1TU1ΛK11

นอกจากนี้เรายังรู้ว่า T ที่นี่เรารู้ทุกอย่างในสมการนี้ยกเว้นเพื่อให้เราสามารถแก้ปัญหาสำหรับสิ่งที่ค่าลักษณะเฉพาะที่แสดงถึง: ขวาคูณทั้งสองข้างด้วยที่จะได้รับ ตอนนี้เรามีทุกสิ่งที่เราต้องประเมิน : K21=U2ΛU1TU2(ΛU1T)1=U1Λ1

U2=K21U1Λ1.
K22
K22=U2ΛU2T=(K21U1Λ1)Λ(K21U1Λ1)T=K21U1(Λ1Λ)Λ1U1TK21T=K21U1Λ1U1TK21T(*)=K21K111K21T(**)=(K21K1112)(K21K1112)T.

ใน (*) เราพบเวอร์ชันของNyströmที่ฝังคุณอาจจะเห็นว่าเป็นคำจำกัดความ นี้จะบอกเราค่าเคอร์เนลที่มีประสิทธิภาพที่เรากำลัง imputing สำหรับบล็อก{22}K22

ใน (**) เราจะเห็นว่าคุณลักษณะเมทริกซ์ ซึ่งเป็นรูปร่างสอดคล้องกับค่าเคอร์เนลที่กำหนดเหล่านี้ ถ้าเราใช้สำหรับจุดที่เรามีชุดของคุณสมบัติมิติ เราสามารถยืนยันได้อย่างรวดเร็วว่าสอดคล้องกับเคอร์เนลเมทริกซ์ที่ถูกต้อง: K21K1112(nm)×mK1112mm

Φ=[K1112K21K1112].
Φ
ΦΦT=[K1112K21K1112][K1112K21K1112]T=[K1112K1112K1112K1112K21TK21K1112K1112K21K1112K1112K21T]=[K11K21TK21K21K111K21T]=K.

ดังนั้นสิ่งที่เราต้องทำคือการฝึกอบรมการเรียนรู้แบบปกติของเรากับคุณสมบัติมิติ\นี้จะตรงเหมือนกัน (ภายใต้สมมติฐานที่เราได้ทำ) เป็นรุ่น kernelized ของปัญหาการเรียนรู้กับKmΦK

ตอนนี้สำหรับจุดข้อมูลแต่ละจุดคุณลักษณะในตรงกับ สำหรับจุดในพาร์ติชัน 2 เวกเตอร์เป็นเพียงแถวที่เกี่ยวข้องของดังนั้นการซ้อน สิ่งเหล่านี้ทำให้เรา - ดังนั้นเห็นด้วยกับคะแนนในการแบ่งพาร์ติชัน 2 มันทำงานในพาร์ติชัน 1: นั่นเวกเตอร์เป็นแถวของดังนั้นการรวมเข้าด้วยกันจะทำให้ตกลงอีกครั้งกับxΦ

ϕ(x)=[k(x,x1)k(x,xm)]K1112.
x[k(x,x1)k(x,xm)]K21K21K1112ϕ(x)K11K11K1112=K1112Φ. ดังนั้น ... ก็ยังคงเป็นจริงสำหรับที่มองไม่เห็นที่ฝึกอบรมเวลาทดสอบจุด{} คุณทำสิ่งเดียวกัน: เนื่องจากเราถือว่าเคอร์เนลอยู่ในอันดับเมทริกซ์ยังเป็นยศและการฟื้นฟูของยังคงเป็นที่แน่นอนว่าโดยตรรกะเช่นเดียวกับ{22}xnew
Φtest=Ktest,1K1112.
m[KtrainKtrain,testKtest,trainKtest]mKtestK22


ข้างต้นเราสันนิษฐานว่าเมทริกซ์เคอร์เนลเป็นว่ายศเมตรนี่ไม่ใช่กรณีปกติ สำหรับเคอร์เนลเกาส์เซนเช่นอยู่ในอันดับที่เสมอแต่โดยทั่วไปค่าลักษณะเฉพาะจะลดลงอย่างรวดเร็วดังนั้นมันจะใกล้กับเมทริกซ์ของอันดับและของเราหรือจะใกล้เคียงกับค่าจริง แต่ไม่เหมือนกันทุกประการ พวกมันจะเป็นการสร้างไทปันได้ดียิ่งขึ้นใกล้กับ Eigenspace ของที่เข้าใกล้ของKmKnmK21Ktest,1K11Kโดยรวมซึ่งเป็นเหตุผลที่การเลือกคะแนนถูกต้องเป็นสิ่งสำคัญในการปฏิบัติm

โปรดทราบว่าหากมีค่าลักษณะศูนย์ใด ๆ คุณสามารถแทนที่ผู้รุกรานด้วย pseudoinverses และทุกอย่างยังคงใช้ได้ คุณเพียงแค่เปลี่ยนในการฟื้นฟูบูรณะที่มี{11}K11K21K21K11K11

คุณสามารถใช้ SVD แทน eigendecomposition หากคุณต้องการ; เนื่องจากคือ psd พวกมันเหมือนกัน แต่ SVD อาจจะมีข้อผิดพลาดเล็กน้อยที่แข็งแกร่งกว่าเล็กน้อยในเคอร์เนลเมทริกซ์และนั่นก็คือสิ่งที่ scikit เรียนรู้ทำ การใช้งานจริงของ scikit-Learn ทำสิ่งนี้แม้ว่าจะใช้ในการผกผันแทนการ pseudoinverseKmax(λi,1012)


1
เมื่อคือ semidefinite บวก Eigendecompositionเกิดขึ้นพร้อมกับ SVD scikit - เรียนรู้เนื่องจากข้อผิดพลาดทางตัวเลขอาจไม่ใช่ psd เล็กน้อยแทนที่จะคำนวณและใช้ดังนั้น ที่คุณลักษณะ 's กลายเป็นfrac12} มันเป็นสิ่งเดียวกันโดยทั่วไป AUΛUTAUΣVTA12=VΣ12VTAAVΣ12VT=UΣVTVΣ12VT=UΣ12VT=A12
Dougal

1
อ๊ะขอโทษใช่พวกเขาใช้frac12} มันไม่ได้มีความสำคัญอะไรเลยตั้งแต่แต่เนื่องจากพวกเขาทำหน้าที่ขนย้ายคุณสมบัติสำหรับจบลงด้วยการเป็น T UΣ12VT=K12UVK11UΣVTVΣ12UT=UΣ12UT
Dougal

1
เพิ่มเมทริกซ์ทแยงมุมเพื่ออำนาจเป็นเช่นเดียวกับการเพิ่มแต่ละองค์ประกอบจะมีอำนาจและx ในสัญกรณ์การกระจายเสียงแบบ numpy การคูณ elementwise โดยเวกเตอร์จะเหมือนกับการคูณขวาด้วยเมทริกซ์แนวทแยง นอกจากนี้ที่ใช้รหัสหมายถึงสิ่งที่ผมเรียก T x12=1/xVVT
Dougal

1
อ๊ะขออภัยที่ควรมีมากถึง (ในการสั่งซื้อที่ติดป้ายใหม่เพื่อให้เป็นคะแนนพื้นฐานของNyström) จะแก้ไข xm
Dougal

1
xเป็นจุดข้อมูลมิติไม่ได้ระบุไว้ที่นี่ อาจอยู่ในหรืออาจเป็นสตริงหรืออะไรก็ได้ เพียงแค่บอกว่าเพื่อให้R จากนั้นเพียงเรียงซ้อนสำหรับอินพุตที่แตกต่างกันxRdxXk:X×XRϕ:XRmk(x,xi)m
Dougal
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.