ผลที่ตามมาของการปรับขนาดคุณสมบัติ


11

ขณะนี้ฉันใช้ SVM และปรับขนาดคุณสมบัติการฝึกอบรมของฉันให้อยู่ในช่วง [0,1] ฉันพอดีแรก / เปลี่ยนชุดฝึกอบรมของฉันและจากนั้นให้ใช้เดียวกันการเปลี่ยนแปลงการตั้งค่าการทดสอบของฉัน ตัวอย่างเช่น:

    ### Configure transformation and apply to training set
    min_max_scaler = MinMaxScaler(feature_range=(0, 1))
    X_train = min_max_scaler.fit_transform(X_train)

    ### Perform transformation on testing set
    X_test = min_max_scaler.transform(X_test)

สมมติว่าคุณลักษณะที่กำหนดในชุดการฝึกอบรมมีช่วง [0,100] และคุณลักษณะเดียวกันในชุดการทดสอบมีช่วง [-10,120] ในชุดการฝึกอบรมนั้นจะมีการปรับขนาดให้เหมาะสมกับ [0,1] ในขณะที่ชุดการทดสอบนั้นจะถูกปรับขนาดให้อยู่ในช่วงนอกช่วงที่ระบุไว้ครั้งแรกเช่น [-0.1,1.2]

ฉันสงสัยว่าผลลัพธ์ของคุณลักษณะชุดการทดสอบนั้นอยู่นอกขอบเขตของสิ่งที่ใช้ในการฝึกอบรมโมเดลนั้นอย่างไร นี่เป็นปัญหาหรือไม่?

คำตอบ:


6

ภายในแต่ละชั้นเรียนคุณจะมีการแจกแจงค่าของคุณสมบัติต่างๆ ซึ่งในตัวของมันเองนั้นไม่ได้เป็นสาเหตุของความกังวล

จากมุมมองเชิงทฤษฎีเล็กน้อยคุณสามารถถามตัวเองว่าทำไมคุณควรปรับขนาดคุณสมบัติของคุณและทำไมคุณควรปรับขนาดในลักษณะที่เลือก
เหตุผลหนึ่งอาจเป็นเพราะอัลกอริทึมการฝึกอบรมเฉพาะของคุณเป็นที่รู้จักกันว่ามาบรรจบกันได้เร็วขึ้น (ดีกว่า) ด้วยค่าประมาณ 0 - 1 กว่าด้วยคุณสมบัติที่ครอบคลุมคำสั่งขนาดอื่น ๆ ในกรณีนี้คุณอาจจะสบายดี ฉันเดาว่า SVM ของคุณใช้ได้ดี: คุณต้องการหลีกเลี่ยงจำนวนมากเกินไปเนื่องจากผลิตภัณฑ์ด้านใน แต่สูงสุด 1.2 กับสูงสุด 1.0 จะไม่สร้างความแตกต่างมากนัก
(OTOH หากคุณรู้ว่าอัลกอริทึมของคุณไม่ยอมรับค่าลบที่คุณเห็นได้ชัดว่าเป็นปัญหา)

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

การสังเกตความแตกต่างของขนาดที่คุณอธิบายนั้นเป็นเหตุผลที่ทำให้ IMHO ดูมีเสถียรภาพในแบบจำลอง


7

นี่เป็นความคิดเห็น แต่มันยาวเกินไป

ข้อเท็จจริงที่ว่าชุดทดสอบของคุณมีช่วงที่แตกต่างกันอาจเป็นสัญญาณว่าชุดฝึกอบรมไม่ใช่ตัวแทนที่ดีของชุดทดสอบ อย่างไรก็ตามหากความแตกต่างเล็กมากอย่างในตัวอย่างของคุณเป็นไปได้ว่ามันจะไม่ส่งผลกระทบต่อการคาดการณ์ของคุณ น่าเสียดายที่ฉันไม่คิดว่าฉันมีเหตุผลที่ดีที่จะคิดว่ามันจะไม่ส่งผลกระทบต่อ SVM ในทุกกรณี

ขอให้สังเกตว่าเหตุผลสำหรับการใช้ MinMaxScalar คือ (ตามเอกสาร):

แรงจูงใจในการใช้มาตราส่วนนี้รวมถึงความทนทานต่อความเบี่ยงเบนมาตรฐานขนาดเล็กมากของคุณสมบัติ

ดังนั้นจึงเป็นสิ่งสำคัญที่คุณต้องตรวจสอบให้แน่ใจว่าข้อมูลของคุณตรงกับกรณีนั้น

หากคุณกังวลเกี่ยวกับการมีช่วงที่แตกต่างคุณควรใช้มาตรฐานปกติ (เช่นpreprocessing.scale) แทน


สวัสดี Robert ขอบคุณสำหรับการตอบกลับ! จุดดีเกี่ยวกับการเป็นตัวแทนของชุดฝึกอบรม / ทดสอบ แต่นี่คือข้อมูลอนุกรมเวลาดังนั้นข้อมูลใหม่เข้ามาฉันไม่สามารถรับประกันได้ว่าค่าจะมีค่าใกล้เคียงกับช่วงก่อนหน้านี้ ฉันมีความรู้สึกตรงตามที่คุณไม่มีเหตุผลที่ดีที่จะคิดว่ามันจะไม่ส่งผลกระทบต่อ SVM ในทุกกรณี
mike1886

คุณเปรียบเทียบการคาดการณ์โดยใช้ MinMaxScaler และมาตรฐานหรือไม่
Robert Smith

ฉันมีและผลลัพธ์คล้ายกัน แต่นั่นไม่ได้บอกฉันจริง ๆ ว่าสิ่งต่าง ๆ กำลังสับสนกับ MinMaxScalar
mike1886

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