tf.estimator API技术手册(6)——BoostedTreesClassifier(提升树分类器)
(一)简 介
用于建立提升树模型分类器,定义在tensorflow/python/estimator/canned/boosted_trees.py中,以下为使用示例:
bucketized_feature_1 = bucketized_column(
numeric_column('feature_1'), BUCKET_BOUNDARIES_1)
bucketized_feature_2 = bucketized_column(
numeric_column('feature_2'), BUCKET_BOUNDARIES_2)
# 创建分类器
classifier = estimator.BoostedTreesClassifier(
feature_columns=[bucketized_feature_1, bucketized_feature_2],
n_batches_per_layer=n_batches_per_layer,
n_trees=100,
... <其他超参数>
)
# 定义训练数据输入函数
def input_fn_train():
...
return dataset
classifier.train(input_fn=input_fn_train)
# 定义评估数据输入函数
def input_fn_eval():
...
return dataset
metrics = classifier.evaluate(input_fn=input_fn_eval)
(二)初始化
__init__(
feature_columns,
n_batches_per_layer,
model_dir=None,
n_classes=_HOLD_FOR_MULTI_CLASS_SUPPORT,
weight_column=None,
label_vocabulary=None,
n_trees=100,
max_depth=6,
learning_rate=0.1,
l1_regularization=0.0,
l2_regularization=0.0,
tree_complexity=0.0,
min_node_weight=0.0,
config=None,
center_bias=False,
pruning_mode='none'
)
参数如下:
-
feature_columns:
一个包含了所有模型所需的特征的迭代器,其中的元素都必须是来自FeatureColumn的实例。 -
n_batches_per_layer:
每层收集统计数据的批次数,批的总数是按批次大小划分的数据总数。 -
model_dir:
保存模型的路径 -
n_classes:
标签的种类,默认为二分类,还没有实现多分类支持。 -
weight_column:
由 tf.feature_column.numeric_column创建的一个字符串或者数字列用来呈现特征列。他将会被乘以example的训练损失。 -
label_vocabulary:
一个字符串列表用来呈现可能的标签取值,如果给出,则必须为字符型,如果没有给出,则会默认编码为整型,为{0, 1,…, n_classes-1} 。 -
n_trees:
生成树的数量。 -
max_depth:
树生长的最大深度。 -
learning_rate:
当一个树被添加进模型时使用的收缩参数。 -
l1_regularization:
正则化乘法算子应用于叶子结点的绝对权。 -
l2_regularization:
正则化乘法算子应用于叶子结点的平方权。 -
tree_complexity:
正规化因子用来惩罚拥有更多树叶的树。 -
min_node_weight:
最小节点权重 -
config:
一个运行配置对象,用来配置运行时间。 -
center_bias:
中心偏差 -
pruning_mode:
剪枝操作,可以选择‘none’,‘pre’,‘post’,以指定为‘不剪枝’、‘预剪枝’、‘后剪枝’,对于‘预剪枝’和‘后剪枝’,你必须使树的复杂度大于0.
(三)属 性(Properties)
- config
- model_dir
- model_fn
Returns the model_fn which is bound to self.params.
返回:
model_fn 附有以下标记: def model_fn(features, labels, mode, config)
(四)方 法(Methods)
(1)evaluate(评估)
evaluate(
input_fn,
steps=None,
hooks=None,
checkpoint_path=None,
name=None
)
评估函数,使用input_fn给出的评估数据评估训练好的模型,参数列表如下:
- input_fn:
一个用来构造用于评估的数据的函数,这个函数应该构造和返回如下的值:一个tf.data.Dataset对象或者一个包含 (features, labels)的元组,它们应当满足model_fn函数对输入数据的要求,在后面的实例中我们会详细介绍。 - checkpoint_path:
用来保存训练好的模型 - name:
如果用户需要在不同的数据集上运行多个评价,如训练集和测试集,则为要进行评估的名称,不同的评估度量被保存在单独的文件夹中,并分别出现在tensorboard中。
(2)predict(预测)
predict(
input_fn,
predict_keys=None,
hooks=None,
checkpoint_path=None,
yield_single_examples=True
)
使用训练好的模型对新实例进行预测,以下为参数列表:
-
input_fn:
一个用来构造用于评估的数据的函数,这个函数应该构造和返回如下的值:一个tf.data.Dataset对象或者一个包含 (features, labels)的元组,它们应当满足model_fn函数对输入数据的要求,在后面的实例中我们会详细介绍。 -
predict_keys:
预测函数最终会返回一系列的结果,但我们可以有选择地让其输出,可供选择的keys列表为[‘logits’, ‘logistic’, ‘probabilities’, ‘class_ids’, ‘classes’],如果不指定的话,默认返回所有值。 -
hooks:
tf.train.SessionRunHook的子类实例列表,在预测调用中用于传回。 -
checkpoint_path:
训练好的模型的目录 -
yield_single_examples:
可以选择False或是True,如果选择False,由model_fn返回整个批次,而不是将批次分解为单个元素。当model_fn返回的一些的张量的第一维度和批处理数量不相等时,这个功能是很用的。
(3)train(训练)
train(
input_fn,
hooks=None,
steps=None,
max_steps=None,
saving_listeners=None
)
用于训练模型,以下为参数列表:
-
input_fn:
一个用来构造用于评估的数据的函数,这个函数应该构造和返回如下的值:一个tf.data.Dataset对象或者一个包含 (features, labels)的元组,它们应当满足model_fn函数对输入数据的要求,在后面的实例中我们会详细介绍。 -
hooks:
tf.train.SessionRunHook的子类实例列表,在预测调用中用于传回。 -
steps:
模型训练的次数,如果不指定,则会一直训练知道input_fn传回的数据消耗完为止。如果你不想要增量表现,就设置max_steps来替代,注意设置了steps,max_steps必须为None,设置了max_steps,steps必须为None。 -
max_steps:
模型训练的总次数,注意设置了steps,max_steps必须为None,设置了max_steps,steps必须为None。 -
saving_listeners:
CheckpointSaverListener对象的列表,用于在检查点保存之前或之后立即运行的回调。