Cosine similarity là gì

Facebook

邮箱或手机号 密码

忘记帐户?

注册

无法处理你的请求

此请求遇到了问题。我们会尽快将它修复。

  • 返回首页

  • 中文(简体)
  • English (US)
  • 日本語
  • 한국어
  • Français (France)
  • Bahasa Indonesia
  • Polski
  • Español
  • Português (Brasil)
  • Deutsch
  • Italiano

  • 注册
  • 登录
  • Messenger
  • Facebook Lite
  • Watch
  • 地点
  • 游戏
  • Marketplace
  • Meta Pay
  • Oculus
  • Portal
  • Instagram
  • Bulletin
  • 本地
  • 筹款活动
  • 服务
  • 选民信息中心
  • 小组
  • 关于
  • 创建广告
  • 创建公共主页
  • 开发者
  • 招聘信息
  • 隐私权政策
  • Cookie
  • Ad Choices
  • 条款
  • 帮助中心
  • 联系人上传和非用户
  • 设置
  • 动态记录

Meta © 2022

Cosine similarity là gì

Thuật toán thần thánh!

Dành một chút thời gian cho anh em nào đam mê #DeepLearning hay #DataMining nhỉ.

Cosine Similarity dùng để tìm độ tương đồng giữa hai vector và thật may mắn là chúng ta đều có thể quy đổi mọi thứ thành vector N chiều (ôi đau đầu quá). Vì thế chúng ta có thể sử dụng Cosine Similarity để loại bỏ các dữ liệu giống nhau cho giai đoạn tiền xử lý dữ liệu trước khi #DeepLearning, hoặc tìm ra các dữ liệu giống nhau để làm gì đấy với #DataMining (ví dụ để tìm ra các khách hàng có hành vi giống nhau chẳng hạn)

Cosine Similarity mặc dù rất đơn giản nhưng lại có vai trò rất quan trọng trong nhiều lĩnh vực. Mình đã từng làm #elasticsearch plugin cho 1 khác hàng Nhật Bản, nó thực sự đáng để lưu tâm.

Code tham khảo nhé mọi người: Cosine Similarity

Mar 30, 2021

Như mọi người đã biết, Euclidean distance và cosine similarity được sử dụng rất nhiều trong các bài toán Machine Learning. Chúng được sự dụng ở cả trong các bài toán xử lý ảnh và xử lý ngôn ngữ tự nhiên để tính toán sự tương đồng giữa các đại lượng nào đó trong không gian vector. Trong bài viết này, chúng ta sẽ đi tìm hiểu về Euclidean distance, cosine similarity và mối liên hệ của chúng.


Euclidean distance

Euclidean distance giữa 2 điểm chính là khoảng cách của chúng trong không gian vector. Nó được tính dựa trên định lý Py-ta-go (Pythagorean), vậy nên đôi khi chúng còn được gọi là Pythagorean distance.

Công thức tính Euclidean distance giữa 2 điểm $x$ và $x'$:

Ví dụ:

Cosine similarity là gì



Cosine Similarity

Cosine similarity sẽ so sánh sự tương đồng giữa 2 vector khác 0. Nó được tính toán bằng cách tính cosine của góc được tạo bởi 2 vector đó.

Công thức tính cosine similarity giữa 2 vector x và x':

Ví dụ:



Mối quan hệ giữa Euclidean distance và cosine similarity

Trước khi đi vào mối quan hệ giữa Euclidean distance và cosine similarity, chúng ta cần tìm hiểu về L2-Norm:

Cosine similarity là gì

Sau khi normalize thì ta sẽ có tổng của các phần tử trong vector đó bằng 1. Lúc này ta sẽ có:

Bây giờ, ta sẽ cùng quay trở lại với Euclidean distance:

Và cosine similarity:

Trường hợp x và x' đã normalize thì ta sẽ có:

Thay vào phương trình cosine similarity:

Thay vào phương trình Euclidean distance:

Vậy nên, ta có kết quả:

Nhìn vào kết quả đã chứng minh ở trên, mình nghĩ răng chỉ có khoảng 30% người đọc có thể hiểu được nó. Nhưng đơn giản đây chỉ là công thức mà ta có thể biến đổi giữa Euclidean distance và cosine similarity. Để đơn giản hơn, hãy nhìn vào hình vẽ bên dưới nhé:

Cosine similarity là gì

Nhìn vào hình vẽ ta có thể thấy được, các điểm dữ liệu sau khi được normalize theo L2 thì sẽ tạo thành đường tròn có bán kính R = 1. Lúc này 2 điểm dữ liệu bất kỳ cùng với góc tọa độ sẽ tạo thành 1 tam giác cân với cạnh bên có độ dài bằng R. Do đó khi có Euclidean distance thì có thể biến đổi chúng sang cosine similarity và ngược lại.

Bây giờ, chắc hẳn một số bạn cũng đang thắc mắc chúng ta cần phải chuyển đổi giữa Euclidean distance và cosine similarity để làm gì? Trong một vài trường hợp, các thuật toán sẽ được tính toán dựa trên Euclidean distance, nhưng đại lượng mà ta cần tính lại là cosine similarity, thì ta có thể chuyển đổi chúng dựa trên công thức mà ta đã chứng mình được. Hoặc trong một vài trường hợp, để tối ưu tốc độ tính toán , khi chúng ta cần tính toán cả 2 đại lượng thì ta có thể tính 1 trong 2 đại lượng và sử dụng công thức để chuyển đổi về đại lượng còn lại, nhờ vậy mà có thể tối ưu được tốc độ tính toán.

Vậy là mình hoàn thành và xin phép được kết thúc bài viết tại đây. Mọi người ai có thắc mắc gì để lại bình luận bên dưới cho mình nhé. Cảm ơn mọi người!

Tài liệu tham khảo:

Euclidean Distance vs Cosine Similarity | Baeldung on Computer Science

Study two important measures of distance between points in vector spaces: the Euclidean distance and the cosine similarity.

Cosine similarity là gì
baeldung

Cosine similarity là gì

Is cosine similarity identical to l2-normalized euclidean distance?

Identical meaning, that it will produce identical results for a similarity ranking between a vector u and a set of vectors V. I have a vector space model which has distance measure (euclidean dis...

Cosine similarity là gì
Cross ValidatedArne

Subscribe to our newsletter

Get the latest posts delivered right to your inbox.

Cosine similarity là gì

Now check your inbox and click the link to confirm your subscription.

Please enter a valid email address

Oops! There was an error sending the email, please try later.

Phong Đào

It's never too late to start again!