ขณะนี้ฉันกำลังทำหลักสูตรเป็นเมตริกซ์ซึ่งพวกเขาใช้ tf.one_hot (ดัชนีความลึก) ตอนนี้ฉันไม่เข้าใจว่าดัชนีเหล่านี้เปลี่ยนเป็นลำดับไบนารีได้อย่างไร
ใครช่วยอธิบายกระบวนการที่แน่นอนให้ฉันได้ไหม
ขณะนี้ฉันกำลังทำหลักสูตรเป็นเมตริกซ์ซึ่งพวกเขาใช้ tf.one_hot (ดัชนีความลึก) ตอนนี้ฉันไม่เข้าใจว่าดัชนีเหล่านี้เปลี่ยนเป็นลำดับไบนารีได้อย่างไร
ใครช่วยอธิบายกระบวนการที่แน่นอนให้ฉันได้ไหม
คำตอบ:
สมมติว่าคุณมีคุณสมบัติเด็ดขาดในชุดข้อมูลของคุณ (เช่นสี) และตัวอย่างของคุณอาจเป็นสีแดงสีเหลืองหรือสีน้ำเงิน ในการส่งผ่านอาร์กิวเมนต์นี้ไปยังอัลกอริทึม ML ก่อนอื่นคุณต้องเข้ารหัสเพื่อที่ว่าแทนที่จะเป็นสตริงที่คุณมีตัวเลข
วิธีที่ง่ายที่สุดในการทำสิ่งนั้นคือการสร้างแผนที่โดยที่:
สีแดง -> 1
สีเหลือง -> 2
สีฟ้า -> 3
และแทนที่แต่ละสตริงด้วยค่าที่แมป
อย่างไรก็ตามสิ่งนี้อาจสร้างผลข้างเคียงที่ไม่พึงประสงค์ในรุ่น ML ของเราเช่นเมื่อต้องรับมือกับตัวเลขมันอาจคิดว่าสีน้ำเงิน> เหลือง (เพราะ 3> 2) หรือแดง + เหลือง = น้ำเงิน (เพราะ 1 + 2 = 3) ตัวแบบไม่มีทางรู้ได้ว่าข้อมูลเหล่านี้ถูกจัดหมวดหมู่แล้วจึงถูกแมปเป็นจำนวนเต็ม
ทางออกของปัญหานี้คือการเข้ารหัสแบบร้อนแรงหนึ่งครั้งที่เราสร้างคุณลักษณะใหม่N โดยที่Nคือจำนวนค่าที่ไม่ซ้ำกันในคุณลักษณะดั้งเดิม ใน exampel Nของเราจะเท่ากับ 3 เพราะเรามี 3 สีที่ไม่ซ้ำกัน (แดงเหลืองและน้ำเงิน)
คุณลักษณะเหล่านี้แต่ละรายการเป็นไบนารีและจะสอดคล้องกับหนึ่งในค่าที่ไม่ซ้ำกันเหล่านี้ ในตัวอย่างของเราคุณลักษณะแรกจะเป็นคุณลักษณะไบนารีที่บอกเราว่าตัวอย่างนั้นเป็นสีแดงหรือไม่ส่วนที่สองจะเป็นสีเหลืองและส่วนที่สามเป็นสีน้ำเงิน
ตัวอย่างของการเปลี่ยนแปลงดังกล่าวมีภาพประกอบด้านล่าง:
โปรดทราบว่าเนื่องจากวิธีการนี้จะเพิ่มมิติข้อมูลของชุดข้อมูลหากเรามีคุณสมบัติที่ใช้ค่าที่ไม่ซ้ำใครเราอาจต้องการใช้การเข้ารหัสแบบเบาบางมากขึ้น (เช่นที่ฉันนำเสนอด้านบน)
ความลึก: เซนต์คิตส์และเนวิสกำหนดความลึกของมิติร้อนหนึ่ง
indices: เทนเซอร์ของดัชนี
นี่เป็นตัวอย่างที่ให้ไว้ในเอกสารของทอร์โฟลว์
1. เฉพาะการระบุดัชนีและความลึก (ค่าเริ่มต้นของ on_value คือ 1 และ off_value คือ 0)
indices = [0, 1, 2]
depth = 3
tf.one_hot(indices, depth) # output: [3 x 3]
# [[1., 0., 0.],
# [0., 1., 0.],
# [0., 0., 1.]]
ดัชนี = [0, 2, -1, 1] ความลึก = 3 tf.one_hot (ดัชนี, ความลึก, on_value = 5.0, off_value = 0.0, แกน = -1) ## เอาต์พุต: [4 x 3] # [[5.0, 0.0, 0.0], # one_hot (0) # [0.0, 0.0, 5.0], # one_hot (2) # [0.0, 0.0, 0.0], # one_hot (-1) # [0.0, 5.0, 0.0]] # one_hot (1)
คุณสามารถดูรหัสใน GitHub