Chuyển đến nội dung chính

Hiểu về khoảng cách Euclid: Từ lý thuyết đến thực tiễn

Khám phá cách khoảng cách Euclid kết nối hình học cổ điển với thuật toán hiện đại, kèm ví dụ mã trong Python và R, và các ứng dụng của nó trong khoa học dữ liệu, học máy và phân tích không gian.
· 8 phút đọc

Khám phá cùng AI

Khoảng cách Euclid, một khái niệm bắt nguồn từ toán học Hy Lạp cổ đại, đã trở thành công cụ thiết yếu trong khoa học dữ liệu, học máy và phân tích không gian hiện đại. Được đặt theo tên của Euclid nổi tiếng, thước đo này cung cấp cách cơ bản để đo khoảng cách thẳng giữa các điểm trong không gian, dù là trong hai chiều hay nhiều chiều hơn.

Khoảng cách Euclid là gì?

Khoảng cách Euclid biểu diễn đường đi ngắn nhất giữa hai điểm trong không gian Euclid. Đó là khoảng cách bạn đo bằng thước kẻ, được mở rộng ra bất kỳ số chiều nào. Khái niệm này bám rễ sâu trong định lý Pythagoras, phát biểu rằng trong tam giác vuông, bình phương cạnh huyền bằng tổng bình phương hai cạnh còn lại.

Triết gia dạy người trẻ về khoảng cách Euclid

“Triết gia giảng về khoảng cách Euclid.” Ảnh bởi Dall-E

Công thức khoảng cách Euclid

Hãy phân tích công thức khoảng cách Euclid theo các số chiều khác nhau:

Khoảng cách Euclid 2D

Trong mặt phẳng hai chiều, khoảng cách Euclid giữa điểm A(x₁, y₁) và B(x₂, y₂) được cho bởi:

Công thức khoảng cách Euclid trong không gian 2D

Ví dụ, hãy tính khoảng cách giữa điểm A(1, 2) và B(4, 6):

Giải công thức khoảng cách Euclid trong hai chiều

Trực quan hóa khoảng cách Euclid 2D

Để hiểu rõ hơn về khoảng cách Euclid 2D, hãy trực quan hóa nó:

Trực quan hóa khoảng cách Euclid 2D

Khoảng cách Euclid 2D. Ảnh của Tác giả

Hình minh họa này cho thấy khoảng cách Euclid giữa hai điểm trên mặt phẳng 2D. Đường màu đỏ biểu diễn khoảng cách trực tiếp, trong khi các đường nét đứt tạo thành tam giác vuông, minh họa định lý Pythagoras vận hành.

Khoảng cách Euclid 3D

Mở rộng sang ba chiều, với các điểm A(x₁, y₁, z₁) và B(x₂, y₂, z₂), công thức trở thành:

Công thức khoảng cách Euclid trong không gian ba chiều

Trực quan hóa khoảng cách Euclid 3D

Hãy trực quan hóa khoảng cách Euclid 3D:

Trực quan hóa khoảng cách Euclid 3D

Khoảng cách Euclid 3D. Ảnh của Tác giả

Biểu đồ 3D này cho thấy khoảng cách Euclid giữa hai điểm trong không gian ba chiều. Đường nét đứt màu xanh lá biểu diễn khoảng cách trực tiếp giữa các điểm.

Khoảng cách Euclid trong không gian n chiều

Trong không gian có n chiều, khoảng cách Euclid giữa các điểm A(a₁, a₂, ..., aₙ) và B(b₁, b₂, ..., bₙ) là:

Công thức khoảng cách Euclid trong không gian n chiều

Có thể viết gọn hơn bằng ký hiệu tổng:

Công thức khoảng cách Euclid trong không gian n chiều dùng ký hiệu tổng

Mối liên hệ với các khái niệm Đại số tuyến tính

Hiểu về khoảng cách Euclid không chỉ dừng lại ở việc biết cách đo đường đi ngắn nhất giữa hai điểm. Đó còn là nhìn những khoảng cách này qua lăng kính đại số tuyến tính, một lĩnh vực giúp chúng ta mô tả và giải các bài toán về không gian và số chiều bằng các vectơ và thuộc tính của chúng. Để tìm hiểu sâu hơn, hãy khám phá khóa học Đại số tuyến tính cho Khoa học Dữ liệu bằng R, bao quát trọn vẹn các khái niệm này.

