Files
2026-07-13 13:30:25 +08:00

33 lines
762 B
Matlab
Executable File

function model = adaboostBin(X, t)
% Adaboost for binary classification (weak learner: kmeans)
% Input:
% X: d x n data matrix
% t: 1 x n label (0/1)
% Output:
% model: trained model structure
% Written by Mo Chen (sth4nth@gmail.com).
t = t+1;
k = 2;
[d,n] = size(X);
w = ones(1,n)/n;
M = 100;
Alpha = zeros(1,M);
Theta = zeros(d,k,M);
T = sparse(1:n,t,1,n,k,n); % transform label into indicator matrix
for m = 1:M
% weak learner
E = spdiags(w',0,n,n)*T;
E = E*spdiags(1./sum(E,1)',0,k,k);
c = X*E;
[~,y] = min(sqdist(c,X),[],1);
Theta(:,:,m) = c;
% adaboost
I = y~=t;
e = dot(w,I);
alpha = log((1-e)/e);
w = w.*exp(alpha*I);
w = w/sum(w);
Alpha(m) = alpha;
end
model.alpha = Alpha;
model.theta = Theta;