Belajar Matlab – Seed Random Generator

By | January 15, 2021
Print Friendly, PDF & Email
1,444 Views

Sinopsis

Jika kamu menggunakan Matlab untuk melakukan komputasi tidak terlepas kita membutuhkan bilangan random, tapi ini menjadi masalah tersendiri jika terdapat hasil yang berbeda-beda setiap kali melakukan proses komputasi. Biasanya ini terjadi ketika kamu menggunakan algoritma machine learning yang melibatkan bilangan random sebagai initial valuenya. Bagaimana kita harus membuat menjadi tetap? Saya gunakan contoh kmeans clustering berikut

clc;clear all;close all;
load fisheriris
X = meas(:,3:4);
 
figure;
plot(X(:,1),X(:,2),'k*','MarkerSize',5);
title 'Fisher''s Iris Data';
xlabel 'Petal Lengths (cm)';
ylabel 'Petal Widths (cm)';
 
%kita akan menggunakan kmeans untuk melakukan
%clustering
[idx,C] = kmeans(X,3);
hold on
for i =1:3
    text(C(i,1),C(i,2),num2str(i),'FontSize',30,'Color','B')
end

Coba kalian perhatikan urutan angka 1,2, dan 3 berikut yang akan selalu berubah-ubah lokasinya sesuai dengan centroid dari K-Means.

Pasti akan menghasilkan urutan yang berbeda-beda, oleh karena itu kita harus menetapkan terlebih dahulu seed random generator yaitu dengan function rand(‘seed’,0) yang artinya bilangan random akan menggunakan seed/benih 0 sebagai nilai awalnya, kamu bebas menggunakan 0 – 9999.

Perlu kamu ketahui, dalam versi lama, Matlab menggunakan rand() untuk memicu bilangan random, ada sekitar 2^32-1 nilai pemicu awal bilangan random.

rand('state',seed_number) is an old way of seeding the MATLAB v5 random number generator

Kalian bisa saja mengatur seed_number agar nilainya senantiasa sama ketika anda panggil berkali-kali. Penulis biasa menggunakan cara ini untuk me set agar seragam bilangan random yang dihasilkan. Coba kamu perbaiki codenya menjadi berikut

clc;clear all;close all;
load fisheriris
X = meas(:,3:4);
 
figure;
plot(X(:,1),X(:,2),'k*','MarkerSize',5);
title 'Fisher''s Iris Data';
xlabel 'Petal Lengths (cm)';
ylabel 'Petal Widths (cm)';
 
%kita akan menggunakan kmeans untuk melakukan
%clustering
rand('seed',0) %seed nya diisi 0
[idx,C] = kmeans(X,3);
hold on
for i =1:3
    text(C(i,1),C(i,2),num2str(i),'FontSize',30,'Color','B')
end

Maka hasil urutannya akan senantiasa sama karena K-Means menggunakan bilangan random dalam menentukan nilai centroid awal, maka dengan langkah diatas akan ditetapkan terlebih dahulu seed randomnya sehingga nilainya tidak akan berubah-ubah. Kalia bisa baca mengenai range generator random

Leave a Reply