การสร้างคุณสมบัติและการปรับสภาพในการเรียนรู้ของเครื่อง


13

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

  • อายุเพศอาชีพตำแหน่งชอบ (1) / ไม่ชอบ (0)
  • 23 M ซอฟต์แวร์ US 1
  • 24 F Doctor UK 0

และอื่น ๆ .... ตอนนี้คำถามของฉันคือฉันควรปรับขนาดและแสดงคุณสมบัติของฉันอย่างไร วิธีหนึ่งที่ฉันคิดว่า: แบ่งอายุเป็นกลุ่มอายุดังนั้น 18-25, 25-35, 35- ข้างต้นเพศเป็น M, F, สถานที่เช่นสหรัฐอเมริกา, อังกฤษ, อื่น ๆ ตอนนี้สร้างคุณสมบัติไบนารีสำหรับค่าเหล่านี้ดังนั้นอายุจะมี 3 คุณลักษณะไบนารีแต่ละที่สอดคล้องกับกลุ่มอายุและอื่น ๆ ดังนั้นผู้ชายอายุ 28 ปีจากสหรัฐอเมริกาจะถูกแสดงเป็น 010 10 100 (010-> กลุ่มอายุ 25-35, 10 -> ชาย, 100 -> US)

อะไรจะเป็นวิธีที่ดีที่สุดในการแสดงคุณสมบัติที่นี่ นอกจากนี้ฉันสังเกตเห็นในบาง e.gs ของ sklearn ที่ฟีเจอร์ทั้งหมดได้รับการปรับ / ทำให้เป็นมาตรฐานในบางวิธีเช่นเพศจะมีค่าสองค่าคือ 0.0045 และ -.0.0045 สำหรับเพศชายและเพศหญิง ฉันไม่มีเงื่อนงำใด ๆ ในการปรับขนาด / mormalization เช่นนี้?


ไม่ชัดเจนสำหรับฉันว่าทำไมคุณถึงต้องการปรับขนาดคุณสมบัติของคุณ บ่อยครั้งที่คุณสมบัติต่างๆถูกทำให้เป็นมาตรฐานที่มี 0 หมายถึง unity std dev คุณอาจจำเป็นต้องกำหนดปัญหาในแง่ของสิ่งที่ชั้นเรียนที่คุณพยายามจัดประเภทการถดถอยโลจิสติกมีประโยชน์สำหรับการจำแนกไบนารี
BGreene

แน่นอนคุณไม่ต้องการจัดหมวดหมู่อายุ การวัดเรตติ้งของภาพยนตร์เป็นอย่างไร? มันเป็นมาตราส่วน 1 ถึง 10 หรือ "ชอบ / ไม่ชอบ" หรืออะไร
Peter Flom - Reinstate Monica

เพื่อความง่ายให้สมมติว่ามีเพียงสองคลาสคือ Like และ Dislike ชอบเป็น 1 และไม่ชอบเป็น 0 ได้เปลี่ยนคำแถลงปัญหาเพื่อสะท้อนสิ่งนี้
snow_leopard

คำตอบ:


15

กรณีไบนารี

หากคุณต้องการให้คุณสมบัติของคุณเป็นเลขฐานสองการแสดงที่ดีสำหรับค่าหมวดหมู่ (การตอบสนองความจริง ) คือการเข้ารหัสร้อน (การวัดอุณหภูมิ ) คุณไม่จำเป็นต้องทำให้เป็นปกติ

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

  • 00001 สำหรับสหรัฐอเมริกา
  • 00010 สำหรับสหราชอาณาจักร
  • 00100 สำหรับเอเชีย
  • 01000 สำหรับยุโรป
  • 10,000 สำหรับคนอื่น ๆ