Khoảng cách Euclid như một chuẩn (norm) của vectơ

Khoảng cách Euclid đo mức độ xa nhau của hai điểm trong không gian. Hãy tưởng tượng bạn có hai điểm, một ở đầu đường mòn và một ở đỉnh đồi. Con đường thẳng bạn đi từ điểm xuất phát đến đỉnh có thể xem là khoảng cách Euclid. Trong đại số tuyến tính, điều này giống như tìm độ dài của một mũi tên (hay vectơ) chỉ thẳng từ đầu đường mòn (điểm A) đến đỉnh đồi (điểm B). Độ dài này được gọi là “chuẩn” của vectơ, thực chất là cách nói hoa mỹ cho độ dài của con đường thẳng này.

Tích vô hướng và cosin của góc

Khi xét hướng, tích vô hướng giúp ta hiểu góc giữa hai mũi tên bất kỳ. Ví dụ, nếu bạn đứng ở ngã tư hai con đường, tích vô hướng sẽ cho biết một con đường hướng về phía con đường kia đến mức nào. Điều này được tính bằng độ dài của mỗi con đường (như các chuẩn đã nói) và góc giữa chúng. Giá trị này càng gần 0, hai con đường càng tiến tới vuông góc. Liên hệ với khoảng cách, công thức tích vô hướng giúp phân rã khoảng cách Euclid thành các thành phần dễ xử lý hơn, cho thấy thay đổi hướng tác động đến tổng khoảng cách ra sao.

Khoảng cách Euclid và phép trừ vectơ

Để tìm khoảng cách Euclid giữa hai điểm bằng vectơ, về bản chất bạn trừ tọa độ điểm này cho điểm kia để tạo ra một vectơ mới. Vectơ mới này chỉ trực tiếp từ điểm này đến điểm kia và độ dài của nó chính là khoảng cách Euclid bạn quan tâm. Tương tự như vẽ đường đi thẳng trên bản đồ từ nhà bạn đến cửa hàng tạp hóa gần nhất bằng cách trừ tọa độ của chúng; điều đó cho bạn một đường thẳng (hay vectơ) biểu thị con đường ngắn nhất.

Tính khoảng cách Euclid trong Python và R

Hãy khám phá cách triển khai tính khoảng cách Euclid bằng cả Python và R. Chúng ta sẽ xem cách tạo hàm tùy chỉnh và sử dụng thư viện dựng sẵn để tăng hiệu quả.

Ví dụ Python

Trong Python, ta có thể tận dụng sức mạnh của NumPy cho các phép toán mảng hiệu quả và SciPy cho các phép tính khoảng cách chuyên biệt. Dưới đây là cách triển khai khoảng cách Euclid:

import numpy as np
from scipy.spatial.distance import euclidean
def euclidean_distance(point1, point2):
    return np.sqrt(np.sum((np.array(point1) - np.array(point2))**2))

# 2D example
point_a = (1, 2)
point_b = (4, 6)
distance_2d = euclidean_distance(point_a, point_b)
print(f"2D Euclidean distance: {distance_2d:.2f}")

# 3D example
point_c = (1, 2, 3)
point_d = (4, 6, 8)
distance_3d = euclidean_distance(point_c, point_d)
print(f"3D Euclidean distance: {distance_3d:.2f}")

# Using SciPy for efficiency
distance_scipy = euclidean(point_c, point_d)
print(f"3D Euclidean distance (SciPy): {distance_scipy:.2f}")

Khi chạy đoạn mã này, chúng ta kỳ vọng thấy đầu ra tương tự như: 

2D Euclidean distance: 5.00
3D Euclidean distance: 7.07
3D Euclidean distance (SciPy): 7.07

Hàm của SciPy thường nhanh hơn và được tối ưu hơn, đặc biệt với dữ liệu có số chiều cao, nhưng hàm tùy chỉnh của chúng ta giúp minh họa phép tính nền tảng.

Ví dụ R

