{count, plural, one {Khóa học} other {Khóa học}}
Vector riêng và giá trị riêng là những khái niệm nền tảng trong đại số tuyến tính, có tác động sâu rộng trong khoa học dữ liệu và học máy. Các thực thể toán học này cung cấp những hiểu biết giá trị về hành vi của các phép biến đổi tuyến tính, giúp chúng ta hiểu cấu trúc ẩn của dữ liệu, đơn giản hóa các bộ dữ liệu phức tạp có số lượng đặc trưng lớn và nhờ đó có thể xử lý để đạt mục tiêu mong muốn.
Nếu điều này khiến bạn nghĩ đến giảm chiều dữ liệu, bạn hoàn toàn đúng. Vector riêng và giá trị riêng hoạt động phía sau nhiều kỹ thuật giảm chiều, như phân tích thành phần chính (PCA). Chúng cũng là bánh răng cốt lõi của phân cụm phổ, trong đó giảm chiều là bước khởi đầu.
Để nắm bắt thế giới “eigen”, bạn cần hiểu vững một số khái niệm tiền đề trong đại số tuyến tính, chủ yếu là vector và vô hướng, phép biến đổi tuyến tính và định thức. Nếu bạn còn mới với các khái niệm này, bạn có thể học khóa Đại số tuyến tính cho Khoa học Dữ liệu với R có thực hành, hoặc nếu bạn dùng Python, bạn có thể xem hướng dẫn SciPy về vector và mảng.
Vector riêng và Giá trị riêng là gì?
Hãy bắt đầu từ thực tế là phần “eigen” trong vector riêng và giá trị riêng thực sự có ý nghĩa chứ không phải tên một người phát minh ra chúng. Eigen là một từ tiếng Đức, trong ngữ cảnh này có thể tạm dịch là “đặc trưng” hay “bản chất” của một thứ gì đó.
Bây giờ, hãy tưởng tượng chúng ta áp dụng một phép biến đổi tuyến tính lên một nhóm vector, như co giãn, trượt, hay quay. Một số vector thay đổi hướng, và một số thì không. Những vector không đổi hướng (hoặc quay đúng 180 độ sang hướng ngược lại) được gọi là vector riêng, vì chúng trở thành những vector “đặc trưng” của phép biến đổi đã xảy ra (hoặc ma trận mô tả phép biến đổi đó). Độ lớn (biên độ) mà chúng bị co giãn chính là giá trị riêng. Tức là, giá trị riêng là hệ số tỉ lệ của phép biến đổi.
Tìm hiểu Vector riêng và Giá trị riêng
Để hiểu rõ hơn hai khái niệm này, hãy đi qua một trường hợp hình học rồi chuyển sang ứng dụng của chúng trong khoa học dữ liệu.
Diễn giải hình học
Hãy hình dung một không gian hai chiều, trong đó có ba vector: một vector màu xanh nằm trên trục x, một vector đỏ nằm trên trục y, và một vector xanh lá nằm chéo giữa hai trục. Giờ ta áp dụng phép co giãn dọc trục y với hệ số 2, như trong các hình dưới đây.

Các vector trước khi kéo giãn. Ảnh: Tác giả

Các vector sau khi kéo giãn. Ảnh: Tác giả
Điều gì xảy ra với hướng của các vector? Vector đỏ và xanh dương không đổi hướng khi co giãn, trong khi vector xanh lá đổi hướng, đúng không? Vậy nên, trong kiểu biến đổi này, hai vector đỏ và xanh dương chính là vector riêng, vì chúng trở thành các vector đặc trưng của phép biến đổi.
Hãy nhìn lại các hình trên và xem độ lớn của các vector riêng (đỏ và xanh dương) thay đổi thế nào. Vector riêng xanh dương không đổi độ lớn, còn vector đỏ thì tăng gấp đôi, hay nói bóng bẩy là được co giãn với hệ số 2. Lượng mà mỗi vector riêng bị co giãn chính là giá trị riêng. Do đó, giá trị riêng của vector riêng xanh dương ở đây là 1 (hãy nghĩ như phép nhân), trong khi giá trị riêng của vector riêng đỏ là 2, vì độ lớn của nó tăng gấp đôi.
Các tính chất của giá trị riêng
Xét phép biến đổi trong các hình dưới đây, trước tiên hãy nghĩ xem trong trường hợp này vector riêng là gì. Nếu bạn nói là cả ba vector đỏ, xanh lá và vàng thì đúng, vì sau phép biến đổi chúng đều chỉ theo hướng đúng ngược lại. Ta thấy dấu của con số (giá trị riêng) có thể cho ta thông tin bổ sung về phép biến đổi đã xảy ra. Giá trị riêng dương cho biết phép biến đổi không bao gồm quay, còn giá trị riêng âm cho biết phép biến đổi có bao gồm quay vector riêng quanh gốc của nó.

