เมื่อใช้ SVM ทำไมฉันต้องขยายขนาดคุณสมบัติ


9

ตามเอกสารของStandardScalerวัตถุใน scikit-learn:

เช่นองค์ประกอบหลายอย่างที่ใช้ในฟังก์ชันวัตถุประสงค์ของอัลกอริทึมการเรียนรู้ (เช่นเคอร์เนล RBF ของ Support Vector Machines หรือ L1 และ L1 normalizers โมเดลเชิงเส้น) สมมติว่าคุณลักษณะทั้งหมดอยู่กึ่งกลางรอบ 0 และมีความแปรปรวนในลำดับเดียวกัน หากคุณลักษณะมีความแปรปรวนที่เป็นลำดับความสำคัญมากกว่าที่อื่น ๆ มันอาจครอบงำฟังก์ชันวัตถุประสงค์และทำให้ตัวประมาณไม่สามารถเรียนรู้จากคุณลักษณะอื่นได้อย่างถูกต้องตามที่คาดไว้

ฉันควรปรับขนาดคุณสมบัติของฉันก่อนจัดประเภท มีวิธีง่าย ๆ ที่จะแสดงว่าทำไมฉันควรทำเช่นนี้? การอ้างอิงบทความทางวิทยาศาสตร์จะดียิ่งขึ้น ฉันได้พบหนึ่งแต่อาจมีอื่น ๆ อีกมากมาย

คำตอบ:


16

วิธีเคอร์เนลทั้งหมดขึ้นอยู่กับระยะทาง ฟังก์ชันเคอร์เนล RBF คือ (โดยใช้สำหรับ ความเรียบง่าย)κ(u,v)=exp(uv2)γ=1

ได้รับ 3 คุณสมบัติเวกเตอร์:

x1=[1000,1,2],x2=[900,1,2],x3=[1050,10,20].

แล้วที่เป็นเป็นที่คาดคะเนขึ้นคล้ายกับแล้ว\κ(x1,x2)=exp(10000)κ(x1,x3)=exp(2905)x1x3x2

ความแตกต่างสัมพัทธ์ระหว่างและ: x1

x2[0.1,0,0],x3[0.05,10,10].

ดังนั้นหากไม่มีการปรับสเกลเราสรุปได้ว่านั้นคล้ายคลึงกับมากกว่าแม้ว่าความแตกต่างสัมพัทธ์ต่อคุณลักษณะระหว่างและมีขนาดใหญ่กว่าของและ\x1x3x2x1x3x1x2

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

คุณสามารถหาตัวอย่างง่าย ๆ เพื่ออธิบายสิ่งนี้ได้ในบทความต่อไปนี้: คู่มือปฏิบัติเพื่อสนับสนุนการจำแนกประเภทเวกเตอร์ (ส่วนที่ 2.2)


คุณยังอาจต้องการที่จะหารือเกี่ยวกับกู: ขนาดของน้ำหนักขึ้นอยู่กับขนาดของปัจจัยการผลิตที่ ...
seanv507

ผลของการทำให้เป็นปกติคือ scalings ที่แตกต่างกันบ่งบอกถึงเหมาะสมที่สุดซึ่งค่อนข้างตั้งฉากกับปัญหานี้โดยเฉพาะ C
Marc Claesen

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

@ Marc Claesen หากตัวแปรของคุณมีขนาดต่างกันน้ำหนักของคุณก็จะแตกต่างกันตามลำดับและ l2 norm จะมุ่งเน้นไปที่อินพุตที่มีความแปรปรวนเล็กน้อยและน้ำหนักที่มีขนาดใหญ่ตามลำดับ อีกวิธีหนึ่งการทำให้น้ำหนักเป็นบรรทัดฐานปกติทำให้มั่นใจได้ว่าอินพุต 'เล็ก' มีผลขนาดเล็ก นี่จะสมเหตุสมผลถ้าคุณมี 'เล็ก' มาตรฐาน (ในอินพุตของคุณ) เช่นโดยการทำให้ตัวแปรของคุณเป็นมาตรฐาน
seanv507

1
@ seanv507 ที่ใช้กับ SVM เชิงเส้นเท่านั้น
Marc Claesen

0

ขึ้นอยู่กับเคอร์เนลที่คุณใช้ โดยไกลที่ใช้กันมากที่สุด (นอกเหนือจากเชิงเส้น) เป็นแก่นเคอร์เนลซึ่งมีรูปแบบ

f=exp(||x1x2||22σ2)

SVM ใช้ฟังก์ชั่นนี้และใช้เพื่อเปรียบเทียบความคล้ายคลึงกันของจุด ( ) กับจุดอื่น ๆ ในชุดการฝึกอบรมโดยรวมความแตกต่างดังนี้:x1

(x1l1)2+(x2l2)2...+(xnln)2

โดยที่เป็นตัวอย่างของคุณและค่าของคือจุดสังเกตxl

หากฟีเจอร์มีช่วงตั้งแต่ 0 - 50,000 ในขณะที่ฟีเจอร์มีช่วงตั้งแต่ 0 - 0.01 คุณจะเห็นว่าจะมีอิทธิพลเหนือจำนวนนั้นในขณะที่จะไม่มีผลกระทบใด ๆ ด้วยเหตุนี้จึงมีความจำเป็นต้องปรับขนาดคุณสมบัติก่อนใช้ kernalx1x2x1x2

หากคุณต้องการเรียนรู้เพิ่มเติมฉันแนะนำโมดูล 12 (Support Vector Machines) จากหลักสูตรออนไลน์ของ Stanford ในการเรียนรู้ของเครื่องที่ Coursera (ฟรีและใช้ได้ตลอดเวลา): https://www.coursera.org/course/ml

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