如何使用TensorFlow和Estimator与提升树一起训练和评估模型?
TensorFlow 和 Estimator 可以结合提升树,借助 “BoostedTreesClassifier” 来训练和评估模型。这个估计器分别使用 “train” 方法和 “evaluate” 方法来训练和评估数据集。
阅读更多: 什么是 TensorFlow 以及 Keras 如何与 TensorFlow 协同创建神经网络?
我们将使用 Keras Sequential API,它有助于构建一个顺序模型,用于处理简单的层堆栈,其中每一层只有一个输入张量和一个输出张量。
包含至少一层卷积层的神经网络称为卷积神经网络。我们可以使用卷积神经网络来构建学习模型。
我们使用 Google Colaboratory 来运行以下代码。Google Colab 或 Colaboratory 帮助在浏览器上运行 Python 代码,无需任何配置,并且可以免费访问 GPU(图形处理单元)。Colaboratory 基于 Jupyter Notebook 构建。
我们将了解如何使用决策树和 tf.estimator API 训练梯度提升模型。
让我们了解如何使用 Estimator。Estimator 是 TensorFlow 对完整模型的高级表示。它旨在易于扩展和异步训练。
我们将使用 tf.estimator API 训练一个逻辑回归模型。该模型用作其他算法的基线。我们使用泰坦尼克号数据集,目标是根据性别、年龄、等级等特征预测乘客的生存情况。
Estimator 使用特征列来描述模型如何解释原始输入特征。Estimator 期望一个数值输入向量,而特征列将有助于描述模型应该如何转换数据集中每个特征。选择和使用正确的特征列集对于学习有效的模型至关重要。特征列可以是原始特征字典中的一个原始输入,也可以是使用在一个或多个基列上定义的转换创建的新列。
提升树模型被认为是回归和分类中最流行和有效的机器学习方法。它是一种集成技术,它结合了来自许多(10 个、100 个或 1000 个)树模型的预测。
BoostedTreesRegressor 和分类支持 BoostedTreesClassifier。目标是预测一个类别,即生存或不生存。
示例
print("Using boosted trees") print("Data fits into memory, hence entire dataset per layer is used as a single batch") print("This would be quick") n_batches = 1 est = tf.estimator.BoostedTreesClassifier(feature_columns, n_batches_per_layer=n_batches) print("The model stops training once the number of trees specified is built") est.train(train_input_fn, max_steps=100) print("The model is evaluated") result = est.evaluate(eval_input_fn) clear_output() print(pd.Series(result))
输出
accuracy 0.833333 accuracy_baseline 0.625000 auc 0.875237 auc_precision_recall 0.859974 average_loss 0.405130 label/mean 0.375000 loss 0.405130 precision 0.795699 prediction/mean 0.383989 recall 0.747475 global_step 100.000000 dtype: float64
解释
- 训练了提升树模型。
- 目标是预测一个类别,可能是生存或不生存。
- 为此,使用了 BoostedTreesClassifier。