Tính độ tương đồng giữa hai đối tượng sử dụng công thức tích vô hướng của hai vector
Hôm nay mình xin chia sẻ với các bạn một trong những cách mà máy tính áp dụng để tìm ra độ tương đồng (có thể hiểu là độ giống nhau) giữa hai đối tượng.
Trong phần hình học cấp 3, chúng ta đã được học công thức tính tích vô hướng của hai vector, vậy ngoài việc phải nhớ công thức để áp dụng làm bài tập thì trong thực tế công thức đó còn được áp dụng để làm gì? Đó là tìm độ tương đồng giữa hai đối tượng.
Công thức tích vô hướng của hai vector (dot product) như sau:
Công thức trên được phát biểu như sau: Tích vô hướng của vector A và vector B bằng tích độ lớn của vector A và vector B với cosine góc tạo bởi vector A và vector B.
Từ đó ta rút ra:
cos góc alpha được gọi là cosine similarity, đó chính là độ tương đồng của vector A và B. Giá trị của cosine luôn nằm trong đoạn [-1, 1]. Vậy ta rút ra được.
+ Nếu giá trị cosine bằng 1, nghĩa là góc hợp bởi vector A và vector B là 0 độ. Tức hai vector trùng nhau. => đối tượng A, B giống nhau.
+ Ngược lại, giá trị cosine càng tiến dần về -1 thì A, B là khác nhau.
Cosine similarity được áp dụng rất phổ biến trong các bài toán Text Mining (vd: Quảng cáo đúng đối tượng, phát hiện độ giống nhau giữa hai văn bản,...), Recommender System (hệ thống gợi ý).
Sau đây ta sẽ lấy ví dụ cụ thể:
Ta có bảng dữ liệu sau:
Ta có 3 sở thích là đọc sách, nghe nhạc và chơi game, bây giờ ta coi mỗi bạn là một vector, và với mỗi sở thích (có/không) sẽ tương ứng với giá trị là (1/0).
Ta có vector Hùng (1, 1, 1), vector Thủy (1, 0, 0) và vector Tuấn (1, 0, 1).
Áp dụng cosine similarity ta sẽ tính độ tương đồng của từng cặp vector một.
Như vậy, nhìn vào kết quả, Hùng và Tuấn có giá trị gần 1, tức là Hùng và Tuấn có sở thích gần giống nhau (đều thích đọc sách và chơi game). Cặp Thủy và Tuấn có sở thích gần giống nhau hơn là cặp Hùng và Thủy (thật vậy, Thủy và Tuấn có điểm chung là đều thích đọc sách và không thích nghe nhạc, còn Hùng và Thủy chỉ giống nhau là thích đọc sách). Như vậy là ta có thể suy đoán, Tuấn có thể kết thân được với Hùng, hoặc Thủy.
Đây chỉ là một bài toán nhỏ, tất nhiên ta có thể nhìn vào bảng dữ liệu để biết ai có sở thích giống hoặc gần giống ai, nhưng đối với một bảng lớn hơn (cỡ khoảng vài trăm nghìn đến vài triệu dòng) thì không thể nhìn bằng mắt để nhận ra được, lúc đó cosine similarity sẽ phát huy hiệu quả.
Ngoài cosine similarity ra thì còn nhiều công thức khác giúp tính độ tương đồng giữa hai vector (đối tượng), các bạn có thể tham khảo tại đây:
độ tương đồng
,tích vô hướng
,data mining
,cosine similarity
,text mining
,trí tuệ nhân tạo
hóa ra công thức đã đc học từ cấp 3 mà k nhớ
Nguyễn Đức Thắng
hóa ra công thức đã đc học từ cấp 3 mà k nhớ