Giá trị riêng Python của ma trận hiệp phương sai
Lượng dữ liệu được tạo ra mỗi ngày từ các nguồn như thí nghiệm khoa học, điện thoại di động và đồng hồ thông minh đã tăng theo cấp số nhân trong vài năm qua. Không chỉ số lượng nguồn dữ liệu tăng lên mà bản thân dữ liệu cũng ngày càng phong phú hơn khi số lượng tính năng trong dữ liệu tăng lên. Bộ dữ liệu có số lượng lớn các tính năng được gọi là bộ dữ liệu chiều cao Show
Một ví dụ về dữ liệu chiều cao là dữ liệu hình ảnh có độ phân giải cao, trong đó các tính năng là pixel và tăng chiều khi công nghệ cảm biến được cải thiện. Một ví dụ khác là xếp hạng phim của người dùng, trong đó các tính năng là phim được xếp hạng và khi số thứ nguyên tăng lên khi người dùng xếp hạng nhiều thứ nguyên hơn Các bộ dữ liệu có số lượng lớn các tính năng đặt ra một thách thức duy nhất cho phân tích học máy. Chúng tôi biết rằng các mô hình học máy có thể được sử dụng để phân loại hoặc phân cụm dữ liệu nhằm dự đoán các sự kiện trong tương lai. Tuy nhiên, bộ dữ liệu chiều cao thêm độ phức tạp cho một số mô hình học máy nhất định (i. e. mô hình tuyến tính) và do đó, các mô hình đào tạo trên bộ dữ liệu có số lượng lớn các tính năng dễ gây ra lỗi do sai lệch Sơn lót PCAPhân tích thành phần chính (PCA) là một kỹ thuật giảm kích thước được sử dụng để chuyển đổi tập dữ liệu chiều cao thành tập dữ liệu có ít biến hơn, trong đó tập hợp các biến kết quả giải thích phương sai tối đa trong tập dữ liệu. PCA được sử dụng trước các bước học máy có giám sát và không giám sát để giảm số lượng tính năng được sử dụng trong phân tích, do đó giảm khả năng xảy ra lỗi Xem xét dữ liệu từ một hệ thống xếp hạng phim trong đó xếp hạng phim từ những người dùng khác nhau là các trường hợp và các phim khác nhau là các tính năng Tôi đã học về giá trị riêng và vectơ riêng ở trường Đại học trong khóa học đại số tuyến tính. Nó rất khô khan và toán học, vì vậy tôi không hiểu nó là gì. Nhưng tôi muốn trình bày chủ đề này với bạn một cách trực quan hơn và tôi sẽ sử dụng nhiều hình ảnh động để minh họa nó Đầu tiên, chúng ta sẽ xem xét cách áp dụng một ma trận cho một vectơ xoay và chia tỷ lệ một vectơ. Điều này sẽ cho chúng ta thấy giá trị riêng và vectơ riêng là gì. Sau đó, chúng ta sẽ tìm hiểu về các thành phần chính và chúng là các vectơ riêng của ma trận hiệp phương sai. Kiến thức này sẽ giúp chúng tôi hiểu chủ đề cuối cùng của chúng tôi, phân tích thành phần chính Phép nhân ma trậnĐể hiểu các giá trị riêng và vectơ riêng, trước tiên chúng ta phải xem xét phép nhân ma trận Hãy xem xét ma trận sau (Ảnh của tác giả)Khi chúng ta lấy tích vô hướng của một ma trận và một véc-tơ, véc-tơ kết quả là phiên bản được xoay và thu nhỏ của véc-tơ ban đầu (Ảnh của tác giả)(GIF của tác giả)Trong khoa học dữ liệu, chúng ta chủ yếu nói về các điểm dữ liệu, không phải vectơ. Nhưng chúng giống nhau về bản chất và có thể được sử dụng thay thế cho nhau. Và các điểm dữ liệu cũng có thể được chuyển đổi bằng phép nhân ma trận theo cách tương tự như vectơ (GIF của tác giả)Nhưng ngay cả khi phép nhân ma trận quay và chia tỷ lệ, thì đó là một phép biến đổi tuyến tính Tại sao phép nhân ma trận là một phép biến đổi tuyến tính? . Hãy tưởng tượng một lưới trên đó các điểm này được đặt. Khi chúng tôi áp dụng ma trận cho các điểm dữ liệu của mình và di chuyển lưới cùng với các điểm dữ liệu, chúng tôi thấy rằng các đường của lưới vẫn thẳng. Nếu các đường cong, thì phép biến đổi sẽ phi tuyến tính (GIF của tác giả)EigenvectorChúng tôi xem xét ma trận tương tự như trên (Ảnh của tác giả)Khi áp dụng ma trận này cho các vectơ khác nhau, chúng hoạt động khác nhau. Một số trong số chúng có thể được xoay và thu nhỏ. Một số trong số chúng chỉ được xoay, một số trong số chúng chỉ được thu nhỏ và một số trong số chúng có thể không thay đổi gì cả Các vectơ riêng là các vectơ, mà
Bạn có thể thấy rằng các vectơ riêng nằm trên cùng một dòng và các vectơ khác (vectơ chung) bị xoay theo một mức độ nào đó (GIF của tác giả)Ma trận 2x2 luôn có hai vectơ riêng, nhưng không phải lúc nào chúng cũng trực giao với nhau giá trị bản địaMỗi vectơ riêng có một giá trị riêng tương ứng. Đó là yếu tố mà véc tơ riêng được thu nhỏ, khi nó được biến đổi bởi ma trận. Chúng tôi xem xét cùng một ma trận và do đó, hai vectơ riêng giống nhau như đã đề cập ở trên (Ảnh của tác giả)Một trong hai vectơ riêng của ma trận này (tôi gọi nó là vectơ riêng 1, nhưng đây là tùy ý) được chia tỷ lệ theo hệ số 1. 4 (GIF của tác giả)Eigenvector 2 get cũng được chia tỷ lệ theo hệ số 1. 4 nhưng hướng của nó bị đảo ngược. Do đó, giá trị riêng 2 là -1. 4 Thành phần chủ yếuSử dụng các giá trị riêng và vectơ riêng, chúng ta có thể tìm thấy các trục chính của dữ liệu của mình. Trục chính đầu tiên (còn được gọi là "thành phần chính đầu tiên") là trục trong đó dữ liệu thay đổi nhiều nhất. Trục chính thứ hai (còn được gọi là “thành phần chính thứ hai”) là trục có độ biến thiên lớn thứ hai, v.v. Hãy xem xét một tập dữ liệu 2 chiều (GIF của tác giả)Để tìm các thành phần chính, trước tiên chúng ta tính ma trận Phương sai-Hiệp phương sai C (Ảnh của tác giả)Chúng ta có thể sử dụng numpy để tính toán chúng. Lưu ý rằng dữ liệu của chúng tôi (X) phải được sắp xếp giống như khung dữ liệu gấu trúc. Mỗi cột đại diện cho một biến/tính năng khác nhau import numpy as np Và sau đó chúng ta có thể tính toán các vectơ riêng và giá trị riêng của C import numpy as np Các vectơ riêng cho chúng ta thấy hướng của các trục chính (các thành phần chính) của dữ liệu của chúng ta. Giá trị riêng càng lớn, độ biến thiên dọc theo trục này càng lớn. Vì vậy, vectơ riêng có giá trị riêng lớn nhất tương ứng với trục có phương sai lớn nhất (GIF của tác giả)Chúng ta nên nhớ rằng ma trận đại diện cho một phép biến đổi tuyến tính. Khi chúng ta nhân ma trận Hiệp phương sai với dữ liệu của mình, chúng ta có thể thấy rằng trung tâm của dữ liệu không thay đổi. Và dữ liệu được kéo dài theo hướng của vectơ riêng với phương sai/giá trị riêng lớn hơn và được nén dọc theo trục của vectơ riêng với phương sai nhỏ hơn Các điểm dữ liệu nằm trực tiếp trên các vectơ riêng không bị xoay (GIF của tác giả)Phân tích thành phần chính (PCA)Phân tích thành phần chính sử dụng sức mạnh của vectơ riêng và giá trị riêng để giảm số lượng tính năng trong dữ liệu của chúng tôi, đồng thời giữ lại hầu hết phương sai (và do đó hầu hết thông tin). Trong PCA, chúng tôi chỉ định trước số lượng thành phần chúng tôi muốn giữ lại Thuật toán PCA bao gồm các bước sau
Hãy xem PCA làm gì trên tập dữ liệu 2 chiều. Trong ví dụ này, chúng tôi không giảm số lượng các tính năng. Giảm số lượng các tính năng có ý nghĩa đối với dữ liệu nhiều chiều vì sau đó nó làm giảm số lượng các tính năng (GIF của tác giả)Hãy tải tập dữ liệu iris. Nó chứa số đo của ba loài hoa diên vĩ khác nhau. Những loài đó là iris-virginica, iris-versicolor và iris-setosa (Mã của tác giả)Hãy xem nhanh tập dữ liệu print(iris_df.head()) (GIF của tác giả)Chúng ta có thể tạo một biểu đồ được gọi là “scree plot” để xem biến nào chiếm nhiều biến nhất trong dữ liệu. Đối với điều này, chúng tôi thực hiện một PCA đầu tiên (Mã của tác giả)(Ảnh của tác giả)Như chúng ta có thể thấy, hai thành phần đầu tiên chiếm phần lớn sự thay đổi trong dữ liệu. Vì vậy, tôi đã quyết định chỉ giữ lại hai thành phần đầu tiên và loại bỏ phần còn lại. Khi đã xác định số lượng thành phần cần giữ lại, chúng tôi có thể chạy PCA thứ hai trong đó chúng tôi giảm số lượng tính năng Bây giờ chúng ta hãy xem dữ liệu của chúng ta, đó là một mảng print(iris_transformed[:5,:]) Chúng ta có thể thấy rằng chúng ta chỉ còn hai cột. Các cột/biến này là sự kết hợp tuyến tính của dữ liệu gốc của chúng tôi và không tương ứng với một tính năng của tập dữ liệu gốc (như chiều rộng vách ngăn, chiều dài vách ngăn,…) Hãy trực quan hóa dữ liệu của chúng tôi (Mã của tác giả)Chúng tôi thấy các tính năng kết hợp mới của chúng tôi trên trục x và y. Các loài thực vật được biểu thị bằng màu sắc của một điểm dữ liệu (Ảnh của tác giả)Chúng ta có thể thấy rằng phần lớn thông tin trong dữ liệu đã được bảo toàn và giờ đây chúng ta có thể đào tạo một mô hình ML, mô hình này phân loại các điểm dữ liệu theo ba loại Sự kết luậnBây giờ tôi sẽ tóm tắt các khái niệm quan trọng nhất Phép nhân ma trậnKhi chúng ta nhân một ma trận với một vectơ, vectơ đó sẽ được biến đổi tuyến tính. Phép biến đổi tuyến tính này là sự kết hợp giữa xoay và chia tỷ lệ vectơ. Các vectơ chỉ được thu nhỏ và không được quay được gọi là các vectơ riêng. Yếu tố mà chúng được chia tỷ lệ là giá trị riêng tương ứng Thành phần chủ yếuCác thành phần chính là các trục trong đó dữ liệu của chúng tôi hiển thị nhiều biến thể nhất. Thành phần chính đầu tiên giải thích phần lớn nhất của biến thể quan sát được và thành phần chính thứ hai giải thích phần lớn thứ hai, v.v. Các thành phần chính là các vectơ riêng của ma trận hiệp phương sai. Thành phần chính đầu tiên tương ứng với vectơ riêng có giá trị riêng lớn nhất PCAPhân tích thành phần chính là một kỹ thuật để giảm số lượng tính năng trong bộ dữ liệu của chúng tôi. Nó bao gồm các bước xử lý sau
https. // khoa học dữ liệuplus. com/hieu-the-covariance-matrix/ https. // vi. wikipedia. org/wiki/Iris_flower_data_set https. //scikit-học. org/stable/auto_examples/decomposition/plot_pca_iris. html Bộ dữ liệudiên vĩBộ dữ liệu Iris và giấy phép có thể được tìm thấy dưới https. //www. openml. tổ chức/d/61 Nó được cấp phép theo sáng tạo chung, nghĩa là bạn có thể sao chép, sửa đổi, phân phối và thực hiện tác phẩm, ngay cả với mục đích thương mại, tất cả mà không cần xin phép Những bài viết liên quanKý hiệu chỉ số EinsteinTổng kết Einstein, ký hiệu chỉ mục và numpys np. einsumhướng tới khoa học dữ liệu. com Lan truyền ngược trong mạng nơ-ronMạng lưới thần kinh từ đầu bao gồm toán học và mã pythonhướng tới khoa học dữ liệu. com Tính toán ma trận cho các nhà khoa học dữ liệuUống viên thuốc màu đỏ và tìm hiểu về phép tính ma trậnhướng tới khoa học dữ liệu. com Bài viết khác của tác giảCách bạn có thể sử dụng GPT-JGPT-J đã giải thích và 3 cách dễ dàng để bạn có thể truy cập nóhướng tới khoa học dữ liệu. com Học Deep Q không phải là khoa học tên lửaDeep Q và double Q learning được giải thích và mã hóa trong pytorchhướng tới khoa học dữ liệu. com Học chuyển giao sâuNghệ thuật sử dụng lại các mô hình do người khác đào tạohướng tới khoa học dữ liệu. com Bạn muốn kết nối? Linkedin Tính giá trị riêng và vectơ riêngNếu bạn thích toán học và muốn tìm hiểu sâu hơn, tôi đã tóm tắt một số toán học được sử dụng trong bài đăng trên blog này Chúng ta có thể dễ dàng tính toán các hàm riêng và giá trị riêng trong python import numpy as np Nếu chúng ta muốn tính toán chúng bằng tay, nó sẽ phức tạp hơn một chút Như chúng ta đã thấy, khi chúng ta nhân ma trận M với một véc tơ riêng (ký hiệu là 𝑣), nó cũng giống như việc chia tỷ lệ giá trị riêng của nó 𝜆 (Ảnh của tác giả)Bây giờ chúng ta sắp xếp lại phương trình (Ảnh của tác giả)Trong đó tôi là ma trận đơn vị, có một đường chéo và các số 0 ở những nơi khác. Nó có hình dạng giống như A (Ảnh của tác giả)(Ảnh của tác giả)Và cách duy nhất để phương trình này đúng (Ảnh của tác giả)Điều này chỉ đúng khi định thức của ma trận (A -𝜆⋅I) bằng 0
|