matlab code classification

Maret 16, 2009 oleh zaendarma

www.pudn.com > Classification-MatLab-Toolbox.rar > Backpropagation_CGD.m

function [D, Wh, Wo] = Backpropagation_CGD(train_features, train_targets, params, region)

% Classify using a backpropagation network with a batch learning algorithm and conjugate gradient descent
% Inputs:
% features- Train features
% targets - Train targets
% params – Number of hidden units, Convergence criterion
% region - Decision region vector: [-x x -y y number_of_points]
%
% Outputs
% D - Decision sufrace
% Wh – Hidden unit weights
% Wo – Output unit weights

[Nh, Theta] = process_params(params);
iter = 0;
IterDisp= 10;

[Ni, M] = size(train_features);
No = 1;

%For the decision region
xx = linspace(region(1),region(2),region(5));
yy = linspace(region(3),region(4),region(5));
D = zeros(region(5));

train_targets = (train_targets>0)*2-1;
means = mean(train_features’)';
train_features= train_features – means*ones(1,M);

%Initialize the net: In this implementation there is only one output unit, so there
%will be a weight vector from the hidden units to the output units, and a weight matrix
%from the input units to the hidden units.
%The matrices are defined with one more weight so that there will be a bias
w0 = max(abs(std(train_features’)'));
Wh = rand(Nh, Ni+1).*w0*2-w0; %Hidden weights
Wo = rand(No, Nh+1).*w0*2-w0; %Output weights
Wo = Wo/mean(std(Wo’))*(Nh+1)^(-0.5);
Wh = Wh/mean(std(Wh’))*(Ni+1)^(-0.5);

%Iteration zero: Compute gradJ and from it the CGD matrices
deltaWo = 0;
deltaWh = 0;

for m = 1:M,
Xm = train_features(:,m);
tk = train_targets(m);

%Forward propagate the input:
%First to the hidden units
gh = Wh*[Xm; 1];
[y, dfh] = activation(gh);
%Now to the output unit
go = Wo*[y; 1];
[zk, dfo] = activation(go);

%Now, evaluate delta_k at the output: delta_k = (tk-zk)*f’(net)
delta_k = (tk – zk).*dfo;

%…and delta_j: delta_j = f’(net)*w_j*delta_k
delta_j = dfh’.*Wo(1:end-1).*delta_k;

%delta_w_kj <- w_kj + eta*delta_k*y_j
deltaWo = deltaWo + delta_k*[y;1]‘;

%delta_w_ji <- w_ji + eta*delta_j*[Xm;1]
deltaWh = deltaWh + delta_j’*[Xm;1]‘;

end
S = [deltaWh(:); deltaWo(:)];
R = [deltaWh(:); deltaWo(:)];
oldR = zeros(size(R));
normR0 = sqrt(sum(R.^2));

%Now, for each iteration
while 1,
%Use a line search to find eta that minimizes J(eta)
Eta = logspace(-5, 1, 50);
for i = 1:length(Eta),
J(i) = find_error(Eta(i), Wo, reshape(S(Nh*(Ni+1)+1:end), No, Nh+1), Wh, reshape(S(1:Nh*(Ni+1)), Nh, Ni+1), train_features, train_targets);
end
[m, i] = min(J);
eta = Eta(i);

%Update iteration number
iter = iter + 1;
if (iter/IterDisp == floor(iter/IterDisp)),
disp(['Iteration ' num2str(iter) ': Total error is ' num2str(J(i)) '. Step size is: ' num2str(eta)])
end

%Test if the residual has decreased enough
if (sqrt(sum(R.^2)) < Theta*normR0),
break
end

%Update the weight matrices
Wo = Wo + eta * reshape(S(Nh*(Ni+1)+1:end), No, Nh+1);
Wh = Wh + eta * reshape(S(1:Nh*(Ni+1)), Nh, Ni+1);

%Compute the new gradient matrices using backpropagation
deltaWo = 0;
deltaWh = 0;

for m = 1:M,
Xm = train_features(:,m);
tk = train_targets(m);

%Forward propagate the input:
%First to the hidden units
gh = Wh*[Xm; 1];
[y, dfh] = activation(gh);
%Now to the output unit
go = Wo*[y; 1];
[zk, dfo] = activation(go);

%Now, evaluate delta_k at the output: delta_k = (tk-zk)*f’(net)
delta_k = (tk – zk).*dfo;

%…and delta_j: delta_j = f’(net)*w_j*delta_k
delta_j = dfh’.*Wo(1:end-1).*delta_k;

%delta_w_kj <- w_kj + eta*delta_k*y_j
deltaWo = deltaWo + delta_k*[y;1]‘;

%delta_w_ji <- w_ji + eta*delta_j*[Xm;1]
deltaWh = deltaWh + delta_j’*[Xm;1]‘;

end

%Set R
R = [deltaWh(:); deltaWo(:)];

%Use the Polak-Ribiere method to calculate beta
if ((oldR’*oldR) ~= 0),
beta = max(0, R’*(R – oldR)/(oldR’*oldR));
else
beta = 0;
end

%Update the direction vector
S = R + beta * S;

%Update the old vectors
oldR = R;

end

disp(['Backpropagation converged after ' num2str(iter) ' iterations.'])

%Find the decision region
for i = 1:region(5),
for j = 1:region(5),
Xm = [xx(i); yy(j)] – means;
D(i,j) = activation(Wo*[activation(Wh*[Xm; 1]); 1]);
end
end
D = D’>0;

function J = find_error(eta, Wo, deltaWo, Wh, deltaWh, features, targets)
%Find the error given the net parameters
M = size(features,2);
J = 0;
for i = 1:M,
J = J + ((targets(i) – activation((Wo+eta*deltaWo)*[activation((Wh+eta*deltaWh)*[features(:,i); 1]); 1])).^2);
end
J = J/M;

function [f, df] = activation(x)

a = 1.716;
b = 2/3;
f = a*tanh(b*x);
df = a*b*sech(b*x).^2;

conversation

Desember 8, 2008 oleh zaendarma

Why don’t you come in before you go, Budi.
Masuk dulu, dong, sebelum pergi.

Another time.
Lain kali saja.

The problem is that my friend is waiting at the market, so I have to go straight back.
Soalnya, teman saya sedang menunggu di pasar, jadi saya harus langsung kembali.

I should have picked him up at 6:00, but now it’s apparently already late.
Seharusnya saya jemput dia jam 6:00, tetapi sekarang tampaknya sudah terlambat.

So, we wont see each other again this week?
Jadi, kita nggak ketemu lagi, dong, minggu ini?

We will. You’re going to Ida’s party, aren’t you? I’m also going.
Ketemu. Kartini, mau pergi ke pesta Ida, kan? Saya juga mau pergi.

bits and pieces
kan – should be at the end of a question

PANDUAN MENDAFTAR KE GOOGLE ADSENSE

Desember 8, 2008 oleh zaendarma

Google Adwords adalah program periklanan yang ditawarkan google kepada para pemilik situs yang ingin mempromosikan situsnya, dengan cara menampilkan link situs pengiklan di hasil pencarian untuk kata kunci (keyword) tertentu, biasanya terletak di bagian seperempat di sebelah kanan pada hasil pencarian google sebagai sponsored Link /pesan sponsor. Google menawarkan kepada pemilik situs untuk memasang iklan google adwords di situs mereka dengan pola bagi hasil yang disebut Google Adsense.
Google Adsense menawarkan 3 program yang dapat diikuti oleh peserta adsense (publisher)
1. adsense for content : google akan menyediakan beberapa link sponsor dan akan membayar peserta adsense apabila ada pengunjung mengeklik link situs sponsor
2. adsense for search : google akan menyediakan box search (kotak pencarian) dan akan membayar peserta adsense apabila ada pengunjung menggunakan box tersebut kemudian mengeklik link situs sponsor pada hasil pencarian
3. adsense for refferal : google akan menyediakan link dan akan membayar peserta adsense apabila ada pengunjung yang bertransaksi melalui link tersebut, ada yang untuk mendownload suatu program atau mengisi suatu form atau ada juga yang apabila terjadi pembelian, tergantung jenis refferal yang diikuti peserta
Untuk mengikuti google adsense ada harus mempunyai sebuah website atau blog dalam bahasa yang diizinkan oleh Google Adsense, dan bahasa indonesia masih belum diizinkan karena itu jika ingin memiliki account di google adsense setidaknya harus memiliki website/blog dalam bahasa inggris (salah satu yang di izinkan).
Sebagian orang merasa kesulitan ketika akan mendaftar ke google adsense dan bahkan setelah beberapa kali mencoba mendaftar ia masih belum di setujui keanggotaanya oleh google. Tetapi ada juga yang sekali mendaftar, keanggotaannya disetujui oleh google adsense setelah 2-4 hari kemudian.
Panduan ini di susun dengan tujuan membantu anda dalam mendaftar ke program google adsense, berisi langkah demi langkah untuk mendaftarkan diri agar menjadi peserta adsense.
Harapan saya, panduan ini dapat membantu anda! semoga kesuksesan selalu bersama kita

Hello world!

Desember 6, 2008 oleh zaendarma

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!