Tôi thấy khó liên kết lý thuyết với việc thực hiện. Tôi sẽ đánh giá cao sự giúp đỡ trong việc biết nơi hiểu biết của tôi là sai.Cách sử dụng dữ liệu đã giảm - đầu ra của phân tích thành phần chính
Ký hiệu - ma trận trong vốn đậm và vectơ trong phông chữ đậm lá thư nhỏ
là một tập dữ liệu trên quan sát, mỗi biến. Vì vậy, với những quan sát vectơ dữ liệu ba chiều, các trục chính chiều là , cho trong nơi là kích thước mục tiêu.
Các thành phần chủ yếu của ma trận dữ liệu quan sát sẽ là nơi ma trận , ma trận , và ma trận .
Cột của tạo thành một cơ sở trực giao cho tính năng và sản lượng là chiếu thành phần chính là giảm thiểu các lỗi tái squared:
và xây dựng lại tối ưu được cung cấp bởi .
Các mô hình dữ liệu là
X(i,j) = A(i,:)*S(:,j) + noise
nơi PCA nên được thực hiện trên X để nhận được đầu ra S. S phải bằng Y.
Vấn đề 1: Các số liệu giảm Y không bằng S được sử dụng trong mô hình. Sự hiểu biết của tôi sai ở đâu?
Bài toán 2: Cách tái tạo lại sao cho lỗi tối thiểu?
Vui lòng trợ giúp. Cảm ơn bạn.
clear all
clc
n1 = 5; %d dimension
n2 = 500; % number of examples
ncomp = 2; % target reduced dimension
%Generating data according to the model
% X(i,j) = A(i,:)*S(:,j) + noise
Ar = orth(randn(n1,ncomp))*diag(ncomp:-1:1);
T = 1:n2;
%generating synthetic data from a dynamical model
S = [ exp(-T/150).*cos(2*pi*T/50)
exp(-T/150).*sin(2*pi*T/50) ];
% Normalizing to zero mean and unit variance
S = (S - repmat(mean(S,2), 1, n2));
S = S ./ repmat(sqrt(mean(Sr.^2, 2)), 1, n2);
Xr = Ar * S;
Xrnoise = Xr + 0.2 * randn(n1,n2);
h1 = tsplot(S);
X = Xrnoise;
XX = X';
[pc, ~] = eigs(cov(XX), ncomp);
Y = XX*pc;
CẬP NHẬT [Tháng Tám 10]
Dựa trên trả lời, đây là toàn bộ mã mà
clear all
clc
n1 = 5; %d dimension
n2 = 500; % number of examples
ncomp = 2; % target reduced dimension
%Generating data according to the model
% X(i,j) = A(i,:)*S(:,j) + noise
Ar = orth(randn(n1,ncomp))*diag(ncomp:-1:1);
T = 1:n2;
%generating synthetic data from a dynamical model
S = [ exp(-T/150).*cos(2*pi*T/50)
exp(-T/150).*sin(2*pi*T/50) ];
% Normalizing to zero mean and unit variance
S = (S - repmat(mean(S,2), 1, n2));
S = S ./ repmat(sqrt(mean(S.^2, 2)), 1, n2);
Xr = Ar * S;
Xrnoise = Xr + 0.2 * randn(n1,n2);
X = Xrnoise;
XX = X';
[pc, ~] = eigs(cov(XX), ncomp);
Y = XX*pc; %Y are the principal components of X'
%what you call pc is misleading, these are not the principal components
%These Y columns are orthogonal, and should span the same space
%as S approximatively indeed (not exactly, since you introduced noise).
%If you want to reconstruct
%the original data can be retrieved by projecting
%the principal components back on the original space like this:
Xrnoise_reconstructed = Y*pc';
%Then, you still need to project it through
%to the S space, if you want to reconstruct S
S_reconstruct = Ar'*Xrnoise_reconstructed';
plot(1:length(S_reconstruct),S_reconstruct,'r')
hold on
plot(1:length(S),S)
Cốt truyện là đó là rất khác so với những gì thể hiện trong Câu trả lời. Chỉ một thành phần của S khớp chính xác với S_reconstructed. Không nên toàn bộ không gian 2 chiều nguyên bản của đầu vào nguồn S được xây dựng lại? Ngay cả khi tôi cắt bỏ tiếng ồn, thì cũng có một thành phần của S được tái tạo chính xác.
Tôi đoán câu hỏi này phù hợp hơn cho việc xử lý tín hiệu stackexchange http://dsp.stackexchange.com/, vì nó đề cập nhiều hơn với lý thuyết so với việc thực thi mã –
'Sr' trong dòng này' S = S ./ repmat (sqrt (trung bình (Sr.^2, 2)), 1, n2); '? –