01/10/2018, 15:54

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
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ó

Nhưng có người thì viết

Có người thì viết

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ụ ở:

vi.wikipedia.org

Độc lập tuyến tính

Trong đại số tuyến tính, độc lập tuyến tính là một tính chất thể hiện mối liên hệ giữa các vectơ. chỉ có nghiệm duy nhất: k1 = k2 =... = kn = 0


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

HelloWorld viết 18:01 ngày 01/10/2018

Help

Trọng Nghĩa viết 18:06 ngày 01/10/2018
  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 mn nhưng nơi khác nó là ma trận nm. 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”.
HelloWorld viết 17:55 ngày 01/10/2018

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

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ò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

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

HelloWorld viết 18:02 ngày 01/10/2018

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 mn nhưng nơi khác nó là ma trận nm. Mình nghĩ điểm này không cần chú trọng làm gì.

Đúng như bạn nói mình mới tìm ra với 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

HelloWorld viết 18:09 ngày 01/10/2018

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”.

Độ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

Trọng Nghĩa viết 18:07 ngày 01/10/2018

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

anon45952904 viết 18:03 ngày 01/10/2018

Ý 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

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.

HelloWorld viết 18:04 ngày 01/10/2018

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

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

MFEPE – 25 Dec 13

Phương pháp Phân tích thành phần chính (Principal Component Analysis – PCA)

Phương pháp Phân tích thành phần chính (Principal Component Analysis – PCA) (Nguồn: phvu.net) “Principal component analysis (PCA) is a statistical procedure that uses an orthogonal transforma…

“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).”

anon45952904 viết 17:54 ngày 01/10/2018

Đ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.

anon45952904 viết 18:04 ngày 01/10/2018

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

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

HelloWorld viết 18:00 ngày 01/10/2018

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

anon45952904 viết 17:57 ngày 01/10/2018

Ý 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

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

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ễ

  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.

rogp10 viết 18:03 ngày 01/10/2018

Cổ nhân có câu: “Tận tín thư, bất như vô thư”
Mà câu khẳng định trên là dư, đã đô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.

HelloWorld viết 18:02 ngày 01/10/2018

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

anon45952904 viết 18:06 ngày 01/10/2018

"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

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!!!”

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!

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.

rogp10 viết 18:04 ngày 01/10/2018

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]

Nguyễn Phạm Anh Quân viết 18:09 ngày 01/10/2018

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é

Chào @ChrisMinh, Em nói em học 6 tháng thì anh đoán là em chưa đào sâu kiến thức toán bên dưới, vì cái này thì cần vài năm chứ ko phải vài tháng! Nếu em muốn đi chuyên sâu image processing & nhúng thì anh khuyên em đào sâu: - C++ OOP, design pattern, multithreading, GPGPU (CUDA C, OpenCL....) - Toán xác suất thống kê, ma trận, xử lý tín hiệu, 1 số sách để em tham khảo: Còn deep learning thì rất rộng, em nên tìm hiểu từng thứ 1 nên anh sẽ ko gợi ý ở đây, nhưng khi em đã có nền tảng ở bê…

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

HelloWorld viết 18:05 ngày 01/10/2018

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.

Nguyễn Phạm Anh Quân viết 17:58 ngày 01/10/2018

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!

HelloWorld viết 17:59 ngày 01/10/2018

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

Bài liên quan
0