การนําเสนอ: คุณสมบัติของฟีเจอร์ที่ดี

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

หลีกเลี่ยงค่าฟีเจอร์ที่ไม่ค่อยมีใครใช้

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

house_type: victorian

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

unique_house_id: 8SK982ZZ1242Z

ต้องการความหมายที่ชัดเจน

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

 house_age_years: 27 

ในทางตรงกันข้าม ค่าของคุณลักษณะต่อไปนี้ก็ไม่ค่อยเข้าใจเลย ยกเว้นวิศวกรที่เป็นคนสร้างค่านั้น

house_age: 851472000

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

user_age_years: 277

อย่ารวมค่า "เวทมนตร์" กับข้อมูลจริง

ฟีเจอร์จุดลอยตัวที่ดีต้องไม่มีความไม่ต่อเนื่องหรือค่า "มหัศจรรย์" แปลกๆ เช่น สมมติว่าฟีเจอร์มีค่าจุดลอยตัวระหว่าง 0 ถึง 1 ดังนั้น ค่าต่างๆ ต่อไปนี้ก็ใช้ได้

quality_rating: 0.82
quality_rating: 0.37

อย่างไรก็ตาม หากผู้ใช้ไม่ได้ป้อน quality_rating อาจเป็นเพราะชุดข้อมูลนั้นไม่มีอยู่พร้อมกับค่าพิเศษดังต่อไปนี้

quality_rating: -1

หากต้องการทำเครื่องหมายค่าเวทมนตร์อย่างชัดแจ้ง ให้สร้างฟีเจอร์บูลีนที่ระบุว่ามีการให้ quality_rating หรือไม่ ตั้งชื่อฟีเจอร์บูลีนนี้ เช่น is_quality_rating_defined

ในฟีเจอร์เดิม ให้แทนที่ค่าพิเศษดังนี้

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

บัญชีสำหรับความไม่เสถียรของอัปสตรีม

คำจำกัดความของฟีเจอร์ไม่ควรเปลี่ยนแปลงเมื่อเวลาผ่านไป เช่น ค่าต่อไปนี้มีประโยชน์เนื่องจากชื่อเมืองอาจจะจะไม่เปลี่ยนแปลง (โปรดทราบว่าเราจะยังคงต้องแปลงสตริง เช่น "br/sao_paulo" เป็นเวกเตอร์แบบ One-hot)

city_id: "br/sao_paulo"

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

inferred_city_cluster: "219"