จะเลือกเคอร์เนลสำหรับ kernel PCA ได้อย่างไร?


13

อะไรคือวิธีเลือกเคอร์เนลที่จะส่งผลให้มีการแยกข้อมูลที่ดีในเอาต์พุตข้อมูลขั้นสุดท้ายโดย kernel PCA (การวิเคราะห์องค์ประกอบหลัก) และวิธีใดที่จะปรับพารามิเตอร์ของเคอร์เนลให้เหมาะสม?

เงื่อนไขของคนธรรมดาถ้าเป็นไปได้จะได้รับการชื่นชมอย่างมากและการเชื่อมโยงไปยังเอกสารที่อธิบายวิธีการดังกล่าวก็จะดี


1
เมื่อคุณพูดว่า "การแยกข้อมูลที่ดี" คุณหมายถึงอะไรกันแน่? เคอร์เนล PCA ใดที่คุณมีอยู่ในใจ หากมีสิ่งใดที่เกี่ยวข้องกับ "การแยกข้อมูล" คุณควรใช้เทคนิคการจัดหมวดหมู่ (เช่นเครื่องสนับสนุนเคอร์เนลเวกเตอร์) แทน kPCA หรือไม่? นอกจากนั้นคำถามที่ดี +1 ฉันไม่มีประสบการณ์กับการเลือกเคอร์เนลดังนั้นไม่สามารถช่วยคุณได้ที่นี่
อะมีบา

@amoeba มันจะใช้สำหรับการลดขนาดแบบไม่เชิงเส้น ความรู้เกี่ยวกับเวกเตอร์สนับสนุนของฉันมี จำกัด เนื่องจากฉันไม่เคยเรียนหลักสูตร CS เลย ฉันเป็นนักศึกษาระดับปริญญาตรีและได้เรียนรู้ผ่านเอกสารออนไลน์ โดย "การแยกข้อมูลที่ดี" ฉันหมายถึงสิ่งที่แสดงโดยตัวอย่างที่ลงจุดในบทความนี้ ฉันทำงานกับ Matlab และรหัส PCA เคอร์เนลของฉันทำงานและใช้งานได้ง่ายโพลีพื้นฐานเรเดียลและ sigmoid kernels แต่มันจะมีประโยชน์ถ้าได้ทราบว่าจะใช้เมื่อใดเพื่อผลลัพธ์ที่ดีที่สุด
Chives

ฉันคิดว่าวิธีที่ดีที่สุด (เท่านั้น) ในการเลือกเคอร์เนลคือการใช้การตรวจสอบข้ามดูที่นี่: วิธีการเลือกเคอร์เนลสำหรับ SVM? คุณจะต้องมีการวัดประสิทธิภาพสำหรับ kPCA ของคุณเพื่อใช้การตรวจสอบความถูกต้องข้าม การแยกชั้นสามารถเป็นตัวชี้วัดที่ดีถ้านั่นคือสิ่งที่คุณหลังจาก แต่ทราบว่า PCA / kPCA ไม่ได้ถูกออกแบบที่ทั้งหมดจะส่งผลในการแยกชั้นดี มันเป็นเพียงการเพิ่มความแปรปรวนที่จับได้
อะมีบา

ฉันอ่านบ้างและอาจตอบคำถามของคุณได้ แต่อาจใช้เวลาสักพัก (วัน)
อะมีบา

@amoeba ความแปรปรวนสูงสุดทำให้ฉันรู้สึกว่าตอนนี้คุณพูดถึงมัน ฉันจะตรวจสอบข้ามการตรวจสอบด้วยตัวเอง แต่มันจะดีถ้าคุณสามารถดูได้เล็กน้อยด้วยถ้าคุณสามารถหาเวลา! ขอบคุณ.
Chives

คำตอบ:


8

วิธีการทั่วไปในการเลือกเคอร์เนลที่ดีที่สุด (ชนิดของเคอร์เนลหรือพารามิเตอร์เคอร์เนล) ในวิธีการที่ใช้เคอร์เนลคือการตรวจสอบข้าม ดูที่นี่สำหรับการอภิปรายเกี่ยวกับการเลือกเคอร์เนลสำหรับเครื่องเวกเตอร์สนับสนุน: วิธีการเลือกเคอร์เนลสำหรับ SVM?

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

คำถามก็จะกลายเป็น: การวัดประสิทธิภาพของแบบจำลองใดที่สามารถใช้ใน kPCA หากคุณต้องการบรรลุ "การแยกข้อมูลที่ดี" (การแยกชั้นดีอาจสันนิษฐานได้) จากนั้นคุณสามารถวัดค่าได้จากข้อมูลการฝึกอบรมและใช้เพื่อค้นหาเคอร์เนลที่ดีที่สุด อย่างไรก็ตามโปรดทราบว่า PCA / kPCA ไม่ได้ถูกออกแบบมาเพื่อการแยกข้อมูลที่ดี (ไม่ต้องคำนึงถึงเลเบลของคลาสเลย ) โดยทั่วไปแล้วการพูดหนึ่งต้องการอีกแบบหนึ่งซึ่งไม่เกี่ยวข้องกับคลาส

