登录论坛

查看完整版本 : [MATLAB毕业设计] 求大神讲解RankBoost源码中的一个function


冰封DE天翼
2015-04-27, 10:12
从网上下了一个RankBoost的实现源码,但是不知道输入输出,也找不到readme文件,所以很头疼啊。毕设最后一步,要把这个源码跑通,并且套用自己的数据,求大神指导。
贴上这个function的代码,后面有些注释是我加的,不知道对不对

%这个.m文件应该算是RankBoost算法的主文件,通过调用其他六个function文件,完成RankBoost算法的功能
clear all;
close all;

disp('RankBoostt');

%--------------------------------------------------------------------------
% Ranking parameters
%--------------------------------------------------------------------------

T=50; % number of boosting rounds
verbose=1;%定义变量verbose,并赋初值为1
plot_enable=1;
graph_type='full';%graph_type是意思是图类型?

%--------------------------------------------------------------------------
% Load a sample data set
%--------------------------------------------------------------------------

disp('Loading the Burges data set ...');

addpath G:\matlab\RankBoost %将文件夹添加到工作路径下

d=1;%d表示dimensionality,维数
S=6;%S表示Class,类数

N_train=100;%训练样本数为100个
N_test=94;%测试样本数为94个
N=N_train+N_test;%样本总数为训练样本与测试样本之和

[X,y]=Burges_data_1(d,N,S); %Burges_data_1?将Burges_data_1转成[X,y],也就是需要的数据格式。将Burges_data_1中第一行,第六页的N存入[X,y]中。
%个人认为,其中X是一个二维矩阵,y是一个一维矩阵,两者共同构成三维矩阵,接收Burges_data_1的值。
%[X,y]=Burges_data_2(d,N,S);

%--------------------------------------------------------------------------
% Split it into training and test set.
%--------------------------------------------------------------------------样本总数

disp('Splitting it into training and test set ...'); %将数据导入训练序列和测试序列

X_train=X(:,1:N_train);%将X中每行1到N_train列的值赋给X_train
y_train=y(:,1:N_train);%将y中每行1到N_train列的值赋给y_train

X_test=X(:,N_train+1:N);%将X中每行剩余的值赋给X_test
y_test=y(:,N_train+1:N);%将y中每行剩余的值赋给y_test

clear X;%Clear为清除变量
clear y;

%--------------------------------------------------------------------------
% Standardize the training data
%--------------------------------------------------------------------------

addpath ..\..\Data\%将文件夹添加到工作路径下,但是添加的是上一部分路径的上一目录,何解?

disp('Normalizing the data ...');%规范数据

whiten=1;

[X_train,mean_vector,A]=data_standardization(X_train,whiten,plot_enable);%标准化数据

%--------------------------------------------------------------------------
% Standardize the test data
%--------------------------------------------------------------------------

[X_test]=data_standardization_test_data(X_test,mean_vector,A,plot_enable);

%--------------------------------------------------------------------------
% Convert the data to a format which my code understands
%--------------------------------------------------------------------------

disp('Formatting the training data ...');%格式化数据

[data_train]=convert_data_to_ranking_format(X_train,y_train,graph_type);%将数据转成标准输入格式

clear X_train;
clear y_train;

disp('Formatting the test data ...');

[data_test]=convert_data_to_ranking_format(X_test,y_test,graph_type);

clear X_test;
clear y_test;

%--------------------------------------------------------------------------
% Train the model
%--------------------------------------------------------------------------

disp('Training using RankBoost ...');

[model,time_taken]=RankBoost_train(data_train,T,verbose,plot_enable);%进行训练

disp(sprintf('Time taken =%f seconds',time_taken));

%--------------------------------------------------------------------------
% Test the performance on the training set
%--------------------------------------------------------------------------

disp('Evaluating the performance on the training set ...');%在训练序列上进行性能评价

[o_train]=RankBoost_ranking_function(data_train.X_raw,T,model);

[WMW_train]=compute_WMW(data_train,o_train,1);

disp(sprintf('WMW of the training set =%f',WMW_train));

%--------------------------------------------------------------------------
% Test the performance on the test set
%--------------------------------------------------------------------------

disp('Evaluating the performance on the test set ...');%在测试序列上进行性能评价

[o_test]=RankBoost_ranking_function(data_test.X_raw,T,model);

[WMW_test]=compute_WMW(data_test,o_test,1);

disp(sprintf('WMW of the test set =%f',WMW_test));

%--------------------------------------------------------------------------
% Plot to see the ranking function learnt
%--------------------------------------------------------------------------

figure;
subplot(2,2,1);
plot(data_train.X_raw(1,:),data_train.y_raw,'b.');
hold on;
plot(data_train.X_raw(1,:),o_train,'r.');
title('Training data');

subplot(2,2,2);
plot(data_test.X_raw(1,:),data_test.y_raw,'b.');
hold on;
plot(data_test.X_raw(1,:),o_test,'r.');
title('Test data');