- 最喜欢随机森林?周志华团队DF21后,TensorFlow开源决策森林库TF-D
- 来源:机器之心
机器之心报道机器之心编辑部
TensorFlow 决策森林 (TF-DF) 现已开源,该库集成了众多 SOTA 算法,不需要输入特征,可以处理数值和分类特征,为开发者节省了大量时间。
在人工智能发展史上,各类算法可谓层出不穷。近十几年来,深层神经网络的发展在机器学习领域取得了显著进展。通过构建分层或「深层」结构,模型能够在有监督或无监督的环境下从原始数据中学习良好的表征,这被认为是其成功的关键因素。
而深度森林,是 AI 领域重要的研究方向之一。
2017 年,周志华和冯霁等人提出了深度森林框架,这是首次尝试使用树集成来构建多层模型的工作。2018 年,周志华等人又在研究《Multi-Layered Gradient Boosting Decision Trees》中探索了多层的决策树。今年 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/tensorflow/decision-forestsTF-DF 网站地址:https://www.tensorflow.org/decision_forestsGoogle I/O 2021 地址:https://www.youtube.com/watch?v=5qgk9QJ4rdQ
模型训练
在数据集 Palmer's Penguins 上训练随机森林模型。目的是根据一种动物的特征来预测它的种类。该数据集包含数值和类别特性,并存储为 csv 文件。
Palmer's Penguins 数据集示例。
模型训练代码:
# Install TensorFlow Decision Forests!pip install tensorflow_decision_forests# Load TensorFlow Decision Forestsimport tensorflow_decision_forests as tfdf# Load the training dataset using pandasimport pandastrain_df = pandas.read_csv("penguins_train.csv")# Convert the pandas dataframe into a TensorFlow datasettrain_ds = tfdf.keras.pd_dataframe_to_tf_dataset(train_df, label="species")# Train the modelmodel = tfdf.keras.RandomForestModel()model.fit(train_ds)
请注意,代码中没有提供输入特性或超参数。这意味着,TensorFlow 决策森林将自动检测此数据集中的输入特征,并对所有超参数使用默认值。
评估模型
现在开始对模型的质量进行评估:
# Load the testing datasettest_df = pandas.read_csv("penguins_test.csv")# Convert it to a TensorFlow datasettest_ds = tfdf.keras.pd_dataframe_to_tf_dataset(test_df, label="species")# Evaluate the modelmodel.compile(metrics=["accuracy"])print(model.evaluate(test_ds))# >> 0.979311# Note: Cross-validation would be more suited on this small dataset.# See also the "Out-of-bag evaluation" below.# Export the model to a TensorFlow SavedModelmodel.save("project/my_first_model")
带有默认超参数的随机森林模型为大多数问题提供了一个快速和良好的基线。决策森林一般会对中小尺度问题进行快速训练,与其他许多类型的模型相比,需要较少的超参数调优,并且通常会提供强大的结果。
解读模型
现在,你已经了解了所训练模型的准确率,接下来该考虑它的可解释性了。如果你希望理解和解读正被建模的现象、调试模型或者开始信任其决策,可解释性就变得非常重要了。如上所述,有大量的工具可用来解读所训练的模型。首先从 plot 开始:
tfdf.model_plotter.plot_model_in_colab(model, tree_idx=0)
其中一棵决策树的结构。
你可以直观地看到树结构。此外,模型统计是对 plot 的补充,统计示例包括:
每个特性使用了多少次?模型训练的速度有多快(树的数量和时间)?节点在树结构中是如何分布的(比如大多数 branch 的长度)?
这些问题的答案以及更多类似查询的答案都包含在模型概要中,并可以在模型检查器中访问。
# Print all the available information about the modelmodel.summary()>> Input Features (7):>> bill_depth_mm>> bill_length_mm>> body_mass_g>> ...>> Variable Importance:>> 1. "bill_length_mm" 653.000000 ################>> ...>> Out-of-bag evaluation: accuracy:0.964602 logloss:0.102378>> Number of trees: 300>> Total number of nodes: 4170>> ...# Get feature importance as a arraymodel.make_inspector().variable_importances()["MEAN_DECREASE_IN_ACCURACY"]>> [("flipper_length_mm", 0.149),>> ("bill_length_mm", 0.096),>> ("bill_depth_mm", 0.025),>> ("body_mass_g", 0.018),>> ("island", 0.012)]
在上述示例中,模型通过默认超参数值进行训练。作为首个解决方案而言非常好,但是调整超参数可以进一步提升模型的质量。可以如下这样做:
# List all the other available learning algorithmstfdf.keras.get_all_models()>> [tensorflow_decision_forests.keras.RandomForestModel,>> tensorflow_decision_forests.keras.GradientBoostedTreesModel,>> tensorflow_decision_forests.keras.CartModel]# Display the hyper-parameters of the Gradient Boosted Trees model ? tfdf.keras.GradientBoostedTreesModel>> A GBT (Gradient Boosted [Decision] Tree) is a set of shallow decision trees trained sequentially. Each tree is trained to predict and then "correct" for the errors of the previously trained trees (more precisely each tree predicts the gradient of the loss relative to the model output).. ... Attributes: num_trees: num_trees: Maximum number of decision trees. The effective number of trained trees can be smaller if early stopping is enabled. Default: 300. max_depth: Maximum depth of the tree. `max_depth=1` means that all trees will be roots. Negative values are ignored. Default: 6. ... # Create another model with specified hyper-parametersmodel = tfdf.keras.GradientBoostedTreesModel( num_trees=500, growing_strategy="BEST_FIRST_GLOBAL", max_depth=8, split_axis="SPARSE_OBLIQUE" ,)# Evaluate the modelmodel.compile(metrics=["accuracy"])print(model.evaluate(test_ds))# >> 0.986851
参考链接:https://blog.tensorflow.org/2021/05/introducing-tensorflow-decision-forests.html
2021 字节跳动 Byte Camp 夏令营
与李航、月影等技术大咖交流;公司承担食宿、培训等所有费用;35万元奖金池。
作为字节跳动每年一度的技术品牌活动,夏令营正在面向全球公开招募120高校在校生一起做有挑战的事!夏令营将采取「对话大咖+项目实战」的形式,带领营员和技术大咖面对面沟通学习,深入了解领域前沿知识,掌握关键能力。
公司将承担食宿、培训等所有费用,并为表现优异的同学提供奖学金,进行长期关注和资源支持,助力营员在专业领域做出更大突破。
报名通道将于6月10日关闭,快戳长图扫描二维码了解报名详细!!
© THE END 转载请联系本公众号获得授权投稿或寻求报道:content@jiqizhixin.com
TensorFlow 决策森林 (TF-DF) 现已开源,该库集成了众多 SOTA 算法,不需要输入特征,可以处理数值和分类特征,为开发者节省了大量时间。
在人工智能发展史上,各类算法可谓层出不穷。近十几年来,深层神经网络的发展在机器学习领域取得了显著进展。通过构建分层或「深层」结构,模型能够在有监督或无监督的环境下从原始数据中学习良好的表征,这被认为是其成功的关键因素。
而深度森林,是 AI 领域重要的研究方向之一。
2017 年,周志华和冯霁等人提出了深度森林框架,这是首次尝试使用树集成来构建多层模型的工作。2018 年,周志华等人又在研究《Multi-Layered Gradient Boosting Decision Trees》中探索了多层的决策树。今年 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/tensorflow/decision-forestsTF-DF 网站地址:https://www.tensorflow.org/decision_forestsGoogle I/O 2021 地址:https://www.youtube.com/watch?v=5qgk9QJ4rdQ
模型训练
在数据集 Palmer's Penguins 上训练随机森林模型。目的是根据一种动物的特征来预测它的种类。该数据集包含数值和类别特性,并存储为 csv 文件。
模型训练代码:
# Install TensorFlow Decision Forests!pip install tensorflow_decision_forests# Load TensorFlow Decision Forestsimport tensorflow_decision_forests as tfdf# Load the training dataset using pandasimport pandastrain_df = pandas.read_csv("penguins_train.csv")# Convert the pandas dataframe into a TensorFlow datasettrain_ds = tfdf.keras.pd_dataframe_to_tf_dataset(train_df, label="species")# Train the modelmodel = tfdf.keras.RandomForestModel()model.fit(train_ds)
请注意,代码中没有提供输入特性或超参数。这意味着,TensorFlow 决策森林将自动检测此数据集中的输入特征,并对所有超参数使用默认值。
评估模型
现在开始对模型的质量进行评估:
# Load the testing datasettest_df = pandas.read_csv("penguins_test.csv")# Convert it to a TensorFlow datasettest_ds = tfdf.keras.pd_dataframe_to_tf_dataset(test_df, label="species")# Evaluate the modelmodel.compile(metrics=["accuracy"])print(model.evaluate(test_ds))# >> 0.979311# Note: Cross-validation would be more suited on this small dataset.# See also the "Out-of-bag evaluation" below.# Export the model to a TensorFlow SavedModelmodel.save("project/my_first_model")
带有默认超参数的随机森林模型为大多数问题提供了一个快速和良好的基线。决策森林一般会对中小尺度问题进行快速训练,与其他许多类型的模型相比,需要较少的超参数调优,并且通常会提供强大的结果。
解读模型
现在,你已经了解了所训练模型的准确率,接下来该考虑它的可解释性了。如果你希望理解和解读正被建模的现象、调试模型或者开始信任其决策,可解释性就变得非常重要了。如上所述,有大量的工具可用来解读所训练的模型。首先从 plot 开始:
tfdf.model_plotter.plot_model_in_colab(model, tree_idx=0)
你可以直观地看到树结构。此外,模型统计是对 plot 的补充,统计示例包括:
每个特性使用了多少次?模型训练的速度有多快(树的数量和时间)?节点在树结构中是如何分布的(比如大多数 branch 的长度)?
这些问题的答案以及更多类似查询的答案都包含在模型概要中,并可以在模型检查器中访问。
# Print all the available information about the modelmodel.summary()>> Input Features (7):>> bill_depth_mm>> bill_length_mm>> body_mass_g>> ...>> Variable Importance:>> 1. "bill_length_mm" 653.000000 ################>> ...>> Out-of-bag evaluation: accuracy:0.964602 logloss:0.102378>> Number of trees: 300>> Total number of nodes: 4170>> ...# Get feature importance as a arraymodel.make_inspector().variable_importances()["MEAN_DECREASE_IN_ACCURACY"]>> [("flipper_length_mm", 0.149),>> ("bill_length_mm", 0.096),>> ("bill_depth_mm", 0.025),>> ("body_mass_g", 0.018),>> ("island", 0.012)]
在上述示例中,模型通过默认超参数值进行训练。作为首个解决方案而言非常好,但是调整超参数可以进一步提升模型的质量。可以如下这样做:
# List all the other available learning algorithmstfdf.keras.get_all_models()>> [tensorflow_decision_forests.keras.RandomForestModel,>> tensorflow_decision_forests.keras.GradientBoostedTreesModel,>> tensorflow_decision_forests.keras.CartModel]# Display the hyper-parameters of the Gradient Boosted Trees model ? tfdf.keras.GradientBoostedTreesModel>> A GBT (Gradient Boosted [Decision] Tree) is a set of shallow decision trees trained sequentially. Each tree is trained to predict and then "correct" for the errors of the previously trained trees (more precisely each tree predicts the gradient of the loss relative to the model output).. ... Attributes: num_trees: num_trees: Maximum number of decision trees. The effective number of trained trees can be smaller if early stopping is enabled. Default: 300. max_depth: Maximum depth of the tree. `max_depth=1` means that all trees will be roots. Negative values are ignored. Default: 6. ... # Create another model with specified hyper-parametersmodel = tfdf.keras.GradientBoostedTreesModel( num_trees=500, growing_strategy="BEST_FIRST_GLOBAL", max_depth=8, split_axis="SPARSE_OBLIQUE" ,)# Evaluate the modelmodel.compile(metrics=["accuracy"])print(model.evaluate(test_ds))# >> 0.986851
参考链接:https://blog.tensorflow.org/2021/05/introducing-tensorflow-decision-forests.html
2021 字节跳动 Byte Camp 夏令营
与李航、月影等技术大咖交流;公司承担食宿、培训等所有费用;35万元奖金池。
作为字节跳动每年一度的技术品牌活动,夏令营正在面向全球公开招募120高校在校生一起做有挑战的事!夏令营将采取「对话大咖+项目实战」的形式,带领营员和技术大咖面对面沟通学习,深入了解领域前沿知识,掌握关键能力。
公司将承担食宿、培训等所有费用,并为表现优异的同学提供奖学金,进行长期关注和资源支持,助力营员在专业领域做出更大突破。
报名通道将于6月10日关闭,快戳长图扫描二维码了解报名详细!!
科技
-
-
- 里定医疗发布 多光子超声乳腺成像智能诊断集成系统
- 本报讯 5月27日,贵州里定医疗网络科技股份有限公司发布多光子超声乳腺成像智能诊断集成系统。 自2009年成立以来,里定医疗深耕妇幼健康领域,成长为国家高新技术企业。面对基层乳腺癌筛查面临的困境,里...
- 贵阳晚报
-
-
-
- 一个“登录框”引发的安全问题
- 前言搞安全的小伙伴只有一个登录框你都能测试哪些漏洞?通常大家测试的都会测试关键部分,为了有更好的测试效果,小厂会提供给你用户名密码;但是一些比较重要的企业,而这个环境却是正式环境,里面存放着一些数...
- FreeBuf
-
-
-
- 迪士尼Imagineering要把Groot机器人带进现实
- SUBSCRIBE to USImage: Walt Disney ImagineeringKiwi项目是一个定制的两足人类机器人,旨在将幻想人物带入生活。从我(作者,以下简称我)所看到的仿人机器人学来看,在研究领域的人们传统上称之为机器人
- IEEE电气电子工程师
-
-
-
- 联想集团20/21财年营业额突破4100亿;中国电影市场2021年度总票房(含预
- 图 / IC photoHello,大家早上好,又是元气满满的一天,先来浏览新鲜的早报吧~【联想集团20/21财年营业额突破4100亿】联想集团(HKSE:992)(ADR:LNVGY)今日公布截至2021年3月31日的2020/21财年第
- DoNews
-
-
-
- 协作机器人技术如何成为工业4.0战略的核心
- 关键讯息,D1时间送达!让机器人变得更加智能的一种方式是集成各种传感器,就像人类有五种感官一样。但机器人大多只有视觉这一种感官功能。随着技术的发展和进步,机器人的能力和功能将会继续提高。如今,越来越...
- 企业网D1net
-
-
-
- 深水区的5G专网应用,如何实现从1到N?
- 目前,5G竞争进入下半场,由技术转向应用,5G专网的应用发展已进入深水区。与此同时,5G应用应用发展也已迈入“无人区”,无现成经验可借鉴,如何实现从1到N?Part · 01多样化、轻量化、低成本成为5G专网模组及...
- 飞象网
-
-
-
- 最喜欢随机森林?周志华团队DF21后,TensorFlow开源决策森林库TF-D
- 机器之心报道机器之心编辑部 TensorFlow 决策森林 (TF-DF) 现已开源,该库集成了众多 SOTA 算法,不需要输入特征,可以处理数值和分类特征,为开发者节省了大量时间。在人工智能发展史上,各类算法可谓层出不穷...
- 机器之心
-
-
-
- 躺平无罪,犯懒有“理”
- 萧箫 晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI作为一个周末只想躺平的懒癌、社恐患者,却被通知要去参加一个party,这简直快要了我的命。一开始我是拒绝的,我都能想象出我在现场用脚趾抠出三室一厅的尴尬...
- 量子位
-
-
-
- 5G实现“1到N”的突破需要时间
- 近来,工信部采取了多种措施推动5G发展。5月初,工信部发布了《5G应用“扬帆”行动计划(2021—2023年)》,这份纲领性的行动计划指明了5G产业发展的重点方向、关键目标与核心任务。在5月17日召开的“2021世界电...
- 通信世界
-
-
-
- 日本多个政府部门遭遇黑客攻击,大量数据泄漏
- 富士通开发的ProjectWEB软件被日本政府机构和企业广泛使用。截至2009年,该工具已被大约7,800个项目使用。富士通指出,攻击者获得了对使用ProjectWEB项目的未经授权的访问,并窃取了一些客户数据。富士通Project...
- 安全牛
-
-
-
- [报告]2021年中国线控系统系列研究:探讨转向控制系统在自动驾驶中的重要性(附
- 本文提供完整版报告下载,请查看文后提示。以下为报告节选:......文│吉晟资本本报告共计:35页。如欲获取完整版PDF文件,请扫描下方二维码加入“车友圈”获取。#重磅推荐#需要批量下载和及时更新最新汽车行业...
- 汽车之地
-
-
-
- 经观头条|鸿蒙“补天裂”:华为能撬动苹果和谷歌的基本盘吗?
- 经济观察报 记者 沈怡然 5月25日,华为宣布鸿蒙2.0(HarmonyOS2.0)系统将在今年6月2日面向全球正式发布,当日,华为新浪微博账号上发布了一段视频短片,下方有网民评论,他们期待着国产操作系统的到来。鸿蒙,...
- 经济观察报
-
-
-
- 真的开始拆除华为设备了!外媒传来消息,没想到一切来得这么快!
- 据悉,为了保持自身在通信领域的垄断优势,同时给高通、诺基亚、爱立信等欧美同盟企业争取更多5G发展时间,美国一方面抹黑华为5G设备存在所谓的“后门”,一方面又号召他国抵制华为5G设备,让他们更多地去与诺基...
- 通信圈
-
-
-
- AR还能这么玩!快来扫码,开启华为BWS 5G+AR之旅
- 邀请函里有彩蛋随着5G生态逐步成熟AR与行业应用的融合正在进入爆发期AR帮助人们不断拓展体验边界丰富人们的沟通与生活ICT产业作为创新技术的数字底座助力运营商和行业合作伙伴开拓AR新边界探索无限可能,迎来更...
- 华为
-
-
-
- 又一家企业从华为衰退中获益,联想营收大幅增长、净利倍增
- 联想公布了20/21财年第四财季(今年一季度)的业绩,业绩显示营收同比增长48%,净利润大幅增长数倍,柏铭科技认为这主要是因为它受益于华为在国内PC和服务器市场的衰退。联想公布的今年一季度业绩显示,营收同比...
- 柏铭科技
-