R cung cấp nhiều cách để tính khoảng cách Euclid. Chúng ta sẽ tạo một hàm tùy chỉnh và so sánh với hàm dist() từ thư viện stats.

euclidean_distance <- function(point1, point2) {
  sqrt(sum((point1 - point2)^2))
}

# 2D example
point_a <- c(1, 2)
point_b <- c(4, 6)
distance_2d <- euclidean_distance(point_a, point_b)
print(paste("2D Euclidean distance:", round(distance_2d, 2)))

# 3D example
point_c <- c(1, 2, 3)
point_d <- c(4, 6, 8)
distance_3d <- euclidean_distance(point_c, point_d)
print(paste("3D Euclidean distance:", round(distance_3d, 2)))

# Using the dist() function from stats
distance_builtin <- stats::dist(rbind(point_c, point_d), method = "euclidean")
print(paste("3D Euclidean distance (built-in):", round(as.numeric(distance_builtin), 2)))

Chạy đoạn mã R này sẽ tạo ra đầu ra như sau:

[1] "2D Euclidean distance: 5"
[1] "3D Euclidean distance: 7.07"
[1] "3D Euclidean distance (built-in): 7.07"

Hàm euclidean_distance tùy chỉnh của chúng ta sử dụng các phép toán vectơ hóa của R, giúp súc tích và hiệu quả. Hàm dist() từ stats trả về cùng kết quả, xác nhận tính đúng đắn của hàm tùy chỉnh. Cả hai phương pháp đều trả về một ma trận.

Ứng dụng của khoảng cách Euclid

Khoảng cách Euclid là cách đơn giản để đo mức độ xa nhau. Nó được dùng trong nhiều lĩnh vực để xử lý các vấn đề liên quan đến không gian và khoảng cách.

K-nearest neighbors (KNN)

Trong thuật toán k láng giềng gần nhất, khoảng cách Euclid giúp tìm các láng giềng gần nhất của một điểm. Điều này giúp quyết định cách phân loại dữ liệu mới—như xác định email có phải spam dựa trên các email tương tự, hoặc gợi ý sản phẩm giống với những gì khách hàng đã thích.

Phân cụm k-means

Trong phân cụm k-means, khoảng cách Euclid giúp sắp xếp các điểm dữ liệu vào nhóm bằng cách nối mỗi điểm với tâm cụm gần nhất. Điều này hữu ích để tổ chức dữ liệu vào các danh mục có điểm chung, phục vụ phân khúc khách hàng hoặc trong nghiên cứu để nhóm các đối tượng tương tự.

Tỷ lệ đa chiều (MDS)

Multidimensional scaling sử dụng khoảng cách Euclid để đơn giản hóa dữ liệu phức tạp thành dạng dễ hình dung và hiểu hơn. Nó lấy dữ liệu thường có nhiều chi tiết (nhiều chiều) và rút gọn để dễ quan sát và phân tích, giúp phát hiện xu hướng và mẫu rõ ràng hơn.

Xử lý ảnh

Trong các tác vụ như phát hiện biên trong ảnh hoặc nhận diện đối tượng, khoảng cách Euclid đo mức thay đổi của màu pixel, hỗ trợ phác thảo vật thể hoặc nhận diện đặc trưng quan trọng trong ảnh. Điều này hữu ích trong các lĩnh vực như chẩn đoán hình ảnh y tế để phát hiện bệnh, hoặc trong hệ thống an ninh để nhận diện khuôn mặt hay vật thể.

Robot

Đối với robot, như drone hoặc xe tự lái, khoảng cách Euclid giúp tính tuyến đường đơn giản nhất từ điểm này đến điểm khác. Điều này giúp robot và các hệ thống tự động di chuyển hiệu quả và an toàn, tránh chướng ngại vật và tính toán lộ trình dễ dàng nhất đến đích.

So sánh với các thước đo khoảng cách khác

Khoảng cách Euclid là một trong nhiều cách đo mức độ xa nhau giữa các điểm, nhưng mỗi tình huống lại cần phương pháp khác nhau. Dưới đây là cách nó so với các thước đo phổ biến khác:

Khoảng cách Manhattan

