日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LGBM函数及参数详解

發布時間:2023/12/14 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LGBM函数及参数详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

LGBM Python API

Dataset

class lightgbm.Dataset(data, label=None, max_bin=None, reference=None, weight=None, group=None, init_score=None, silent=False, feature_name='auto', categorical_feature='auto', params=None, free_raw_data=True)

創建一個帶label的訓練集和交叉驗證集

trn_data = lgb.Dataset(X_tr, label=y_tr)val_data = lgb.Dataset(X_valid, label=y_valid)

Booster?

class lightgbm.Booster(params=None, train_set=None, model_file=None, silent=False)? ? #booster可用lgb來代替

  • params???字典形式的參數
  • train_set?Training dataset.
  • model_file model文件的路徑
  • silent 構建模型時是否打印信息

只要有lgb實例,就可以調用下列函數 ,包括?predict,

lgb.add_valid??添加交叉訓練集?

lgb.attr(key)? Get attribute string from the Booster.

lgb.current_iteration()??Get the index of the current iteration.

lgb.dump_model(num_iteration=-1)? ?Dump Booster to json format.

lgb.eval(data, name, feval=None)? ??Evaluate for data.? ?Result?– List with evaluation results.

lgb.eval_train(feval=None)? ?Evaluate for training data.

lgb.eval_valid(feval=None)? ? Evaluate for validation data.

lgb.feature_importance(importance_type='split', iteration=-1)? ?Get feature importances.

lgb.feature_name()? ?Get names of features.

lgb.free_dataset()? ? ?Free Booster’s Datasets.

lgb.free_network()? ? Free Network.

lgb.get_leaf_output(tree_id, leaf_id)? ?Get the output of a leaf.

lgb.num_feature()? ? ?Get number of features.

predict(data, num_iteration=-1, raw_score=False, pred_leaf=False, pred_contrib=False, data_has_header=False, is_reshape=True, pred_parameter=None)

lgb.reset_parameter(params)

lgb.rollback_one_iter()? ? ? Rollback one iteration.

lgb.save_model(filename, num_iteration=-1)

lgb.set_attr(**kwargs)? ? ??Set the attribute of the Booster.

lgb.set_network(machines, local_listen_port=12400, listen_time_out=120, num_machines=1)? ??Set the network configuration.

lgb.set_train_data_name(name)

lgb.update(train_set=None, fobj=None)? ? ?Update for one iteration.

Train API

?lightgbm.train

lightgbm.train(params, train_set, num_boost_round=100, valid_sets=None, valid_names=None, fobj=None, feval=None, init_model=None, feature_name='auto', categorical_feature='auto', early_stopping_rounds=None, evals_result=None, verbose_eval=True, learning_rates=None, keep_training_booster=False, callbacks=None)

  • params?(dict) – Parameters for training.
  • train_set?(Dataset) – Data to be trained.
  • num_boost_round?(int_,_?optional?(default=100)) – 迭代次數,也就是弱學習器的數量
  • valid_sets?– List of data to be evaluated during training.

訓練參數中沒有單個弱學習器的參數(即決策樹的參數) ,params表示所有弱學習器的參數

params參數包括:

  • "objective" : "regression", "binary",
  • "metric" : "rmse","auc"
  • "boosting": 'gbdt',
  • ?"max_depth": -1,
  • "min_child_samples": 20,?
  • "num_leaves" : 31,
  • "learning_rate" : 0.1,?
  • "subsample" : 0.8,
  • "colsample_bytree" : 0.8,?
  • "verbosity": -1
  • "bagging_freq": 5,
  • "bagging_fraction" : 0.4,
  • "feature_fraction" : 0.05,
  • "min_data_in_leaf": 80,
  • "min_sum_heassian_in_leaf": 10,
  • "tree_learner": "serial",
  • "boost_from_average": "false",
  • "lambda_l1" : 5,
  • "lambda_l2" : 5
  • "bagging_seed" : random_state
  • ?"seed": random_state

boosting_type?

提升算法類型:‘gbdt’,‘dart’,‘goss’,‘rf’ 。默認算法為gbdt,一般用的最多。

dart:Dropouts meet Multiple Additive Regression Trees,是利用dropout解決過擬合的Regression Trees,利用了深度神經網絡中dropout設置的技巧,隨機丟棄生成的決策樹,然后再從剩下的決策樹集中迭代優化提升樹,特點是

  • 因為隨機dropout不使用用于保存預測結果的buffer所以訓練會更慢
  • 因為隨機,早停可能不夠穩定

? ? dart與gbdt的不同點:計算下一棵樹要擬合的梯度的時候,僅僅隨機從已經生成的樹中選取一部分。?DART添加一棵樹時需? ? ? ? 要先歸一化。

goss?:基本思想是首先對訓練集數據根據梯度排序,預設一個比例劃分梯度大小保留在所有樣本中梯度大的數據樣本;再設? ? ? ?置一個采樣比例,從梯度小的樣本中按比例抽取樣本。為了彌補對樣本分布造成的影響,GOSS算法在計算信息增益時,會? ? ? ?對較小梯度的數據集乘以一個系數,用來放大。這樣,在計算信息增益時,算法可以更加關注“未被充分訓練”的樣本數據。? ? ? ? ?GOSS通過對較小的樣本數據集估算增益,大大的減少了計算量。而且通過證明,GOSS算法不會過多的降低訓練的精度

rf :隨機森林,很熟悉了。

num_leaves

因為LightGBM使用的是leaf-wise的算法,因此在調節樹的復雜程度時,使用的是num_leaves而不是max_depth。大致換算關系:num_leaves = 2^(max_depth)。它的值的設置應該小于2^(max_depth),否則可能會導致過擬合。

max_depth

每個弱學習器也就是決策樹的最大深度,-1表示不限制,

n_estimators

弱學習器的數目,因為gbdt原理是利用通過梯度不斷擬合新的弱學習器,直到達到設定的弱學習器的數量。

learning_rate?

Boosting learning rate.?

max_bin

為直方圖算法中特征值離散化的分段數量

lightgbm.cv

lightgbm.cv(params, train_set, num_boost_round=10, folds=None, nfold=5, stratified=True, shuffle=True, metrics=None, fobj=None, feval=None, init_model=None, feature_name='auto', categorical_feature='auto', early_stopping_rounds=None, fpreproc=None, verbose_eval=None, show_stdv=True, seed=0, callbacks=None)

總結

以上是生活随笔為你收集整理的LGBM函数及参数详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。