返回栏目
首页人工智能 • 正文

你最喜欢随机森林吗? TensorFlow开源决策树系库TF-DF

发布时间:  来源:河洛网

在人工智能发展史上,可以说各种算法层出不穷。 近十几年来,深层神经网络的发展在机器学习领域取得了显著的进展。 通过构建分层结构或“深层”结构,模型能够在有监控或无监控的环境中从原始数据中学习良好的特征被认为是其成功的重要因素。

你最喜欢随机森林吗? TensorFlow开源决策树系库TF-DF

茂密的森林是AI领域重要的研究方向之一。

2017年,周志华和冯霁等人提出了茂密的森林框架。 这是第一次尝试使用树的综合来构建多层模型的工作。 2018年,周志华等人又在《多层梯度卫星》的研究中探索了多层决策树。 今年2月,周志华团队开源深度森林软件包DF21 :训练效率高,超参数少,可以用普通设备运行。

最近,TensorFlow公开了TensorFlow的决策森林( TF-DF )的开源。 TF-DF是一组SOTA算法,用于培训、服务和解释包含随机森林和梯度增强树的决策树模型。 现在,您可以使用这些模型执行分类、回归和排序任务。 具有TensorFlow和Keras的灵活性和组合性。

谷歌大脑研究员、Keras之父Franç; ois Chollet说:“现在可以使用Keras API来训练TensorFlow的决策森林。 “”

关于这个开源项目,网民说:“这很酷! 随机森林是我最喜欢的模型。 “”

决策森林是一系列的机器学习算法,其质量和速度可以与神经网络竞争。 (比神经网络更容易使用,功能也更强大。 )实际上与特定类型的数据结合使用时,比神经网络要好。 特别是处理表中的数据时。

随机森林是流行的决策森林模型。 在这里,可以看到根据投票结果将一个例子分类的一组树。

决策森林由许多决策树,例如随机森林和坡度增加的树。 这样,它就变得易于使用和理解,并且可以使用已经存在的许多可解释的工具和技术进行操作。

决策树是只需要做出是/否判断的一系列问题,使用决策树将动物分为鸡、猫、袋鼠。

TF-DF为TensorFlow用户提供了模型和一系列自定义工具。

对于初学者来说,开发和解释森林模型很容易。 无需明确列出输入特性或进行预处理。 (因为决策森林可以自然处理数字和分类属性),所以指定体系结构)例如,通过像神经网络一样尝试不同的层组合,担心模型会发散。 你的模型训练后,可以直接画出来,也可以用容易解释的统计数据进行分析。 高级用户将从推理时间非常快的模型中受益。 大多数情况下,每个样本的推理时间都是亚微秒。 并且,该库为模型实验和研究提供了许多组合可能性。 特别是,将神经网络和决策森林结合起来很容易。 如上图所示,一行代码可以构建模型,而动图下面的代码是用于构建神经网络的代码。 在TensorFlow中,Keras被用于决策森林和神经网络。 可以使用相同的API实验不同类型的模型。 更重要的是,可以使用相同的工具,例如TensorFlow Serving来部署这两个模型。

TF-DF提供的几个功能如下所示。

TF-DF提供了SOTA的决策树系培训和服务算法,包括随机树系、CART、( Lambda ) MART和DART。 基于树的模型易于与各种TensorFlow工具、库、TFX等平台集成,TF-DF库是通向丰富的TensorFlow生态系统的桥梁。 对于神经网络的用户,可以用决策森林这一简单的方法开始TensorFlow,继续探索神经网络。 代码示例下面是一个示例。 这样,使用者就很容易明白了。

项目地址: https://github.com/tensor flow /诊断-福林

TF-DF网站地址: https://www.tensor flow.org/decision _ forestsgooglei/o 2021地址: https://ww.YouTube.coorg 目的是根据某些动物的特征预测其种类。 数据集包含数字和类别属性,并另存为csv文件。

Palmer's Penguins数据集的示例。

模型训练代码:

# # installtensorflowdecisionforests! pinstalltensorflow _ decision _ forests # loadtensorflowdecisionforestsimporttensorflow _ decision _ forestsastfdf # loadttfow _ dision (转换数据框架软件数据集= tfdf.keras.PD _数据帧_ TF _数据传输 ( trainthemodelmodel = tfdf.keras.randomforestmodel ) )请注意,model.fit(train_ds )代码没有输入特性或超参数。 也就是说,TensorFlow决策林会自动检测数据集中的输入特性,并对所有超级参数使用默认值。

