Khám phá cosine distance và cosine similarity. Tìm hiểu cách tính toán, ứng dụng và so sánh với các thước đo khác. Học cách triển khai trong R và Python bằng numpy.
Đo lường mức độ tương đồng hay khác biệt giữa các điểm dữ liệu hữu ích cho nhiều ứng dụng, từ phân tích văn bản đến hệ thống gợi ý. Cosine distance là một thước đo khoảng cách đặc biệt hiệu quả với dữ liệu có số chiều cao hoặc thưa thớt, vì nó tập trung vào hướng của vector hơn là độ lớn.
Nếu bạn muốn ôn lại các khái niệm phổ biến và quan trọng trong machine learning, hãy bắt đầu với hướng dẫn toàn diện của chúng tôi, Giải mã các khái niệm Toán học cho Học sâu. Cũng nên đọc bài viết khác về học dựa trên khoảng cách, Manhattan Distance là gì? để mở rộng hiểu biết về các thước đo khoảng cách và thấy sự khác biệt giữa cosine distance và Manhattan distance.
Định nghĩa Cosine Distance
Giờ hãy dành thời gian định nghĩa cosine distance theo công thức cosine distance. Để làm vậy, chúng ta cũng xét mối quan hệ của nó với cosine similarity.
Công thức cosine distance
Cosine distance đo mức độ khác biệt giữa hai vector bằng cách tính cosin của góc giữa chúng. Nó có thể được định nghĩa là một trừ đi cosine similarity, như trong công thức dưới đây:
Cụ thể hơn, với biểu thức toán học chính quy hơn, cosine distance được tính theo công thức dưới đây.
Ở đây, A⋅B là tích vô hướng của các vector A và B, và ||A|| ||B|| là độ lớn, hay chuẩn Euclid, của các vector.
Với công thức này, chúng ta định lượng cosine distance trong khoảng từ 0 đến 2. Cosine distance bằng 0 nghĩa là các vector hoàn toàn thẳng hàng (không có góc giữa chúng), biểu thị mức độ tương đồng tối đa, trong khi giá trị gần 2 cho thấy chúng đối nhau, biểu thị mức độ khác biệt tối đa.
Cosine similarity so với cosine distance
Như đã thấy, trong khi cosine distance đo mức độ khác biệt giữa các vector bằng cách tính cosin của góc giữa chúng, thì cosine similarity định lượng mức độ tương đồng của hai vector dựa trên cosin của cùng góc đó.
Cosine similarity nằm trong khoảng từ -1 đến 1. Cosine similarity bằng 1 nghĩa là các vector hoàn toàn thẳng hàng (không có góc giữa chúng), biểu thị mức độ tương đồng tối đa, trong khi giá trị -1 ngụ ý chúng đối nhau, phản ánh mức độ khác biệt tối đa. Các giá trị gần 0 biểu thị tính trực giao.
Tính toán và trực quan hóa Cosine Distance
Hãy lấy ví dụ với hai vector: Vector A (2,4) và Vector B (4,2), và tính cosine distance của chúng theo các bước sau:
Tính tích vô hướng của A và B:
A · B = (2 × 4) + (4 × 2) = 8 + 8 = 16
Tính độ lớn của A và B:
||A|| = √(2² + 4²) = √20
||B|| = √(4² + 2²) = √20
Chia tích vô hướng cho tích các độ lớn:
(A · B) / (||A|| × ||B||) = 16 / (√20 × √20) = 16 / 20 = 0.8
Tính cosine distance:
Cosine Distance = 1 - 0.8 = 0.2
Với cosine distance bằng 0.2, kết quả khá thấp trên thang 0 đến 2. Điều này gợi ý rằng các vector A và B khá giống nhau về hướng mà chúng chỉ ra.
Cosine distance và cosine similarity. Ảnh bởi Tác giả.
Trong biểu diễn này:
Vector A là (2, 4)
Vector B là (4, 2)
θ là góc giữa A và B
Cosine similarity (0,8) biểu thị cosin của góc θ. Vì các vector gần nhau về hướng, góc nhỏ, dẫn đến cosine similarity cao và cosine distance thấp (0,2).
Vì cosine distance cũng có thể được định nghĩa là 1 - cos(θ), trong đó cos(θ) là cosine similarity, điều này ngụ ý:
Khi các vector cùng hướng (θ = 0°), cos(θ) = 1, nên cosine distance = 0
Khi các vector vuông góc (θ = 90°), cos(θ) = 0, nên cosine distance = 1
Khi các vector đối nhau (θ = 180°), cos(θ) = -1, nên cosine distance = 2
Ứng dụng của Cosine Distance
Hãy cùng xem một số ứng dụng quan trọng.
Xử lý ngôn ngữ tự nhiên (NLP)
Cosine distance đóng vai trò then chốt trong nhiều tác vụ xử lý ngôn ngữ tự nhiên bằng cách đo hiệu quả các mối quan hệ ngữ nghĩa giữa các biểu diễn văn bản như word2vec. Để có cái nhìn tổng quan ngắn gọn về các khái niệm này, bạn có thể thấy hữu ích hướng dẫn Tìm hiểu phân loại văn bản trong Python.
Phân loại và đo tương đồng tài liệu
Trong phân loại tài liệu, cosine distance đo mức độ tương đồng nội dung bằng cách so sánh góc giữa các vector tài liệu. Mỗi tài liệu được chuyển thành một vector, với các chiều phản ánh điểm TF-IDF của từ. Những tài liệu tương tự sẽ hướng về những phương gần nhau, dẫn đến cosine distance nhỏ hơn.
Phân cụm và nhóm theo ngữ nghĩa
Cosine distance rất hiệu quả trong các bài toán phân cụm như phân cụm K-means, nhóm các tài liệu có liên quan ngữ nghĩa ngay cả khi chúng không dùng cùng từ. Nó lý tưởng cho dữ liệu có số chiều cao, thưa thớt thường gặp trong xử lý văn bản. Bằng cách nắm bắt hướng vector, nó cho phép phân cụm chủ đề chính xác hơn. Kỹ thuật này thường được dùng trong học không giám sát để khám phá các nhóm tự nhiên trong tập tài liệu, như nhóm bài báo theo chủ đề.
Truy hồi thông tin và công cụ tìm kiếm
Trong truy hồi thông tin, cosine distance ghép nối truy vấn tìm kiếm với tài liệu bằng so sánh vector. Công cụ tìm kiếm sẽ tìm các tài liệu gần với vector truy vấn nhất theo cosine distance, xếp hạng cao hơn những tài liệu có khoảng cách nhỏ nhất về mức độ liên quan.
Word embeddings và độ giống giữa từ
Vượt ra ngoài phân tích cấp tài liệu, cosine distance rất quan trọng trong word embeddings như Word2Vec hoặc GloVe, nơi các từ được biểu diễn dưới dạng vector nhiều chiều. Các embedding này nắm bắt ý nghĩa ngữ nghĩa sao cho các từ có nghĩa tương tự được đặt gần nhau trong không gian vector. Cosine distance có thể dùng để tìm các từ giống nhất với một từ cho trước, hỗ trợ phát hiện từ đồng nghĩa, hoặc thậm chí cung cấp đặc trưng cho các mô hình phức tạp hơn như dùng cho phân tích cảm xúc hoặc dịch máy.
Nhận dạng hình ảnh
Trong nhận dạng hình ảnh, cosine distance được dùng để so sánh các vector đặc trưng trích xuất từ ảnh. Dù là phân loại khuôn mặt trong đám đông hay phân loại ảnh thiên nhiên, nó xem xét mức độ tương đồng về hướng của vector chứ không chỉ độ lớn. Trọng tâm này giúp xác định đúng danh mục cho ảnh, nâng cao độ chính xác và hiệu quả của các hệ thống dựa trên hình ảnh.
Hệ thống gợi ý
Hãy hình dung cosine distance như một “ông mai” số, ghép người dùng với phim hoặc sản phẩm phù hợp với sở thích trước đây của họ. Bằng cách xem hồ sơ người dùng và sản phẩm gần nhau thế nào trong không gian vector, hệ thống gợi ý dự đoán điều bạn có thể thích tiếp theo với độ chính xác đáng kể.
Thuộc tính toán học của Cosine Distance
Cosine distance có những thuộc tính toán học riêng biệt giúp phân biệt với các thước đo khoảng cách khác. Hiểu các thuộc tính này quan trọng để diễn giải và áp dụng cosine distance đúng trong các bối cảnh khác nhau.
Thuộc tính không gian metric
Trong toán học, một metric hay hàm khoảng cách là hàm xác định khoảng cách giữa từng cặp phần tử trong một tập hợp. Để được coi là một metric đúng nghĩa, một hàm phải thỏa bốn điều kiện:
Không âm: d(x, y) ≥ 0
Đồng nhất của phần tử không phân biệt: d(x, y) = 0 khi và chỉ khi x = y
Đối xứng: d(x, y) = d(y, x)
Bất đẳng thức tam giác: d(x, z) ≤ d(x, y) + d(y, z)
Cosine distance thỏa ba điều kiện đầu nhưng không phải lúc nào cũng thỏa bất đẳng thức tam giác. Điều này có nghĩa là trong một số trường hợp, tổng cosine distance giữa các điểm A và B và giữa B và C có thể nhỏ hơn cosine distance giữa A và C.
Bất biến theo tỉ lệ
Một thuộc tính đáng chú ý của cosine distance là tính bất biến theo tỉ lệ. Nghĩa là cosine distance giữa hai vector không đổi ngay cả khi bạn nhân một hoặc cả hai vector với một số vô hướng (khác 0). Về mặt toán học, với mọi vô hướng khác 0 a và b, và các vector x và y:
Cosine Distance(ax, by) = Cosine Distance(x, y)
Thuộc tính bất biến theo tỉ lệ này giúp cosine distance khác với nhiều thước đo khoảng cách khác.
Cosine Distance trong Python và R
Tại đây, chúng ta sẽ khám phá cách tính cosine distance bằng Python và R.
Ví dụ Python
Trong Python, chúng ta có thể dùng NumPy để tính cosine distance và cosine similarity. Ta thực hiện bằng cách tìm tích vô hướng và chuẩn của các vector.
import numpy as np
# Define the vectors
A = np.array([2,4])
B = np.array([4,2])# Calculate cosine similarity
cos_similarity = np.dot(A, B)/(np.linalg.norm(A)* np.linalg.norm(B))# Calculate cosine distance
cos_distance =1- cos_similarity
print("Cosine Similarity: {:.2f}".format(cos_similarity))print("Cosine Distance: {:.2f}".format(cos_distance))Được hỗ trợ bởi
Trong R, bạn có thể tính cosine similarity và cosine distance bằng các phép toán vector cơ bản. Cách làm như sau:
# Define the vectors
A <- c(2,4)
B <- c(4,2)# Calculate cosine similarity
cos_similarity <- sum(A * B)/(sqrt(sum(A^2))* sqrt(sum(B^2)))# Note: We can also use %*% operator for matrix multiplication. # %*%, when applied to two vectors, calculates the dot product. # For example: cos_similarity <- A %*% B / (sqrt(sum(A^2)) * sqrt(sum(B^2)))# Calculate cosine distance
cos_distance <-1- cos_similarity
# Print the result
print(paste("Cosine Similarity:", cos_similarity))
print(paste("Cosine Distance:", cos_distance))Được hỗ trợ bởi
Kết quả:
“Cosine Similarity:0.80”
“Cosine Distance:0.20”Được hỗ trợ bởi
Trong ví dụ R, cosine similarity được tính bằng các phép toán thủ công cho tích vô hướng và chuẩn, tương tự ví dụ Python, nhưng hoàn toàn trong chức năng cơ bản của R. Lưu ý cosine distance được suy ra bằng cách lấy 1 trừ đi cosine similarity.
Cosine Similarity so với Euclidean Distance và các thước đo khác
Hình minh họa dưới đây mở rộng ví dụ ban đầu, nhưng lần này dùng các màu khác nhau để biểu diễn ba kiểu đo khoảng cách dùng cùng các vector:
Manhattan Distance đo tổng độ chênh tuyệt đối của các tọa độ.
Euclidean Distance tính khoảng cách đường thẳng giữa hai điểm.
Cosine Distance được suy ra từ cosin của góc giữa hai vector.
Cosine distance so với Euclidean distance và Manhattan distance. Ảnh bởi Tác giả.
Mỗi khoảng cách này mang lại những góc nhìn riêng về dữ liệu. Euclidean và Manhattan là các khoảng cách hình học tính đến độ lớn của các thành phần vector, phù hợp với các phép đo vật lý trong không gian. Ngược lại, cosine distance tập trung vào góc giữa các vector, lý tưởng để hiểu hướng và tính định hướng, đặc biệt trong không gian nhiều chiều như dùng trong phân tích văn bản và các lĩnh vực khoa học dữ liệu khác.
Kết luận
Cosine distance và phần bù của nó, cosine similarity, là những công cụ mạnh mẽ trong khoa học dữ liệu và machine learning. Các thước đo này mang lại góc nhìn độc đáo về mối quan hệ giữa các vector, đặc biệt trong không gian nhiều chiều nơi các thước đo khoảng cách truyền thống có thể kém hiệu quả.
Khi dữ liệu ngày càng phức tạp và nhiều chiều, các thước đo như cosine distance sẽ có vai trò ngày càng quan trọng trong việc khám phá các mẫu và mối quan hệ tiềm ẩn. Dù bạn đang làm NLP, hệ thống gợi ý, hay bất kỳ lĩnh vực nào xử lý không gian vector nhiều chiều, việc hiểu và áp dụng cosine distance có thể mang lại những hiểu biết giá trị và cải thiện hiệu năng mô hình. Bước tiếp theo, hãy học khóa học tương tác toàn diện của chúng tôi, Thiết kế quy trình làm việc Machine Learning bằng Python, trong đó có cả một chương về học dựa trên khoảng cách và quy trình không giám sát.
Vinod Chugani bắt đầu sự nghiệp tại Tokyo với vai trò Trưởng bàn giao dịch bán hàng Quỹ phòng hộ trẻ nhất của JPMorgan, sau đó lập kỷ lục doanh số cá nhân tại Lehman Brothers, rồi xây dựng một doanh nghiệp phân phối điện tử tại 30 quốc gia vượt mốc doanh thu 100 triệu đô la Singapore trước khi chuyển hướng sang dữ liệu. Tốt nghiệp Kinh tế Duke và là cựu học viên NYC Data Science Academy, anh là một trong ba người nhận học bổng trong hơn 100 ứng viên cho khóa học Building AI Applications của Hugo Bowne-Anderson trên Maven. Hiện nay, anh viết cho DataCamp, KDnuggets, Machine Learning Mastery và Statology về các chủ đề từ thống kê đến AI hành động, và cố vấn cho các chuyên gia dữ liệu tại NYC Data Science Academy với hơn 1.000 buổi kèm 1-1 đã thực hiện.
Frequently Asked Questions
What is cosine similarity?⌄
Cosine similarity là một thước đo dùng để đo mức độ giống nhau về hướng giữa hai vector, không phụ thuộc vào độ lớn của chúng.
What is the range of cosine similarity? ⌄
Khoảng giá trị của cosine similarity là từ -1 đến 1
What is the cosine similarity formula?⌄
Công thức cosine similarity tính cosin của góc giữa hai vector, được định nghĩa là tích vô hướng của các vector chia cho tích chuẩn của chúng.
What is the dot product vs cosine similarity?⌄
Tích vô hướng là tổng của các tích phần tử tương ứng của hai vector, phản ánh cả độ lớn và hướng của chúng. Trong khi đó, cosine similarity là tích vô hướng được chuẩn hóa bởi tích độ lớn của các vector, chỉ tập trung vào sự thẳng hàng về hướng.
How does cosine distance differ from cosine similarity?⌄
Cosine distance và cosine similarity là các thước đo bổ sung cho nhau. Cosine similarity đo mức độ giống nhau của hai vector, dao động từ -1 (hoàn toàn đối nhau) đến 1 (hoàn toàn giống nhau). Ngược lại, cosine distance đo mức độ khác biệt của hai vector và được tính bằng 1 trừ đi Cosine Similarity. Nó nằm trong khoảng từ 0 (vector giống hệt) đến 2 (vector đối nhau).
What is the cosine distance formula?⌄
Công thức cosine distance đo góc giữa hai vector trong không gian nhiều chiều, được tính bằng 1 trừ đi cosin của góc giữa các vector.
What does a cosine distance of 1 indicate?⌄
Cosine distance bằng 1 cho thấy hai vector đang so sánh vuông góc (trực giao) với nhau, tạo thành góc 90 độ. Điều này nghĩa là các vector không có sự tương đồng về hướng, về thực tiễn gợi ý các chủ đề hoàn toàn khác nhau trong phân tích văn bản, các mục không liên quan trong hệ thống gợi ý, hoặc các đặc trưng khác biệt trong vector đặc trưng của machine learning.
What's the difference between cosine distance and angular distance?⌄
Cosine distance và angular distance có quan hệ mật thiết nhưng không đồng nhất. Cosine distance được định nghĩa là 1 trừ đi cosine similarity, còn angular distance là góc giữa hai vector tính bằng radian, được tính bằng arccosin của cosine similarity. Angular distance tỉ lệ với cosine distance nhưng mang lại cách diễn giải hình học trực quan hơn.
What's the difference between cosine distance and Euclidean distance?⌄
Dù cả hai đều đo độ khác biệt, cosine distance tập trung vào góc giữa các vector, bỏ qua độ lớn. Euclidean distance tập trung vào độ lớn, đo khoảng cách đường thẳng giữa hai điểm trong không gian.
Why is cosine distance useful in text analysis?⌄
Cosine distance đặc biệt hữu ích trong phân tích văn bản vì nó tập trung vào tỉ lệ của các từ (được biểu diễn như các chiều vector) thay vì tần suất tuyệt đối. Điều này giúp so sánh các tài liệu có độ dài khác nhau và xác định tương đồng theo chủ đề bất kể kích thước tài liệu.
"Cosine distance." Ảnh bởi Dall-E.
Đo lường mức độ tương đồng hay khác biệt giữa các điểm dữ liệu hữu ích cho nhiều ứng dụng, từ phân tích văn bản đến hệ thống gợi ý. Cosine distance là một thước đo khoảng cách đặc biệt hiệu quả với dữ liệu có số chiều cao hoặc thưa thớt, vì nó tập trung vào hướng của vector hơn là độ lớn.
Nếu bạn muốn ôn lại các khái niệm phổ biến và quan trọng trong machine learning, hãy bắt đầu với hướng dẫn toàn diện của chúng tôi, Giải mã các khái niệm Toán học cho Học sâu. Cũng nên đọc bài viết khác về học dựa trên khoảng cách, Manhattan Distance là gì? để mở rộng hiểu biết về các thước đo khoảng cách và thấy sự khác biệt giữa cosine distance và Manhattan distance.
Định nghĩa Cosine Distance
Giờ hãy dành thời gian định nghĩa cosine distance theo công thức cosine distance. Để làm vậy, chúng ta cũng xét mối quan hệ của nó với cosine similarity.
Công thức cosine distance
Cosine distance đo mức độ khác biệt giữa hai vector bằng cách tính cosin của góc giữa chúng. Nó có thể được định nghĩa là một trừ đi cosine similarity, như trong công thức dưới đây:
Cụ thể hơn, với biểu thức toán học chính quy hơn, cosine distance được tính theo công thức dưới đây.
Ở đây, A⋅B là tích vô hướng của các vector A và B, và ||A|| ||B|| là độ lớn, hay chuẩn Euclid, của các vector.
Với công thức này, chúng ta định lượng cosine distance trong khoảng từ 0 đến 2. Cosine distance bằng 0 nghĩa là các vector hoàn toàn thẳng hàng (không có góc giữa chúng), biểu thị mức độ tương đồng tối đa, trong khi giá trị gần 2 cho thấy chúng đối nhau, biểu thị mức độ khác biệt tối đa.
Cosine similarity so với cosine distance
Như đã thấy, trong khi cosine distance đo mức độ khác biệt giữa các vector bằng cách tính cosin của góc giữa chúng, thì cosine similarity định lượng mức độ tương đồng của hai vector dựa trên cosin của cùng góc đó.
Cosine similarity nằm trong khoảng từ -1 đến 1. Cosine similarity bằng 1 nghĩa là các vector hoàn toàn thẳng hàng (không có góc giữa chúng), biểu thị mức độ tương đồng tối đa, trong khi giá trị -1 ngụ ý chúng đối nhau, phản ánh mức độ khác biệt tối đa. Các giá trị gần 0 biểu thị tính trực giao.
Tính toán và trực quan hóa Cosine Distance
Hãy lấy ví dụ với hai vector: Vector A (2,4) và Vector B (4,2), và tính cosine distance của chúng theo các bước sau:
A · B = (2 × 4) + (4 × 2) = 8 + 8 = 16
||A|| = √(2² + 4²) = √20
||B|| = √(4² + 2²) = √20
(A · B) / (||A|| × ||B||) = 16 / (√20 × √20) = 16 / 20 = 0.8
Cosine Distance = 1 - 0.8 = 0.2
Với cosine distance bằng 0.2, kết quả khá thấp trên thang 0 đến 2. Điều này gợi ý rằng các vector A và B khá giống nhau về hướng mà chúng chỉ ra.
Trong biểu diễn này:
Cosine similarity (0,8) biểu thị cosin của góc θ. Vì các vector gần nhau về hướng, góc nhỏ, dẫn đến cosine similarity cao và cosine distance thấp (0,2).
Vì cosine distance cũng có thể được định nghĩa là 1 - cos(θ), trong đó cos(θ) là cosine similarity, điều này ngụ ý:
Ứng dụng của Cosine Distance
Hãy cùng xem một số ứng dụng quan trọng.
Xử lý ngôn ngữ tự nhiên (NLP)
Cosine distance đóng vai trò then chốt trong nhiều tác vụ xử lý ngôn ngữ tự nhiên bằng cách đo hiệu quả các mối quan hệ ngữ nghĩa giữa các biểu diễn văn bản như word2vec. Để có cái nhìn tổng quan ngắn gọn về các khái niệm này, bạn có thể thấy hữu ích hướng dẫn Tìm hiểu phân loại văn bản trong Python.
Phân loại và đo tương đồng tài liệu
Trong phân loại tài liệu, cosine distance đo mức độ tương đồng nội dung bằng cách so sánh góc giữa các vector tài liệu. Mỗi tài liệu được chuyển thành một vector, với các chiều phản ánh điểm TF-IDF của từ. Những tài liệu tương tự sẽ hướng về những phương gần nhau, dẫn đến cosine distance nhỏ hơn.
Phân cụm và nhóm theo ngữ nghĩa
Cosine distance rất hiệu quả trong các bài toán phân cụm như phân cụm K-means, nhóm các tài liệu có liên quan ngữ nghĩa ngay cả khi chúng không dùng cùng từ. Nó lý tưởng cho dữ liệu có số chiều cao, thưa thớt thường gặp trong xử lý văn bản. Bằng cách nắm bắt hướng vector, nó cho phép phân cụm chủ đề chính xác hơn. Kỹ thuật này thường được dùng trong học không giám sát để khám phá các nhóm tự nhiên trong tập tài liệu, như nhóm bài báo theo chủ đề.
Truy hồi thông tin và công cụ tìm kiếm
Trong truy hồi thông tin, cosine distance ghép nối truy vấn tìm kiếm với tài liệu bằng so sánh vector. Công cụ tìm kiếm sẽ tìm các tài liệu gần với vector truy vấn nhất theo cosine distance, xếp hạng cao hơn những tài liệu có khoảng cách nhỏ nhất về mức độ liên quan.
Word embeddings và độ giống giữa từ
Vượt ra ngoài phân tích cấp tài liệu, cosine distance rất quan trọng trong word embeddings như Word2Vec hoặc GloVe, nơi các từ được biểu diễn dưới dạng vector nhiều chiều. Các embedding này nắm bắt ý nghĩa ngữ nghĩa sao cho các từ có nghĩa tương tự được đặt gần nhau trong không gian vector. Cosine distance có thể dùng để tìm các từ giống nhất với một từ cho trước, hỗ trợ phát hiện từ đồng nghĩa, hoặc thậm chí cung cấp đặc trưng cho các mô hình phức tạp hơn như dùng cho phân tích cảm xúc hoặc dịch máy.
Nhận dạng hình ảnh
Trong nhận dạng hình ảnh, cosine distance được dùng để so sánh các vector đặc trưng trích xuất từ ảnh. Dù là phân loại khuôn mặt trong đám đông hay phân loại ảnh thiên nhiên, nó xem xét mức độ tương đồng về hướng của vector chứ không chỉ độ lớn. Trọng tâm này giúp xác định đúng danh mục cho ảnh, nâng cao độ chính xác và hiệu quả của các hệ thống dựa trên hình ảnh.
Hệ thống gợi ý
Hãy hình dung cosine distance như một “ông mai” số, ghép người dùng với phim hoặc sản phẩm phù hợp với sở thích trước đây của họ. Bằng cách xem hồ sơ người dùng và sản phẩm gần nhau thế nào trong không gian vector, hệ thống gợi ý dự đoán điều bạn có thể thích tiếp theo với độ chính xác đáng kể.
Thuộc tính toán học của Cosine Distance
Cosine distance có những thuộc tính toán học riêng biệt giúp phân biệt với các thước đo khoảng cách khác. Hiểu các thuộc tính này quan trọng để diễn giải và áp dụng cosine distance đúng trong các bối cảnh khác nhau.
Thuộc tính không gian metric
Trong toán học, một metric hay hàm khoảng cách là hàm xác định khoảng cách giữa từng cặp phần tử trong một tập hợp. Để được coi là một metric đúng nghĩa, một hàm phải thỏa bốn điều kiện:
Không âm: d(x, y) ≥ 0
Đồng nhất của phần tử không phân biệt: d(x, y) = 0 khi và chỉ khi x = y
Đối xứng: d(x, y) = d(y, x)
Bất đẳng thức tam giác: d(x, z) ≤ d(x, y) + d(y, z)
Cosine distance thỏa ba điều kiện đầu nhưng không phải lúc nào cũng thỏa bất đẳng thức tam giác. Điều này có nghĩa là trong một số trường hợp, tổng cosine distance giữa các điểm A và B và giữa B và C có thể nhỏ hơn cosine distance giữa A và C.
Bất biến theo tỉ lệ
Một thuộc tính đáng chú ý của cosine distance là tính bất biến theo tỉ lệ. Nghĩa là cosine distance giữa hai vector không đổi ngay cả khi bạn nhân một hoặc cả hai vector với một số vô hướng (khác 0). Về mặt toán học, với mọi vô hướng khác 0 a và b, và các vector x và y:
Cosine Distance(ax, by) = Cosine Distance(x, y)
Thuộc tính bất biến theo tỉ lệ này giúp cosine distance khác với nhiều thước đo khoảng cách khác.
Cosine Distance trong Python và R
Tại đây, chúng ta sẽ khám phá cách tính cosine distance bằng Python và R.
Ví dụ Python
Trong Python, chúng ta có thể dùng
NumPyđể tính cosine distance và cosine similarity. Ta thực hiện bằng cách tìm tích vô hướng và chuẩn của các vector.Kết quả:
Ngoài ra, ta có thể tìm cosine distance bằng gói SciPy và hàm
cosine().Kết quả:
Ví dụ R
Trong R, bạn có thể tính cosine similarity và cosine distance bằng các phép toán vector cơ bản. Cách làm như sau:
Kết quả:
Trong ví dụ R, cosine similarity được tính bằng các phép toán thủ công cho tích vô hướng và chuẩn, tương tự ví dụ Python, nhưng hoàn toàn trong chức năng cơ bản của R. Lưu ý cosine distance được suy ra bằng cách lấy 1 trừ đi cosine similarity.
Cosine Similarity so với Euclidean Distance và các thước đo khác
Hình minh họa dưới đây mở rộng ví dụ ban đầu, nhưng lần này dùng các màu khác nhau để biểu diễn ba kiểu đo khoảng cách dùng cùng các vector:
Cosine distance so với Euclidean distance và Manhattan distance. Ảnh bởi Tác giả.
Mỗi khoảng cách này mang lại những góc nhìn riêng về dữ liệu. Euclidean và Manhattan là các khoảng cách hình học tính đến độ lớn của các thành phần vector, phù hợp với các phép đo vật lý trong không gian. Ngược lại, cosine distance tập trung vào góc giữa các vector, lý tưởng để hiểu hướng và tính định hướng, đặc biệt trong không gian nhiều chiều như dùng trong phân tích văn bản và các lĩnh vực khoa học dữ liệu khác.
Kết luận
Cosine distance và phần bù của nó, cosine similarity, là những công cụ mạnh mẽ trong khoa học dữ liệu và machine learning. Các thước đo này mang lại góc nhìn độc đáo về mối quan hệ giữa các vector, đặc biệt trong không gian nhiều chiều nơi các thước đo khoảng cách truyền thống có thể kém hiệu quả.
Khi dữ liệu ngày càng phức tạp và nhiều chiều, các thước đo như cosine distance sẽ có vai trò ngày càng quan trọng trong việc khám phá các mẫu và mối quan hệ tiềm ẩn. Dù bạn đang làm NLP, hệ thống gợi ý, hay bất kỳ lĩnh vực nào xử lý không gian vector nhiều chiều, việc hiểu và áp dụng cosine distance có thể mang lại những hiểu biết giá trị và cải thiện hiệu năng mô hình. Bước tiếp theo, hãy học khóa học tương tác toàn diện của chúng tôi, Thiết kế quy trình làm việc Machine Learning bằng Python, trong đó có cả một chương về học dựa trên khoảng cách và quy trình không giám sát.