ฉันจะจำแนกข้อมูลที่ไม่มีหมวดหมู่ได้อย่างไร?


10

ฉันมีปัญหาการจัดหมวดหมู่ด้วยข้อมูลทั้งหมวดหมู่และตัวเลข ปัญหาที่ฉันเผชิญคือข้อมูลที่เป็นหมวดหมู่ของฉันไม่ได้รับการแก้ไขนั่นหมายความว่าผู้สมัครใหม่ที่มีป้ายกำกับที่ฉันต้องการคาดการณ์อาจมีหมวดหมู่ใหม่ที่ไม่ได้สังเกตเห็นล่วงหน้า

ตัวอย่างเช่นถ้าข้อมูลที่แน่ชัดของฉันเป็นsexเพียงป้ายชื่อที่เป็นไปได้female, maleและotherไม่ว่าสิ่งที่ อย่างไรก็ตามตัวแปรตามหมวดหมู่ของฉันคือcityมันอาจเกิดขึ้นได้ว่าคนที่ฉันพยายามจะทำนายมีเมืองใหม่ที่ตัวจำแนกของฉันไม่เคยเห็น

ฉันสงสัยว่ามีวิธีการจัดหมวดหมู่ในข้อกำหนดเหล่านี้หรือถ้าฉันควรทำการฝึกอบรมอีกครั้งโดยพิจารณาข้อมูลหมวดหมู่ใหม่นี้


1
คุณสามารถแปลงcityเป็นตัวเลขตามฟังก์ชั่นบางอย่างได้หรือไม่? เช่นcity' = f(latitude, longitude)นั้นคุณสามารถสร้างคุณค่าใหม่ให้กับเมืองใดก็ได้
Mohammad Athar

@ โมฮัมหมัดที่นี่ได้มอบโซลูชั่นที่สมบูรณ์แบบหวังว่า OP จะเห็นมัน!
Francesco Pegoraro

คำตอบ:


