ขั้นตอนวิธีใดที่จำเป็นต้องมีการปรับขนาดคุณลักษณะนอกเหนือจาก SVM


17

ฉันทำงานกับอัลกอริทึมมากมาย: RandomForest, DecisionTrees, NaiveBayes, SVM (เคอร์เนล = เชิงเส้นและ rbf), KNN, LDA และ XGBoost ทุกคนนั้นค่อนข้างเร็วยกเว้น SVM นั่นคือเมื่อฉันได้รู้ว่ามันต้องมีคุณสมบัติการปรับขนาดเพื่อให้ทำงานได้เร็วขึ้น จากนั้นฉันเริ่มสงสัยว่าฉันควรทำแบบเดียวกันกับอัลกอริทึมอื่นหรือไม่



คำตอบ:


21

โดยทั่วไปอัลกอริทึมที่ใช้ประโยชน์จากระยะทางหรือความคล้ายคลึงกัน (เช่นในรูปแบบของผลิตภัณฑ์สเกลาร์) ระหว่างตัวอย่างข้อมูลเช่น k-NN และ SVM มีความอ่อนไหวต่อการเปลี่ยนแปลงคุณสมบัติ

ตัวจําแนกแบบกราฟิกแบบฟิชเชอร์เช่น Fisher LDA หรือ Naive Bayes รวมถึง Decision tree และ Tree-based ensemble method (RF, XGB) นั้นไม่แปรเปลี่ยนไปจากการปรับขนาด แต่ก็อาจเป็นความคิดที่ดีที่จะลดขนาด / กำหนดมาตรฐานข้อมูลของคุณ .


3
+1 เพียงแค่ทราบว่า XGBoost ใช้อัลกอริธึมที่สองด้วยเช่นกันโดยขึ้นอยู่กับการเพิ่มประสิทธิภาพเชิงเส้น การขยายจะสร้างความแตกต่าง
usεr11852พูดว่า Reinstate Monic

2
คุณช่วยอธิบายเพิ่มเติมเกี่ยวกับการลดขนาด / การจัดเก็บข้อมูลสำหรับ RF และ XGB อีกหรือไม่? ฉันไม่เห็นว่ามันจะมีผลต่อคุณภาพของแบบจำลองอย่างไร
Tomek Tarczynski

17

นี่คือรายการที่ฉันพบในhttp://www.dataschool.io/comparing-supervised-learning-algorithms/ เพื่อระบุตัวแยกประเภทที่ต้องการปรับขนาดคุณสมบัติ :

ป้อนคำอธิบายรูปภาพที่นี่

ตารางเต็ม:

ป้อนคำอธิบายรูปภาพที่นี่

ในk หมายถึงการจัดกลุ่มคุณยังต้องป้อนข้อมูลของคุณปกติ

นอกเหนือจากการพิจารณาว่าตัวแยกประเภทใช้ประโยชน์จากระยะทางหรือความคล้ายคลึงกันตามที่ Yell Bond ระบุไว้แล้วStochastic Gradient Descent ยังมีความอ่อนไหวต่อการปรับขนาด (เนื่องจากอัตราการเรียนรู้ในสมการการอัปเดตของ Stochastic Gradient Descent นั้นเหมือนกันสำหรับทุกพารามิเตอร์ {1}):

ป้อนคำอธิบายรูปภาพที่นี่


อ้างอิง:


สิ่งที่ขาดไปจากคำตอบนี้คือการอธิบายว่าทำไม !! ดูคำตอบของฉันสำหรับสิ่งนั้น
kjetil b halvorsen

2
@kjetilbhalvorsen ดีฉันอธิบายสำหรับ k-mean และ SGD แต่มีอัลกอริทึมและรุ่นอื่น ๆ อีกมากมาย มีข้อ จำกัด 30k-char ในการแลกเปลี่ยนแบบกองซ้อน :)
Franck Dernoncourt

ค่อนข้างเกี่ยวข้อง: stats.stackexchange.com/questions/231285/…
kjetil b halvorsen

@FranckDernoncourt ฉันสามารถถามคำถามคุณเกี่ยวกับสิ่งนี้ได้หรือไม่? ฉันมีชุดข้อมูลของทั้งหมวดหมู่และข้อมูลต่อเนื่องซึ่งฉันกำลังสร้าง SVM ข้อมูลต่อเนื่องมีความเบ้สูง (หางยาว) สำหรับการเปลี่ยนแปลงอย่างต่อเนื่องเกี่ยวกับการที่ฉันควรจะทำlog transformation / Box-Coxและแล้วยังnormalise the resultant data to get limits between 0 and 1? ดังนั้นฉันจะทำให้ค่าบันทึกเป็นปกติ จากนั้นคำนวณ SVM บนข้อมูลแบบต่อเนื่องและหมวดหมู่ (0-1) ด้วยกันไหม ไชโยสำหรับความช่วยเหลือที่คุณสามารถให้ได้
Chuck

7

Yi=β0+β1xi+β2zi+ϵi
i=1,,n
xi=(xix¯)/sd(x)zi=(ziz¯)/sd(z)
and instead fit the model (using ordinary least squares)
Yi=β0+β1xi+β2zi+ϵi
Then the fitted parameters (betas) will change, but they change in a way that you can calculate by simple algebra from the transformation applied. So if we call the estimated betas from the model using transformed predictors for β1,2 and the denote the betas from the untransformed model with β^1,2, we can calculate one set of betas from the other one, knowing the means and standard deviations of the predictors. The realtionship between the transformed and untransformed parameters is the same as between their estimates, when based on OLS. Some algebra will give the relationship as
β0=β0β1x¯sd(x)β2z¯sd(z),β1=β1sd(x),β2=β2sd(z)
So standardization is not a necessary part of modelling. (It might still be done for other reasons, which we do not cover here). This answer depends also upon us using ordinary least squares. For some other fitting methods, such as ridge or lasso, standardization is important, because we loose this invariance we have with least squares. This is easy to see: both lasso and ridge do regularization based on the size of the betas, so any transformation which change the relative sizes of the betas will change the result!

And this discussion for the case of linear regression tells you what you should look after in other cases: Is there invariance, or is it not? Generally, methods which depends on distance measures among the predictors will not show invariance, so standardization is important. Another example will be clustering.


1
Can you explicitly show how one calculates one set of betas from the other in this particular example of scalings you have applied?
Mathews24

@kjetil Can I ask you a question building on this? I have a dataset of both categorical and continuous data, for which I'm building an SVM. The continuous data is highly skewed (long tail). For transformation on the continuous should I do a log transformation / Box-Cox and then also normalise the resultant data to get limits between 0 and 1? So i'll be normalising the log values. Then calculate the SVM on the continuous and categorical (0-1) data together? Cheers for any help you can provide
Chuck

1
Can you please add this as a new question? with reference back here!
kjetil b halvorsen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.