ในบริบทของ Data Privacy และการทำ K-anonymity เทคนิค Truncate และ Shift เป็นเครื่องมือจัดการกับข้อมูลประเภทตัวเลขและวันที่ที่เจอบ่อยที่สุด เพื่อลบรอยเท้าของเจ้าของข้อมูลครับ
Truncate (การตัดทอน)
ลองนึกภาพว่าคุณกำลังบอกพิกัดบ้านเพื่อน แทนที่จะบอกเลขที่บ้านซอยยิกย่อย คุณเลือกที่จะบอกแค่ชื่อ "เขต" หรือ "อำเภอ" แทน เทคนิคนี้คือการทำให้ข้อมูล "หยาบลง" โดยการตัดความละเอียดทิ้งไป
ตัวอย่างที่ชัดเจนที่สุดคือ รหัสไปรษณีย์ ครับ สมมติคนไข้ A อยู่รหัส 10330 (ปทุมวัน) ซึ่งอาจจะมีคนป่วยโรคนี้น้อยมากจนระบุตัวได้ เราก็ใช้การ Truncate ตัดเลขท้ายทิ้งให้เหลือแค่ 103** (ครอบคลุมพื้นที่กว้างขึ้นในกรุงเทพฯ) พอพื้นที่กว้างขึ้น จำนวนคนในกลุ่มนั้นก็จะเยอะขึ้นทันที ทำให้คนไข้ A ซ่อนตัวได้เนียนไปกับคนอื่นในเขตนั้น
หลักการนี้ใช้กับข้อมูลตัวเลขอื่นๆ ได้ด้วย เช่น เบอร์โทรศัพท์ (โชว์แค่ 081-xxx-xxxx) หรือเลข IP Address เพื่อลดความแม่นยำของการระบุตำแหน่งครับ
Shift (การเลื่อนค่า)
อันนี้มักจะใช้กับ "วันที่" (Date Shifting) เป็นหลักครับ เพราะวันเกิด วันที่เข้ารักษา หรือวันที่ผ่าตัด เป็นข้อมูลที่ชี้ตัวบุคคลได้ง่ายมาก (ลองนึกดูว่าถ้าเรารู้ว่านาย ก. ผ่าไส้ติ่งวันที่ 1 มกราคม เป๊ะๆ การไปค้นหาประวัติจะง่ายแค่ไหน)
การ Shift คือการ "ขยับปฏิทิน" หลอกๆ ครับ วิธีการคือเราจะสุ่มตัวเลขขึ้นมาหนึ่งตัว (สมมติว่าเป็น +5 วัน) แล้วเอาไปบวกกับวันที่ทั้งหมดของคนไข้คนนั้น
-
วันเกิดจริง: 1 มกราคม -> เปลี่ยนเป็น 6 มกราคม
-
วันเข้ารักษาจริง: 10 กุมภาพันธ์ -> เปลี่ยนเป็น 15 กุมภาพันธ์
จุดสำคัญของ Shift คือเราต้องเลื่อนทุกวันที่เกี่ยวข้องกับคนคนนั้นด้วยจำนวนวันเท่ากันเสมอ เพื่อรักษา "ระยะเวลา (Duration)" ให้ถูกต้องครับ นักวิจัยจะยังคำนวณได้ว่าคนนี้นอนโรงพยาบาลกี่วัน หรืออายุเท่าไหร่ โดยที่ไม่รู้วันที่แท้จริงที่เหตุการณ์เกิดขึ้น
สรุปง่ายๆ คือ Truncate ช่วยขยายกลุ่มให้กว้างขึ้นเพื่อหาเพื่อน (ลดความแม่นยำ) ส่วน Shift ช่วยพรางไทม์ไลน์ส่วนตัวให้คลาดเคลื่อน (ลดความถูกต้องของเวลา) แต่ยังคงรักษาความสัมพันธ์ของข้อมูลไว้วิเคราะห์ต่อได้ครับ