Các vector trước khi quay. Ảnh: Tác giả

Các vector sau khi quay. Ảnh: Tác giả
Giờ, giá trị riêng của mỗi vector riêng này là bao nhiêu? Việc độ lớn của chúng giữ nguyên nghĩa là giá trị riêng là 1, nhưng việc chúng cũng quay nghĩa là dấu của 1 phải âm. Vậy nên, giá trị riêng trong trường hợp này là -1.
Trong ví dụ của chúng ta, các giá trị riêng đơn giản (đều là 1), nhưng giá trị riêng có thể là bất kỳ số nào, dù là số nguyên như 1 và 2, hay số hữu tỉ (phân số) như ½ và 0.75. Chúng có thể là số vô tỉ như giá trị của π. Giá trị riêng thậm chí có thể là số phức, chẳng hạn a + bi, trong đó “a” và “b” là các số thực và “i” là đơn vị ảo, như căn bậc hai của -1. Các giá trị riêng phức cũng có thể cho biết loại phép biến đổi tuyến tính đã xảy ra, liệu đó có phải là phép quay hay phức tạp hơn như dao động.
Cách tính Vector riêng và Giá trị riêng
Mặc dù các thư viện trong gói cơ sở của R, và các thư viện Python như SciPy và NumPy có thể dễ dàng tìm vector riêng và giá trị riêng, việc hiểu các phương trình đằng sau chúng là vô cùng giá trị. Trong phần này, chúng ta sẽ xem lại cái gọi là phương trình đặc trưng, phương trình tính vector riêng và giá trị riêng từ một ma trận đơn giản theo từng bước. Sau đó, chúng ta sẽ đề cập đến các phương pháp tính toán khác cho ma trận lớn (tức là bộ dữ liệu lớn).
Phương trình đặc trưng
Ta có thể tìm vector riêng và giá trị riêng bằng phương trình đặc trưng. Với phương trình đặc trưng, trước tiên tìm giá trị riêng rồi mới đến vector riêng. Khi đã biết giá trị riêng, ta dùng nó để tính vector riêng tương ứng bằng cách giải một hệ phương trình tuyến tính.
Bước 1: Bắt đầu từ phương trình biến đổi ma trận
Với ma trận 𝐴 và vector 𝑣, phương trình cơ bản cho vector riêng và giá trị riêng là:

Điều này có nghĩa là khi ma trận 𝐴 tác động lên vector 𝑣, kết quả là một phiên bản được co giãn của 𝑣. Ở đây:
- 𝐴 là một ma trận (lưới vuông các con số).
- 𝑣 là vector riêng
- λ (lambda) là giá trị riêng.
Hãy nhớ rằng mục tiêu là tìm cả λ (giá trị riêng) và 𝑣 (vector riêng).
Bước 2: Biến đổi lại phương trình
Để tiếp tục với mục tiêu, ta cần giải λ. Vì vậy, trước tiên ta sắp xếp lại phương trình cho dễ xử lý hơn bằng cách chuyển vế phải sang vế trái với dấu ngược lại:

Giờ ta có thể đặt nhân tử chung là 𝑣, nhưng vì 𝐴 là ma trận và 𝑣 là vector, ta cần nhân 𝑣 với cái gọi là ma trận đơn vị, ký hiệu là I. Ma trận đơn vị là ma trận vuông (kích thước n×n) có các số 1 trên đường chéo và 0 ở các vị trí khác. Do tính chất nhân ma trận, ma trận đơn vị đóng vai trò như số 1 đối với ma trận. Chẳng hạn ma trận đơn vị kích thước 3×3 sau:

Quay lại phương trình, nếu đặt nhân tử chung là 𝑣 và nhân với I, ta được kết quả sau:

Bước 3: Lập định thức
Để giải phương trình vừa có, hoặc vector riêng 𝑣 phải bằng 0, nếu không thì vector riêng sẽ bằng với 𝐴 −λ⋅I. Và đây là lúc phù hợp để nói thêm một điều về vector riêng - chúng không thể bằng 0. Do đó, 𝐴 −λ⋅I phải bằng 0. Nhưng vì lambda là ẩn số, ta có thể khiến vế trái bằng vế phải nếu ta lấy định thức của 𝐴 −λ⋅I. Vậy ta thu được phương trình sau:

Đây chính là phương trình đặc trưng. Giải phương trình đặc trưng có thể cho ta cả giá trị riêng λ và vector riêng 𝑣, như thể hiện ở các bước còn lại.
Bước 4: Giải giá trị riêng
Giả sử ta có ma trận sau 𝐴:

