Basic Data Science : การวัดความต่างกันของข้อมูล


การวัดความเหมือนกันของข้อมูล

algorithm ที่ใช้การวัดความเหมือนของข้อมูลที่พบบ่อยแก่

  • Euclidean
  • Manhattan
  • Minkowski
  • Cosine Similarity
  • Jaccard 
ที่จริงแล้ว algorithm เหล่านี้ใช้วัดระยะห่างระหว่างข้อมูลสองชุด ค่าที่ได้บอกเราว่าถ้าระยะห่างน้อยก็แสดงว่าความเหมือนมีมาก

Euclidean [1] เป็น algorithm ที่ใช้บ่อยมากที่สุด หากไม่มีการกำหนดชื่อ algorithm ไว้ มักจะอนุมานว่าใช้ตัวนี้ไว้ก่อน

\( d(x,y) =\sqrt[2]{\sum_{i=1}^n(x_i - y_i)^2}  \)


Manhattan [2] อาจจะพบได้ในชื่ออื่น เช่น L1 distance, Taxicap

\( d(x,y) = \sum_{i=1}^n \mid x_i - y_i \mid\)


Minkowski [3] มองว่าเป็น general term ของทั้ง Euclidean และ Manhattan

\( d(x,y) = \left[ \sum_{i=1}^n \mid x_i - y_i \mid ^{p}\right] \frac {1}{p} \)


Cosine similarity [4]

เมื่อ vector u, v เป็น non-zero vector และทั้งสองทำมุมต่อกัน \( \theta \) องศาแล้ว



\( similarity = cos \theta   \)

\( similarity  = \frac{ \sum_{i=1}^n(x_iy_i)}{\sum_{i=1}^{n}x_i^2 \sum_{i=1}^{n}y_i^2}\)

ตัวอย่าง
  \(\overrightarrow{u} = [2,3] \\ \overrightarrow{v} = [4,8] \\ \overrightarrow{s}=[10,11]   \)
\( sim(u,v) = \frac {(2 \times 4) + (3 \times 8)}{(2^2 + 3^2)\times (4^2 + 8^2)} \)
 \( sim(u,v) = 0.03\)
\( sim(v,s) = \frac {(4 \times 10) + (8 \times 11)}{(4^2 + 8^2)\times (10^2 + 11^2)} \)
 \( sim(v,s) = 0.007\)

แสดงว่า \( \overrightarrow{v} \) ใกล้หรือเหมือนกับ \( \overrightarrow{s} \) มากกว่า \( \overrightarrow{u} \)

Jaccard similarity (Jaccard Index) [5]
ใช้หลักการของ Set มาช่วยพิจารณา บางครั้งจึงเรียกว่า Intersection over Union (IOU)




\( J(A,B) = \frac {\mid A \cap B \mid}{\mid A \cup B \mid} \)

 ข้อดีของการใช้ Set คือ ข้อมูลไม่จำเป็นต้องมี dimension เท่ากันก็สามารถนำมาวัดความเหมือนได้ ยกตัวอย่าง






จะได้ว่า
 \( J(A,B) = \frac {1}{8} = 0.125 \)

ตัวอย่าง
ถ้าในระบบฐานข้อมูลดอก Iris มีดังตารางข้างล่างนี้

sepal lengthsepal widthpetal lengthpetal widthclass
6.33.36.02.5Iris-virginica
4.93.01.40.2Iris-setosa
6.93.14.91.5Iris-versicolor

ในการเก็บข้อมูลภาคสนามครั้งหนึ่งได้ข้อมูลมาดังนี้ X =  [4.6,3.1,1.5,0.2] มาใช้การวัดความเหมือนด้วย Euclidean เพื่อดูว่าดอกไม้ X ที่เก็บมาจะอยู่ใน class ใด

RowDistance
1\( \sqrt[2]{ (4.6 - 6.3)^2 + (3.1 - 3.3)^2 +(1.5 - 6.0)^2 + (0.2 - 2.5)^2} = 5.33\)
2\( \sqrt[2]{ (4.6 - 4.9)^2 + (3.1 - 3.0)^2 +(1.5 - 1.4)^2 + (0.2 - 0.2)^2} = 0.33\)
3\( \sqrt[2]{ (4.6 - 6.9)^2 + (3.1 - 3.1)^2 +(1.5 - 4.9)^2 + (0.2 - 1.5)^2} = 4.33\)

จากตารางจะเห็นว่าเมื่อเทียบกับ Iris-setosa (row 2) แล้ว จะได้ค่าระยะห่าง (distance) ต่ำที่สุด (ความเหมือนมีมาก)  ดังนั้นดอก X ควรจัดอยู่ใน class Iris-setosa


--------------------------
เอกสารอ้างอิง
[1] https://en.wikipedia.org/wiki/Euclidean_distance
[2] https://en.wiktionary.org/wiki/Manhattan_distance
[3] https://en.wikipedia.org/wiki/Minkowski_distance
[4] https://en.wikipedia.org/wiki/Cosine_similarity
[5] https://en.wikipedia.org/wiki/Jaccard_index





ความคิดเห็น