การเลือกฟีเจอร์และการเพิ่มประสิทธิภาพพารามิเตอร์ไฮเปอร์จะต้องสั่งซื้อในขั้นตอนการเรียนรู้ของเครื่องอย่างไร?


15

วัตถุประสงค์ของฉันคือการจำแนกสัญญาณเซ็นเซอร์ แนวคิดของการแก้ปัญหาของฉันคือ: i) คุณสมบัติทางวิศวกรรมจากสัญญาณดิบ ii) การเลือกคุณสมบัติที่เกี่ยวข้องกับ ReliefF และวิธีการจัดกลุ่ม iii) ใช้ NN, Random Forest และ SVM

อย่างไรก็ตามฉันติดอยู่ในภาวะที่กลืนไม่เข้าคายไม่ออก ใน ii) และ iii) มีพารามิเตอร์หลายตัวเช่น k-Neigbours ที่ใกล้ที่สุดสำหรับ ReliefF หรือความยาวหน้าต่างซึ่งสัญญาณเซ็นเซอร์จะถูกประเมินหรือจำนวนหน่วยที่ซ่อนอยู่ในแต่ละชั้นของ NN

มี 3 ปัญหาที่ฉันเห็นที่นี่: 1) การปรับพารามิเตอร์การเลือกคุณสมบัติจะมีผลต่อประสิทธิภาพการแยกประเภท 2) การเพิ่มประสิทธิภาพของพารามิเตอร์ตัวจําแนก 3) การประเมินการรวมกันที่เป็นไปได้ของการกำหนดค่าแต่ละอย่างเป็นไปไม่ได้

ดังนั้นคำถามของฉันคือ: a) ฉันสามารถสร้างสมมติฐานที่ทำให้เข้าใจง่ายได้ง่ายพารามิเตอร์การเลือกคุณลักษณะการปรับค่า st สามารถแยกออกจากการปรับพารามิเตอร์ตัวแยกประเภทได้หรือไม่ b) มีวิธีแก้ไขอื่น ๆ ที่เป็นไปได้หรือไม่?


ฉันคิดว่าการปรับการเลือกคุณลักษณะการถอดรหัสและการปรับตัวแยกประเภทถูกต้องเนื่องจาก heuritsic สำหรับ reliefF มีวัตถุประสงค์เพื่อเพิ่มความแปรปรวนระหว่างคลาสให้มากที่สุดและลดความแปรปรวนของคลาสภายในซึ่งย่อมาจากตัวบ่งชี้ที่ดี สำหรับการปรับพารามิเตอร์ที่ดีที่สุดสำหรับ reliefF ยังทำให้ classifer ที่ดีมีแนวโน้มมากขึ้น อย่างไรก็ตามการมีสูตรทางคณิตศาสตร์เพื่อสนับสนุนความคิดนี้จะดีมาก
Grunwalski