Thay 𝐴 bằng ma trận cụ thể trong phương trình đặc trưng, ta được:

Và do đó:

Và một lần nữa:

Từ dạng phương trình đơn giản hơn nhiều này, ta có thể tính giá trị của các giá trị riêng λ chỉ bằng cách thay các giá trị của ma trận vào.
Bước 5: Giải vector riêng 𝑣
Sau khi có các giá trị riêng λ, việc còn lại là tìm các vector riêng 𝑣. Ta có thể làm điều này bằng cách quay lại dạng phương trình trước đó:

Giờ, nếu thay 𝐴, λ và I bằng các giá trị của chúng, ta có thể dễ dàng tính giá trị vector riêng 𝑣.
Các phương pháp tính số
Như ta đã thấy, độ phức tạp khi tính vector riêng và giá trị riêng phụ thuộc lớn vào kích thước ma trận. Trong ví dụ này, ta dùng ma trận 𝐴 2×2 đơn giản. Nhưng trên thực tế, ta không thể tìm vector riêng và giá trị riêng theo cách này khi ma trận lớn hơn rất nhiều, chẳng hạn có hàng trăm hay hàng nghìn hàng và cột. Lúc đó, ta dùng các ngôn ngữ lập trình như Python và R, vốn sử dụng các phương pháp tính số thay vì phương pháp ký hiệu. Một số kỹ thuật được dùng gồm:
- Thuật toán QR: Đây là phương pháp phổ biến để tìm giá trị riêng. Nó bao gồm một chuỗi phân tích ma trận (phân tích QR) để hội tụ lặp dần đến các giá trị riêng.
- Phân rã Cholesky hoặc LU: Với một số loại ma trận nhất định (ví dụ: ma trận đối xứng hoặc xác định dương), các phương pháp chuyên biệt như phân rã Cholesky hoặc LU có thể được dùng để tính toán hiệu quả hơn.
- Cân bằng và chuẩn hóa tỉ lệ: Để cải thiện độ ổn định số, R và Python thường sẽ chuẩn hóa tỉ lệ và cân bằng ma trận trước khi tính toán.
Các lưu ý trong Khoa học Dữ liệu và Học máy
Vector riêng và giá trị riêng rất quan trọng trong nhiều ứng dụng, bao gồm:
- Xử lý ảnh: Được dùng trong nhận diện khuôn mặt và phân loại ảnh.
- Xử lý ngôn ngữ tự nhiên (NLP): Vector riêng và giá trị riêng được dùng trong mô hình chủ đề và nhúng từ.
- Hệ thống gợi ý: Như trong lọc cộng tác và lọc theo nội dung, nơi giảm chiều có thể cải thiện độ chính xác của hệ thống gợi ý.
- Phân cụm phổ: Vector riêng và giá trị riêng cũng là thành phần nền tảng của phân cụm phổ, phương pháp nhóm các điểm dữ liệu bằng cách xem xét các liên kết của chúng trong một đồ thị, sử dụng thông tin từ cấu trúc dữ liệu thay vì chỉ khoảng cách; có nhiều ứng dụng thực tiễn như trong xử lý ảnh.
- Phân tích thành phần chính: PCA là kỹ thuật giảm chiều phổ biến trong học máy. Với PCA, ta tìm các vector riêng của ma trận hiệp phương sai đã chuẩn hóa và sắp xếp chúng theo giá trị riêng.
Chúng ta đã nói rằng giá trị riêng có thể là bất kỳ số thực hoặc phức nào. Điều đó có nghĩa là giá trị riêng có thể bằng 0, và cũng có thể có nhiều giá trị riêng bằng nhau trong ma trận được phân tích. Hai trường hợp này được xem là hai vấn đề có thể phát sinh trong bất kỳ phân tích eigen nào. Hãy cùng xem từng trường hợp.
Vấn đề giá trị riêng bằng 0
Giá trị riêng bằng 0 là một vấn đề vì nó có nghĩa là phép biến đổi của vector riêng tương ứng cho ra vector không (zero vector), có thể hình dung như một điểm đơn trong không gian, không có độ lớn và vì vậy không giải thích phương sai nào trong bộ dữ liệu. Vấn đề này có thể được xử lý bằng các kỹ thuật chuẩn hóa (regularization), như hồi quy ridge (chuẩn hóa Tikhonov), hoặc bằng cách loại bỏ các đặc trưng đồng tuyến (tức giảm chiều), điều vốn diễn ra tự nhiên trong thuật toán PCA. Do đó, giá trị riêng bằng 0 không phải vấn đề đối với PCA, và thực ra PCA có thể là một lời giải cho nó. Tuy nhiên, với các thuật toán học máy khác có liên quan đến việc giải hệ tuyến tính, như hồi quy tuyến tính, ridge, và lasso, vấn đề giá trị riêng bằng 0 cần được xử lý trước.
Giá trị riêng suy biến
Khi nhiều giá trị riêng có cùng giá trị, chúng được gọi là suy biến, và đây là một vấn đề trong khoa học dữ liệu, đặc biệt ở khía cạnh thực hành trong PCA và phân cụm phổ. Trong PCA, nếu nhiều vector riêng có giá trị riêng giống nhau, điều đó có nghĩa là các vector riêng này nắm bắt lượng phương sai như nhau trong bộ dữ liệu, và vì vậy việc chọn k thành phần chính trở nên khó khăn. Trong phân cụm phổ, nơi các giá trị riêng của ma trận tương đồng được dùng để nhóm các điểm dữ liệu, các giá trị riêng suy biến có thể cho thấy các điểm dữ liệu tương đồng ngang nhau ở nhiều chiều, khiến khó xác định chiều hay vector riêng nào nên dùng để tách các cụm.
Vector riêng, Giá trị riêng và Phân rã eigen
Bất kỳ thảo luận nào về vector riêng và giá trị riêng cũng sẽ không trọn vẹn nếu không nói về phân rã eigen (eigendecomposition). Phân rã eigen là quá trình phân tách một ma trận vuông A thành các vector riêng và giá trị riêng của nó. Với một ma trận có thể phân rã, nó có thể được biểu diễn như sau:

