เราได้สำรวจวิธีจับคู่ข้อมูลดิบกับเวกเตอร์จุดสนใจที่เหมาะสม แต่นั่นเป็นเพียงส่วนหนึ่งของการทำงานเท่านั้น ทีนี้เราต้องสำรวจว่าจริงๆ แล้วค่าชนิดใด ทำให้เกิดคุณลักษณะที่ดีภายในเวกเตอร์ของคุณลักษณะเหล่านั้น
หลีกเลี่ยงค่าฟีเจอร์ที่ไม่ค่อยมีใครใช้
ค่าฟีเจอร์ที่ดีควรปรากฏมากกว่า 5 ครั้งโดยประมาณในชุดข้อมูล
การดำเนินการดังกล่าวช่วยให้โมเดลเรียนรู้ว่าค่าของฟีเจอร์นี้เกี่ยวข้องกับป้ายกำกับอย่างไร
กล่าวคือ การมีตัวอย่างจำนวนมากที่มีค่าที่ไม่ต่อเนื่องเดียวกันทำให้โมเดลมีโอกาสเห็นฟีเจอร์ในการตั้งค่าที่แตกต่างกัน และในทางกลับกัน ก็ให้พิจารณาว่าตัวคาดการณ์ที่ดีสำหรับป้ายกำกับเมื่อใด ตัวอย่างเช่น ฟีเจอร์ house_type
น่าจะมีตัวอย่างจำนวนมากที่มีค่าเป็น victorian
ดังนี้
✔This is a good example:house_type: victorian
ในทางกลับกัน หากค่าของจุดสนใจปรากฏขึ้นเพียงครั้งเดียวหรือน้อยมาก โมเดลจะไม่สามารถคาดการณ์จากคุณลักษณะนั้นได้ ตัวอย่างเช่น unique_house_id
เป็นฟีเจอร์ที่ไม่ดี เนื่องจากมีการใช้แต่ละค่าเพียงครั้งเดียว โมเดลจึงไม่เรียนรู้อะไรจากค่านั้นเลย
The following is an example of a unique value. This should be avoided.✘unique_house_id: 8SK982ZZ1242Z
ต้องการความหมายที่ชัดเจน
แต่ละสถานที่ควรมีความหมายที่ชัดเจนสำหรับทุกคนในโครงการ ตัวอย่างเช่น ชื่อฟีเจอร์ที่ดีต่อไปนี้มีการตั้งชื่ออย่างชัดเจน และค่านิยมดังกล่าวเหมาะสมกับชื่อ
✔The meaning of the following value is clear from the label and value.house_age_years: 27
ในทางตรงกันข้าม ค่าของคุณลักษณะต่อไปนี้ก็ไม่ค่อยเข้าใจเลย ยกเว้นวิศวกรที่เป็นคนสร้างค่านั้น
✘The following is an example of a value that is unclear. This should be avoidedhouse_age: 851472000
ในบางกรณี ข้อมูลที่มีเสียงดัง (ไม่ใช่ทางเลือกทางวิศวกรรมที่ไม่ดี) ทำให้เกิดค่าที่ไม่ชัดเจน ตัวอย่างเช่น user_age_years ต่อไปนี้มาจากแหล่งที่มาที่ไม่ได้ตรวจสอบค่าที่เหมาะสม
✘The following is an example of noisy/bad data. This should be avoided.user_age_years: 277
อย่ารวมค่า "เวทมนตร์" กับข้อมูลจริง
ฟีเจอร์จุดลอยตัวที่ดีต้องไม่มีความไม่ต่อเนื่องหรือค่า "มหัศจรรย์" แปลกๆ เช่น สมมติว่าฟีเจอร์มีค่าจุดลอยตัวระหว่าง 0 ถึง 1 ดังนั้น ค่าต่างๆ ต่อไปนี้ก็ใช้ได้
✔The following is a good example:quality_rating: 0.82 quality_rating: 0.37
อย่างไรก็ตาม หากผู้ใช้ไม่ได้ป้อน quality_rating
อาจเป็นเพราะชุดข้อมูลนั้นไม่มีอยู่พร้อมกับค่าพิเศษดังต่อไปนี้
✘The following is an example of a magic value. This should be avoided.quality_rating: -1
หากต้องการทำเครื่องหมายค่าเวทมนตร์อย่างชัดแจ้ง ให้สร้างฟีเจอร์บูลีนที่ระบุว่ามีการให้ quality_rating
หรือไม่ ตั้งชื่อฟีเจอร์บูลีนนี้ เช่น is_quality_rating_defined
ในฟีเจอร์เดิม ให้แทนที่ค่าพิเศษดังนี้
- สำหรับตัวแปรที่ใช้ชุดค่าที่จำกัด (ตัวแปรที่ไม่ต่อเนื่อง) ให้เพิ่มค่าใหม่ลงในชุดและใช้เพื่อระบุว่าค่าฟีเจอร์นั้นหายไป
- สำหรับตัวแปรต่อเนื่อง ให้ตรวจสอบว่าค่าที่หายไปไม่ส่งผลกระทบต่อโมเดลโดยใช้ค่าเฉลี่ยของข้อมูลฟีเจอร์
บัญชีสำหรับความไม่เสถียรของอัปสตรีม
คำจำกัดความของฟีเจอร์ไม่ควรเปลี่ยนแปลงเมื่อเวลาผ่านไป เช่น ค่าต่อไปนี้มีประโยชน์เนื่องจากชื่อเมืองอาจจะจะไม่เปลี่ยนแปลง (โปรดทราบว่าเราจะยังคงต้องแปลงสตริง เช่น "br/sao_paulo" เป็นเวกเตอร์แบบ One-hot)
✔This is a good example:city_id: "br/sao_paulo"
แต่การรวบรวมค่าที่อนุมานจากโมเดลอื่นจะมีค่าใช้จ่ายเพิ่มเติม บางทีค่า "219" อาจแสดงถึงเซาเปาโลในปัจจุบัน แต่การแทนนี้อาจเปลี่ยนแปลงได้อย่างง่ายดายในอนาคตของอีกรูปแบบหนึ่ง
✘The following is an example of a value that could change. This should be avoided.inferred_city_cluster: "219"