E chỉ thấy nhập nhằng trong câu.
Các vector riêng hoàn toàn độc lập tuyến tính (nghĩa là trực giao đôi 1) trong bài trên :3. Đáng ra là các vector riêng độc lập tuyến tính và trực giao đôi 1 thì đúng hơn
Giảm chiều dữ liệu với PCA. Trị riêng và vector riêng của ma trận
Mình cũng vậy thôi, học tới biến đổi sơ cấp là hết bài basis span sub eigen gì là tự tìm hiểu cả.
Thực ra trực giao thì phải độc lập tuyến tính chứ, vì trực giao đôi một thì hợp thành cơ sở được rồi.
Bạn đã thông suốt pca chưa. Mình còn mắc 1 chút ở pca cho toàn tập dữ liệu. M đã hiểu đến chỗ qua chuẩn hóa vector eigen. Nhưng mình mắc ở bước tính features , rút gọn chiều cho từng ảnh. Pca trên từng ảnh mình đã hiểu. Bạn hiểu r mình inbox hỏi mấy câu với
Bạn xem link bên khanacademy
Ngay sau bước trải phẳng thì hai bước sau chính là tính ma trận cov. Nhưng AA* mới đúng là ma trận cov theo định nghĩa vì chuẩn hóa theo dòng mà, chứ A*A thì có ý nghĩa gì nhỉ?
PCA có 2 cách tiếp cận
- PCA cho từng ảnh, thì ma trận dùng để giảm chiều dữ liệu (ghép từ k vector eigen thành phần chính) cho từng ảnh được tìm trực tiếp trên từng ảnh đó
- PCA cho cả tập dữ liệu thì các vector eigen dùng để giảm chiều dữ liệu (không ghép như cách 1 mà để riêng) cho từng ảnh được tính tư cả tập dữ liệu
Về cơ bản A(T)A và AA(T) cho cùng eigen value và eigen vector. Nhưng AA(T) cho cỡ ma trận hiệp phương sai lớn hơn A(T)A nhiều. Nên người ta tính eigen vector cho AA(T) thông qua A(T)A có cỡ nhỏ hơn nhiều
PCA trên từng ảnh , nếu ảnh gốc k đưa về cùng cỡ thì không dùng được AA(T) mà chỉ dùng A(T)A. Do đến bước nhân ma trận giảm chiều với ma trận ảnh gốc không nhân được do cột ma trận này k bằng hàng ma trận kia (phép chiếu)
Còn PCA trên cả tập thì người ta dùng A(T)A hay AA(T) cũng được nhưng ng ta tính eigen cho A(T)A vì lý do mình nói trên từ đó thông qua eigen vector của A(T)A tính cho AA(T)
Cụ thể hơn
A là vector cột, mỗi 1 cột là 1 ảnh (có thể có cách theo dòng nhưng mình tìm hiểu thấy theo cột cả)
Các ảnh trong tập huấn luyên có M ảnh. Mỗi ảnh NXN
Khi chuyển về vector thì có cỡ N^2 x 1
AA(T) = N^2 x M nhân cho M x N^2 ra matrix cov là N^2 x N^2 nên người ta mới dùng A(T)A rồi quay lai tính cho AA(T) vì A(T)A chỉ có cỡ M x M mà thôi
Mình đang mắc chỗ này
Cách giảm chiều vector ảnh gốc ban đâu N^2 x 1 về K x 1
ở hình vuông màu xanh thì mình hiêu cách tính
Nhưng ở hình vuông màu đỏ mình k hiểu công thức này làm gì
Nếu tính theo công thức ở hình vuông màu đỏ thì cho ra vector N^2 x 1 bằng cỡ ảnh gốc rồi
Hai cách viết như nhau. Cách viết thứ 2 được xác định khi công nhận tập vector riêng là quy chiếu (không gian để biểu diễn).
Để giải thik cách viết thứ 2 (màu đỏ) từ đâu mà ra.
Hình như có gì sai sai
Theo công thức này
[DEAD LINK]
Ví dụ như sau
Còn theo công thức này
[DEAD LINK]
thì ví dụ như thế này
[DEAD LINK]
Mà mình thấy PCA trên tập ảnh thì có thể chọn k thành phần chính giữ lại tương đương eigenvector cuối cùng có k chiều. Còn PCA trên từng ảnh thì không.
Bạn lại tính lộn về không gian cũ nên mới thế.
Chuyển sang hệ quy chiếu mới (Không gian mới) nó đơn giản là:
[DEAD LINK]
Đến đây được rồi, chính là biểu diễn trong không gian mới.
Hay viết gọn
[DEAD LINK]
Mình chẳng biết PCA gì gì, mình chỉ comment về toán.
công thức còn sum mà bạn
[dead link]
là sao nhỉ
Mình không hiêu đoạn này
Sau khi nhân w1u1 được 1 vecor x chẳng hạn
w2u2 được vector y
x + y = 1 vector có 3 thành phần mà
Bạn đừng lùa theo và test công thức nữa. Bạn dành time hiểu toán tuyến tính đi!
Bây giờ mình phải đi đã
Vậy là bạn chưa xem link mình đưa
Link nào nhỉ. Mình hiểu rồi. Cái công thức vòng đỏ là ý nói ảnh ban đầu có thể biểu diễn bởi tổ hợp tuyến tính đó. Còn feature được tính bằng công thức xanh. Từ qua đến giờ đọc mấy công thức mà váng hết cả đầu :3 nên nhầm lẫn .Tks bạn
Đúng rồi! nhưng là trên hệ cũ. Hệ mới lấy u1, u2 làm cơ sở thì bạn chỉ còn 2 thôi. Và tọa độ mới biểu diễn A là (w1, w2).
OK?
Ok mình hiểu rồi. Tks bạn
Giờ mình tổng hợp note
Các bước của PCA qua eigen (còn kiểu qua SVD nữa)
- Trải phẳng n ảnh cùng độ phân giải thành các vector cột H[i] với kích cỡ (size*1)
- Chuẩn hóa (centered): avgH = 1/n*sigma_all(H), i=1…n: H[i] <- H[i] - avgH
- H = [H[1] H[2] … H[n]] kích cỡ (size*n)
- M = T(H) * H với n < size (Gram matrix)
- Trích eigvec(M) ứng với eigval(M) cao nhất lập thành V = [v[1] | v[2] | … | v[k]]
- Chuẩn hóa (Euclidean) norm trên V để lập thành cơ sở trực chuẩn (do spectral theorem) cho subspace S có k chiều: v[i] <- v[i] / norm2(v[i])^2
- Chiếu tất cả các vector H[i] xuống subspace này thành H’[i]: H’[i] = T(H[i]) * V
- Lưu H’[1…n], avgH, và v[1…k] ứng với
lambda[1..k]
(eigval)
Cơ sở:
- Vì sao để cực tiểu MSE phải cực đại phương sai theo principal axis? https://stats.stackexchange.com/a/136072 (từ khóa: Frobenius norm).
- Một phần của spectral theorem: ma trận đối xứng luôn có đủ vector riêng với giá trị riêng thực & chúng đôi một trực giao.
- Gram matrix: ta có cov(H) = H*T(H) là ma trận đx nên có eigenvalue thực. Với v là một eigenvector của cov(H) ta có
H*T(H)*v = lambda*v <=> T(H)*H*T(H)*v = lambda*T(H)*v <=> T(H)*H * (T(H)*v) = lambda * (T(H)*v)
vậy theo đn T(H)*v là eigenvector của Gram matrix với cùng eigenvalue. - Phép chiếu: Cho một subspace S với orthonormal basis {u[1…k]}. Một vector v trong R^n luôn tách được thành: v = hình chiếu trên S + vector trực giao (?pháp tuyến?) với S.
Với j trong [1…k]: (phép.
là tích vô hướng)
v.u[j] = (sigma(i=1..k) c[i]*u[i]).u[j] + 0
= sigma(i=1..k && i != j) c[i]*(u[i].u[j]) + c[j]*(u[j].u[j])
= 0 + c[j]*1 = c[j].
Hay Proj(v) = [v.u[1] | v.u[2] | … | v.u[k]], tức là bằng T(v) * U.
Chắc còn thiếu mong mọi người góp ý bổ sung Nhưng nhìn qua thì thấy một nhịp còn thiếu là phương sai theo trục cực đại (Cov(x, x), Cov(y, y), Cov(z, z) max) -> ? -> chọn eigenvalue của cov (hay Gram) cực đại.