⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 regrhah.m

📁 回归分析工具箱
💻 M
字号:

function [theta,lambda] = RegrHAH(X,N,epochs,gamma0,gamma00)

%   [theta,lambda] = RegrHAH(X,N,epochs,gamma0,gamma00)
%   [theta,lambda] = RegrHAH(X,N,epochs,gamma)
%   [theta,lambda] = RegrHAH(X,N)
%
% Hebbian - Anti-Hebbian Regression demonstration.
%
% Input parameters:
%  - X: Input data block (k x n)
%  - N: Number of latent variables to be extracted
%  - epochs: Number of iterations (default epochs=100)
%  - gamma0: Initial step size (default gamma0=0.1)
%  - gamma00: Final step size (default gamma00=gamma0)
% Return parameters:
%  - theta: Eigenvectors
%  - lambda: Sequence of eigenvalue vectors
%
% Heikki Hyotyniemi June 20, 2003


[k,n] = size(X);

if nargin < 3
   epochs = 100;
end
if nargin < 4
   gamma0 = 0.1;
end
if nargin < 5
   gamma00 = gamma0;
end
gamma = logspace(log10(gamma0),log10(gamma00),epochs);

[THETA,LAMBDA] = RegrPCA(X,n);

Rzz = eye(N);
Rzx = randn(N,n);
RT = zeros(N,N);
for i = 1:N
    RT(i,1:i) = ones(1,i);
end

lambda = NaN*ones(N,epochs);

for i = 1:epochs
   theta = (inv(Rzz)*Rzx)';
   Z = X*theta;
   Rzx = (1-gamma(i))*Rzx + gamma(i)*Z'*X/k;
   Rzz = (1-gamma(i))*Rzz + gamma(i)*Z'*Z/k;
   
   Rzz = RT.*Rzz;

   lambda(:,i) = diag(Rzz);
   clf
   hold on
   plot([1:i]',ones(i,1)*LAMBDA');
   plot([1:i]',lambda(:,1:i)');   
   plot([1:i]',lambda(:,1:i)','*');   
   title(['Behavior of the eigenvalues - epoch ',num2str(i)]);
   drawnow
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -