เลยไปกว่าการจำแนกประเภทแบบไบนารี
การจำแนกประเภทแบบไบนารีเป็นเพียงกรณีพิเศษหนึ่งเท่านั้น จริงๆ แล้ว target encoding สามารถใช้กับตัวแปรเป้าหมายได้ทุกประเภท:
- สำหรับ binary classification มักใช้การ encode ด้วยค่าเฉลี่ยของ target
- สำหรับ regression อาจเปลี่ยนจากค่าเฉลี่ยเป็น median, quartile และค่าสถิติอื่นๆ ได้
- สำหรับ multi-class classification ที่มี N คลาส เราจะสร้าง N ฟีเจอร์ โดยคำนวณค่าเฉลี่ยของ target สำหรับแต่ละหมวดหมู่ในรูปแบบ one vs. all
ฟังก์ชัน mean_target_encoding() ที่สร้างไว้สามารถใช้กับตัวแปรเป้าหมายทุกประเภทที่กล่าวมาข้างต้น มาลองนำไปใช้กับปัญหา regression โดยอ้างอิงจากการแข่งขัน House Prices บน Kaggle กัน
เป้าหมายคือการ encode ฟีเจอร์ categorical ชื่อ "RoofStyle" ด้วย mean target encoding โดย DataFrame ชื่อ train และ test มีพร้อมใช้งานใน workspace แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การแข่งขัน Kaggle ด้วย Python
คำแนะนำการฝึกหัด
- ระบุพารามิเตอร์ที่ยังขาดอยู่ทั้งหมดในการเรียกฟังก์ชัน
mean_target_encoding()ชื่อตัวแปรเป้าหมายคือ"SalePrice"และกำหนด hyperparameter \(\alpha\) เป็น 10 - พารามิเตอร์
trainและtestรับ DataFrame ของชุดข้อมูล train และ test ตามลำดับ - ส่วนพารามิเตอร์
targetและcategoricalรับชื่อของตัวแปรเป้าหมายและฟีเจอร์ที่ต้องการ encode
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Create mean target encoded feature
train['RoofStyle_enc'], test['RoofStyle_enc'] = mean_target_encoding(train=train,
test=____,
target='____',
categorical='____',
alpha=____)
# Look at the encoding
print(test[['RoofStyle', 'RoofStyle_enc']].drop_duplicates())