Phân rã eigen cho ta biết rằng ma trận A có thể được biểu diễn như tích của ma trận vector riêng Q, một ma trận chéo Λ gồm các giá trị riêng, và nghịch đảo của ma trận vector riêng Q-1. Khi nhân các ma trận này với nhau theo phép nhân ma trận, ta sẽ khôi phục lại ma trận gốc A. Phân rã eigen quan trọng vì nó cung cấp cách để hiểu và đơn giản hóa các phép biến đổi tuyến tính phức tạp, đem lại cái nhìn về hành vi hệ thống và cũng đơn giản hóa nhiều phép tính.
Kết luận
Trong bài viết này, chúng ta đã thấy vector riêng và giá trị riêng là gì và vì sao chúng cực kỳ liên quan đến khoa học dữ liệu và học máy. Chúng ta cũng đã đi qua cách tính toán của chúng về mặt toán học, cũng như những vấn đề có thể phát sinh khi cố gắng tìm vector riêng và giá trị riêng.
Ngoài khóa Đại số tuyến tính với R và hướng dẫn SciPy về vector và mảng, nếu bạn nghiêm túc với vector riêng, giá trị riêng và các ứng dụng của chúng trong học máy, hãy thử lộ trình nghề nghiệp Nhà khoa học Học máy với Python của chúng tôi để trở thành chuyên gia về học có giám sát và không giám sát, bao gồm cả giảm chiều tất nhiên.

Islam là một tư vấn dữ liệu tại The KPI Institute. Xuất thân từ ngành báo chí, Islam có nhiều mối quan tâm đa dạng, bao gồm viết lách, triết học, truyền thông, công nghệ và văn hóa.
Frequently Asked Questions
Vector riêng và giá trị riêng là gì?
Vector riêng là các vector giữ nguyên hướng sau một phép biến đổi tuyến tính, trong khi giá trị riêng biểu thị hệ số mà các vector này bị co giãn.
Vector riêng và giá trị riêng được dùng thế nào trong khoa học dữ liệu?
Chúng là nền tảng của các kỹ thuật giảm chiều như Phân tích thành phần chính (PCA), giúp đơn giản hóa bộ dữ liệu trong khi vẫn giữ lại thông tin quan trọng.
Mối quan hệ giữa giá trị riêng và vector riêng trong PCA là gì?
Trong PCA, các vector riêng biểu diễn các thành phần chính của bộ dữ liệu, trong khi các giá trị riêng tương ứng cho biết lượng phương sai mà mỗi thành phần giải thích.
Phương trình đặc trưng trong ngữ cảnh giá trị riêng là gì?
Phương trình đặc trưng giúp tính các giá trị riêng và được suy ra từ phương trình biến đổi ma trận, cung cấp các giá trị then chốt để tìm vector riêng.
Giá trị riêng có thể âm hoặc bằng 0 không?
Có, giá trị riêng âm cho thấy có phép quay trong biến đổi, còn giá trị riêng bằng 0 có thể gây vấn đề nhưng được xử lý trong các kỹ thuật như PCA.