MLJ.JL:可兼容机器学习的Julia包

2021-04-12 08:34:14

Julia MLJ的机器学习框架(Julia的机器学习)是在Julia中编写的工具箱,提供了一个公共接口和元算法,用于选择,调整,评估,组合和比较在Julia和其他语言中编写的150个机器学习模型。特别是MLJ包裹着大量的巩膜学习模型。

下面的第一个代码段创建了一个新的朱莉娅环境MLJ_TOUR,并安装旅游所需的包裹。有关创建Julia环境的更多信息,请参阅安装以进行MLJ。

在MLJ中,模型只是超参数的容器,而且所有。在这里,我们将在结合结果和#34之前应用多种模型组成;元模型"使用交叉验证进行评估的机器中的数据。

使用MLJBooster = @Load EvotReEriveLorlarer #loads代码定义模型TypeBooster = Booster(max_depth = 2)#指定施工船员的超参数.nrounds = 50#或变异事实上

该模型是迭代模型的示例。正如所示,NROUNDS的迭代次数是固定的。

让' s创建一个新的模型,它使用NumbersInceBest(3)标准自动学习迭代次数,如应用于样本L1丢失:

现在我们可以将管道模型包装在优化策略中以使其"自我调整&#34 ;:

绑定"自我调整"管道模型到机器中的数据(将另外存储学习参数):

评估"自我调整"管道模型' S使用5倍交叉验证的性能(暗示多个嵌套重采样):

朱莉娅>评估!(Mach,措施= [L1,L2],重采样= CV(nfolds = 5,RNG = 123),加速= Cputhreads(),冗长= 2)┌────────────────── ───────┬───────────────┬────────────────────────── ─────────────────────────────────────────────────────────────────────────────────────────────────────────── ───────────────── - ───────────────────── ────────────────410│16900.0,18600.0,16400.0,18600.0,16400.0,18600.0]││LPLOSE{INT64} @ 632 │6.57E8[6.38E8,6.19E8,5.92E8,5.67E8,8.7E8]│└───────────────────────── ────────┴───────────────────────────────────────── ─────────[20300.0,21800.0,...,7910.0],...,12600.0],[22000.0,91600.0,...,35500.0],[ 2980.0,35700.0,...,6240.0],[9140.0,30000.0,...,3050.0],[[4.13e8,4.74e8,...,6.26e7],[1.85e7,1.02e9,...... ,1.59E8],[4.83E8,8.38E9,...,1.26E9],[8.86E6,1.28E9,...,3.89E7],[8.35E7,9.01E8,...,9.31e6]] ] _。fitted_pa​​rams_per_fold = [...] _。report_per_fold = [...]

通过更容易地使用来自各种包装的模型来促进朱莉亚ML /统计生态系统的改进,

可扩展调谐界面,以支持越来越多的优化策略,并设计与模型组成相媲美。

通用模型组合API'我们提供的其他工具箱提供了我们调查的一个或多个以下缺点,其中不存在MLJ:

线性管道中的监督组件只能在管道的末尾发生。

模型堆叠,无法实现基础学习者的样本预测(单独使用通用API)。

不容易检查或操纵组件模型的超参数和/或学习参数(例如,通过调谐算法)

复合模型不能实现多个操作,例如,预测和转换方法(如群集模型中)或变换和inverse_transform方法。

有关更多信息,请参阅MLJ设计纸张或我们的合成界面上的详细纸张。

鼓励用户提供有关使用MLJ的经验的反馈并报告问题。你可以在这里或#mlj julia slack频道这样做。

最初建议在新环境中安装MLJ和关联包以避免包冲突。你可以做到这一点

值得注意的是,MLJ基本上是一个大包装器,提供对模型提供包的统一访问。因此,一般需要为您的环境添加其他包以使特定于模型的代码可用。当您使用MLJ' snortactive load命令@ilad时,这会自动发生自动发生

在其中还要要求您选择提供包,可以为多个提供决策权限模型。有关识别适用模型的名称,请参阅模型搜索。对于代码(例如,从模块或函数)的非交互式加载,请参阅加载模型代码。

建议您从更成熟的软件包中开始模型,例如Decandtree.jl,scikitlearn.jl或xgboost.jl。

MLJ由许多卫星包(MLJTUNING,MLJModelInterface等)支持,常规用户不需要直接安装。开发人员可以在这里了解更多信息

如果您在另一种语言中进行编程经验,但朱莉娅新是新的,那么我们强烈推荐Aaron Christinson' S的辅导调度设计模式,在他的半小时视频演示中很好地压缩。

但是,一个人并不需要在朱莉娅中编程以开始使用MLJ。

本文件虽然与示例乱扔垃圾,主要是旨在作为完整的参考。学习MLJ的资源是:

欢迎用户加入#MLJ Julia Slack频道提出问题并提出建议。

@Article {blaom2020,doi = {10.21105 / joss.02704},url = {https://doi.org/10.21105/joss.02704},年= {2020},publisher = {开放期刊},卷= { 5},number = {55},页面= {2704},作者= {anthony d. blaom和franz kienart和thibaut lienart和yiannis simillides和迭戈arenas和sebastian J.Vollmer},标题= {{{MLJ}:朱莉娅 可组合机器学习包},journal = {of Open Source Software}} @misc {blaom2020flexible,title = {{mlj的灵活模型组成及其在mlj}},作者= {anthony d. blaom和sebastian J.Vollmer},年= {2020},ePrint = {2012.15505},ArchivePrefix = {arxiv},primaryclass = {cs.lg}}