ใน PCA มาตรฐานหนึ่งสามารถใช้ข้อผิดพลาดการสร้างใหม่เป็นวัดประสิทธิภาพในชุดทดสอบ ในเคอร์เนล PCA หนึ่งยังสามารถคำนวณข้อผิดพลาดในการสร้างใหม่ได้ แต่ปัญหาคือมันไม่สามารถเปรียบเทียบได้ระหว่างเมล็ดที่แตกต่างกัน: ข้อผิดพลาดของการสร้างใหม่คือระยะทางที่วัดในพื้นที่เป้าหมายเป้าหมาย; และเมล็ดที่แตกต่างกันนั้นสอดคล้องกับพื้นที่เป้าหมายที่แตกต่างกัน ... ดังนั้นเราจึงมีปัญหา

วิธีหนึ่งในการแก้ไขปัญหานี้คือการคำนวณข้อผิดพลาดในการสร้างใหม่ในพื้นที่เดิมไม่ได้อยู่ในพื้นที่เป้าหมาย เห็นได้ชัดว่าจุดข้อมูลการทดสอบด้านซ้ายอยู่ในพื้นที่เดิม แต่การสร้างใหม่ของ kPCA อาศัยอยู่ใน [subspace มิติต่ำของ] พื้นที่เป้าหมาย แม้ว่าสิ่งหนึ่งที่สามารถทำได้คือการหาจุด ("ภาพก่อน") ในพื้นที่ดั้งเดิมที่จะถูกแมปให้ใกล้ที่สุดกับจุดฟื้นฟูนี้จากนั้นวัดระยะทางระหว่างจุดทดสอบและภาพล่วงหน้านี้ เป็นข้อผิดพลาดในการสร้างใหม่

ฉันจะไม่ให้สูตรทั้งหมดที่นี่ แต่แทนที่จะแนะนำให้คุณดูเอกสารบางอย่างและใส่ตัวเลขที่นี่

แนวคิดของ "ภาพก่อน" ใน kPCA นั้นเห็นได้ชัดในบทความนี้:

Mika และคณะ ไม่ได้ทำการตรวจสอบความถูกต้องไขว้กัน แต่พวกมันต้องการอิมเมจล่วงหน้าเพื่อจุดประสงค์ในการลบเสียงดูรูปนี้:

kPCA ยกเลิกเสียงจาก Mika และคณะ

จุดหนา (denoised) เป็นภาพล่วงหน้าของการคาดการณ์ kPCA (ไม่มีการทดสอบและการฝึกอบรมที่นี่) ไม่ใช่เรื่องง่ายที่จะค้นหาภาพล่วงหน้าเหล่านี้: เราจำเป็นต้องใช้การไล่ระดับสีแบบลาดชันและฟังก์ชันการสูญเสียจะขึ้นอยู่กับเคอร์เนล

และนี่คือกระดาษฉบับล่าสุดที่ใช้อิมเมจก่อนเพื่อวัตถุประสงค์ในการตรวจสอบข้ามและการเลือกเคอร์เนล / พารามิเตอร์ไฮเปอร์พารามิเตอร์:

  • Alam, MA, & Fukumizu, K. (2014) ตัวเลือกในการวิเคราะห์องค์ประกอบหลักเคอร์เนล Hyperparameter วารสารวิทยาศาสตร์คอมพิวเตอร์, 10 (7), 1139-1150

นี่คืออัลกอริทึมของพวกเขา:

Alam และ Fukumizu

และนี่คือผลลัพธ์บางส่วน (ที่ฉันคิดว่าอธิบายได้ด้วยตนเอง):

Alam และ Fukumizu


1
(+1) มันอาจมีประโยชน์ที่จะต้องทราบว่าภาพก่อนหน้านี้เป็นชุดของFréchet / Karcher หมายถึงจุดที่กำหนดให้กับคลัสเตอร์ที่กำหนดไม่ใช่สิ่งที่จำเป็นในการช่วยเหลือสิ่งใด
Dougal

@Dougal: ว้าวขอบคุณฉันไม่ได้ตระหนักถึงคำนี้เลย แต่ฉันไม่แน่ใจว่าฉันเข้าใจ พิจารณาครั้งแรกรูปที่ผมโพสต์ที่นี่ (จาก Mika et al.): แต่ละจุด 2dถูกแมปไป 1 มิติพื้นที่เคอร์เนลพีซีซึ่งเป็นแมปแล้วกลับไปที่ 2d ก่อนภาพZ เมื่อคุณพูดว่า pre-imageคือ "ชุดของ Frechet / Karcher หมายถึงคะแนนที่กำหนดให้กับคลัสเตอร์ที่ระบุ" คุณหมายถึงอะไรโดยกลุ่มและทำไมจึงมีชุด xxyyzz
อะมีบา

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