คุณสมบัติการเข้ารหัสเช่นเดือนและชั่วโมงเป็นหมวดหมู่หรือตัวเลข?


23

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

ในอีกด้านหนึ่งฉันรู้สึกว่าการเข้ารหัสตัวเลขอาจสมเหตุสมผลเนื่องจากเวลาเป็นกระบวนการที่ก้าวหน้าไปข้างหน้า (เดือนที่ห้าตามด้วยเดือนที่หก) แต่ในทางกลับกันฉันคิดว่าการเข้ารหัส categorial อาจสมเหตุสมผลมากกว่าเนื่องจากลักษณะวงจร ของปีและวัน (เดือนที่ 12 ตามด้วยเดือนแรก)

มีวิธีแก้ไขปัญหาทั่วไปหรือแบบแผนสำหรับสิ่งนี้หรือไม่?


ฉันประสบปัญหาเดียวกันในการกำหนดชั่วโมงของตัวแปรวัน (1 ถึง 24) ในโมเดล RF ถ้าฉันแปลงตัวแปรเป็นหมวดหมู่ฟังก์ชัน VarImp จะแสดงค่าความสำคัญสำหรับแต่ละชั่วโมงและดูไม่เป็นระเบียบมาก ฉันแค่สงสัยว่ามันจำเป็นต้องแปลงตัวแปรตัวเลข 'ชั่วโมงของวัน' เพื่อจัดหมวดหมู่?
Mahmudur Rahman

คำตอบ:


19

คุณได้พิจารณาเพิ่มการแปลง (ไซน์, โคไซน์) ของตัวแปรช่วงเวลาของวันหรือไม่? สิ่งนี้จะช่วยให้มั่นใจได้ว่าตัวอย่างเช่น 0 และ 23 ชั่วโมงนั้นอยู่ใกล้กันดังนั้นจึงช่วยให้ลักษณะของวัฏจักรของตัวแปรส่องผ่าน

( ข้อมูลเพิ่มเติม )


มีปัญหากับเรื่องนี้เพราะถ้าฉันทำ: sin (pi * X / 24) โดยที่ X ใน [0, 23] เรามีการประเมินแบบเดียวกันเป็นเวลา 6 โมงเช้าและ 18 โมงเป็นบาป (pi * 6/24) == sin (PI * 18/24) แต่เหล่านี้เป็นชั่วโมงที่แตกต่างกันโดยสิ้นเชิง
Eran Moshe

สามารถทำวงจรเช่นนี้: sin (pi * X / 12) ขอบคุณ Eran:]
Eran Moshe

@EranMoshe fyi ในโพสต์จากลิงก์ด้านบนพวกเขาใช้ตัวคูณ 2 * pi แทนดังนั้นมันจะเป็นบาป (2 * pi * X / 12) - พวกเขาให้เหตุผลบางอย่างกับเรื่องนี้ในความคิดเห็น
tsando

และ (2 * pi X / 24) ซึ่งก็คือ (pi X / 12):] ตามที่คุณเห็นฉันได้ต่อสู้กับปัญหาเดียวกันที่แน่นอนผู้เขียนblog.davidkaleko.com/feature-engineering-cyclical-features.htmlถูกดิ้นรนด้วย และในความคิดเห็นที่คุณสามารถเห็น "Mariel G" แก้ไขเขาตรงตามที่ฉันได้ตระหนัก: pi * X / 12 จะไหลเวียนในชั่วโมงของวัน สิ่งที่ฉันได้เรียนรู้ก็คือคุณจะต้องใช้องค์ประกอบ cos และบาปของสิ่งนี้เพื่อกำหนดระยะเวลา 24 ชั่วโมงจริง! (คุณต้องการวงกลมที่แท้จริงไม่ใช่ฟังก์ชันแบบเป็นคาบ)
Eran Moshe

@EranMoshe อ่าใช่ถ้าคุณต้องการทำมากกว่าชั่วโมงมันจะลดลงเป็น piX / 12 แต่ถ้าคุณต้องการทำเดือนก็จะเป็น 2piX / 12 เช่น pi / 6 ดังนั้นโดยทั่วไปจะเป็น 2piX / งวด
tsando

9

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

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

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

การจัดกลุ่มตัวอย่างบางส่วน:

  • สำหรับเดือนแบ่งเป็นไตรมาสหรือฤดูกาลขึ้นอยู่กับกรณีการใช้งาน เช่น Jan-Mar, Apr-Jun เป็นต้น
  • สำหรับชั่วโมงของวันกลุ่มในถังเวลาของวัน: ตอนเช้าตอนเย็น ฯลฯ
  • สำหรับวันของสัปดาห์ให้จัดกลุ่มเป็นวันทำงานวันหยุดสุดสัปดาห์

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


4

ฉันแนะนำให้ใช้คุณสมบัติเป็นตัวเลข การใช้คุณสมบัติตามหมวดหมู่หมายความว่าคุณไม่ได้พิจารณาระยะห่างระหว่างสองหมวดหมู่ตามความเกี่ยวข้อง (เช่นหมวดที่ 1 ใกล้เคียงกับหมวดหมู่ 2 มากเท่ากับหมวดหมู่ 3) นี่ไม่ใช่กรณีสำหรับชั่วโมงหรือเดือน

อย่างไรก็ตามปัญหาที่คุณเพิ่มขึ้นคือคุณต้องการแสดงชั่วโมงและเดือนในลักษณะที่ 12 ใกล้เคียงกับ 11 เท่ากับ 1 เพื่อให้บรรลุนั้นฉันขอแนะนำให้ไปกับสิ่งที่แนะนำในการแสดงความคิดเห็นและการใช้ ฟังก์ชัน sine / cosine ก่อนใช้ชั่วโมง / เดือนเป็นคุณสมบัติตัวเลข


3

ขึ้นอยู่กับอัลกอริทึมที่คุณใช้

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

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


ขึ้นอยู่กับการใช้งานแบบทรี แพ็คเกจที่ใช้กันอย่างแพร่หลายเช่น scikit-learn และ xgboost ไม่รู้จักตัวแปรเด็ดขาด คุณคาดว่าจะเข้ารหัสหนึ่งครั้ง
Ricardo Cruz

จากโพสต์นี้: ไปยังดาต้าแตรนซ์ดอทคอม / …คุณไม่ควรใช้อันร้อนแรงสำหรับทุกสิ่งบนพื้นฐานของต้นไม้ตัดสินใจ
แอชลีย์

1

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


1

การใช้ถ้อยคำคำตอบให้โดย @raghu ความแตกต่างที่สำคัญอย่างหนึ่งระหว่างคุณลักษณะที่เป็นหมวดหมู่และตัวเลขคือขนาดของตัวเลขนั้นเปรียบได้หรือไม่นั่นคือ 2019 มีขนาดใหญ่กว่า 2018 หรือธันวาคม (12) มีขนาดใหญ่กว่ามีนาคม (3)? ไม่ได้จริงๆ ในขณะที่มีลำดับต่อเนื่องในตัวเลขเหล่านี้ขนาดของพวกเขาจะไม่เทียบเท่า ดังนั้นการเปลี่ยนเป็นค่าหมวดหมู่อาจทำให้เข้าใจได้ง่ายขึ้น

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