1
ตัวแปรเฉพาะของคำถามนี้: ควรเลือกส่วนที่เป็นส่วนหนึ่งของชุดคำสั่ง crossvalidation (เช่น: # สำหรับชุดคลาสไฮเปอร์พาราแรมแต่ละชุด: # สำหรับแต่ละกลุ่มที่เรียกใช้ CV k-fold: 1) เลือกคุณสมบัติ, 2) ปรับขนาดคุณสมบัติ 3) 4) คาดการณ์ชุดทดสอบ?
Nikolas Rieble

1
@NikolasRieble ฉันเขียนคำตอบสำหรับคำถามเดิมและยังรวมถึงคำถามของคุณในคำตอบ
เดนนิส Soemers

คำตอบ:


15

เช่นเดียวกับที่คุณสังเกตเห็นแล้วตัวเลือกคุณลักษณะ (การเลือกคุณสมบัติ) ของคุณอาจมีผลกระทบต่อพารามิเตอร์ในขั้นตอนวิธีของคุณที่ดีที่สุดและพารามิเตอร์ใดที่คุณเลือกสำหรับอัลกอริทึมของคุณอาจมีผลกระทบต่อคุณลักษณะที่เหมาะสมที่สุด

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

ในทางปฏิบัติอาจไม่เป็นไปได้จริง ๆ โดยทั่วไปหากคุณไม่สามารถประเมินชุดค่าผสมที่เป็นไปได้ทั้งหมดฉันแนะนำ:

  1. เพิ่มประสิทธิภาพพารามิเตอร์ไฮเปอร์พารามิเตอร์อย่างหลวม ๆ เพื่อให้แน่ใจว่าคุณไม่ได้กำหนดค่าที่ไม่ดีอย่างมากให้กับพารามิเตอร์ไฮเปอร์พารามิเตอร์บางตัว สิ่งนี้สามารถทำได้ด้วยมือหากคุณมีความเข้าใจอย่างง่ายเกี่ยวกับพารามิเตอร์ของคุณหรือทำด้วยขั้นตอนการเพิ่มประสิทธิภาพพารามิเตอร์ hyperparameter สั้น ๆ โดยใช้คุณสมบัติมากมายที่คุณรู้ว่าดีพอสมควร

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

  3. เพิ่มประสิทธิภาพพารามิเตอร์ไฮเปอร์พารามิเตอร์ด้วยคุณสมบัติที่เลือกในขั้นตอนข้างต้น นี่ควรเป็นชุดคุณลักษณะที่ดีในขณะนี้ซึ่งจริงๆแล้วมันอาจคุ้มค่าที่จะเพิ่มประสิทธิภาพไฮเปอร์สปาบิต


เพื่อตอบคำถามเพิ่มเติมที่ Nikolas โพสต์ไว้ในความคิดเห็นเห็นด้วยว่าสิ่งเหล่านี้ทั้งหมด (การเลือกคุณสมบัติการเพิ่มประสิทธิภาพพารามิเตอร์ไฮเปอร์พารามิเตอร์) โต้ตอบกับการตรวจสอบความถูกต้องข้ามของ k-fold: ฉันบอกว่ามันขึ้นอยู่กับ

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

  1. ทำซ้ำขั้นตอนที่สมบูรณ์ภายในทุก ๆ วงแยกต่างหาก (เช่นภายในแต่ละครึ่งทำการเลือกคุณสมบัติ + เพิ่มประสิทธิภาพพารามิเตอร์ไฮเปอร์พารามิเตอร์และรูปแบบการฝึกอบรม) การทำเช่นนี้หมายถึงว่า K-พับการตรวจสอบข้ามจะช่วยให้คุณประมาณการเป็นกลางของประสิทธิภาพการทำงานของท่อนี้เสร็จสมบูรณ์

  2. แยกชุดข้อมูลเริ่มต้นของคุณออกเป็น '' ชุดประมวลผลล่วงหน้า '' และชุดข้อมูล '' รถไฟ / ทดสอบ '' คุณสามารถทำการเลือกคุณสมบัติของคุณ + การเพิ่มประสิทธิภาพพารามิเตอร์ไฮเปอร์พารามิเตอร์ใน '' ชุดประมวลผลล่วงหน้า '' จากนั้นคุณจะแก้ไขฟีเจอร์และพารามิเตอร์ที่คุณเลือกและทำการตรวจสอบความถูกต้องไขว้กันของ k-fold ในชุดข้อมูล '' train / test '' การทำเช่นนี้หมายความว่าการตรวจสอบความถูกต้องด้วย K-fold ช่วยให้คุณประเมินประสิทธิภาพของอัลกอริทึม ML ของคุณโดยไม่ลำเอียงเนื่องจากการตั้งค่าคุณลักษณะและพารามิเตอร์ไฮเปอร์พารามิเตอร์คงที่

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

หากในอีกทางหนึ่งคุณสามารถที่จะทำการเลือกคุณสมบัติ + การเพิ่มประสิทธิภาพพารามิเตอร์ไฮเปอร์พารามิเตอร์ในชีวิตของคุณเพียงครั้งเดียวและหลังจากนั้นเพียงฝึกอบรมอัลกอริทึมของคุณใหม่เป็นประจำ (ด้วยการตั้งค่าคุณลักษณะ เพียงขั้นตอนนั้นจะเป็นสิ่งที่คุณสนใจและคุณควรไปหาวิธีที่สอง


1
คุณสามารถให้การอ้างอิงเช่นกัน?
Nikolas Rieble

1
มีภาพของหนังสือที่รู้จักกันดีในโพสต์นี้บางส่วน: nodalpoint.com/not-perform-feature-selection ดูเหมือนว่าจะเห็นด้วยกับ '' ทางออกที่เป็นไปได้ 1 '' ของฉัน ฉันไม่ได้มีการอ้างอิงจำเป็นสำหรับกรณีอื่น ๆ นอกเหนือจาก ... ตัวเอง? ฉันได้ให้เหตุผล / แรงบันดาลใจของฉันที่นั่นซึ่งในความคิดของฉันตรวจสอบดังนั้นนั่นคือการอ้างอิง: D
Dennis Soemers

1
บทของ ESL นั้นควรจะต้องมีการอ่าน 100% สำหรับผู้ทำนายแบบจำลองใด ๆ
Matthew Drury

ดังนั้นเกี่ยวกับ soln 1 คุณจะได้รับชุดคุณลักษณะขั้นสุดท้ายและพารามิเตอร์ไฮเปอร์โมเดลหลังจากรันการเลือกคุณสมบัติ (fs) และการเพิ่มประสิทธิภาพไฮเปอร์พาราเฟรม (โฮ) ในหลาย ๆ cv? เช่นกันเมื่อเราแสดงสิ่งเหล่านี้ด้วย cv เราจะเรียกใช้ fs ก่อนแล้วจึงใช้คุณสมบัติเหล่านั้นหรือไม่
sma

1
K-1

4

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

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

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

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

มีรุ่น ML หลายรุ่นที่รวมคุณสมบัติการเลือกนี้ไว้ไม่ทางใดก็ทางหนึ่ง

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


0

@DennisSoemers มีทางออกที่ดี ฉันจะเพิ่มโซลูชันที่คล้ายกันสองวิธีซึ่งมีความชัดเจนมากกว่าและอิงตามฟีเจอร์วิศวกรรมและการเลือก: แนวทางปฏิบัติสำหรับแบบจำลองการทำนายโดย Max Kuhn และ Kjell Johnson

Kuhn ใช้คำresampleเพื่ออธิบายfoldชุดข้อมูล แต่ดูเหมือนว่าคำที่โดดเด่นใน StackExchange จะเป็นfoldดังนั้นฉันจะใช้คำfoldด้านล่าง

ตัวเลือก 1 - การค้นหาที่ซ้อนกัน

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

1) การพับภายนอกแต่ละครั้งมีการเซ็ตย่อยที่แตกต่างกัน

2) การพับภายในแต่ละครั้งพร้อมการค้นหาพารามิเตอร์

