Giảm chiều dữ liệu với PCA. Trị riêng và vector riêng của ma trận

Hello
Mình đang tìm hiểu về pca.
Mình có thắc mắc như sau mong các bạn giải đáp
Vấn đề 1
Ví dụ 1 tập ảnh có 4 ảnh: X1,X2,X3,X4

  • Giờ mỗi ảnh này sẽ được chuẩn hóa
  • Rồi tìm ma trân hiệp phương sai của ảnh đó dựa vào ma trận chuyển vị của nó
  • Rồi tìm trị riêng và vector riêng
  • Chọn k trị riêng lớn nhất rồi chuyển dữ liệu về không gian mới
    Nhưng mình xem 1 số bài thấy họ làm như sau:
  • Chuyển 4 ảnh x1,x2,x3,x4 về vector rồi ghép vào 1 ma trận chung (đáng ra phải tính riêng cho từng ảnh)
  • Tìm ma trận hiệp phương sai của ma trận này, rồi tìm trị riêng, vector riêng của ma trận này là sao nhỉ.

Chi tiết trong slide này tại bước 5 :grin:
https://drive.google.com/file/d/0B4bbONXZVeOSVTVJZmtWY2pOUEVycXJfMDVnMnlHWlRlNTNn/view?usp=sharing

Vấn đề 2: Việc tìm ma trận hiệp phương sai của 1 ảnh X m hàng x cột. Được tìm thông qua ma trận chuyển vị của nó

[DEAD LINK]

Nhưng có người thì viết
[DEAD LINK]

Có người thì viết
[DEAD LINK]

Về cơ bản 1 ma trận k phải là ma trận vuông m.n khi nhân với ma trận chuyển vị của nó n.m thì sẽ ra ma trận vuông m.m. Ở đây thứ tự nhân khác nhau thì cho ra ma trận khác nhau và cỡ khác nhau. Vậy 2 cách viết trên có ảnh hưởng gì không?

Update thêm 1 vấn đề T.T
Mình đọc thấy vector riêng tìm được từ ma trận hiệp phương sai là chiều của không gian mới. và các vector này độc lập tuyến tính với nhau nghĩa là trực giao với nhau đôi 1 với nhau
2 vector trực giao (vuông góc) nếu tích vô hướng của chúng =0
mình lấy 1 ví dụ ở đây về độc lập truyến tính
(1,2,3,4) và (-3,-6,-9,5) là độc lập tuyến tính
Lấy ví dụ ở:


Nhưng mình tính tích vô hướng của 2 vector này không bằng 0 là sao nhỉ, nghĩa là chúng không trực giao với nhau

Thank you

1 Like

A post was merged into an existing topic: Topic lưu trữ các post off-topic - version 3

  1. Bạn hiểu sai vấn đề, việc chuẩn hóa mỗi ảnh sẽ chỉ đợc thực hiện khi đã tìm ra k Eigen vector ứng với k Eigen values lớn nhất, còn lúc “học” thì PCA nó “học” trên một tập các ảnh (chính xác là các vector) chứ không phải “học” trên mỗi ảnh.
  2. Tùy vào kích thước ma trận Y của bạn và kết quả mong muốn nhận được là như thế nào, sự nhập nhằng ở công thức là do định nghĩa về Y là khác nhau. Ví dụ có nơi ghi Y là ma trận m*n nhưng nơi khác nó là ma trận n*m. Mình nghĩ điểm này không cần chú trọng làm gì.
  3. Hai vector trên độc lập tuyến tính vì không có hai hệ số k1 và k2 nào khác 0 sao cho k1*(1,2,3,4) + k2* (-3,-6,-9,5) = (0,0,0,0). Trong link bạn đưa có ghi rõ trong phần “Độc lập tuyến tính và phụ thuộc tuyến tính”.
4 Likes

bước chuẩn hóa mà bạn nói là chuẩn hóa vector eigen, còn bước chuẩn hóa mình nói là bước chuẩn hóa ở tiên xử lý bằng normal pca, hoặc centered pca

Cách này là 1 trick thay vì pca trên từng ảnh thì pca trên cả tập. Mình mới hỏi được gọi là Gramm matrix

1 Like

Đúng như bạn nói :slight_smile: mình mới tìm ra [DEAD LINK] thì trị riêng và vector riêng tìm được như nhau nên chọn cái nào sao cho cỡ ma trận là nhỏ hơn cái còn lại dựa vào cỡ m.n ảnh đầu vào, tốt nhất đưa về ma trận vuông cho đỡ rối :3

1 Like

Độc lập tuyến tính và phụ thuộc tuyến tính và hệ trực giao, trực giao mình đã rõ.Ý mình hỏi là
các vector riêng độc lập tuyến tính với nhau nghĩa là trực giao với nhau đôi 1 với nhau. Nhưng mình tính thì lại không như thế ví dụ như trên.
Mình cũng vừa hỏi được ý này
trực giao thì độc lập tuyến tính, ngược lại không đúng