11

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

  • หลีกเลี่ยงการเข้ารหัสแบบร้อนมากที่สุดเท่าที่จะเป็นไปได้ (ตรงกันข้ามกับสิ่งที่แนะนำไว้ข้างต้น) เหตุผลก็คือมันไม่ทำงาน แบบจำลองที่มีคุณสมบัติการเข้ารหัสแบบร้อนใช้งานได้ก็ต่อเมื่อมีข้อมูลระดับย่อยทั้งหมดในข้อมูลการฝึกอบรม ตัวแบบจะไม่สามารถทำนายได้เว้นแต่ว่ามันจะถูกปรับแต่งด้วยตนเอง หากคุณค้นหาคุณจะพบว่ามีคนจำนวนมากพบปัญหานี้เมื่อแยกข้อมูลของพวกเขาออกเป็นรถไฟ / ทดสอบและพบกับปัญหาของคุณลักษณะย่อยบางอย่างที่ไม่ปรากฏในการฝึกอบรมและไม่สามารถคาดเดาการทดสอบได้ ถ้าคุณมีคุณสมบัติที่สำคัญมาก ๆ (อาจจะเหมือนกับชื่อเมืองของคุณด้วยชื่อเมือง 200 ชื่อ) สิ่งนี้จะเพิ่มมิติข้อมูลของคุณโดยไม่จำเป็น! ถ้าด้วยเหตุผลบางอย่างคุณอาจจำเป็นต้องทำการเข้ารหัสแบบร้อนแรงเพียงจำสิ่งเหล่านี้ไว้
  • ใช้วิธีการเข้ารหัสอื่นอาจลองเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการอื่น ๆ ที่มีประสิทธิภาพต่อปัญหานี้อย่างน้อยก็ในเวลาเช่นการเข้ารหัสตามเป้าหมายการแฮช (ดูข้อมูลอ้างอิงด้านล่าง) หากคุณใช้ Python จะมีตัวเลือกการเข้ารหัสที่ดีสำหรับแพ็คเกจ คุณอาจประหลาดใจที่เห็นว่าวิธีการง่าย ๆ อื่น ๆ มักใช้งานได้ดี

  • ฝึกรูปแบบของคุณ ในทางทฤษฎีเมื่อเรียนรู้รถไฟ / ชุดของคุณควรมีการกระจายตัวที่เหมือนกัน (ส่วนใหญ่จะคิดว่าเป็นการกระจายเป้าหมาย แต่สามารถเป็นจริงเกี่ยวกับตัวแปรได้เช่นกัน) ตอนนี้เมื่อมีไอเท็มใหม่เข้ามาการกระจายข้อมูลการทดสอบ (ที่มองไม่เห็น) ของคุณเปลี่ยนไป จากนั้นจึงเป็นการดีที่สุดที่จะฝึกฝนรูปแบบอีกครั้งเพื่อให้เมืองใหม่เหล่านั้นได้รับการพิจารณา

  • ใส่เพิ่มเข้ามาใหม่ประเภทแยกย่อย (และคนบ่อยน้อย) เพื่อให้คนอื่น ๆ ในขณะที่ประเด็นก่อนหน้านี้เป็นความจริงตามทฤษฎีมันมีความเป็นไปได้สูงมากที่การกระจายการทดสอบ (ของหมวดหมู่นั้น ๆ ) จะไม่เปลี่ยนแปลงอย่างมากในกรณีส่วนใหญ่ บางทีในกรณีของคุณคุณอาจมีเมือง 100 แห่งในฟีเจอร์ของเมืองและมีเพียงไม่กี่เมืองที่เพิ่งผ่านมา สิ่งที่ฉันจะพิจารณาจะดูที่ X-quantile ของหมวดหมู่นั้นและวางกลุ่มที่น้อยที่สุดในหมวดหมู่ย่อยอื่น ๆ สมมติว่าจุดข้อมูลที่เพิ่งเพิ่มเข้าไปของคุณมีเพียงเล็กน้อยมันจะเข้าสู่ส่วนอื่น ๆเป็นอย่างมากกลุ่ม. คุณจะสูญเสียความละเอียดระดับหนึ่งโดยการทำสิ่งนี้ แต่จุดของการเรียนรู้อีกครั้งคือไม่เพียง แต่แบบจำลองของคุณเรียนรู้ข้อมูลการฝึกอบรม แต่ที่สำคัญที่สุดคือสามารถสรุปข้อมูลที่มองไม่เห็นได้ดีและหากหมวดหมู่ใหม่ที่เพิ่มเข้ามา เป็นจุดข้อมูลมากการจัดกลุ่มทั้งหมดในกลุ่มอื่น ๆจะไม่เจ็บ

  • อื่น ๆ ล่าสุดที่ยังไม่โซลูชั่นผู้ใหญ่เช่นCat2Vec (ยืมมาจาก Word2Vec จาก NLP)หรือคล้ายคลึงกันการเข้ารหัส เหล่านี้เป็นอย่างมากที่ผ่านมาตรวจสอบกระดาษสำหรับอดีตและGitHubและตัวอย่าง (ขึ้นอยู่กับ Word2Vec)ใน Kaggle และนี้กระดาษสำหรับหลังและการดำเนินงาน แนวคิดของอดีตคือการแปลงหมวดหมู่เป็นเวกเตอร์ เท่าที่ฉันต้องบอกว่ามันสมเหตุสมผลแล้วที่จะทำงาน แต่ฉันไม่มีประสบการณ์ในการใช้มัน หลังเรียกว่าdirty_catดูมีแนวโน้มและใช้งานง่าย ไม่ว่าจะเป็นเรื่องดีหรือไม่ที่การมีหมวดหมู่สำคัญที่มองไม่เห็นในข้อมูลการทดสอบของคุณไม่ชัดเจนสำหรับฉัน!

PS: ฉันต้องการเพิ่มว่าแนวคิดของเมืองในตำแหน่งทางภูมิศาสตร์ที่ระบุไว้ในความคิดเห็นแรกนั้นดีจริงๆและมันก็ไม่ซับซ้อนเพราะมันเป็น Python API จำนวนมากเช่นโดย Google หรือที่นี่ที่อนุญาตให้คุณทำเช่นนั้น แต่มีข้อสังเกตว่านี่เป็นเพียงวิธีหนึ่งในการสร้างฟีเจอร์ใหม่ ๆ และแน่นอนว่าจะไม่ถูกแทนที่ด้วยฟีเจอร์ของเมืองเอง