3) การพับภายในของการค้นหาพารามิเตอร์แต่ละครั้งแต่ละครั้งจะมีการตั้งค่าพารามิเตอร์ไฮเปอร์พารามิเตอร์ที่แตกต่างกัน

นี่คืออัลกอริทึม:

-> Split data into train and test sets.
-> For each external fold of train set:
    -> Select feature subset.
    -> Split into external train and test sets.

    -> For each internal fold of external train set:
        -> Split into internal train and test sets.
        -> Perform hyperparameter tuning on the internal train set. Note that this
           step is another level of nesting in which the internal train set is split
           into multiple folds and different hyperparameter sets are trained and tested on
           different folds.
    -> Examine the performance of the best hyperparameter tuned model 
       from each of the inner test folds. If performance is consistent, redo 
       the internal hyperparameter tuning step on the entire external train set.
    -> Test the model with the best hyperparameter set on the external test set.

-> Choose the feature set with the best external test score.
-> Retrain the model on all of the training data using the best feature set 
   and best hyperparameters for that feature set. 

ป้อนคำอธิบายรูปภาพที่นี่ ภาพจากบทที่ 11.2: ตัวกรองแบบง่าย

-> Select feature subsetขั้นตอนที่บอกเป็นนัย ๆ จะสุ่ม แต่มีเทคนิคอื่น ๆ ซึ่งมีการระบุไว้ในหนังสือเล่มนี้ในบทที่ 11

ชี้แจง-> Perform hyperparameter tuning stepคุณสามารถอ่านข้อมูลเกี่ยวกับวิธีการที่แนะนำของการตรวจสอบข้ามซ้อนกัน แนวคิดคือการทดสอบความทนทานของกระบวนการฝึกอบรมโดยทำซ้ำขั้นตอนการฝึกอบรมและการทดสอบในส่วนต่าง ๆ ของข้อมูลและดูค่าเฉลี่ยของผลการทดสอบ

ตัวเลือกที่ 2 - พารามิเตอร์ไฮเปอร์พารามิเตอร์แยกต่างหากและการค้นหาการเลือกคุณลักษณะ

-> Split data into hyperameter_train, feature_selection_train, and test sets.

-> Select a reasonable subset of features using expert knowledge.

-> Perform nested cross validation with the initial features and the 
   hyperparameter_train set to find the best hyperparameters as outlined in option 1.

-> Use the best hyperparameters and the feature_selection_train set to find 
   the best set of features. Again, this process could be nested cross 
   validation or not, depending on the computational cost that it would take 
   and the cost that is tolerable.

นี่คือวิธีที่คุณและ Johsnon วลีดำเนินการ:

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

บทที่ 12.5: วิธีการค้นหาทั่วโลก


-1

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

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


คุณหมายถึงว่ากำลังพยายามจนกว่าจะได้ผล: D
Grunwalski

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