วันอังคารที่ 8 มีนาคม พ.ศ. 2554

ข้อแตกต่างระหว่าง Mahalanobis distance กับ Euclidean Distance : ทำไม และ เมื่อไหร่ ต้องใช้ Mahalanobis distance ใน data mining

Euclidean Distance

นิยาม
EuclideanDistance = sqrt(sum( (A - B) .^ 2 ))

โชว์เหนือ เขียนแบบ linear algebra
EuclideanDistance = norm(A - B)

ข้อเสียของ Euclidean distance

1. sensitive to scales ของตัวแปร

ในกรณี geometric ตัวแปรทุกตัวมีหน่วยเดียวกันหมด คือ ระยะทาง
แต่เมื่อพิจารณาตัวแปรที่มีข้อมูลหลายชนิดพร้อมๆกัน เช่น ใน data mining เราอาจจะพิจารณา อายุ, ความสูง, น้ำหนัก ฯลฯ พร้อมๆกันหมด สเกลมันเอามาเปรียบเทียบกันไม่ได้

2. Euclidean distance ใช้กับตัวแปรที่ correlated กันไม่ได้

เช่น สมมติว่าเรามี data set 5 ตัวแปร ที่ซึ่งค่าของตัวแปรหนึ่งเหมือนกับอีกตัวแปรหนึ่งเด๊ะๆ ( กรณีนี้เหมือนเด๊ะ เลยเป็น completely correlated ) Euclidean distance จะคำนวณโดย weight ข้อมูลที่ซ้ำกันมากขึ้น ทำให้มีปัญหา

Mahalanobis distance

นิยาม


เมื่อ S คือ covariance matrix และ x, y มี distribution เดียวกัน

Mahalanobis distance มันพิจารณ่า covariance matrix ไปด้วย เลยขจัดปัญหาเรื่อง scale และ correlation ที่ Euclidean Distance มีได้

ใน MATLAB ใช้ฟังก์ชั่น mahal() หรือ pdist() ดูตัวอย่าง mahaldist.m ของคุณ Peter J. Acklam

ถ้า S เป็น identity matrix ตัว Mahalanobis distance จะกลายเป็น

ซึ่งก็คือ Euclidean distance หารด้วย SD นั่นเอง
ไอ้เจ้าตัวนี้มันมีชื่อเรียกเก๋ๆ ว่า normalized Euclidean distance


บทความข้างต้น แปลและเรียบเรียงมาจาก wiki และ บล็อกของ คุณ Will Dwinnell ซึ่งเขายังแนะนำ หนังสือให้ไปอ่านเพิ่มเติม คือ Multivariate Statistical Methods, by Manly (ISBN: 0-412-28620-3) ในบล็อกของเขาอีกด้วย ขอขอบคุณ มา ณ ที่นี้นะครับ :)

1 ความคิดเห็น:

Kan กล่าวว่า...

ลองศึกษาเรื่อง PCA ด้วยสิ ทำให้เราเข้าใจเรื่องการกระจายตัวของข้อมูลและค่า distance พวกนี้มากขึ้นด้วย :D

LinkWithin

Related Posts Plugin for WordPress, Blogger...