2 Likes

Bạn có khả năng research tốt ghê, mình mất cả ngày mới hiểu được sơ quá nên hiểu nhầm câu hỏi luôn :slight_smile:

1 Like

Chỗ nào / sách nào nói như thế này bạn?

Update: Trực giao chỉ là 1 trường hợp đặc biệt của độc lập tuyến tích. Trực giao là độc lập tt nhưng độc lập tuyến tính thì chứa trực giao.

2 Likes

Mình lươt qua trang này thấy

“các vector riêng hoàn toàn độc lập tuyến tính (nghĩa là trực giao đôi một).”

2 Likes

ĐLTT đơn giản là ko thể chuyển 1 vector V1 thành vector V2 thông qua 1 hệ số tuyến tính k trừ trường hợp hệ số k = 0.

Mở rộng ra không gian vector, bạn giảm chiều không gian thông qua các phép tổng hợp tuyến tính thì làm cách nào với bộ hệ số đó cũng ko cho giá trị cuối cùng là vector 0. Trừ trường hợp bộ số đó toàn 0.[quote=“hell6w9rld, post:11, topic:68198”]
“các vector riêng hoàn toàn độc lập tuyến tính (nghĩa là trực giao đôi một).”
[/quote]

Câu này đúng.

Updated: Để bạn khỏi hiểu nhầm. Tuyến tính ở đây là tuyến tính vector chứ ko phải tuyến tính hệ số k.

2 Likes

Sai!
Bạn vẽ 2 vector ko trực giao, ko đồng phương vs nhau gia giấy coi. 2 vector đó độc lập tt

1 Like

các vector riêng độc lập tuyến tính với nhau nghĩa là trực giao với nhau đôi 1 với nhau
với
“các vector riêng hoàn toàn độc lập tuyến tính (nghĩa là trực giao đôi một).”
mình thầy 2 câu này tương đương ý nghĩa với nhau mà ta, sao bạn bảo 1 câu đúng, 1 câu sai ta

2 Likes

Mình hỏi là sách nào viết câu này hay bạn tự viết???

Này cho dễ

[DEAD LINK]

  1. 2 vector trên có trực giao không? KHÔNG

  2. Bạn có có kiếm được hệ số k1, k2 khác 0 nào để k1*V1 + k2*V2 = 0 không??? KHÔNG => Độc lập TT đấy, nhưng đâu có trực giao.

2 Likes

Cổ nhân có câu: “Tận tín thư, bất như vô thư” :smiley:
Mà câu khẳng định trên là dư thừa, đã đôi một trực giao thì hợp lại thành cơ sở được rồi. (*)

Thực ra cái người ta mong muốn là một orthonormal basis (vừa đôi một trực giao, vừa có norm bằng 1), chứ độc lập tuyến tính thì chưa đủ. Tại sao vậy? Hãy xem link.

https://www.khanacademy.org/math/linear-algebra/alternate-bases/orthonormal-basis/v/lin-alg-projections-onto-subspaces-with-orthonormal-bases

(*) Xét hệ v[i] i = 1..n khác vector(0) và đôi một trực giao, cùng phương trình ẩn a[i] sigma(a[i]*v[i]) = v(0).
Với k = 1…n bất kì, ta nhân hai vế với v[k] thì pt tương đương với |v[k]|^2*a[k] = 0 hay a[k] = 0, hay a[1] = a[2] = ... = a[n] = 0 là nghiệm duy nhất.

3 Likes

Mình cũng đã thử như bạn và thấy câu mình viết trên sai
“các vector riêng độc lập tuyến tính với nhau nghĩa là trực giao với nhau đôi 1 với nhau
với”
Nhưng sao bạn lại nói câu này đúng
“các vector riêng hoàn toàn độc lập tuyến tính (nghĩa là trực giao đôi một).”

2 câu trên cùng ý nghĩa mà.
Có 3 vector riêng x1, x2, x3
trực giao đôi 1 là
x1 tích vô hướng với x2 =0
x1 tích vô hướng với x3 =0
x2 tích vô hướng với x2 =0

độc lập tuyến tính
không tồn tài k1, k2, k3 không đồng thời =0 sao cho
k1v1 + k2v2 + k3v3 = 0

Câu đúng ra là các vector riêng độc lập tuyến tính với nhau và trực giao đôi 1 với nhau. Ma trận U được tạo thành k thành phần chính dùng để nhân với ma trận ảnh ban đầu là 1 hệ trực giao. Các vector cột độc lập tuyến tính VÀ trực giao đôi 1
Nhưng mình đọc bài trên link thấy họ nói "các vector riêng hoàn toàn độc lập tuyến tính (nghĩa là trực giao đôi một) nên mới thắc mắc

2 Likes

