2023 年 2 月 14 日 — 发布者:Mathieu Guillame-Bert、Richard Stotz、Luiz GUStavo Martins 两年前,我们 开源了 TensorFlow 决策森林 和 Yggdrasil 决策森林 的实验版本,这两个库用于在 TensorFlow 中训练和使用决策森林模型,例如随机森林和梯度提升树。从那时起,我们添加了许多新功能和改进。今天,我们很高兴地宣布……
发布者:Mathieu Guillame-Bert、Richard Stotz、Luiz GUStavo Martins
两年前,我们 开源了 TensorFlow 决策森林 和 Yggdrasil 决策森林 的实验版本,这两个库用于在 TensorFlow 中训练和使用决策森林模型,例如随机森林和梯度提升树。从那时起,我们添加了许多新功能和改进。
今天,我们很高兴地宣布 TensorFlow 决策森林已投入生产。在这篇文章中,我们将向您展示它附带的所有新功能 🙂。系好安全带!
决策森林是一种机器学习模型,它训练速度快,在表格数据集上表现非常好。非正式地说,决策森林由许多小的决策树组成。它们共同利用了 集体智慧原理,因此能够做出更好的预测。如果您想了解更多信息,请 查看我们的课程。
如果您是 TensorFlow 决策森林的新手,我们建议您尝试 初学者教程。以下是如何轻松使用 TF-DF
train_df = pd.read_csv("train.csv") train_ds = tfdf.keras.pd_dataframe_to_tf_dataset(train_df, label="species") model = tfdf.keras.GradientBoostedTreesModel() model.fit(train_ds) model.save("my_model") |
以下是 TensorFlow 决策森林 (TF-DF) 在 1.x 版本中引入的主要新功能。
与所有机器学习算法一样,决策森林也具有 超参数。这些参数的默认值可以得到不错的结果,但是,如果您真的想要为您的模型获得最好的结果,您需要“调整”这些参数。
TF-DF 使调整参数变得容易。例如,目标函数和分布配置会自动选择,您可以指定要调整的超参数,如下所示
tuner = tfdf.tuner.RandomSearch(num_trials=50) tuner.choice("min_examples", [2, 5, 7, 10]) tuner.choice("categorical_algorithm", ["CART", "RANDOM"]) tuner.choice("max_depth", [3, 4, 5, 6, 8]) tuner.choice("use_hessian_gain", [True, False]) tuner.choice("shrinkage", [0.02, 0.05, 0.10, 0.15]) tuner.choice("growing_strategy", ["LOCAL"]).choice("max_depth", [3, 4, 5, 6, 8]) tuner.choice("growing_strategy", ["BEST_FIRST_GLOBAL"], merge=True).choice("max_num_nodes", [16, 32, 64, 128, 256]) # ... Add all the parameters to tune model = tfdf.keras.GradientBoostedTreesModel(verbose=2, tuner=tuner) model.fit(training_dataset |
从 TF-DF 1.0 开始,您可以使用预配置的超参数调整搜索空间。只需在您的模型构造函数中添加 use_predefined_hps=True
,调整过程就会自动完成
tuner = tfdf.tuner.RandomSearch(num_trials=50, use_predefined_hps=True) # 不需要配置每个超参数 tuned_model = tfdf.keras.GradientBoostedTreesModel(verbose=2, tuner=tuner) tuned_model.fit(train_ds, verbose=2) |
查看 超参数调整教程 以了解更多详细信息。并且,如果您的数据集很大,或者您有很多参数需要优化,您甚至可以使用 分布式训练来调整您的超参数。
如上所述,为了最大限度地提高模型质量,您需要调整超参数。但是,此操作需要时间。如果您没有时间调整超参数,我们为您提供了一种新的解决方案:超参数模板。
超参数模板是一组通过测试数百个数据集而发现的超参数。要使用它们,您只需设置 hyperparameter_template
参数。
model = tfdf.keras.GradientBoostedTreesModel(hyperparameter_template="benchmark_rank1") model.fit(training_dataset) |
在我们的论文 "Yggdrasil 决策森林:一个快速且可扩展的决策森林库" 中,我们通过实验证明了结果几乎与手动超参数调整一样好。
查看 超参数索引 中的“超参数模板”部分以了解更多详细信息。
TensorFlow 决策森林现在包含在 TensorFlow Serving 的正式版本中,以及在 Google Cloud 的 Vertex AI 中。无需任何特殊配置或自定义镜像,您现在就可以在 Google Cloud 中运行 TensorFlow 决策森林。
查看我们的 TensorFlow Serving 示例。
在少于一百万个示例的数据集上训练 TF-DF 几乎是即时的。但是,在更大的数据集上,训练需要更长的时间。TF-DF 现在支持分布式训练。如果您的数据集包含数百万甚至数十亿个示例,您可以在数十台甚至数百台机器上使用分布式训练。
以下是一个示例
cluster_resolver = tf.distribute.cluster_resolver.TFConfigClusterResolver() strategy = tf.distribute.experimental.ParameterServerStrategy(cluster_resolver) with strategy.scope(): model = tfdf.keras.DistributedGradientBoostedTreesModel( temp_directory=..., num_threads=30, ) model.fit_on_dataset_path( train_path=os.path.join(dataset_path, "train@60"), valid_path=os.path.join(dataset_path, "valid@20"), label_key="my_label", dataset_format="csv") |
为了使训练决策森林更加容易,我们创建了 Simple ML for Sheets。Simple ML for Sheets 使您能够在 Google 表格中训练、评估和解释 TensorFlow Decision Forests 模型,无需任何编码!
完成在 Google 表格中训练模型后,您可以将其导出回 TensorFlow Decision Forests,并像其他模型一样使用它。
查看Simple ML for Sheets 教程以获取更多详细信息。
我们希望您喜欢阅读这篇新闻,并希望新版本的 TensorFlow Decision Forests 对您的工作有所帮助。
要了解更多关于 TensorFlow Decision Forests 库的信息,请参阅以下资源
如果您有任何问题,请在discuss.tensorflow.org上使用标签“TFDF”提出问题,我们会尽力提供帮助。再次感谢。
-- TensorFlow Decision Forests 团队
2023 年 2 月 14 日 — 由 Mathieu Guillame-Bert、Richard Stotz、Luiz GUStavo Martins 发表 两年前,我们 开源了 TensorFlow Decision Forests 和 Yggdrasil Decision Forests 的实验版本,这两个库用于在 TensorFlow 中训练和使用决策森林模型,例如随机森林和梯度提升树。从那以后,我们添加了许多新功能和改进。今天,我们很高兴地宣布...