เป็นคำถามที่ดีมาก ในความเป็นจริงปัญหานี้เกิดขึ้นมาระยะหนึ่งแล้วและฉันยังไม่พบวิธีแก้ปัญหาที่สมบูรณ์แบบ ยังมีความสุขมากกว่าที่จะแบ่งปันประสบการณ์ของฉัน:
- หลีกเลี่ยงการเข้ารหัสแบบร้อนมากที่สุดเท่าที่จะเป็นไปได้ (ตรงกันข้ามกับสิ่งที่แนะนำไว้ข้างต้น) เหตุผลก็คือมันไม่ทำงาน แบบจำลองที่มีคุณสมบัติการเข้ารหัสแบบร้อนใช้งานได้ก็ต่อเมื่อมีข้อมูลระดับย่อยทั้งหมดในข้อมูลการฝึกอบรม ตัวแบบจะไม่สามารถทำนายได้เว้นแต่ว่ามันจะถูกปรับแต่งด้วยตนเอง หากคุณค้นหาคุณจะพบว่ามีคนจำนวนมากพบปัญหานี้เมื่อแยกข้อมูลของพวกเขาออกเป็นรถไฟ / ทดสอบและพบกับปัญหาของคุณลักษณะย่อยบางอย่างที่ไม่ปรากฏในการฝึกอบรมและไม่สามารถคาดเดาการทดสอบได้ ถ้าคุณมีคุณสมบัติที่สำคัญมาก ๆ (อาจจะเหมือนกับชื่อเมืองของคุณด้วยชื่อเมือง 200 ชื่อ) สิ่งนี้จะเพิ่มมิติข้อมูลของคุณโดยไม่จำเป็น! ถ้าด้วยเหตุผลบางอย่างคุณอาจจำเป็นต้องทำการเข้ารหัสแบบร้อนแรงเพียงจำสิ่งเหล่านี้ไว้
ใช้วิธีการเข้ารหัสอื่น ๆ อาจลองเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการอื่น ๆ ที่มีประสิทธิภาพต่อปัญหานี้อย่างน้อยก็ในเวลาเช่นการเข้ารหัสตามเป้าหมายการแฮช (ดูข้อมูลอ้างอิงด้านล่าง) หากคุณใช้ Python จะมีตัวเลือกการเข้ารหัสที่ดีสำหรับแพ็คเกจ คุณอาจประหลาดใจที่เห็นว่าวิธีการง่าย ๆ อื่น ๆ มักใช้งานได้ดี
ฝึกรูปแบบของคุณ ในทางทฤษฎีเมื่อเรียนรู้รถไฟ / ชุดของคุณควรมีการกระจายตัวที่เหมือนกัน (ส่วนใหญ่จะคิดว่าเป็นการกระจายเป้าหมาย แต่สามารถเป็นจริงเกี่ยวกับตัวแปรได้เช่นกัน) ตอนนี้เมื่อมีไอเท็มใหม่เข้ามาการกระจายข้อมูลการทดสอบ (ที่มองไม่เห็น) ของคุณเปลี่ยนไป จากนั้นจึงเป็นการดีที่สุดที่จะฝึกฝนรูปแบบอีกครั้งเพื่อให้เมืองใหม่เหล่านั้นได้รับการพิจารณา
ใส่เพิ่มเข้ามาใหม่ประเภทแยกย่อย (และคนบ่อยน้อย) เพื่อให้คนอื่น ๆ ในขณะที่ประเด็นก่อนหน้านี้เป็นความจริงตามทฤษฎีมันมีความเป็นไปได้สูงมากที่การกระจายการทดสอบ (ของหมวดหมู่นั้น ๆ ) จะไม่เปลี่ยนแปลงอย่างมากในกรณีส่วนใหญ่ บางทีในกรณีของคุณคุณอาจมีเมือง 100 แห่งในฟีเจอร์ของเมืองและมีเพียงไม่กี่เมืองที่เพิ่งผ่านมา สิ่งที่ฉันจะพิจารณาจะดูที่ X-quantile ของหมวดหมู่นั้นและวางกลุ่มที่น้อยที่สุดในหมวดหมู่ย่อยอื่น ๆ สมมติว่าจุดข้อมูลที่เพิ่งเพิ่มเข้าไปของคุณมีเพียงเล็กน้อยมันจะเข้าสู่ส่วนอื่น ๆเป็นอย่างมากกลุ่ม. คุณจะสูญเสียความละเอียดระดับหนึ่งโดยการทำสิ่งนี้ แต่จุดของการเรียนรู้อีกครั้งคือไม่เพียง แต่แบบจำลองของคุณเรียนรู้ข้อมูลการฝึกอบรม แต่ที่สำคัญที่สุดคือสามารถสรุปข้อมูลที่มองไม่เห็นได้ดีและหากหมวดหมู่ใหม่ที่เพิ่มเข้ามา เป็นจุดข้อมูลมากการจัดกลุ่มทั้งหมดในกลุ่มอื่น ๆจะไม่เจ็บ
อื่น ๆ ล่าสุดที่ยังไม่โซลูชั่นผู้ใหญ่เช่นCat2Vec (ยืมมาจาก Word2Vec จาก NLP)หรือคล้ายคลึงกันการเข้ารหัส เหล่านี้เป็นอย่างมากที่ผ่านมาตรวจสอบกระดาษสำหรับอดีตและGitHubและตัวอย่าง (ขึ้นอยู่กับ Word2Vec)ใน Kaggle และนี้กระดาษสำหรับหลังและการดำเนินงาน แนวคิดของอดีตคือการแปลงหมวดหมู่เป็นเวกเตอร์ เท่าที่ฉันต้องบอกว่ามันสมเหตุสมผลแล้วที่จะทำงาน แต่ฉันไม่มีประสบการณ์ในการใช้มัน หลังเรียกว่าdirty_catดูมีแนวโน้มและใช้งานง่าย ไม่ว่าจะเป็นเรื่องดีหรือไม่ที่การมีหมวดหมู่สำคัญที่มองไม่เห็นในข้อมูลการทดสอบของคุณไม่ชัดเจนสำหรับฉัน!
PS: ฉันต้องการเพิ่มว่าแนวคิดของเมืองในตำแหน่งทางภูมิศาสตร์ที่ระบุไว้ในความคิดเห็นแรกนั้นดีจริงๆและมันก็ไม่ซับซ้อนเพราะมันเป็น Python API จำนวนมากเช่นโดย Google หรือที่นี่ที่อนุญาตให้คุณทำเช่นนั้น แต่มีข้อสังเกตว่านี่เป็นเพียงวิธีหนึ่งในการสร้างฟีเจอร์ใหม่ ๆ และแน่นอนว่าจะไม่ถูกแทนที่ด้วยฟีเจอร์ของเมืองเอง
การอ้างอิงที่น่าสนใจในการตรวจสอบครั้งแรก , สอง , สาม , สี่ (โดยเฉพาะเพื่อไม่!)
ประเด็นทั้งหมดที่กล่าวมาข้างต้นเป็นวิธีแก้ปัญหาที่ใช้งานได้จริงซึ่งค่อนข้างถูกต้องตามหลักทฤษฎีอย่างชัดเจนและแน่นอนว่าจะต้องมีการหารือเพิ่มเติม และฉันมีความสุขมากกว่าที่จะเรียนรู้เพิ่มเติม
city
เป็นตัวเลขตามฟังก์ชั่นบางอย่างได้หรือไม่? เช่นcity' = f(latitude, longitude)
นั้นคุณสามารถสร้างคุณค่าใหม่ให้กับเมืองใดก็ได้