肥宅钓鱼网
当前位置: 首页 钓鱼百科

tensorflow量化计算(最喜欢随机森林)

时间:2023-07-12 作者: 小编 阅读量: 3 栏目名: 钓鱼百科

最喜欢随机森林机器之心报道机器之心编辑部TensorFlow决策森林(TF-DF)现已开源,该库集成了众多SOTA算法,不需要输入特征,可以处理数值和分类特征,为开发者节省了大量时间在人工智能发展史上,各类算法可谓。

机器之心报道

机器之心编辑部

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 提供的一些功能:

代码示例

下面进行示例展示,可以让使用者简单明了。

模型训练

在数据集 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 的补充,统计示例包括:

这些问题的答案以及更多类似查询的答案都包含在模型概要中,并可以在模型检查器中访问。

# 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

,
    推荐阅读
  • 草莓的营养价值与食疗功效 草莓的营养价值与食疗功效作用

    草莓的营养成分容易被人体消化、吸收,多吃也不会受凉或上火,是老少皆宜的健康食品。草莓除了可以预防坏血病外,对防治动脉硬化、冠心病也有较好的功效。

  • 冰红茶要怎么做(自制冰红茶做法介绍)

    下面希望有你要的答案,我们一起来看看吧!冰红茶要怎么做食材:红茶两勺、单晶冰糖2—3颗、开水130ml、柠檬片(或白醋)一片(半勺)。泡大约15秒钟后倒出。将准备好的单晶冰糖放入茶中。等冰糖在茶中慢慢融化,茶放凉后,放一片大约2毫米的柠檬片,一分钟后就可以喝了。如果家中碰巧没有柠檬,也可以用白醋(半勺)代替,不过口感稍逊。如果想要更劲爽的话,还可以把冰红茶放到冰箱冷藏室里冻一会儿。

  • 如何做蓝莓冰激凌(蓝莓冰激凌怎么做)

    下面希望有你要的答案,我们一起来看看吧!如何做蓝莓冰激凌原料:蓝莓100克、淡奶油120克、牛奶100克、砂糖40克、蓝莓果酱50克。将蓝莓,果酱,牛奶,砂糖,淡奶油放入料理机;打成细腻的蓝莓牛奶酱;放入大碗里,放入冰箱冷冻即可;冷冻成硬硬的,即可食用。

  • 火舞亲唐三哪一集(关于唐三的简介信息)

    网络动画《斗罗大陆》改编自中国作家唐家三少原作的同名玄幻小说,由企鹅影视、玄机科技联合出品。于2018年1月20日起每周六10:00在腾讯视频独家正版更新。于2018年腾讯视频星光盛典荣获年度国漫荣誉。前世为唐门外门弟子,因偷学内门武技负罪,为明志跳崖,穿越至斗罗大陆,名字亦为唐三。

  • 仙剑奇侠传三电视剧剧情(故事主线是什么)

    神将军飞蓬与魔将军重楼因两界的冲突而屡屡交手,一直难分胜负,两人逐渐有惺惺相惜之意。重楼提出要和飞蓬在自己发现的一处新仙界中决斗,一较高下,飞蓬碍于神界天规而犹豫再三,最终经不起重楼诱惑而答允。光阴荏苒,飞蓬被神界问罪贬到人间,经过多次转世成为渝州唐门新安当铺伙计景天,渴望成为蜀山大侠。

  • 弧我什么梗(弧我的意思)

    以下内容希望对你有帮助!弧我什么梗弧我,意思是指你反射弧太长,比喻为:很久之后才回我。“弧”,二次元词语,就是很久没上线或者没回复信息。这种组合,往往在特定的网络媒介传播中表达特殊的意义。20世纪90年代诞生初,网民们为了提高网上聊天的效率或诙谐、逗乐等特定需要而采取的方式,久而久之就形成特定语言了。

  • 清醒思考的艺术逻辑思维(认知的艺术思考)

    认知也可以称为认识,是指人认识外界事物的过程,或者说是对作用于人的感觉器官的外界事物进行信息加工的过程。现实生活中很多亦是如此,很多人只知道事物的表面现象,不知客观事物的本质特征及规律特性。正确的认知,应该是认,知其然;识,知其所以然。因此思想是大脑进行归纳(决策)的活动。最后大家达成一致的心愿,这次充满期待的短途旅行将是一场能释放工作压力,增进同事感情的关爱行动,这就是思想。

  • 南瓜掏空蒸米饭的做法(腊肉腊肠南瓜饭简单做法)

    接下来我们就一起去研究一下吧!南瓜掏空蒸米饭的做法食材:主料:小南瓜1个;剩米饭200g;腊肉50g;腊肠50g;辅料:葱花适量。南瓜洗净,用勺子挖去籽儿,用刀子刻成喜欢的形状。放入蒸锅蒸半小时以上,或是盖保鲜膜微波炉里中火8分钟,最后撒葱花装饰。

  • 渣怎么组词(渣怎样组词)

    渣是一个汉字词语,拼音是zhā,释义为古水名,今指物质经提炼或使用后的残余部分。而做为形容词与“差”、“烂”是同义词。有时也作为严重的贬义词,形容行为动作或思想不符合常规伦理道德,或用来称为道德沦丧的败类。

  • 7月30号是什么星座(7月30号星座介绍)

    以下内容希望对你有帮助!7月30号是什么星座阳历07月30日的星座:狮子座。狮子男很善于表现自己的魅力来吸引诸多异性。当大家目睹狮子座身上散发出的男性魅力时,几乎会被他的魅力所折服。不惧怕与任何异性沟通,坦白直率地说出内心真正的想法,喜欢就是喜欢,从不去掩饰。