Còn gọi là khoảng cách “khối phố”, khoảng cách Manhattan đo tổng các giá trị tuyệt đối chênh lệch theo từng chiều. Hãy tưởng tượng bạn đi bộ trên lưới đường của một thành phố; quãng đường bạn đi từng khối phố chính là khoảng cách Manhattan. Phương pháp này đặc biệt hữu ích trong môi trường dạng lưới, như đi lại trên đường phố hoặc một số loại trò chơi. Nó cũng hữu ích khi bạn xử lý dữ liệu có số chiều rất cao, nơi khoảng cách Euclid có thể kém tin cậy hơn. Để tìm hiểu thêm, xem hướng dẫn về khoảng cách Manhattan.

Khoảng cách cosin

Khoảng cách cosin xem xét góc giữa hai điểm hoặc hai vectơ. Thay vì tập trung vào độ dài đường thẳng nối giữa chúng, nó xét cách chúng định hướng tương đối với nhau. Điều này đặc biệt hữu ích trong các lĩnh vực như phân tích văn bản hoặc hệ thống gợi ý, nơi hướng của dữ liệu (như tần suất từ trong bài viết hoặc sở thích người dùng) quan trọng hơn độ lớn (mức độ). Để hiểu sâu hơn, xem bài viết về khoảng cách cosin.

Khoảng cách Chebyshev

Khoảng cách Chebyshev là một cách khác để đo khoảng cách, tập trung vào độ chênh lệch lớn nhất theo bất kỳ chiều nào. Nó giống như chơi cờ vua: quân vua di chuyển đến ô xa nhất với số bước ít nhất, bất kể theo ngang, dọc hay chéo. Thước đo này đặc biệt hữu ích khi bạn chỉ cần xét đến khác biệt lớn nhất trong số nhiều khác biệt. Tìm hiểu thêm qua hướng dẫn về khoảng cách Chebyshev.

Hạn chế của khoảng cách Euclid

Mặc dù khoảng cách Euclid được dùng rộng rãi vì tính trực quan và dễ tính, nó vẫn có một số hạn chế đáng chú ý. Hiểu được các hạn chế này giúp bạn chọn thước đo khoảng cách phù hợp hoặc điều chỉnh dữ liệu để giảm thiểu các vấn đề.

Nhạy cảm với thang đo

Khoảng cách Euclid có thể bị ảnh hưởng quá mức bởi thang đo của các đặc trưng. Ví dụ, trong một tập dữ liệu có thu nhập và tuổi, thu nhập thường có phạm vi lớn hơn nhiều (hàng nghìn hoặc hàng chục nghìn) so với tuổi (thường chỉ đến khoảng 100). Sự chênh lệch này có thể khiến thu nhập lấn át phép tính khoảng cách, làm lệch kết quả theo thang đo của nó.

Giảm thiểu: Chuẩn hóa hoặc tiêu chuẩn hóa dữ liệu có thể giúp cân bằng thang đo giữa các đặc trưng, đảm bảo không đặc trưng nào ảnh hưởng quá mức đến phép tính khoảng cách.

Lời nguyền chiều dữ liệu

Lời nguyền chiều dữ liệu đề cập đến nhiều hiện tượng xuất hiện khi số chiều của tập dữ liệu tăng lên. Một trong số đó là khái niệm “gần” hay “xa” trở nên kém ý nghĩa—các khoảng cách có xu hướng hội tụ, khiến khó phân biệt hiệu quả giữa các điểm gần và xa.

Giảm thiểu: Các kỹ thuật như phân tích thành phần chính (PCA) hoặc t-SNE (t-SNE) giúp giảm số chiều của dữ liệu. Những phương pháp này chưng cất các đặc trưng cốt lõi có phương sai lớn nhất, từ đó đơn giản hóa dữ liệu.

Nhạy cảm với ngoại lệ

Các phép tính khoảng cách Euclid cũng có thể bị ảnh hưởng mạnh bởi các ngoại lệ. Trong không gian nhiều chiều, chỉ một ngoại lệ cũng có thể làm thay đổi đáng kể các khoảng cách, khiến một số điểm dữ liệu trông giống hoặc khác nhau hơn thực tế rất nhiều. 

