2009-02-10 25 views
33

Làm thế nào để nó thực sự giảm nhiễu .. bạn có thể gợi ý một số hướng dẫn hay không?SVD là gì (phân tách giá trị số ít)

+0

Câu hỏi ngoài chủ đề, nếu bạn muốn lý thuyết, sau đó truy cập Wikipedia - họ đã có mô tả và tham chiếu cơ bản. Nếu bạn muốn được trợ giúp về chủ đề lập trình cụ thể, hãy đặt câu hỏi (ví dụ: cách sử dụng Lapack để lấy SVD của ma trận ẩn sĩ, v.v.). – Anonymous

+19

Xin đừng đóng. Điều này liên quan đến lập trình hơn rất nhiều so với một số câu hỏi nhạy cảm đã có trên trang web này. –

+0

Sau khi suy nghĩ, tôi phải đồng ý và xóa -1 :) – Anonymous

Trả lời

18

Một cách để sử dụng SVD để giảm tiếng ồn là thực hiện quá trình phân hủy, đặt thành phần gần bằng không chính xác bằng không, sau đó soạn lại.

Đây là số online tutorial trên SVD.

Bạn có thể muốn xem Numerical Recipes.

+2

đây cũng là cơ sở cho LSA/LSI (lập chỉ mục ngữ nghĩa tiềm ẩn). Lý thuyết là các vectơ "có giá trị nhỏ" thực sự chỉ là những nhiễu loạn "ồn ào" của vectơ. –

48

SVD có thể được hiểu từ ý nghĩa hình học cho các ma trận vuông như một phép biến đổi trên vectơ.

Hãy xem xét một hình vuông n x n ma trận M nhân một vector v để tạo ra một vector đầu ra w:

w = M*v 

Các số ít giá trị phân hủy M là sản phẩm của ba ma trận M=U*S*V, vì vậy w=U*S*V*v. U và V là ma trận trực giao. Từ một điểm chuyển đổi hình học của xem (hành động trên một vector bằng cách nhân nó), họ là sự kết hợp của phép quay và phản xạ mà không thay đổi độ dài của vectơ mà chúng đang nhân lên. S là một ma trận đường chéo đại diện cho tỉ lệ hoặc squashing với các yếu tố tỷ lệ khác nhau (các thuật ngữ đường chéo) dọc theo mỗi n trục.

Vì vậy, hiệu ứng của nhân nhân vectơ v với ma trận M là xoay/phản ánh v theo hệ số trực giao V của M, sau đó tỉ lệ/squash kết quả theo hệ số đường chéo S, sau đó xoay/phản ánh kết quả bằng M hệ số trực giao U.

Một lý do SVD được mong muốn từ quan điểm số là phép nhân bằng ma trận trực giao là hoạt động nghịch đảo và hoạt động extremely stable (số điều kiện là 1). SVD chụp bất kỳ điều kiện nào trong ma trận chia tỷ lệ S.

+0

ai đó chỉ cần -1'd: quan tâm giải thích tại sao? –

6

Để trả lời cho câu hỏi khó giải quyết: SVD là sự tổng quát hóa các giá trị riêng/số nguyên tử thành ma trận không vuông. Nói, $ X \ trong N \ lần p $, khi đó sự phân rã SVD của X mang lại X = UDV^T trong đó D là đường chéo và U và V là ma trận trực giao. Bây giờ X^TX là một matrice vuông, và phân rã SVD của X^TX = VD^2V trong đó V tương đương với các đặc tính riêng của X^TX và D^2 chứa các giá trị riêng của X^TX.

8

Phân tách giá trị số một là phương pháp lấy ma trận nxm M và "phân tách" thành ba ma trận sao cho M = U S V. S là hình vuông đường chéo (chỉ các mục nhập khác không nằm trên đường chéo từ trên cùng) -left to bottom-right) ma trận chứa "các giá trị số ít" của M. U và V là trực giao, dẫn đến sự hiểu biết hình học về SVD, nhưng điều đó không cần thiết cho việc giảm nhiễu.

Với M = U S V, chúng tôi vẫn còn ma trận M ban đầu với tất cả tiếng ồn của nó nguyên vẹn. Tuy nhiên, nếu chúng ta chỉ giữ các giá trị số ít lớn nhất k (rất dễ, vì nhiều thuật toán SVD tính toán sự phân hủy trong đó các mục của S được sắp xếp theo thứ tự không tăng), thì chúng ta có xấp xỉ ma trận gốc. Điều này hoạt động bởi vì chúng tôi giả định rằng các giá trị nhỏ là tiếng ồn và các mẫu quan trọng hơn trong dữ liệu sẽ được thể hiện thông qua các vectơ kết hợp với các giá trị số ít lớn hơn.

Thực tế, xấp xỉ kết quả là xấp xỉ thứ hạng gần đúng nhất của ma trận gốc (có lỗi bình phương nhỏ nhất).

4

SVD cũng có thể được sử dụng để giảm đáng kể toàn cầu (tức làcho tất cả các quan sát đồng thời) phù hợp với một mô hình tùy ý (được thể hiện trong một công thức) với dữ liệu (đối với hai biến và được biểu diễn trong một ma trận).
Ví dụ, ma trận dữ liệu Một = D * MT nơi D đại diện cho trạng thái có thể của một hệ thống và M đại diện cho sự phát triển của nó wrt một số biến (ví dụ thời gian).
By SVD, Một (x, y) = U (x) * S * VT (y) và do đó D * MT = U * S * VT
sau đó D = U * S * VT * MT + nơi "+" chỉ ra một pseudoinverse.
Sau đó, một mô hình toán học cho sự tiến hóa và phù hợp với các cột V, mỗi kết hợp tuyến tính là thành phần của mô hình (điều này dễ dàng, vì mỗi cột là đường cong 1D). Điều này có được các thông số mô hình tạo ra M? (dấu? Cho biết nó dựa trên sự phù hợp).
M * M? + * V = V? cho phép dư R * S = V - V? để được thu nhỏ, do đó xác định DM.

Khá tuyệt, eh?

Các cột của UV cũng có thể được kiểm tra để thu thập thông tin về dữ liệu; ví dụ, mỗi điểm uốn trong các cột của V thường cho biết một thành phần khác của mô hình.

Cuối cùng, và trên thực tế việc giải quyết câu hỏi của bạn, đó là nhập khẩu cần lưu ý rằng mặc dù mỗi giá trị đơn lẻ liên tiếp (yếu tố của ma trận đường chéo S) với vectơ giả của nó UV không có tín hiệu thấp hơn để tiếng ồn , sự tách biệt các thành phần của mô hình trong các vectơ "ít quan trọng" này thực sự rõ rệt hơn.Nói cách khác, nếu dữ liệu được mô tả bởi một loạt các thay đổi trạng thái theo sau một tổng mũ hoặc bất cứ điều gì, trọng số tương đối của mỗi số mũ có được gần nhau hơn trong các giá trị số ít hơn. Nói cách khác, các giá trị số ít sau có các véc tơ ít hơn mịn (noisier) nhưng trong đó thay đổi được đại diện bởi mỗi thành phần là nhiều hơn riêng biệt.