Xin lỗi bạn, mình không nói rõ. Câu này nó ko phải chân lý, nó chỉ là một kết luận riêng biện cho bộ vector riêng trong phép biến đổi của trang trên.

Bài toán trên đang tìm 1 tập sinh tối ưu từ ma trận ban đầu để biểu diễn dữ liệu.
Mục tiêu tối ưu của bài toán này là gì? Tập trực chuẩn (trực giao và đơn vị). Cách làm của nó là tìm tập riêng tối thiểu (không gian con riêng độc lập tuyến tính chứ không phải toàn bộ không gian con riêng). Tập này sẽ là tập cơ sở hay tập sinh. Nếu xử lý ma trận ban đầu thì sẽ được tập con đặc biệt không chỉ độc lập tuyến tính, mà còn trực giao => chuẩn hó độ lớn nữa là thành trực chuẩn.

Cái quote “các vector riêng hoàn toàn độc lập tuyến tính (nghĩa là trực giao đôi một)” là tác giả viết cho trường hợp này.

VD: Cho bạn 1 mớ dữ liệu không gian 3 chiều, bạn sẽ tìm ra tập sinh tối ưu là một hệ 3 trục tọa độ có độ lớn bằng 1.

Xử lý ma trận ban đầu ntn thì có thể đc kết quả trên thì bạn dở sách ra, các kiểu ma trận và tính chất của nó, trong đó sẽ có thằng đặc biệt đẻ ra không gian con riêng tối thiểu là bộ trực giao.

Mình không phải dân IT cũng ko phải nghiền toán hay nghiền học hành nên không giúp được bạn nhiều. Mình thấy chữ PCA chẳng hiểu nó là cái gì nên ghé qua thôi.

PS: Ý kiến cá nhân. Mình nghĩ học Toán ko nên đi theo sau những trang sách và câu chữ. Tiếp cận vấn đề rồi dùng trí tưởng tượng có lẽ sẽ tốt hơn. Đôi khi bạn phải nghĩ ra tiên đề, định lý của riêng mình dù chưa chứng minh được nó. Việc bạn làm tiếp theo là tìm trong sách, hoặc tự quẩy và “Ồ cái chết tiệt mình vừa nghĩ ra là có thật!!!”:smiley:

Updated: Uh, mình ko chắc nhưng học cái này ngoài animation và transform ra có thể ứng dụng mã hóa audio, video, nén dữ liệu, hình ảnh, data, data mining và có thể là data scientist được này. Hay phết!:innocent:

Updated1: Cắt nghĩa ra cái câu trên đứng 1 mình thì đúng là sai và gây hiểu lầm thật! Mình cũng lướt toàn bộ cái trang đó thấy nó hợp lý ở kết quả nhưng… Giờ nhìn lại thấy toét ở câu quote. :smiling_imp:

3 Likes

Vì sao phải chọn các vector riêng ứng với các giá trị riêng lớn nhất và nó liên quan như thế nào đến phương sai?
[spoiler]hì, mình đang hỏi về lí thuyết đằng sau nó.[/spoiler]

3 Likes

Làm người nghiên cứu, kỵ nhất là ko hiểu lý thuyết đằng sau mà nhảy ngay vào công thức và lên hỏi thế này! Anh khuyên @hell6w9rld nếu muốn tiếp tục con đường nghiên cứu thì nên chăm học lý thuyết, anh có post ở đây rồi, ít ra cũng đọc cái quyển đầu tiên nhé

Còn ở đây có lý thuyết về PCA
https://github.com/liyanghua/Principal-component-analysis-

4 Likes

Em cũng biết thế. Nhưng e đi thực tập thầy k cho tiếp cận theo hướng dưới lên. Mà từ trên xuống. K học hiểu lý thuyết hết cặn kẽ rồi mới qua ứng dụng. Mà trước hết cần hiểu tổng quan, các bước và làm cho nó chạy đã. Nếu cứ chăm chú lý thuyết đào sâu tiêu tiết thì k biết bh xong. Vì càng đâu vào nền lý thuyết bên sau thì càng ra nhiều vấn đề. Và đó k phải là cách tiếp cận tốt cho ng mới bắt đầu. Đó là cách khi đã nghiên cứu lâu dài. Trước tiên là phải chạy và hiểu tổng quan rồi mới đào sâu dần. Em đã tìm hiểu lý thuyết về pca trước khi vào các bước. Và câu trên trong link bài e cmt. Đúng là sai.

2 Likes

Học từ trên xuống thì ko những hổng lý thuyết mà còn hổng luôn cả keyword để có thể search, vì đây là mấy từ khóa bên xác suất thống kê, ma trận, nó rất cơ bản mà em với các bạn cứ cãi nhau!
Trước mắt em cứ làm theo thầy của em cho xong, nhưng song song đó phải chăm đọc lý thuyết, nhất là lý thuyết ma trận, sau đó tới xác suất!

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?