Skip to content

This is a very efficient Random Forests implementation for MATLAB based on low level "cart" tree implementation.

Notifications You must be signed in to change notification settings

eruffaldi/Random_Forests

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Random Forests

**This is forked from the Stochastic_Bosque code from http://www.mathworks.com/matlabcentral/fileexchange/31036-random-forest

**They claim that the code is licenced but it is irrational to have proprietary malfunctioning code :) Therefore I make it working and release as open-source.

** This is really efficient code based on low level cart tree implementation on C++.

** However original code has some functioning flows. These are checked and add some additional features with additional performance boosts.

** If you have a matlab distribution including parallel processing toolbox you might try to use parfor instead of for at the random_forests.m

** To learn the usage refer to the test.m and before the use of test.m you need to run config.m to inlude the library to path.

** If you have any question: erengolge@gmail.com www.erengolge.com

Notice: for some machines, you might need to compile mex files again regarding your machine configurations

Example Run

random_indices = randperm(150,150);

train_x = inputs(random_indices(1:80),:); test_x = inputs(random_indices(81:150),:);

train_y = outputs(random_indices(1:80),:); test_y = outputs(random_indices(81:150),:);

% train_x is nxm matrix where rows are instances and columns are the variables % train_y is nx1 matrix where each row is the label of the mathing instance % For other parameters refer to source code model = train_RF(train_x, train_y,'ntrees', 10,'oobe','y','nsamtosample',20,'method','g','nvartosample',2); pred = eval_RF(test_x, model, 'oobe', 'y'); accuracy = cal_accuracy(test_y,pred)

One possible run of test.m

...
--->Tree#968 created: Accu. = 0.9375
/// Overall Accuracy = 0.92497
--->Tree#969 created: Accu. = 0.975
/// Overall Accuracy = 0.92503
--->Tree#970 created: Accu. = 0.95349
/// Overall Accuracy = 0.92506
--->Tree#971 created: Accu. = 0.95745
/// Overall Accuracy = 0.92509
--->Tree#972 created: Accu. = 0.88095
/// Overall Accuracy = 0.92504
--->Tree#973 created: Accu. = 0.88095
/// Overall Accuracy = 0.925
--->Tree#974 created: Accu. = 0.84091
/// Overall Accuracy = 0.92491
--->Tree#975 created: Accu. = 0.92683
/// Overall Accuracy = 0.92491
--->Tree#976 created: Accu. = 0.925
/// Overall Accuracy = 0.92491
--->Tree#977 created: Accu. = 0.95349
/// Overall Accuracy = 0.92494
--->Tree#978 created: Accu. = 0.89744
/// Overall Accuracy = 0.92491
--->Tree#979 created: Accu. = 0.93023
/// Overall Accuracy = 0.92492
--->Tree#980 created: Accu. = 0.89744
/// Overall Accuracy = 0.92489
--->Tree#981 created: Accu. = 0.92308
/// Overall Accuracy = 0.92489
--->Tree#982 created: Accu. = 0.775
/// Overall Accuracy = 0.92474
--->Tree#983 created: Accu. = 0.875
/// Overall Accuracy = 0.92469
--->Tree#984 created: Accu. = 0.92857
/// Overall Accuracy = 0.92469
--->Tree#985 created: Accu. = 0.86957
/// Overall Accuracy = 0.92464
--->Tree#986 created: Accu. = 0.95455
/// Overall Accuracy = 0.92467
--->Tree#987 created: Accu. = 0.8913
/// Overall Accuracy = 0.92463
--->Tree#988 created: Accu. = 0.93023
/// Overall Accuracy = 0.92464
--->Tree#989 created: Accu. = 0.97727
/// Overall Accuracy = 0.92469
--->Tree#990 created: Accu. = 0.93333
/// Overall Accuracy = 0.9247
--->Tree#991 created: Accu. = 0.91489
/// Overall Accuracy = 0.92469
--->Tree#992 created: Accu. = 0.95
/// Overall Accuracy = 0.92471
--->Tree#993 created: Accu. = 0.85714
/// Overall Accuracy = 0.92465
--->Tree#994 created: Accu. = 0.97561
/// Overall Accuracy = 0.9247
--->Tree#995 created: Accu. = 0.93182
/// Overall Accuracy = 0.92471
--->Tree#996 created: Accu. = 0.97619
/// Overall Accuracy = 0.92476
--->Tree#997 created: Accu. = 0.88889
/// Overall Accuracy = 0.92472
--->Tree#998 created: Accu. = 0.9375
/// Overall Accuracy = 0.92473
--->Tree#999 created: Accu. = 0.9
/// Overall Accuracy = 0.92471
--->Tree#1000 created: Accu. = 0.95
/// Overall Accuracy = 0.92473

accuracy =

    0.9571

Execution takes 3.1872 secs!!!

About

This is a very efficient Random Forests implementation for MATLAB based on low level "cart" tree implementation.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • MATLAB 56.9%
  • C++ 39.5%
  • C 3.6%