Feature Crossing เป็น อยู่ คือ?

lukkiddd
lukkiddd
Published in
3 min readFeb 14, 2021

Outline

  1. Feature Crossing อย่างย่อ
  2. ตัวอย่าง: ทำนายราคา Taxi
  3. ข้อดี/ข้อเสียของ feature crossing
  4. ข้อควรระวัง
  5. ทำ feature crossing ยังไง?

สรุป

  • Feature Crossing เป็นหนึ่งในเทคนิคของ Feature Engineering
  • Feature Crossing สามารถจับความสัมพันธ์ระหว่าง categorical feature ได้
  • Feature Crossing ช่วยให้โมเดล เทรน เร็วขึ้น และ ช่วยให้โมเดล predict แม่นขึ้นด้วย
  • Feature Crossing อาจจะทำให้ประสิทธิภาพโมเดล แย่ลง
  • Feature Crossing อาจเป็นสาเหตุของ sparsity

1. Feature Crossing อย่างย่อ

ภาพที่ 1: ภาพ scatter plot แสดงกลุ่มสีส้มกับสีฟ้า

จากภาพที่ 1 ถ้าเราใช้เส้นตรงในการแบ่งกลุ่มสีส้มกับสีฟ้า มันคงทำได้ยากมากใช่ไหมครับ

ภาพที่ 2: เส้นตรงเส้นเดียวไม่สามารถแบ่งกลุ่มสีส้มกับสีฟ้าได้

วิธีที่เราจะทำให้โมเดลเราดีขึ้น ง่าย ๆ เลยก็คือ

  1. เพิ่มความซับซ้อนของโมเดล
  2. เพิ่ม feature เข้าไป
ภาพที่ 3: Tensorflow playground โชว์ตัวอย่าง feature crossing

ถ้าหากเราเอา x1 กับ x2 มา cross กัน เราจะสามารถแบ่งกลุ่มสีส้มกับกลุ่มสีฟ้าได้โดยง่าย การนำสอง feature มา คูณกันแบบนี้ เราเรียกว่า Feature Crossing และเป็นเทคนิคในการทำ feature engineering ครับ

เรามาดูตัวอย่างเพิ่มเติมกันดีกว่าครับ

2. ตัวอย่าง: ทำนายราคา Taxi

ในตัวอย่างนี้ เราต้องการทำนายราคาของการใช้ Taxi ใน เมือง New York จากข้อมูล ที่เรามี

ตาราง 1: ตัวอย่างข้อมูล NYC taxi fare prediction

ลองพิจารณา pickup_datetime ดูไหมครับ

เราสามารถเอาข้อมูล datetime มาแยกออกเป็น Day of Week และ Hour of Day แล้วนำมา Cross กัน เราก็จะได้ข้อมูลที่น่าสนใจ

ตาราง 2: แสดง feature crossing ของ day of week และ hour of day

การเอา feature สองตัวนี้ (Day of Week และ Hour of Day) มา cross กัน เราก็จได้ one-hot encoded vector ที่มีขนาด 168 มิติ (24 ชั่วโมง x 7 วัน)

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

3. ข้อดี/ข้อเสีย ของ Feature Crossing

ข้อดี

  • ทำโมเดลทำนายผลลัพธ์ได้ง่ายขึ้น เช่น ถ้าเราเอา feature ตำแหน่งงาน กับ บริษัท มา cross กัน ทำให้เราสามารถจับความสัมพันธ์ ที่อาจมีผลในการทำนาย รายได้ เฉพาะบุคคลได้ดีขึ้น
  • โมเดล เทรนเร็วขึ้น
  • การทำ Feature Crossing สามารถอธิบายได้

ข้อเสีย

  • อาจทำให้ประสิทธิภาพของโมเดลแย่ลง เพราะ feature ที่เราใส่เข้าไปอาจจะซ้ำซ้อน หรือ เป็นการเพิ่ม noise
  • อาจเป็นสาเหตุของ sparsity อย่างเช่นตัวอย่างการทำนายราคา taxi ที่เราใส่ feature ขนาด 168 มิติ เข้ามาในโมเดล

4. ข้อควรระวัง

4.1 Feature ที่เป็นตัวเลข (numerical features)

ทำการ Bucketize หรือแปลงให้อยู่ในรูปของ categorical features ก่อนที่จะทำ feature cross

4.2 ปัญหา High cardinality (ตัวแปรมีความหลากหลายมาก ๆ)

ทำการ Embedded ให้เป็น embedding vector เพื่อลดขนาดมิติของข้อมูล

5. ทำยังไง

5.1 ทำเองแบบดิบ ๆ

วิธีการก็คือเอา feature มาแปลงให้อยู่ในรูป one-hot encoded แล้ว ต่อกัน ดังตัวอย่างข้างล่าง

ตาราง 3: แสดงตัวอย่างการทำ feature crossing แบบทำเอง

5.2 BigQueryML

ถ้าใช้ Google Cloud อยู่แล้ว มีข้อมูลใน BigQuery อยู่แล้ว ก็ลองใช้ BigQueryML function ในการทำ feature crossing ได้ครับ

ML.FEATURE_CROSS

5.3 Tensorflow

ถ้าใช้ tensorflow อยู่แล้ว ก็ มี function ให้เรียกใช้นะครับ

tf.feature_column.crossed_col()

--

--