以下の内容はhttps://yoshoku.hatenablog.com/entry/2025/01/03/150000より取得しました。


Rumaleのバージョン1.0.0をリリースした

はじめに

RumaleにVariable-Random Trees(VR Trees)を実装して、バージョン1.0.0としてリリースした。本来であれば、0.30.0相当の変更なのだが、マイナーバージョンをひたすら大きくしていくのもアレだし、Rumaleも前身のSVMKitを含めると5年以上開発していることもあって、バージョン1.0.0とした。 VR Treesは、普通の決定木と、ランダムに分割を決定するランダム木を、混ぜ合わせるようなアンサンブル手法である。データやタスクによっては、Random ForestやExtremely Randomized Treesを超える性能が得られることから、実装してみた。

Liu, F. T., Ting, K. M., Yu, Y., and Zhou, Z. H., "Spectrum of Variable-Random Trees," Journal of Artificial Intelligence Research, vol. 32, pp. 355–384, 2008.

インストール

VR Treesは、Rumale::Ensembleに含まれる。VR Treesだけを試したい場合は、以下でインストールできる。

gem install rumale-ensemble

使い方

VR Trees特有の使い方はなく、fitで学習してpredictで予測する形になる。LIBSVM Dataのabaloneデータセットで回帰分析をしてみる。

wget https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/regression/abalone_scale
require 'rumale/ensemble/random_forest_regressor'
require 'rumale/ensemble/vr_trees_regressor'
require 'rumale/model_selection'
require 'rumale/dataset'

# データセットを読み込む.
x, y = Rumale::Dataset.load_libsvm_file('abalone_scale')

# 訓練とテストに分割する.
x_train, x_test, y_train, y_test = Rumale::ModelSelection.train_test_split(x, y, test_size: 0.2, random_seed: 42)

# Random Forestを学習する.
reg = Rumale::Ensemble::RandomForestRegressor.new(random_seed: 42)
reg.fit(x_train, y_train)

# 決定係数 (1に近づくほどよい) により回帰の性能を評価する.
puts('R2-Scores')
puts(format("Random Forest: %.4f", reg.score(x_test, y_test)))

# 同様にVR Treesを学習して, 回帰の精度を評価する.
reg = Rumale::Ensemble::VRTreesRegressor.new(random_seed: 42)
reg.fit(x_train, y_train)
puts(format("VR Trees: %.4f", reg.score(x_test, y_test)))

これを実行した結果は、次のようになる。わずかにVR Treesのほうがスコアが良い。

R2-Scores
Random Forest: 0.4775
VR Trees: 0.4881

単純なホールドアウト法なのと、ハイパーパラメータを調整していないのとで、コレをもってRandom ForestよりVR Treesが良いとはいえないが、試してみるのには良いんじゃないでしょうか。

おわりに

RumaleにVR Treesを追加して、バージョン1.0.0とした。このバージョンアップにともない、ZenodoのDOIを取得した。開発ガンバっていきます。

github.com




以上の内容はhttps://yoshoku.hatenablog.com/entry/2025/01/03/150000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14