การอ้างอิงที่น่าสนใจในการตรวจสอบครั้งแรก , สอง , สาม , สี่ (โดยเฉพาะเพื่อไม่!)

ประเด็นทั้งหมดที่กล่าวมาข้างต้นเป็นวิธีแก้ปัญหาที่ใช้งานได้จริงซึ่งค่อนข้างถูกต้องตามหลักทฤษฎีอย่างชัดเจนและแน่นอนว่าจะต้องมีการหารือเพิ่มเติม และฉันมีความสุขมากกว่าที่จะเรียนรู้เพิ่มเติม


1
สิ่งที่เกี่ยวกับการสร้างกลุ่มของเมืองที่คล้ายกัน แม้ว่าเราจะมีเมืองใหม่มันไม่ได้แตกต่างไปจากที่เรามีอยู่แล้วเราสามารถตรวจสอบกับเมืองที่ใกล้เคียงที่สุดได้
Aditya

ความสุข Aditya นั่นเป็นความคิดที่ยอดเยี่ยมอีกอย่างหนึ่ง ฉันไม่ทราบเกี่ยวกับ "การเข้ารหัสความคล้ายคลึงกัน" ใหม่อาจเป็นกรณีที่พวกเขากำลังทำสิ่งเดียวกัน ตรวจสอบการสอนของพวกเขา นอกจากนี้โปรดทราบด้วยว่าจะต้องระมัดระวังสิ่งที่การจัดกลุ่มเพื่อใช้สำหรับข้อมูลเชิงหมวดหมู่เช่น k-mode หลังจากระยะทางทั้งหมดไม่มีความหมายคล้ายกับค่าตัวเลข
TwinPenguins

ขอบคุณสำหรับคำตอบที่ดี ฉันจะฝึกสอนใหม่ได้อย่างไร? ฉันหมายความว่าลองจินตนาการว่าฉันมีผู้สมัครใหม่และฉันต้องการทำนายว่าเขา / เธอดีหรือไม่ดีฉันจะสั่งสอนนางแบบของฉันใหม่ได้อย่างไรถ้าฉันไม่มีป้ายกำกับจริงของเขา / เธอระบุว่ามันดีหรือไม่? ฉันไม่เห็นวิธีที่จะรวมข้อมูลใหม่นี้เพื่อทำการฝึกอบรมซ้ำและฉันจะพลาดจุดที่คาดการณ์ไว้ ฉันผิดหรือเปล่า?
มาริสา

ยินดี. เกี่ยวกับการอบรมขึ้นใหม่: หมายถึงการเริ่มต้นใหม่อย่างแท้จริงผสมข้อมูลทั้งหมดของคุณเพื่อให้แน่ใจว่าคุณมีข้อมูลใหม่และเริ่มเรียนรู้อีกครั้ง อีกจุดหนึ่งที่คุณพูดถึงว่าคุณไม่มีป้ายกำกับที่แท้จริงสำหรับจุดข้อมูลใหม่นั้น: มันเป็นเรื่องที่แตกต่างกันมากสำหรับตัวเอง สิ่งที่คุณสามารถทำได้เพื่อติดป้ายจุดข้อมูลนี้มองว่าดาต้าพอยน์ที่คล้ายกันมากที่สุดและนำเลเบลจากที่นั่นเหมือนกับอัลกอริทึม KNN ที่ง่ายมาก
TwinPenguins

4

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

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


เริ่มต้นง่ายๆและเติบโตจากตรงนั้นเป็นคำแนะนำที่ยอดเยี่ยม!
Escachator

0

คุณควรชำระเงินVowpal Wabbitซึ่งจัดการคุณสมบัติใหม่ ๆ อย่างมากโดยใช้เคล็ดลับคร่ำครวญและอัตราการเรียนรู้แบบปรับตัว

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.