การเข้ารหัสตัวแปรหมวดหมู่โดยใช้การประมาณความน่าจะเป็น


22

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

ข้อเสนอแนะใด ๆ ที่จะได้รับการชื่นชมอย่างมาก.


จะทำอย่างไรในขณะที่คาดการณ์เวลาที่เราไม่มีป้ายกำกับเป้าหมาย
Ranjeet Singh

คำตอบ:


24

ฉันกำลังเรียนรู้หัวข้อนี้ด้วยและนี่คือสิ่งที่ฉันพบ:

  • การเข้ารหัสประเภทนี้เรียกว่าการเข้ารหัสโอกาส , การเข้ารหัสผลกระทบหรือการเข้ารหัสเป้าหมาย

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

  • หากคุณมีงานการจัดหมวดหมู่คุณจะคำนวณความถี่สัมพัทธ์ของเป้าหมายด้วยความเคารพต่อค่าหมวดหมู่ทั้งหมด

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

  • หากคุณทำแบบง่ายๆวิธีที่ฉันอธิบายไว้ข้างต้นคุณอาจได้รับการประเมินแบบเอนเอียง นั่นเป็นเหตุผลที่ในชุมชน Kaggle พวกเขามักจะใช้การตรวจสอบข้าม 2 ระดับ อ่านความคิดเห็นนี้โดย raddar ที่นี่ โน๊ตบุ๊คที่สอดคล้องกันคือที่นี่

คำพูด:

มันใช้ค่าเฉลี่ยของ y แต่ไม่ได้หมายถึงธรรมดา แต่ในการตรวจสอบข้ามในทางตรวจสอบข้าม;

สมมติว่าเรามีการตรวจสอบข้าม 20 เท่า เราต้องการวิธีการคำนวณค่าเฉลี่ยของคุณลักษณะสำหรับ # 1 fold โดยใช้ข้อมูลจาก # 2- # 20 folds เท่านั้น

ดังนั้นคุณใช้ # 2- # 20 เท่าสร้างการตรวจสอบความถูกต้องข้ามอีกชุดไว้ข้างใน (ฉันทำ 10 เท่า) คำนวณหาค่าเฉลี่ยของทุกครั้งที่ลาออกหนึ่งครั้ง (ในที่สุดคุณจะได้ 10 วิธี) คุณเฉลี่ย 10 ค่าเฉลี่ยและใช้เวกเตอร์นั้นสำหรับชุดการตรวจสอบ # 1 หลักของคุณ ทำซ้ำสำหรับส่วนที่เหลืออีก 19 เท่า

มันยากที่จะอธิบายยากที่จะเข้าใจและเป็นผู้เชี่ยวชาญ :) แต่ถ้าทำอย่างถูกต้องมันจะก่อให้เกิดประโยชน์มากมาย :)

  • การดำเนินงานของการเข้ารหัสนี้ก็อยู่ที่นี่

  • ในห้องสมุด R vtreatพวกเขามีการใช้การเข้ารหัสผลกระทบ ดูโพสต์นี้

  • ในไลบรารี CatBoostมีตัวเลือกมากมายสำหรับการเข้ารหัสตัวแปรเด็ดขาดรวมถึงการเข้ารหัสเป้าหมาย

  • ยังไม่มีการเข้ารหัสดังกล่าวใน sklearn


1
มีเป้าหมายการเข้ารหัสอยู่ในSklearn-contrib หมวดหมู่เข้ารหัส
Josh

คุณจะใช้การโต้ตอบกับคุณลักษณะอย่างไรในกรณีที่คุณใช้การเข้ารหัสเป้าหมาย ตัวอย่างเช่นคุณเข้ารหัสเป้าหมาย F1 และ F2 คุณจะคูณค่าที่เข้ารหัส F1 * F2 หรือไม่
Michael Larionov

ถ้าคุณคำนวณค่าเฉลี่ยสำหรับแต่ละเท่าของ LOO เท่านั้นคุณก็หาค่าเฉลี่ยของมันมันก็เหมือนกับที่คุณกำลังหาค่าเฉลี่ยของ # 2- # 20 เท่าผมไม่เห็นว่าทำไมนี่ถึงถือเป็น CV นอกจากนี้ฉันไม่เข้าใจสิ่งที่เขาหมายถึงโดย "เวกเตอร์" เมื่อเขาเฉลี่ย 10 วิธีนั้น
SiXUlm

ความเห็นสาย; การเข้ารหัสเป้าหมายในการเข้ารหัสหมวดหมู่เป็นการเข้ารหัสที่ง่าย มันไม่ได้ดำเนินการตามมาตรฐาน folds- ภายใน - พับอธิบายโดย raddar
Dan Scally

7

การเข้ารหัสเป้าหมายมีให้บริการใน sklearn ผ่านแพ็คเกจ category_encoders

เครื่องเข้ารหัสเป้าหมาย

คลาส category_encoders.target_encoder.TargetEncoder (verbose = 0, cols = ไม่มี, drop_invariant = False, return_df = จริง, impute_missing = True, handle_unknown = 'impute', min_samples_leaf = 1, การปรับให้เรียบ = 1

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

ตามที่ระบุไว้โดย josh ในความคิดเห็นข้างต้น


1

การเข้ารหัสโอกาสยังคงไม่สามารถใช้ได้ใน scikit เรียนรู้ คุณสามารถทำได้โดยการสร้างพจนานุกรมแล้วทำหน้าที่แทนที่

dict1 = {'cate1':1,'cate2':1,'cate3':2,'cate4':2}
for i in df.shape[0]:
    df.iloc[i] = dict1[df.iloc[i]] 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.