Thực tế, tính nhạy cảm của hồi quy tuyến tính với ngoại lệ có liên quan đến khái niệm khoảng cách Euclid. Bởi vì trong hồi quy tuyến tính, mô hình tối thiểu hóa tổng bình phương phần dư, tức là chênh lệch giữa giá trị quan sát và giá trị dự báo. Làm như vậy về bản chất là đo khoảng cách Euclid giữa các điểm dữ liệu quan sát và đường hồi quy. Ngoại lệ có thể ảnh hưởng không tương xứng đến khoảng cách này vì bình phương của sai lệch lớn tăng nhanh hơn nhiều so với sai lệch nhỏ. 

Giảm thiểu: Sử dụng các thước đo bền vững hơn, ít nhạy cảm với ngoại lệ có thể hữu ích, như khoảng cách Manhattan cho một số loại dữ liệu. Ngoài ra, tiền xử lý dữ liệu để nhận diện và xử lý ngoại lệ—bằng cách điều chỉnh hoặc loại bỏ—có thể ngăn chúng làm lệch các phép tính khoảng cách.

Cách tiếp cận thay thế: Cân nhắc khoảng cách Euclid có trọng số là một chiến lược khác. Biến thể này gán trọng số khác nhau cho các chiều hay đặc trưng, có thể giảm trọng số cho những đặc trưng dễ có ngoại lệ hoặc nhiễu.

Kết luận

Như chúng ta đã tìm hiểu, khoảng cách Euclid là một thước đo nền tảng trong nhiều lĩnh vực phân tích và công nghệ, cung cấp cách trực tiếp để đo khoảng cách thẳng giữa các điểm. Hiểu và vận dụng khoảng cách Euclid có thể nâng cao độ chính xác và hiệu quả của nhiều ứng dụng, từ thuật toán học máy đến phân tích không gian.

Khuyến khích bạn thử nghiệm khoảng cách Euclid trong các dự án của mình và khám phá thêm qua các khóa học như Thiết kế quy trình học máy bằng Python và Khóa học Phát hiện bất thường trong Python.

Vinod Chugani

Tác giả

Vinod Chugani

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.

 

Câu hỏi thường gặp về khoảng cách Euclid

Vì sao khoảng cách Euclid quan trọng trong học máy?

Khoảng cách Euclid hỗ trợ nhiều thuật toán học máy bằng cách định lượng mức độ giống hoặc khác nhau giữa các điểm dữ liệu, điều quan trọng cho các tác vụ như phân loại, phân cụm và phát hiện bất thường.

Liệu khoảng cách Euclid luôn là lựa chọn tốt nhất để đo khoảng cách trong khoa học dữ liệu?

Không phải lúc nào cũng vậy. Thước đo khoảng cách tốt nhất phụ thuộc vào loại dữ liệu và bài toán cụ thể. Ví dụ, khoảng cách Manhattan có thể phù hợp hơn với dữ liệu có số chiều cao hoặc trong các tình huống mà chuyển động dạng lưới mang tính đại diện hơn.

Khoảng cách Euclid xử lý tọa độ âm như thế nào?

Khoảng cách Euclid đo chênh lệch tuyệt đối giữa các tọa độ tương ứng, đối xử như nhau với mọi tọa độ, dù là số dương hay âm.

Có thể dùng khoảng cách Euclid với dữ liệu phân loại không?

Không. Khoảng cách Euclid thường yêu cầu đầu vào dạng số để tính toán. Các phương pháp thay thế như khoảng cách Hamming hoặc các thước đo tương đồng tùy chỉnh khác được dùng cho dữ liệu phân loại.

Lựa chọn khoảng cách Euclid ảnh hưởng thế nào đến hiệu năng của các thuật toán phân cụm như k-means?

Việc sử dụng khoảng cách Euclid trong các thuật toán phân cụm như k-means tác động trực tiếp đến cách hình thành cụm, vì nó quyết định các thuộc tính hình học của cụm. Khoảng cách Euclid có xu hướng tạo ra các cụm hình cầu, trong đó trung bình đóng vai trò làm tâm cụm. Điều này có thể ảnh hưởng đến hiệu năng phân cụm, đặc biệt khi các cụm tự nhiên trong dữ liệu không có dạng hình cầu.

Chủ đề

Liên quan