ฉันควรใช้ Kernel Trick ทุกครั้งที่เป็นไปได้สำหรับข้อมูลที่ไม่ใช่เชิงเส้นหรือไม่?


13

เมื่อเร็ว ๆ นี้ฉันได้เรียนรู้เกี่ยวกับการใช้ Kernel trick ซึ่งจะแมปข้อมูลลงในช่องว่างมิติที่สูงขึ้นเพื่อพยายามทำให้ข้อมูลในมิติเหล่านั้นเป็นเส้นตรง มีกรณีใดบ้างที่ฉันควรหลีกเลี่ยงการใช้เทคนิคนี้? มันเป็นเพียงเรื่องของการหาฟังก์ชั่นเคอร์เนลที่ใช่หรือไม่?

สำหรับข้อมูลเชิงเส้นแน่นอนว่าไม่มีประโยชน์ แต่สำหรับข้อมูลที่ไม่ใช่เชิงเส้นสิ่งนี้ดูเหมือนจะมีประโยชน์เสมอ การใช้ตัวจําแนกเชิงเส้นเป็นเรื่องง่ายกว่าที่ไม่ใช่เชิงเส้นในแง่ของเวลาการฝึกอบรมและความยืดหยุ่น

คำตอบ:


8

สำหรับข้อมูลเชิงเส้นแน่นอนว่าไม่มีประโยชน์ แต่สำหรับข้อมูลที่ไม่ใช่เชิงเส้นสิ่งนี้ดูเหมือนจะมีประโยชน์เสมอ การใช้ตัวจําแนกเชิงเส้นเป็นเรื่องง่ายกว่าที่ไม่ใช่เชิงเส้นในแง่ของเวลาการฝึกอบรมและความยืดหยุ่น

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

มีอย่างน้อยสามดีทางเลือกทั่วไปสำหรับเป็นdelinearizationของรูปแบบ:

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

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


10

ราคาที่คุณจ่ายสำหรับ Kernel Trick โดยทั่วไปสำหรับวิธีการเชิงเส้นจะมีขอบเขตทั่วไปที่แย่ลง สำหรับโมเดลเชิงเส้นมิติ VCของมันก็เป็นเส้นตรงในแง่ของจำนวนมิติ (เช่นมิติ VC สำหรับ Perceptron คือd + 1)

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

สนับสนุน Vector Machinesใช้ประโยชน์จาก Kernel Trick ในวิธีที่มีประสิทธิภาพมากที่สุดโดยทำสองสิ่ง:


1
"เป็นเส้นตรงในแง่ของจำนวนน้ำหนัก" ในแง่ของมิติพื้นที่ไม่ใช่จำนวนน้ำหนัก คุณสามารถมีตัวจําแนกเชิงเส้นเป็นพารามิเตอร์ที่มีนํ้าหนักมากที่สุดเท่าที่คุณต้องการ แต่ขนาด VC ของมันยังคงเป็น d + 1 (โดยที่ d คือมิติเชิงพื้นที่) "มิติ VC สำหรับรุ่น SVM สัมพันธ์กับจำนวนของเวกเตอร์สนับสนุน" มิติ VC ได้รับการพิจารณาให้ตรงกับจำนวน SV อย่างไร ฉันทราบถึงขอบเขตกำไรขั้นต้นที่แข็ง แต่ afaik ในกรณีกำไรขั้นต้นอ่อนไม่มีความสัมพันธ์ดังกล่าว แม้ในขอบเขตความซับซ้อนของ Radamacher คุณจะไม่พบจำนวน SV เป็นตัวแปร
lejlot

นอกจากนี้ "ดังนั้นมันไม่เกี่ยวข้องกับวิธี" ใหญ่ "พื้นที่เป้าหมายเคอร์เนลคือคุณไม่หลวมอะไรในแง่ของขอบเขตทั่วไป" เป็นเท่าที่ฉันรู้เท็จอย่างสมบูรณ์ ช่องว่างมิติสูงจะนำไปสู่การสูญเสียความสามารถในการวางนัยทั่วไปแม้ในรูปแบบ SVM
lejlot

