1. 程式人生 > >tf.estimator API技術手冊(6)——BoostedTreesClassifier(提升樹分類器)

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物件的列表,用於在檢查點儲存之前或之後立即執行的回撥。