Julia和Matlab ensemble方法的性能比较
导言
现代机器学习任务不仅需要高模型精度,还需要高效利用计算资源。 工具的选择直接影响开发速度和训练时间,这在处理大量数据和以其资源强度而闻名的集成方法时尤为关键。
Ensemble方法是机器学习方法,它结合了几个基本模型(如决策树),以产生比每个模型单独更准确和稳定的预测。
此示例提供了基于随机森林学习分类模型的三种方法的比较分析。:
在Julia上使用MLJ和DecisionTree库*,
以及fitcensemble插件核心中的函数Matlab*。
所有方法都解决了合成数据上二元分类的相同问题,这允许对它们的性能进行客观比较。
导入库
我们将附加必要的库。
import Pkg
Pkg.add(["Random", "Distributions", "LinearAlgebra", "Statistics", "DecisionTree", "MLJ", "MLJDecisionTreeInterface"])
using Random, Distributions, LinearAlgebra, Statistics
数据生成
创建十个红色和十个蓝色底点。 请注意,在Julia中,您可以在变量名称中使用表情符号字符。
🔴 = rand(MvNormal([0.0, 1.0], 1.0I), 10)'
🔵 = rand(MvNormal([1.0, 0.0], 1.0I), 10)'
让我们在坐标平面上显示基点。
gr()
график1 = scatter(🔴[:, 1], 🔴[:, 2], color=:red, marker=:circle, label="红色", legend=:topright)
scatter!(🔵[:, 1], 🔵[:, 2], color=:blue, marker=:circle, label="蓝色")
显示(图1)
创建以随机基点为中心的每种颜色的50,000个点。
N = 50000
🔴 = 🔴[rand(1:10, N), :] + randn(N, 2) .* sqrt(0.02)
🔵 = 🔵[rand(1:10, N), :] + randn(N, 2) .* sqrt(0.02)
график2 =scatter(🔴[:, 1], 🔴[:, 2], color=:red, marker=:circle, markersize=1, label="红色", alpha=0.36, legend=:topright)
scatter!(🔵[:, 1], 🔵[:, 2], color=:blue, marker=:circle, markersize=1, label="蓝色", alpha=0.36)
显示(图2)
合并数据并为分类任务创建类标签。 创建标签的单个向量,并为蓝点分配-1标签。
数据=[🔴;🔵]
标签=1(2*N)
标签[N+1:2*N]。= -1
# 红色1,蓝色-1
显示(数据)
分类模型的比较
MLJ
让我们使用MLJ库(Julia中的机器学习)的工具来训练模型。
using MLJ, MLJDecisionTreeInterface
树=@load DecisionTreeClassifier pkg=DecisionTree
时间=@经过开始
模型=MLJ。合身!(机器(EnsembleModel(模型=树(max_depth=-1),n=100,bagging_fraction=1.0,rng=1234),
DataFrame(data,:auto),强制(ifelse.(标签。==1.0,1,2),Multiclass)))
end
显示(模型)
println("训练时间: ", время, " 秒数")
使用MLJ的模型的训练时间为:33.51 几秒钟。
Matlab fitensemble
让我们使用函数在Matlab内核内训练模型 fitcensemble,并测量执行时间。
using MATLAB
cdata=数据
grp=标签
@mput cdata grp N
mat"""
tic
mdl = fitcensemble(cdata, grp, 'Method', 'Bag');
stime = toc;
disp(mdl)
"""
@mget(stime)
println("训练时间: ", stime, " 秒数")
使用Matlab的模型的训练时间为:29.57 几秒钟。
决定论
让我们使用DecisionTree库工具训练模型。
using DecisionTree
时间=@经过开始
模型=build_forest(标签,数据,2,100,1.0,rng=随机。GLOBAL_RNG)
end
显示(模型)
println("训练时间: ", время, " 秒数")
使用DecisionTree的模型的训练时间为:6.07 几秒钟。 这是研究的最好结果。
结论
在这项研究中,对合成数据进行了100个决策树的训练。 对这三种方法的比较表明,在性能上有显着的差异.
Julia DecisionTree本机库(6.07c)展示了最佳性能,这使其成为高负载任务和原型设计的绝佳选择。
结果证实,与Matlab相比,Engee提供了显着的性能提升,同时保持了与其语法的兼容性。 所提出的分类方法适用于计算机视觉、预测分析、医疗诊断和财务建模等需要高精度和快速处理大量信息的任务。
.png)
.png)