1
@lejlot ขอบคุณแก้ไขข้อผิดพลาดสองข้อแรก ฉันต้องการเวลาที่เกี่ยวข้องกับข้อสังเกตสองครั้งสุดท้ายของคุณ - ฉันจะพยายามปรับปรุงคำตอบและให้ข้อมูลบางอย่างหลังจากที่ฉันตรวจสอบข้อมูลของฉันอีกครั้ง :)
BartoszKP

1
ตอนนี้มันเกือบจะถูกต้องแล้ว แต่อะไรคือสาเหตุของข้อสันนิษฐานขนาดของพื้นที่เคอร์เนลนั้นไม่เกี่ยวข้อง? ใช้ชุดข้อมูลใด ๆ เรียกใช้ SVM ด้วยเคอร์เนล RBF และ C-> inf และคุณจะไม่เหมาะสมมากเกินไป มันไม่ง่ายเลย จำนวนมิติในพื้นที่คุณลักษณะเกี่ยวข้องแต่ก็สามารถควบคุมได้ด้วย C (เป็นขอบเขตบนของตัวคูณตัวคูณ lagrange) โดยเฉพาะ - มิติ VC สำหรับ SVM ที่มี RBF นั้นไม่มีที่สิ้นสุดและขอบเขตทั่วไป (Vapnik's) นั้นไร้ประโยชน์ (Radamacher สามารถทำงานได้ แต่นี่เป็นเรื่องราวที่แตกต่างกันทั้งหมด)
lejlot

1
@lejlot ฉันได้ให้การอ้างอิงอื่น - มันให้ขอบเขตสำหรับ soft-margin case อย่างชัดเจนและไม่ได้ขึ้นอยู่กับจำนวนมิติ
BartoszKP

6

ฉันจะพยายามให้คำตอบที่ไม่ใช่ด้านเทคนิคสำหรับคำถามของคุณ

และควรเป็นตัวเลือกแรกสำหรับเหตุผลที่คุณพูดถึงเวลาฝึกอบรมความสามารถในการปรับขนาดและความสะดวกในการตีความรุ่นสุดท้ายทางเลือกของการทำงานในครั้งแรกหรือสองครั้ง

หากโมเดลเชิงเส้นไม่ได้ให้ประสิทธิภาพที่น่าพอใจคุณสามารถลองวิธีแก้ปัญหาที่ไม่ใช่เชิงเส้นได้ ข้อเสียบางประการที่ควรพิจารณา ได้แก่ :

  • ทางเลือกของเคอร์เนล ไม่ชัดเจนโดยปกติคุณจะต้องทดสอบตัวเลือกต่างๆ
  • อาจมีอันตรายจากการใส่ชุดฝึกซ้อมมากเกินไป ที่จริงแล้วมันง่ายเกินกว่าที่คุณจะทำได้ถ้าคุณต้องการ เพื่อหลีกเลี่ยงการ overfitting คุณต้องมีกรอบการประเมินที่แข็งแกร่งขึ้น (คุณต้องวัดความแปรปรวน / ความเสถียรของประสิทธิภาพของข้อมูลที่มองไม่เห็น) และคุณต้องการข้อมูลที่เพียงพอเพื่อให้สามารถเลือกรูปแบบที่เหมาะสมได้
  • คุณทำงานกับ dual และทำให้คุณไม่สามารถตีความรุ่นสุดท้ายได้เช่นคุณไม่สามารถอ้างได้ว่าฟีเจอร์ X นั้นสำคัญกว่าฟีเจอร์ Y และอื่น ๆ
  • เวลาฝึกอบรมจะเพิ่มขึ้นตามปริมาณข้อมูล (น้อยลงด้วยจำนวนคุณสมบัติตั้งแต่อยู่ในคู่)

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