评价模型

开始模型的质量评价。

# # loadthetestingdatasettest _ df = pandas.read _ CSV ( & quot; enguins _ test.CSV和quot; ( convertittoatensorflowdatasettest _ ds = tfdf.keras.PD _数据帧_ to _ TF _ dataset (测试_ DF,标签= & q数据库) ( evaluatethemodelmodel.com pile (公制= [ & quot; 积累和退出; ] )打印(模型.平均值)测试_ ds ) #>; >; 0.979311 # note:cross-validationwouldbemoresuitedonthissmalldataset.# see also the & quot 未标记评估和退出; below.# exportthemodeltoatensorflowsavedmodelmodel.save ( & quot; 项目/我的第一模型和退出; 具有默认超参数的随机森林模型为大多数问题提供了快速、良好的基线。 决策森林一般能够快速训练中小规模的问题,与许多其他类型的模型相比,超级参数调谐少,通常能提供强大的结果。

通过对模型的解读,知道了训练过的模型的正确性,所以有必要考虑其可解释性。 对于理解和解读模型化现象、调试模型和开始信任决策来说,可解释性是非常重要的。 如上所述,有很多解读训练模型的工具。 让我们先从plot开始:

TDF.model _ plotter.plot _ model _ in _ colab (模型,树idx =0)其中一个决策树的结构。

树的结构看起来很直观。 另外,模型统计是对plot的补充,统计例子如下。

每个特性使用了几次? 模特训练的速度是多少? 节点在树结构中是如何分布的? 例如,大多数branch的长度? 对这些问题的回答以及对更多类似查询的回答都包含在模型摘要中,可以通过模型检查器访问。

# # printalltheavailableinformationaboutthemodelmodel.summary ( ) ) ) ) ) ) ) ); >; 输入要素(7):>; >; bill _深度_毫米&千兆; >; bill _长度_毫米&千兆; >; 主体质量与单位; >; ... >; >; 可变导入: & gt; >; 1."; bill _ length _ mm和quot; 653.000000 # # # # # # # # # # # # & gt >; ... >; >; out-of-bag evaluation:accuracy:0.964602日志: 0.102378 & gt; >; 树状结构编号: 300 & GT; >; Totalnumberofnodes:4170>; >; ... # getfeatureimportanceasaarraymodel.make _ inspector (.variable _ importance s ) ["; MEAN_DECREASE_IN_ACCURACY" ]>; >; [("; flipper_length_mm";长度和出口; 0.149 ),>; >; () "; bill _ length _ mm和quot; 0.096 )、>; >; () "; bill _深度_毫米&四通; 0.025 ),>; >; () "; 主体质量和数量; 0.018 )、>; >; () "; 隐藏和退出; 0.012 ) )在上述示例中,模型是使用缺省超级参数值进行培训的。 虽然作为第一个解决方案非常好,但调整超级参数会进一步提高模型的质量。 可以执行以下操作:

# # listalltheotheravailablelearningalgorithmstfdf.keras.get _ all _ models ( ) ) gt; >; tensor flow _ decision _ forests.keras.randomforestmodel,> >; tensor flow _ decision _ forests.keras.gradientboostedtreesmodel,>; >; tensor flow _ decision _ forests.keras.cart model ] #显示参数化关系模型? tfdf.keras.gradientboostedtreesmodel & gt; >; 梯度引导树( agbt ) isasetofshallowdecisiontreestrainedsequentially.Eachtreeistrainedtopredictandthen fortherrorsofthepreviouslytrainedtrees ( M orepreciselyeachtreepredictsthegradientofthelossrelativetothemodeloutput ) ) ...属性: num _ trees:num _ trees:maximumnumberofdecisiontrees.theeffectivenumberoftrainedtreescanbesmallerifees maximumumumumumum epth:maximumdepthofthetree.` max _ depth =1` meansthatalltreeswillberoots.negativevaluesareignored.deed createanothermodelwithspecifiedhyper -参数模型= tfdf.keras.gradientboostedtreesmodel ( num _ trees = 500,growies 、max_depth=8,分割_轴= & quot; 稀疏和退出; 、、# evaluatethemodelmodel.com pile (公制= [ & quot; 积累和退出; ] )打印(模型.平均值)测试_ ds ) #>; >; 0.986851【编辑推荐】

    相关文章Related

    返回栏目>>

    河洛网首页

    Copyright © 2019 河洛网 版权所有 dahuimr@163.com