Tôi có ma trận dữ liệu hình ảnh trong đó là số ví dụ hình ảnh và là số pixel hình ảnh: , vì mỗi hình ảnh là hình ảnh 3 kênh . Hơn nữa, mỗi trong số 50000 hình ảnh thuộc về 1 trong 10 lớp có thể. Đó là, có 5000 hình ảnh của lớp ' ', 5000 hình ảnh, của lớp ' ', v.v ... và có tổng số 10 lớp. Đây là một phần của bộ dữ liệu CIFAR-10.car
bird
Mục tiêu cuối cùng ở đây là thực hiện phân loại trên tập dữ liệu này. Để kết thúc này, giáo sư đã đề cập để thử PCA về điều này, và sau đó đặt các tính năng đó vào một bộ phân loại. Là phân loại của tôi, tôi đang sử dụng một mạng thần kinh được kết nối đầy đủ với một lớp ẩn và đầu ra softmax.
Vấn đề của tôi là tôi tin rằng tôi đã thực hiện PCA theo cách chính xác , nhưng tôi nghĩ rằng cách của tôi có thể có thể được áp dụng sai .
Đây là những gì tôi đã làm:
Để tính toán PCA dữ liệu của tôi, đây là những gì tôi đã làm cho đến nay:
Đầu tiên, tôi tính toán hình ảnh trung bình . Hãy là 'th dãy . Sau đó,
Tính toán ma trận hiệp phương sai của dữ liệu hình ảnh của tôi:
Thực hiện phân rã vectơ riêng của , thu được , và , trong đó ma trận mã hóa các hướng chính (hàm riêng) dưới dạng cột. (Ngoài ra, giả sử rằng các giá trị eigen đã được sắp xếp theo thứ tự giảm dần). Như vậy:
Cuối cùng, thực hiện PCA: tức là tính toán ma trận dữ liệu mới , trong đó là số lượng thành phần chính mà chúng ta muốn có. Đặt - nghĩa là một ma trận chỉ có các cột đầu tiên . Như vậy:
Câu hỏi:
Tôi nghĩ rằng phương pháp thực hiện PCA của tôi trên dữ liệu này được áp dụng sai, bởi vì cách tôi đã thực hiện nó, về cơ bản, cuối cùng tôi đã giải mã các pixel của tôi. (Giả sử tôi đã đặt ). Đó là, các hàng kết quả của trông giống như nhiễu. Đó là trường hợp, câu hỏi của tôi như sau:
- Tôi đã thực sự khử tương quan các pixel? Đó là, trên thực tế tôi đã loại bỏ bất kỳ khớp nối nào giữa các pixel mà trình phân loại tương lai có thể hy vọng sẽ sử dụng chưa?
- Nếu câu trả lời ở trên là đúng, thì tại sao chúng ta lại làm PCA theo cách này?
- Cuối cùng, liên quan đến điểm cuối cùng, làm thế nào sẽ chúng ta làm chiều giảm qua PCA trên hình ảnh, nếu trên thực tế, phương pháp này tôi đã sử dụng nó sai?
BIÊN TẬP:
Sau khi nghiên cứu sâu hơn và có nhiều phản hồi, tôi đã tinh chỉnh câu hỏi của mình để: Nếu một người sử dụng PCA như một bước xử lý trước để phân loại hình ảnh, thì tốt hơn:
- Thực hiện phân loại trên k thành phần chính của hình ảnh? (Ma trận ở trên, vì vậy bây giờ mỗi hình ảnh có độ dài thay vì gốc )
- HOẶC tốt hơn là thực hiện phân loại trên các hình ảnh được dựng lại từ k-eigenvector , (sau đó sẽ là , vì vậy mặc dù mỗi hình ảnh đều VẪN có độ dài ban đầu , nhưng thực tế nó là được xây dựng lại từ eigenvector).
Theo kinh nghiệm, tôi đã thấy rằng độ chính xác xác nhận mà không có PCA> độ chính xác xác thực với tái cấu trúc PCA> độ chính xác xác thực với PCA PC.
Những hình ảnh dưới đây cho thấy theo thứ tự tương tự. Độ chính xác xác nhận 0,5> 0,41> 0,31.
Đào tạo về hình ảnh pixel thô có độ dài :
Đào tạo về hình ảnh có độ dài nhưng được xây dựng lại với k = 20 eigenvector:
Và cuối cùng, tự đào tạo về các thành phần chính $ k = 20 *:
Tất cả điều này đã được chiếu sáng. Như tôi đã tìm ra, PCA không đảm bảo rằng các thành phần chính giúp việc phân định ranh giới giữa các lớp khác nhau dễ dàng hơn. Điều này là do các trục chính được tính toán là các trục chỉ cố gắng tối đa hóa năng lượng của phép chiếu trên tất cả các hình ảnh, theo thuyết bất khả tri đối với lớp hình ảnh. Ngược lại, hình ảnh thực tế - dù được tái cấu trúc trung thực hay không, vẫn duy trì một số khía cạnh của sự khác biệt về không gian có thể đi - hoặc nên đi - hướng tới việc phân loại có thể.