สำหรับการเข้ารหัสเทอร์โมมิเตอร์ของคุณสมบัติจริง / จำนวนเต็มคุณต้องเลือกความยาวและเกณฑ์ สำหรับตัวอย่างอายุของคุณคุณเลือกที่จะแบ่งอายุตามเกณฑ์ 18,25 และ 35 การเข้ารหัสจะเป็น

  • 000 สำหรับ 0-17
  • 001 สำหรับ 18-25
  • 011 สำหรับ 25-34
  • 111 สำหรับ 35- ข้างต้น

เมื่อรวมทั้งสองอย่างเข้าด้วยกันคุณจะได้รับการเข้ารหัสขนาด 5 + ​​3 = 8 บิต สำหรับผู้อยู่อาศัยในสหราชอาณาจักรอายุ 30 ปีเรามี

00010UK01130yo

กรณีอย่างต่อเนื่อง

หากโมเดลการถดถอยของคุณอนุญาตคุณควรจะใส่ค่าจริงสำหรับคุณสมบัติจริง / จำนวนเต็มซึ่งมีข้อมูลเพิ่มเติม ลองพิจารณาตัวอย่างของคุณ ครั้งนี้เราแค่ให้ค่าอายุเป็นจำนวนเต็ม การเข้ารหัสสำหรับผู้อยู่อาศัยในสหราชอาณาจักรอายุ 30 ปีจึงเป็น

00010UK3030yo

ดังที่ BGreene กล่าวแล้วคุณควรทำให้ค่านี้เป็นมาตรฐานเพื่อให้ค่าเฉลี่ยเป็น 0 และส่วนเบี่ยงเบนมาตรฐานที่ 1 ซึ่งรับประกันความเสถียรของตัวแบบการถดถอยหลายแบบ ในการทำเช่นนั้นเพียงแค่ลบค่าเฉลี่ยเชิงประจักษ์และหารด้วยค่าเบี่ยงเบนมาตรฐานเชิงประจักษ์

Y_normalized = ( Y - mean(Y) ) / std(Y)

หากค่าเฉลี่ยของอายุทั้งหมดของทุกคนในฐานข้อมูลของคุณคือ 25 และค่าเบี่ยงเบนมาตรฐานคือ 10 จะเป็นค่าปกติสำหรับ 30y.o คนจะเป็นนำไปสู่การเป็นตัวแทน U K 0 0 0 1 030 y o 0.5(3025)/10=0.5

00010UK0.530yo

เยี่ยมยอด ... สมมติว่าเรามีบุคคลตัวอย่างดังต่อไปนี้: ประเทศ: สหราชอาณาจักร, กลุ่มอายุ: 25-34 สิ่งนี้จะนำไปสู่ค่าเป็นประเทศ: 2 , กลุ่มอายุ: 4หากเราใช้การเข้ารหัสร้อนแรงเพียงครั้งเดียว ตอนนี้ในขณะสร้างเวกเตอร์ฟีเจอร์เราควรทำให้มันเป็นมาตรฐาน สมมุติว่าพวกมันมาเป็น 0.4 และ 0.6 แล้วเวกเตอร์คุณลักษณะอินพุทของเรากับโมเดลกลายเป็น [0.4, 0.6] ถูกต้องไหม?
snow_leopard

อืม .. ถ้าฉันใช้การเข้ารหัส "อันร้อนแรง" ฉันควรแปลงค่าการเข้ารหัสให้เป็นตัวแทนจำนวนเต็มเป็นคุณลักษณะเช่น 0010 กลายเป็น 2 หรือฉันควรปฏิบัติเช่นนี้เป็นชุดของคุณลักษณะ 4 อย่างซึ่งจะมีเพียงหนึ่งเดียวเท่านั้น ในกรณีก่อนหน้านี้ไม่ได้แนะนำความคิดที่ว่า 1,000 ต่อไปคือ 0001 จากนั้น 0100 ซึ่งอาจไม่เป็นความตั้งใจเพราะเราไม่ต้องการให้ค่าคุณลักษณะของสหรัฐอเมริกาใกล้เคียงกับค่าคุณลักษณะของสหราชอาณาจักรจากนั้นค่าเอเชียหรืออย่างอื่น
snow_leopard

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

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